Как да създадете своя собствена невронна мрежа от нулата в Python. Невронни мрежи: какво представляват и как марките ги използват

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

И тук идва най-важното нещо, от което се нуждаете за това: ДАННИ. Има много примери за задачи, които ще бъдат подавани на входа на невронна мрежа, и правилните отговори на тези задачи. Невронната мрежа ще се научи от това сама, за да даде тези правилни отговори.

И тук възникват куп детайли и нюанси, които трябва да бъдат известни и разбрани, за да има шанс всичко това да даде приемлив резултат. Не е реалистично да ги обхвана всички тук, така че ще изброя само някои точки. Първо, количеството данни. Това е много важен момент. Големите компании, чиято дейност е свързана с машинно обучение, обикновено съдържат специални отдели и персонал, които се занимават само със събиране и обработка на данни за обучение на невронни мрежи. Често се налага да се купуват данни и цялата тази дейност се превръща в значителен разход. Второ, представянето на данните. Ако всеки обект във вашия проблем е представен от относително малък брой числови параметри, тогава има шанс те да бъдат дадени директно на невронна мрежа в такава необработена форма и на изхода може да се получи приемлив резултат. Но ако обектите са сложни (картинки, звук, обекти с променливо измерение), тогава най-вероятно ще трябва да отделите време и усилия, за да изолирате от тях характеристиките, които са значими за решавания проблем. Това само по себе си може да отнеме много време и да има много по-голямо влияние върху крайния резултат дори от типа и архитектурата на невронната мрежа, избрана за използване.

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

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

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

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

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

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

1. Табло за управление на проекта ... По мои термини, подназначениесе разбира като съвкупността от самата невронна мрежа, изходните данни за обучение, настройките на параметрите на обучението и запазването на резултатите. Контролният панел на проекта ви позволява да редактирате компонентите на задачата (с изключение на невронната мрежа), да управлявате процеса на обучение и да наблюдавате резултатите от обучението на мрежата. Има и опции за записване и зареждане на задачи и готови мрежи. Отделно отбелязвам наличието на опция за запазване на резултатите. Ако проектът има заредена / създадена мрежа и е зареден масив от първоначални данни, тогава мрежовите параметри се изчисляват и резултатите се изтеглят във външен файл (таблица със стойности или работна книга на Excel). По същия начин можете да разберете резултатите, върнати от мрежата за всеки набор от интерактивно въведени аргументи.

2. Редактор на невронни мрежи (многослоен перцептон). Предоставя възможност за създаване и редактиране на невронна мрежа. Визуално мрежата се показва като структура от цветни топки. Зелените топки са входните ядра, червените са изходните ядра, а жълтите са ядрата на вътрешните слоеве. Възможно е да зададете броя на слоевете и ядрата в тях. За заредени задачи и мрежи, както и в случай, че вече са заредени данни за обучение на проекта, броят на входните и изходните ядра се приема равен на броя на съществуващите аргументи и резултати. Когато щракнете върху бутона "Запазване на мрежата", мрежата се записва в параметрите за обработка и началните тегла на ръбовете се инициализират на случаен принцип. Тоест, дори и да не сме променили структурата на мрежата, тя може да бъде изчистена от резултатите от предишното обучение, като я запазите отново в редактора.

3. Подсистема за анализиране на напредъка на обучението ... Подсистемата е много проста и представлява графика, показваща напредъка на обучението на мрежата в даден проект. Стъпката на събиране на статистически данни и общият брой стъпки за обучение се конфигурират в "Контролен панел на проекта". Статистиката не може да се види в реално време по време на тренировка. Той е също толкова неразделна част от проекта, колкото мрежата и наборите от данни за обучение и ще бъдат актуализирани и записани в проекта след завършване на обучението заедно с новите параметри на мрежата. Съответно, ако в заредения проект по време на предишното обучение опцията за статистика е била активирана, тогава прегледът на графиките на апроксимационните грешки е достъпен веднага след зареждане на задачата (проекта).

