Дълбоко изучаване на невронни мрежи, обяснено на обикновен английски

Машинното обучение и особено дълбокото обучение са две технологии, които променят света.

След дълга „AI зима“, обхващаща 30 години, изчислителните мощности и набори от данни най-накрая достигнаха до алгоритмите за изкуствен интелект, предложени през втората половина на ХХ век.

Това означава, че най-накрая се използват модели за дълбоко обучение, за да се правят ефективни прогнози, които решават реални проблеми.

За учените по данни и софтуерните инженери е по-важно от всякога да разбират на високо ниво как работят моделите за задълбочено обучение. Тази статия ще обясни историята и основните концепции на дълбоките учебни невронни мрежи на обикновен английски език.

Историята на дълбокото обучение

Дълбокото обучение е концептуализирано от Джефри Хинтън през 80-те години. Широко се смята за основател на областта на дълбокото обучение. Хинтън работи в Google от март 2013 г., когато е придобита неговата компания DNNresearch Inc.

Основният принос на Хинтън в областта на дълбокото обучение е да сравнява техниките за машинно обучение с човешкия мозък.

По-конкретно, той създава концепцията за „невронна мрежа“, която представлява алгоритъм за дълбоко обучение, структуриран подобно на организацията на невроните в мозъка. Хинтън възприе този подход, защото човешкият мозък е може би най-мощният изчислителен двигател, познат днес.

Структурата, която създаде Хинтън, беше наречена изкуствена невронна мрежа (или накратко изкуствена невронна мрежа). Ето кратко описание на това как функционират:

  • Изкуствените невронни мрежи са съставени от слоеве на възел
  • Всеки възел е проектиран да се държи подобно на неврон в мозъка
  • Първият слой на невронната мрежа се нарича inputслой, последван от hiddenслоеве, след което накрая outputслой
  • Всеки възел в невронната мрежа извършва някакво изчисление, което се предава на други възли по-дълбоко в невронната мрежа

Ето опростена визуализация, за да демонстрира как работи това:

Визуализация на изкуствена невронна мрежа

Невронните мрежи представляваха огромен крак напред в областта на дълбокото обучение.

Въпреки това, бяха необходими десетилетия, за да придобие известност машинното обучение (и особено дълбокото обучение).

Ще разгледаме защо в следващия раздел.

Защо дълбокото обучение не работи веднага

Ако дълбокото обучение първоначално е било замислено преди десетилетия, защо то едва сега започва да набира скорост днес?

Това е така, защото всеки зрял модел на дълбоко обучение изисква изобилие от два ресурса:

  • Данни
  • Изчислителна мощност

По време на концептуалното раждане на дълбокото учене изследователите не са имали достъп нито до достатъчно данни, нито до изчислителна мощ, за да изградят и обучат значими модели за дълбоко обучение. Това се е променило с течение на времето, което е довело до значимостта на дълбокото учене днес.

Разбиране на невроните в дълбокото обучение

Невроните са критичен компонент на всеки модел за дълбоко обучение.

Всъщност може да се твърди, че не можете да разберете напълно дълбокото учене, ако имате дълбоки познания за това как работят невроните.

Този раздел ще ви запознае с понятието неврони в дълбокото обучение. Ще говорим за произхода на невроните с дълбоко обучение, как те са били вдъхновени от биологията на човешкия мозък и защо невроните са толкова важни в моделите за дълбоко обучение днес.

Какво е неврон в биологията?

Невроните в дълбокото обучение са вдъхновени от невроните в човешкия мозък. Ето диаграма на анатомията на мозъчния неврон:

Анатомия на неврон в мозъка

Както можете да видите, невроните имат доста интересна структура. Групи неврони работят заедно в човешкия мозък, за да изпълняват функциите, които са ни необходими в ежедневния ни живот.

Въпросът, който Джефри Хинтън зададе по време на първоначалното си изследване в невронните мрежи, беше дали можем да изградим компютърни алгоритми, които се държат подобно на невроните в мозъка. Надеждата беше, че имитирайки структурата на мозъка, можем да уловим част от неговите способности.

За целта изследователите изучават начина, по който невроните се държат в мозъка. Едно важно наблюдение беше, че невронът сам по себе си е безполезен. Вместо това ви трябват мрежи от неврони, за да генерират някаква значима функционалност.

Това е така, защото невроните функционират чрез приемане и изпращане на сигнали. По-конкретно, невронът dendritesприема сигнали и преминава покрай тези сигнали през axon.

Един dendritesот невроните са свързани с axonдруг неврон. Тези връзки се наричат synapses, което е концепция, която е обобщена в областта на дълбокото обучение.

Какво е неврон в дълбокото обучение?

