Изкуствена невронна мрежа | вид компютърен софтуер, вдъхновен от биологичните неврони

Невронната мрежа (наричана също ANN или изкуствена невронна мрежа) е вид компютърен софтуер, вдъхновен от биологичните неврони. Биологичните мозъци са способни да решават трудни проблеми, но всеки неврон отговаря само за решаването на много малка част от проблема. По подобен начин невронната мрежа е съставена от клетки, които работят заедно, за да постигнат желания резултат, въпреки че всяка отделна клетка отговаря само за решаването на малка част от проблема. Това е един от методите за създаване на изкуствено интелигентни програми.

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


 

Преглед

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

Първият слой се нарича "входен слой" и получава данни от външния свят (например: изображение или текст). Последният слой се нарича "изходен слой". Данните от невроните в изходния слой се прочитат и се използват като изход на мрежата. Другите слоеве се наричат "скрити слоеве".

В една обикновена мрежа с пренасочване данните, които невроните обработват, са числа. Всеки неврон прави претеглена сума от стойността на невроните от предишния слой ( X i {\displaystyle X_{i}}{\displaystyle X_{i}} в уравнението по-долу). След това към нея се добавя постоянна стойност (наречена "отклонение"). Накрая към тази стойност се прилага математическа функция, наречена "функция на активиране". Функцията за активиране обикновено е функция, която връща стойност между 0 и 1, например tanh. Резултатът от функцията за активиране ( Y j {\displaystyle Y_{j}}{\displaystyle Y_{j}} в уравнението по-долу) след това се изпраща към невроните на следващия слой.

Y j = А к т и в а ц и я ( ∑ i I n p u t s W e i g h t ( i , j ) X i + B i a s ( j ) ) {\displaystyle Y_{j}=Активиране(\sum _{i\;\in \;Inputs}{Weight(i,j)}*X_{i}+Bias(j))} {\displaystyle Y_{j}=Activation(\sum _{i\;\in \;Inputs}{Weight(i,j)}*X_{i}+Bias(j))}

За мрежата е дефинирана функция на загубите. Функцията за загуба се опитва да оцени колко добре се справя невронната мрежа с възложената ѝ задача. Накрая се прилага техника за оптимизация, за да се минимизира изходът на функцията на разходите чрез промяна на теглата и отклоненията на мрежата. Този процес се нарича обучение. Обучението се извършва на една малка стъпка в даден момент. След хиляди стъпки мрежата обикновено е в състояние да изпълнява доста добре възложената ѝ задача.



 

Пример

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

функция isAlive(pulse, breathing) { if(pulse || breathing) { return true; } else { return false; } }

Една много проста невронна мрежа, съставена само от един неврон, която решава един и същ проблем, ще изглежда така:

Single neuron which takes the values of pulse (true/false) and breathing (true/false), and outputs value of alive (true/false).

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

Ако съберем заедно стойности като (1,1), може да получим числа, по-големи от 1, но ние искаме резултатът ни да бъде между 0 и 1! За да решим този проблем, можем да приложим функция, която ограничава действителния ни изход до 0 или 1, дори ако резултатът от математическите изчисления на неврона не е бил в рамките на този диапазон. При по-сложните невронни мрежи прилагаме функция (например сигмоид) към неврона, така че стойността му да бъде между 0 и 1 (например 0,66), и след това предаваме тази стойност на следващия неврон през целия път, докато не се нуждаем от нашия изход.



 

Методи на обучение

Невронната мрежа може да се учи по три начина: учене с наблюдение, учене без наблюдение и учене с подсилване. Всички тези методи работят чрез минимизиране или максимизиране на функция на разходите, но всеки от тях е по-добър при определени задачи.

Неотдавна изследователски екип от Университета на Хертфордшир, Великобритания, използва обучение с подсилване, за да накара хуманоидния робот iCub да се научи да произнася прости думи чрез бърборене.

 

Въпроси и отговори

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


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

Въпрос: Как се сравнява невронната мрежа с биологичните мозъци?


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

Въпрос: Какъв тип програми могат да създават изкуствено интелигентни програми?


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

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


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

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


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

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



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

AlegsaOnline.com - 2020 / 2023 - License CC3