4. Модул за обработка ... Също така отделям модула за обработка в отделна подсистема поради наличието на експортни функции и процедури, които позволяват обучителни мрежи и получаване на резултати от изчисленията от мрежата чрез външни повиквания. Всъщност за мен тези функции са най-важните в развитието. Файлът със спецификация на проекта е прикачен и всеки проект, създаден по какъвто и да е начин в съответствие с тази спецификация, може да бъде обучен и желаният резултат може да бъде получен от мрежата, създадена в съответствие със спецификацията. Но тъй като на практика създаването, редактирането и обучението на мрежи е доста трудоемък и творчески процес, визуалните редактори и контролния панел са доста логична стъпка за опростяване и подобряване на качеството на работа. Но пак повтарям - на теория би могло да се направи без тях, тъй като модулът за обработка е напълно достатъчна функционалност за работа с готови задачи и мрежи. Останалите подсистеми са само моята версия на дизайна на кухнята за тяхната подготовка.

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

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

Алгоритъм за обучение- обратно разпространение на грешката. За подробности, ако се интересувате, отидете в Google.

Скорост на учене - адаптивен. На страта се взема стойността, посочена в параметрите, но по време на обучение скоростта на обучение може да се промени. Принципът на модификация на скоростта е, че в случай, когато посоката на градиента за ръба на мрежата не се променя между стъпките на обучение, скоростта на обучение се умножава по коефициента K> 1, а в случай на промяна в знака на градиента, факторът K става<1. Таким образом, норма обучения хотя и остается важнейшим параметром обучения, но ее неправильный выбор может быть в значительной степени скорректирован модификаторами.

Обучителна проба... Всички данни, предадени като аргументи и резултати, се разделят на случаен принцип преди обучението на 3 части (Обучение, Тест и Проверка) в съотношение 7: 2: 1. Освен това този произволен случай е различен всеки път и данните се разделят преди всеки тренировъчен цикъл. В резултат на това виждате картина, че при стартиране на втория (трети и т.н.) цикъл на обучение на същия проект, грешките в апроксимацията могат рязко да спаднат или да скочат при първите стъпки. Това не е така, защото е взета грешната мрежа - просто нова произволна извадка и нови стойности за грешка.

Какви са тези проби? Залата за обучение е разбираема. Тест - не участва директно в обучението, но грешката му е видима в процеса. Съдейки по стойността на грешката в обучението, или по-скоро, виждайки нейната динамика в сравнение с грешката в обучението, може да се прецени дали мрежата е претренирана (грешките се разминават) и като цяло доколко мрежовият модел е изграден спрямо данните.

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

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

Сега относно начините за стартиране на учебния процес от формата за обработка. Има само 3 от тях:

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

2. Изпълнете фоново задание от външна обработка. Мисля, че тук всичко е повече или по-малко ясно. Естествено, обработката трябва да бъде регистрирана в директорията на допълнителните отчети и обработка, а конфигурацията трябва да съдържа BSP версия не по-ниска от 1.2.1.4. В случая всичко ми работи добре.

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

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

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

Какво има в прикачения архив? Описание на състава на мрежовия проект (спецификация) за проекти за самостоятелно развитие ( MS Word ), проектни и мрежови демонстрационни файлове, както и набор от 2 файла с демонстрационни данни. Данните са таблици със стойности с набори от аргументи и резултати.

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

На това мисля, че си струва да приключим. Текстът вече е малко прекалено. Естествено, в процеса на използване на обработка на конкретни данни и реални примери, ще имате много въпроси и коментари. Основните отговори и съвети са дадени по-горе - тоест първо внимателно четем описанието. Има и помощ в основната форма за обработка. Можете също да го прочетете. Ами за всичко останало, което не е описано или не е ясно - коментари.

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

Какво е невронна мрежа?