Невроните в моделите за дълбоко обучение са възли, през които протичат данни и изчисления.

Невроните работят по следния начин:

  • Те получават един или повече входни сигнала. Тези входни сигнали могат да идват или от суровия набор от данни, или от неврони, позиционирани в предишен слой на невронната мрежа.
  • Те извършват някои изчисления.
  • Те изпращат някои изходни сигнали към невроните по-дълбоко в невронната мрежа чрез a synapse.

Ето диаграма на функционалността на неврон в невронна мрежа с дълбоко обучение:

Функцията на неврона в модел на дълбоко обучение

Нека преминем през тази схема стъпка по стъпка.

Както можете да видите, невроните в модел на дълбоко обучение са способни да имат синапси, които се свързват с повече от един неврон в предходния слой. Всеки синапс има свързано weight, което влияе върху значението на предходния неврон в цялостната невронна мрежа.

Тежестите са много важна тема в областта на дълбокото обучение, тъй като коригирането на тежестите на модела е основният начин, чрез който се обучават модели на дълбоко обучение. Ще видите това на практика по-късно, когато изградим първите си невронни мрежи от нулата.

След като невронът получи своите входове от невроните в предходния слой на модела, той събира всеки сигнал, умножен по съответното му тегло, и ги предава на функция за активиране, като тази:

Активираща функция на неврона

Функцията за активиране изчислява изходната стойност за неврона. След това тази изходна стойност се предава на следващия слой на невронната мрежа чрез друг синапс.

Това служи като общ преглед на невроните за дълбоко обучение. Не се притеснявайте, ако трябваше да се вземе много - ще научим много повече за невроните в останалата част на този урок. Засега е достатъчно да разберете на високо ниво как те са структурирани в модел на задълбочено обучение.

Функции за активиране на дълбоко обучение

Функциите за активиране са основна концепция, която трябва да се разбере при дълбокото обучение.

Те са това, което позволява на невроните в невронната мрежа да комуникират помежду си чрез своите синапси.

В този раздел ще се научите да разбирате значението и функционалността на функциите за активиране при дълбоко обучение.

Какви са функциите за активиране при задълбочено обучение?

В последния раздел научихме, че невроните получават входни сигнали от предходния слой на невронна мрежа. Претеглена сума от тези сигнали се подава във функцията за активиране на неврона, след което изходът на функцията за активиране се предава на следващия слой на мрежата.

Има четири основни типа активиращи функции, които ще обсъдим в този урок:

  • Прагови функции
  • Сигмоидни функции
  • Функции на токоизправител или ReLU
  • Функции на хиперболичния тангенс

Нека да работим по тези функции за активиране един по един.

Прагови функции

Функциите за праг изчисляват различен изходен сигнал в зависимост от това дали неговият вход лежи над или под определен праг. Не забравяйте, че входната стойност за активираща функция е претеглената сума от входните стойности от предходния слой в невронната мрежа.

Математически погледнато, тук е официалното определение на функцията за праг на дълбоко обучение:

Прагови функции

Както показва изображението по-горе, функцията за праг понякога се нарича още a unit step function.

Праговите функции са подобни на булевите променливи в компютърното програмиране. Изчислената им стойност е или 1(подобна на True), или 0(еквивалентна на False).

Сигмоидната функция

Сигмоидната функция е добре известна сред общността на науката за данни поради използването й в логистична регресия, една от основните техники за машинно обучение, използвана за решаване на проблеми с класификацията.

Сигмоидната функция може да приеме всяка стойност, но винаги изчислява стойност между 0и 1.

Ето математическото определение на сигмоидната функция:

Сигмоидни функции

Едно предимство на сигмоидната функция пред праговата функция е, че нейната крива е гладка. Това означава, че е възможно да се изчисляват производни във всяка точка по кривата.

Функцията токоизправител

Функцията токоизправител няма същото свойство на гладкост като сигмоидната функция от последния раздел. Въпреки това, той все още е много популярен в областта на дълбокото обучение.

Функцията токоизправител се определя, както следва:

  • Ако входната стойност е по-малка от 0, тогава функцията извежда0
  • Ако не, функцията извежда своята входна стойност

Ето тази концепция обяснена математически:

Функции на токоизправителя

Функциите на токоизправителя често се наричат Rectified Linear Unitактивиращи функции или ReLUsнакратко.

Функцията на хиперболичния тангенс

Функцията на хиперболичния тангенс е единствената активираща функция, включена в този урок, която се основава на тригонометрична идентичност.

Това е математическо определение по-долу:

Функция на хиперболична допирателна

Функцията на хиперболичния тангенс е подобна на външен вид на сигмоидната функция, но всички изходни стойности са изместени надолу.

Как наистина работят невронните мрежи?