Невронната мрежа е последователност от неврони, свързани чрез синапси. Структурата на невронната мрежа дойде в света на програмирането направо от биологията. Благодарение на тази структура машината придобива способността да анализира и дори да запаметява различна информация. Невронните мрежи също са в състояние не само да анализират входящата информация, но и да я възпроизвеждат от паметта си. За тези, които се интересуват, не забравяйте да гледате 2 видеоклипа от TED Talks: Видео 1 , Видео 2). С други думи, невронната мрежа е машинна интерпретация на човешкия мозък, която съдържа милиони неврони, които предават информация под формата на електрически импулси.

Какво представляват невронните мрежи?

Засега ще разгледаме примери за най-основния тип невронни мрежи - това е мрежа с пренасочване (наричана по-долу FNS). Също така в следващите статии ще представя повече концепции и ще ви разкажа за повтарящите се невронни мрежи. DSS, както подсказва името, е мрежа със серийна връзка от невронни слоеве, в която информацията винаги отива само в една посока.

За какво са невронните мрежи?

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

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

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

Признание- в момента най-широко разпространеното използване на невронни мрежи. Използва се в Google, когато търсите снимка или в камерите на телефона, когато открива позицията на лицето ви и го прави открояващ се и много повече.

Сега, за да разберем как работят невронните мрежи, нека да разгледаме компонентите и техните параметри.

Какво е неврон?


Невронът е изчислителна единица, която получава информация, извършва прости изчисления върху нея и я предава по-нататък. Те са разделени на три основни типа: вход (син), скрит (червен) и изход (зелен). Има също така неврон на отклонение и контекстен неврон, за които ще говорим в следващата статия. В случай, че невронната мрежа се състои от голям брой неврони, се въвежда терминът слой. Съответно има входен слой, който получава информация, n скрити слоя (обикновено не повече от 3), които я обработват и изходен слой, който извежда резултата. Всеки от невроните има 2 основни параметъра: входни данни и изходни данни. В случай на входен неврон: вход = изход. В останалата част общата информация за всички неврони от предишния слой попада във входното поле, след което се нормализира с помощта на функцията за активиране (засега просто я представете f (x)) и попада в изходното поле.


Важно е да запомнитече невроните оперират с числа в диапазона или [-1,1]. Но какво, питате, тогава да обработвате числа, които излизат от този диапазон? На този етап най-простият отговор е да разделите 1 на това число. Този процес се нарича нормализиране и много често се използва в невронните мрежи. Повече за това по-късно.

Какво е синапс?


Синапсът е връзка между два неврона. Синапсите имат 1 параметър - тегло. Благодарение на него входната информация се променя, когато се предава от един неврон на друг. Да кажем, че има 3 неврона, които предават информация на следващия. Тогава имаме 3 тегла, съответстващи на всеки от тези неврони. За неврона с по-голямо тегло тази информация ще бъде доминираща в следващия неврон (например смесване на цветове). Всъщност наборът от тегла на невронна мрежа или матрица от тегла е един вид мозък на цялата система. Благодарение на тези тегла входящата информация се обработва и преобразува в резултат.

Важно е да запомнитече по време на инициализацията на невронната мрежа теглата се задават на случаен принцип.

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


В този пример е изобразена част от невронна мрежа, където буквите I означават входните неврони, буквата H означава скрития неврон, а буквата w означава теглата. От формулата може да се види, че входната информация е сбор от всички входни данни, умножени по съответните тегла. След това даваме входните 1 и 0. Нека w1 = 0,4 и w2 = 0,7 Входните данни на неврона H1 ще бъдат както следва: 1 * 0,4 + 0 * 0,7 = 0,4. Сега, когато имаме входа, можем да получим изхода, като включим входа към функцията за активиране (повече за това по-късно). Сега, когато имаме изхода, го предаваме. И така, повтаряме за всички слоеве, докато стигнем до изходния неврон. Стартирайки такава мрежа за първи път, ще видим, че отговорът далеч не е правилен, тъй като мрежата не е обучена. Ще я обучим, за да подобри резултатите си. Но преди да научим как да правим това, нека представим няколко термина и свойства на невронна мрежа.

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

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

Линейна функция


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

Сигмоидна


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

Хиперболичен тангенс


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

Комплект за обучение

Наборът за обучение е последователност от данни, с които работи невронна мрежа. В нашия случай изключителният или (xor) имаме само 4 различни резултата, тоест ще имаме 4 обучителни набора: 0xor0 = 0, 0xor1 = 1, 1xor0 = 1.1xor1 = 0.

Повторение

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

епоха

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


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

Грешка

Грешката е процент, който представлява несъответствието между очакваните и получените отговори. Грешката се формира всяка епоха и трябва да намалява. Ако това не се случи, значи правите нещо нередно. Грешката може да бъде изчислена по различни начини, но ще разгледаме само три основни начина: средноквадратична грешка (наричана по-долу MSE), Root MSE и Arctan. Няма ограничение за използване, както при функцията за активиране, и вие сте свободни да изберете кой метод ще ви даде най-добри резултати. Трябва само да се има предвид, че всеки метод отчита грешките по различни начини. В Arctan грешката почти винаги ще бъде по-голяма, тъй като работи на принципа: колкото по-голяма е разликата, толкова по-голяма е грешката. Root MSE ще има най-малката грешка, поради което най-често се използва MSE, който поддържа баланс при изчисляването на грешката.


Изкуствен интелект, невронни мрежи, машинно обучение – какво всъщност означават всички тези популярни понятия? За повечето непосветени хора, какъвто съм аз самият, те винаги са изглеждали като нещо фантастично, но всъщност същността им лежи на повърхността. Отдавна имах идея да пиша на прост език за изкуствените невронни мрежи. Научете сами и кажете на другите каква е тази технология, как работи, помислете за нейната история и перспективи. В тази статия се опитах да не влизам в джунглата, а просто и популярно да разкажа за тази обещаваща посока в света на високите технологии.


Изкуствен интелект, невронни мрежи, машинно обучение – какво всъщност означават всички тези популярни понятия? За повечето непосветени хора, какъвто съм аз самият, те винаги са изглеждали като нещо фантастично, но всъщност същността им лежи на повърхността. Отдавна имах идея да пиша на прост език за изкуствените невронни мрежи. Научете сами и кажете на другите каква е тази технология, как работи, помислете за нейната история и перспективи. В тази статия се опитах да не влизам в джунглата, а просто и популярно да разкажа за тази обещаваща посока в света на високите технологии.

Малко история

За първи път концепцията за изкуствени невронни мрежи (ANN) възниква при опит да се симулират процесите на мозъка. Първият голям пробив в тази област може да се счита за създаването на модела на невронната мрежа McCulloch-Pitts през 1943 г. Учените за първи път разработиха модел на изкуствен неврон. Те също така предложиха изграждането на мрежа от тези елементи за извършване на логически операции. Но най-важното е, че учените са доказали, че такава мрежа е способна да се учи.

Следващата важна стъпка беше разработването от Доналд Хеб на първия алгоритъм за изчисляване на ANN през 1949 г., който стана основен през следващите няколко десетилетия. През 1958 г. Франк Розенблат разработва парцептрона, система, която имитира процесите на мозъка. По едно време технологията нямаше аналози и все още е основна в невронните мрежи. През 1986 г. практически едновременно, независимо един от друг, американски и съветски учени значително подобриха основния метод за преподаване на многослойния персептрон. През 2007 г. невронните мрежи претърпяха ново раждане. Британският компютърен учен Джефри Хинтън е пионер в алгоритъм за дълбоко обучение за многослойни невронни мрежи, който сега се използва например за управление на самоуправляващи се автомобили.

Накратко за основното

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

Самата невронна мрежа е система от много такива неврони (процесори). Поотделно тези процесори са доста прости (много по-прости от процесора на персонален компютър), но когато са свързани в голяма система, невроните са способни да изпълняват много сложни задачи.