Досега в този урок обсъдихме два от градивните блокове за изграждане на невронни мрежи:

  • Неврони
  • Функции за активиране

Вероятно обаче все още сте малко объркани как наистина работят невронните мрежи.

Този урок ще събере частите, които вече обсъдихме, за да можете да разберете как невронните мрежи работят на практика.

Примерът, който ще използваме в този урок

Този урок ще работи чрез пример от реалния свят стъпка по стъпка, за да можете да разберете как невронните мрежи правят прогнози.

По-конкретно, ще се занимаваме с оценки на собствеността.

Може би вече знаете, че има тон на факторите, които влияят на цените на жилищата, включително икономиката, лихвените проценти, неговият брой спални / бани, и неговото местоположение.

Високата размерност на този набор от данни го прави интересен кандидат за изграждане и обучение на невронна мрежа.

Едно предупреждение за този раздел е невронната мрежа, която ще използваме за прогнози , вече е обучена . Ще проучим процеса за обучение на нова невронна мрежа в следващия раздел на този урок.

Параметрите в нашия набор от данни

Нека започнем с обсъждане на параметрите в нашия набор от данни. По-конкретно, нека си представим, че наборът от данни съдържа следните параметри:

  • Квадратни кадри
  • Спални
  • Разстояние до центъра на града
  • Къща възраст

Тези четири параметъра ще формират входния слой на изкуствената невронна мрежа. Имайте предвид, че в действителност има много повече параметри, които бихте могли да използвате за обучение на невронна мрежа за прогнозиране на цените на жилищата. Ограничихме това число до четири, за да улесним примера.

Най-основната форма на невронна мрежа

В най-основната си форма невронната мрежа има само два слоя - входния и изходния слой. Изходният слой е компонентът на невронната мрежа, който всъщност прави прогнози.

Например, ако искате да правите прогнози, използвайки модел с проста претеглена сума (наричан още линейна регресия), вашата невронна мрежа ще приеме следната форма:

Основна невронна мрежа

Докато тази диаграма е малко абстрактна, въпросът е, че повечето невронни мрежи могат да бъдат визуализирани по този начин:

  • Входен слой
  • Възможно някои скрити слоеве
  • Изходен слой

Това е скритият слой на невроните, който кара невронните мрежи да бъдат толкова мощни за изчисляване на прогнози.

За всеки неврон в скрит слой той извършва изчисления, използвайки някои (или всички) от невроните в последния слой на невронната мрежа. След това тези стойности се използват в следващия слой на невронната мрежа.

Целта на невроните в скрития слой на невронна мрежа

Вие вероятно се чудите - какво точно прави всеки неврон в скрит слой средната ? Казано по различен начин, как специалистите по машинно обучение трябва да тълкуват тези ценности?

Най-общо казано, невроните в средните слоеве на невронната мрежа се активират (което означава, че тяхната функция за активиране се връща 1) за входна стойност, която удовлетворява определени под-свойства.

За нашия модел за прогнозиране на цените на жилищата, един пример могат да бъдат къщи с 5 спални с малки разстояния до центъра на града.

В повечето други случаи описанието на характеристиките, които биха накарали неврона в скрит слой да се активира, не е толкова лесно.

Как невроните определят своите входни стойности

По-рано в този урок написах „За всеки неврон в скрит слой той извършва изчисления, използвайки някои (или всички) от невроните в последния слой на невронната мрежа.“

Това илюстрира важен момент - че всеки неврон в невронната мрежа не трябва да използва всеки неврон в предходния слой.

Процесът, чрез който невроните определят кои входни стойности да се използват от предходния слой на невронната мрежа, се нарича обучение на модела. Ще научим повече за обучението на невронни мрежи в следващия раздел на този курс.

Визуализиране на процеса на прогнозиране на невронна мрежа

Когато визуализираме неутрална мрежа, обикновено чертаем линии от предишния слой до текущия слой, когато предходният неврон има тегло по-горе 0във формулата за претеглена сума за текущия неврон.

Следното изображение ще ви помогне да визуализирате това:

Завършена невронна мрежа

Както можете да видите, не всяка двойка неврон-неврон има синапс. x4захранва само три от петте неврона в скрития слой, като пример. Това илюстрира важен момент при изграждането на невронни мрежи - че не всеки неврон в предходния слой трябва да се използва в следващия слой на невронна мрежа.

Как се обучават невронните мрежи

Досега сте научили следното за невронните мрежи:

  • Че са съставени от неврони
  • Че всеки неврон използва функция за активиране, приложена към претеглената сума на изходите от предходния слой на невронната мрежа
  • Широк обзор без код за това как невронните мрежи правят прогнози

Все още не сме обхванали много важна част от инженерния процес на невронната мрежа: как се обучават невронните мрежи.

Сега ще научите как се обучават невронните мрежи. Ще обсъдим набори от данни, алгоритми и общи принципи, използвани при обучението на съвременни невронни мрежи, които решават реални проблеми.

Твърдо кодиране срещу меко кодиране

Има два основни начина, по които можете да разработите компютърни приложения. Преди да разгледате как се обучават невронните мрежи, е важно да се уверите, че разбирате разликата между hard-codingи soft-codingкомпютърните програми.

Твърдо кодиране означава, че изрично указвате входни променливи и желаните от вас променливи на изхода. Казано по различен начин, твърдото кодиране не оставя място за компютъра да интерпретира проблема, който се опитвате да разрешите.

Мекото кодиране е пълната противоположност. Оставя място програмата да разбере какво се случва в набора от данни. Мекото кодиране позволява на компютъра да разработи свои собствени подходи за решаване на проблеми.

Тук е полезен конкретен пример. Ето два случая на това как можете да идентифицирате котки в набор от данни, използвайки техники за меко кодиране и твърдо кодиране.

  • Твърдо кодиране: използвате конкретни параметри, за да предскажете дали животното е котка. По-конкретно, може да кажете, че ако теглото и дължината на животното са в рамките на определени
  • Меко кодиране: предоставяте набор от данни, който съдържа животни, обозначени с техния вид и характеристики за тези животни. След това изграждате компютърна програма, за да предскажете дали животното е котка или не, въз основа на характеристиките в набора от данни.

Както можете да си представите, обучението на невронни мрежи попада в категорията на меко кодиране. Имайте това предвид, докато продължавате през този курс.

Обучение на невронна мрежа с използване на разходна функция

Невронните мрежи се обучават с помощта на a cost function, което е уравнение, използвано за измерване на грешката, съдържаща се в прогнозата на мрежата.

Формулата за функция за задълбочено обучение (която има много - това е само един пример) е по-долу:

Уравнение на разходната функция

Забележка: тази функция на разходите се нарича mean squared error, поради което в лявата страна на знака за равенство има MSE.

Въпреки че в това уравнение има много математика на формули, най-добре е да се обобщи, както следва:

Take the difference between the predicted output value of an observation and the actual output value of that observation. Square that difference and divide it by 2.

За да повторя, обърнете внимание, че това е просто един пример за функция на разходите, която може да се използва в машинното обучение (въпреки че това е най-популярният избор). Изборът на коя функция на разходите да се използва е сложна и интересна тема сама по себе си и извън обхвата на този урок.

Както споменахме, целта на изкуствената невронна мрежа е да сведе до минимум стойността на разходната функция. Функцията на разходите е сведена до минимум, когато прогнозираната стойност на вашия алгоритъм е възможно най-близка до действителната стойност. Казано по различен начин, целта на невронната мрежа е да сведе до минимум грешката, която допуска в своите прогнози!

Модифициране на невронна мрежа

След като се създаде първоначална невронна мрежа и се вмени нейната функция на разходите, се правят промени в невронната мрежа, за да се види дали те намаляват стойността на функцията на разходите.

По-конкретно, действителният компонент на невронната мрежа, който е модифициран, е теглото на всеки неврон в неговия синапс, които комуникират със следващия слой на мрежата.

Извиква се механизмът, чрез който теглото се модифицира, за да премести невронната мрежа в тегла с по-малко грешки gradient descent. Засега е достатъчно да разберете, че процесът на обучение на невронни мрежи изглежда така:

  • Задават се първоначални тегла за входните стойности на всеки неврон
  • Прогнозите се изчисляват, като се използват тези начални стойности
  • Прогнозите се подават във функция на разходите за измерване на грешката на невронната мрежа
  • Алгоритъмът за градиентно спускане променя тежестите за входните стойности на всеки неврон
  • Този процес продължава, докато тежестите престанат да се променят (или докато размерът на тяхната промяна при всяка итерация падне под определен праг)

Това може да изглежда много абстрактно - и това е ОК! Тези концепции обикновено се разбират напълно само когато започнете да обучавате първите си модели за машинно обучение.

Финални мисли

В този урок научихте за това как невронните мрежи извършват изчисления, за да правят полезни прогнози.

Ако се интересувате да научите повече за изграждането, обучението и внедряването на авангарден модел за машинно обучение, моята eBook Pragmatic Machine Learning ще ви научи как да изградите 9 различни модела за машинно обучение, използвайки реални проекти.

Можете да внедрите кода от електронната книга във вашия GitHub или лично портфолио, за да го покажете на бъдещите работодатели. Книгата стартира на 3 август - поръчайте я за 50% отстъпка сега!