В зависимост от областта на приложение, невронната мрежа може да се интерпретира по различни начини. Например, от гледна точка на машинното обучение, ANN е метод за разпознаване на модели. От математическа гледна точка това е многопараметричен проблем. От гледна точка на кибернетиката, това е модел на адаптивно управление на роботиката. За изкуствения интелект, ANN е основен компонент за моделиране на естествения интелект с помощта на изчислителни алгоритми.

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

Днешната ситуация

И без значение колко обещаваща би била тази технология, досега ANN са все още много далеч от възможностите на човешкия мозък и мислене. Независимо от това, невронните мрежи вече се използват в много области на човешката дейност. Засега те не са в състояние да вземат високоинтелектуални решения, но са в състояние да заменят човек там, където преди е бил необходим. Сред многобройните области на приложение на ANN може да се отбележи: създаването на самообучаващи се системи на производствени процеси, безпилотни превозни средства, системи за разпознаване на изображения, интелигентни системи за сигурност, роботика, системи за наблюдение на качеството, интерфейси за гласово взаимодействие, системи за анализ и много други . Такова широко използване на невронни мрежи се дължи, наред с други неща, и поради появата на различни начини за ускоряване на изучаването на ANN.

Днес пазарът на невронни мрежи е огромен - той е милиарди и милиарди долари. Както показва практиката, повечето от технологиите на невронните мрежи по света се различават малко една от друга. Използването на невронни мрежи обаче е много скъпо упражнение, което в повечето случаи могат да си позволят само големи компании. За разработването, обучението и тестването на невронни мрежи е необходима голяма изчислителна мощност, очевидно е, че големите играчи на ИТ пазара имат достатъчно от това. Сред основните компании, водещи в разработката в тази област, са Google DeepMind, Microsoft Research, IBM, Facebook и Baidu.

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

Защо невронните мрежи са все още далеч от човешкия мозък?

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

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

Резултат

Разбира се, през последното десетилетие се наблюдава истински бум в развитието на невронните мрежи. Това се дължи преди всичко на факта, че процесът на обучение на ANN стана много по-бърз и по-лесен. Също така, така наречените "предварително обучени" невронни мрежи започнаха да се развиват активно, което може значително да ускори процеса на внедряване на технологията. И ако е твърде рано да се каже дали някой ден невронните мрежи ще могат да възпроизведат напълно възможностите на човешкия мозък, вероятността през следващото десетилетие ANN ще могат да заменят хората в една четвърт от съществуващите професии става все повече и повече. като истината.

За тези, които искат да знаят повече

  • Голямата невронна война: Какво наистина прави Google
  • Как когнитивните компютри могат да променят бъдещето ни

Към отметки

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

Стъпка 0. Разбиране как работят невронните мрежи

Най-лесният начин да разберете принципите на невронните мрежи е Teachable Machine, образователен проект на Google.

Като вход - това, което трябва да бъде обработено от невронната мрежа - Teachable Machine използва изображение от камера на лаптоп. Като изход - какво трябва да направи невронната мрежа след обработка на входящите данни - можете да използвате GIF или звук.

Например, можете да научите обучаемата машина да казва „Здравей“ с дланта нагоре. С вдигнат нагоре палец - "Готино", а с изненадано лице с отворена уста - "Уау".

Първо трябва да обучите невронната мрежа. За да направите това, вдигнете дланта си и щракнете върху бутона Train Green - услугата прави няколко десетки снимки, за да намери модел в изображенията. Набор от такива моментни снимки обикновено се нарича "набор от данни".

Сега остава да изберете действието, което да бъде извикано при разпознаване на изображението - кажете фраза, покажете GIF или пуснете звук. По подобен начин ние обучаваме невронната мрежа да разпознава изненадано лице и палец.

След като невронната мрежа е обучена, тя може да се използва. Машината за обучение показва фактора „увереност“ – колко уверена е системата, че й се показва едно от уменията.

Кратко видео за обучаемата машина

Стъпка 1. Подготовка на компютъра за работа с невронна мрежа

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

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