Биографии Характеристики Анализ

Функция за грешка на невронната мрежа. Мрежово обучение - обратно разпространение

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

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

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

На фигурата по-долу са използвани следните конвенции:

Като функция за активиране в многослойни перцептрони, като правило, се използва сигмоидална функция за активиране, по-специално логистична:

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

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

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

Следващия:

  1. Инициализирайте синаптичните тегла с малки произволни стойности.
  2. Изберете следващата тренировъчна двойка от тренировъчния комплект; подайте входния вектор към входа на мрежата.
  3. Изчислете изхода на мрежата.
  4. Изчислете разликата между мрежовия изход и желания изход (целеви вектор на тренировъчна двойка).
  5. Коригирайте теглата на мрежата, за да минимизирате грешката (както е показано по-долу).
  6. Повторете стъпки от 2 до 5 за всеки вектор от набора за обучение, докато грешката в целия набор достигне приемливо ниво.

Операциите, извършвани от стъпки 2 и 3, са подобни на тези, извършвани по време на работа на вече обучена мрежа, т.е. входен вектор се подава и полученият изход се изчислява. Изчисленията се извършват на слоеве. На фиг. 1, първо се изчисляват изходите на невроните на слоя (слоят е вход, което означава, че в него не се извършват изчисления), след това те се използват като входове на слоя, изходите на невроните на слоя са изчислени, които формират изходния вектор на мрежата . Стъпки 2 и 3 образуват това, което е известно като преден проход, докато сигналът преминава през мрежата от вход към изход.

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

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

Случай 1. Корекция на синаптичните тегла на изходния слой

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

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

Тогава теглата на изходния слой след корекция ще бъдат равни на:

Ето пример за изчисления за синаптично тегло:

Случай 2. Регулиране на синаптичните тегла на скрития слой

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

Прудников Иван Алексеевич
MIREA(MTU)

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

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

Теоретична част

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

Архитектура

Фигура 1 показва многослойна невронна мрежа с един слой скрити неврони (Z елементи).

Невроните, които представляват изходите на мрежата (означени с Y) и скритите неврони могат да бъдат предубедени (както е показано на изображението). Отместването, съответстващо на изхода Y k, се обозначава с w ok, скрития елемент на Z j-V oj. Тези отклонения служат като тежести на връзките, идващи от невроните, чийто изход винаги се появява 1 (на фигура 1 те са показани, но обикновено не са изрично показани, подразбиращи се). В допълнение, стрелките на фигура 1 показват движението на информацията по време на фазата на разпространение на данни от входове към изходи. По време на процеса на обучение сигналите се разпространяват обратна посока.

Описание на алгоритъма

Представеният по-долу алгоритъм е приложим за невронна мрежа с един скрит слой, което е валидна и адекватна ситуация за повечето приложения. Както бе споменато по-рано, мрежовото обучение включва три етапа: доставяне на тренировъчни данни към входовете на мрежата, обратно разпространение на грешката и коригиране на теглата. По време на първия етап всеки входен неврон X i получава сигнал и го излъчва към всеки от скритите неврони Z 1 ,Z 2 ...,Z p . След това всеки скрит неврон изчислява резултата от своята функция за активиране (мрежова функция) и излъчва своя сигнал Z j към всички изходни неврони. Всеки изходен неврон Y k от своя страна изчислява резултата от своята функция за активиране Y k , което не е нищо повече от изходния сигнал на този неврон за съответните входни данни. По време на процеса на обучение всеки неврон на изхода на мрежата сравнява изчислената Y k стойност с предоставената от учителя t k (целева стойност), определяйки подходящата стойност на грешката за дадения входен модел. Въз основа на тази грешка се изчислява σ k (k = 1,2,...m). σ k се използва, когато се разпространява грешката от Y k към всички мрежови елементи на предишния слой (скрити неврони, свързани с Y k), а също и по-късно, когато се променят теглата на връзките между изходните неврони и скритите. По подобен начин σj (j = 1,2,...p) се изчислява за всеки скрит неврон Z j . Въпреки че не е необходимо да се разпространява грешката към входния слой, σj се използва за промяна на теглата на връзките между невроните в скрития слой и входните неврони. След като всички σ са определени, теглата на всички връзки се коригират едновременно.

Обозначения:

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

X Входен вектор на данни за обучение X = (X 1 , X 2 ,...,X i ,...,X n).
t Вектор на предоставените от учителя целеви резултати t = (t 1, t 2,...,t k,...,t m)
σ k Компонент на корекцията на теглата на връзките w jk , съответстващ на грешката на изходния неврон Y k ; също, информация за грешката на неврона Yk, която се разпределя към онези неврони от скрития слой, които са свързани с Yk.
σ j Компонент на корекцията на теглата на връзките v ij, съответстваща на информацията за грешка, разпространена от изходния слой към скрития неврон Z j.
скорост на учене.
X i Входен неврон с индекс i. За входните неврони входните и изходните сигнали са еднакви - X i .
v oj Отместване на скрития неврон j.
Z j Скрит неврон j; Обща стойноствходът на скрития елемент Z j се обозначава с Z_in j: Z_in j = v oj +∑x i *v ij
Сигналът на изхода Z j (резултатът от прилагането на функцията за активиране към Z_in j) се обозначава с Z j: Z j = f (Z_in j)
w ok Отместване на изходния неврон.
Y k Изходен неврон под индекс k; Общата стойност, подадена на входа на изходния елемент Y k, се обозначава с Y_in k: Y_in k = w ok + ∑ Z j *w jk. Изходният сигнал Y k (резултатът от прилагането на функцията за активиране към Y_in k) се обозначава с Y k:

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

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

Друга широко използвана функция за активиране е биполярната сигмоида с диапазон (-1, 1) и дефинирана като:


Алгоритъм за обучение

Алгоритъмът за обучение изглежда така:

Инициализация на теглата (теглата на всички връзки се инициализират с произволни малки стойности).

Докато условието за прекратяване на алгоритъма е невярно, се изпълняват стъпки 2 - 9.

За всяка двойка (данни, целева стойност) се изпълняват стъпки 3 - 8.

Разпространение на данни от входове към изходи:

Стъпка 3
Всеки входен неврон (X i , i = 1,2,...,n) изпраща получения сигнал X i до всички неврони в следващия (скрит) слой.

Всеки скрит неврон (Z j, j = 1,2,...,p) сумира претеглените входящи сигнали: z_in j = v oj + ∑ x i *v ij и прилага функцията за активиране: z j = f (z_in j) Тогава изпраща резултат до всички елементи на следващия слой (изход).

Всеки изходен неврон (Y k, k = 1,2,...m) сумира претеглените входни сигнали: Y_in k = w ok + ∑ Z j *w jk и прилага функция за активиране, изчислявайки изходния сигнал: Y k = f (Y_в k).

Обратно разпространение:

Всеки изходен неврон (Y k, k = 1,2,...m) получава целевата стойност - изходната стойност, която е правилна за дадения входен сигнал, и изчислява грешката: σ k = (t k - y k)*f " ( y_in k) също изчислява количеството, с което ще се промени теглото на връзката w jk: Δw jk = a * σ k * z j Освен това изчислява стойността на корекция на отместването: Δw ok = a*σ k и изпраща σ k към неврони в предишния слой.

Всеки скрит неврон (z j, j = 1,2,...p) сумира входящите грешки (от неврони в следващия слой) σ_in j = ∑ σ k * w jk и изчислява стойността на грешката чрез умножаване на получената стойност по производна на функцията за активиране: σ j = σ_in j * f "(z_in j), също изчислява количеството, с което теглото на връзката vij ще се промени: Δv ij = a * σ j * x i. Освен това изчислява сумата за корекция на отместването : v oj = a * σ j

Стъпка 8. Променете тежестите.

Всеки изходен неврон (yk, k = 1,2,...,m) променя теглата на връзките си с отклонения елемент и скритите неврони: w jk (нов) = w jk (стар) + Δw jk
Всеки скрит неврон (z j, j = 1,2,...p) променя теглата на връзките си с отклонения елемент и изходните неврони: v ij (нов) = v ij (стар) + Δv ij

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

За да обучат многослойна мрежа през 1986 г., Румелхарт и Хинтън (Rummelhart D.E., Hinton G.E., Williams R.J., 1986) предлагат алгоритъм за обратно разпространение на грешки. Многобройни публикации за индустриални приложениямногослойните мрежи с този алгоритъм за обучение потвърдиха основното си представяне на практика.

В началото възниква резонният въпрос - защо е невъзможно да се приложи известното -правило на Розенблат (виж Лекция 4) за обучение на многослоен перцептрон? Отговорът е, че за да се приложи методът на Розенблат, е необходимо да се знаят не само текущите изходи на невроните y, но и необходимите правилностойности Y. В случай на многослойна мрежа, тези правилни стойности са налични само за неврони уикендслой. Необходимите изходни стойности за невроните на скрития слой са неизвестни, което ограничава приложението на -правилото.

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

Нека разгледаме по-подробно този алгоритъм. За да опростим нотацията, ние се ограничаваме до ситуацията, в която мрежата има само един скрит слой. Означаваме матрицата на тегловните коефициенти от входовете към скрития слой с W, а матрицата на теглата, свързващи скритите и изходните слоеве, като V. За индексите ще използваме следната нотация: ще номерираме входовете само с индекс i, елементите на скрития слой с индекс j, а изходите, съответно, с индекс k.

Нека мрежата се обучи върху извадката (X,Y),=1..p. Дейностите на невроните ще бъдат обозначени с малки букви y със съответния индекс, а общите претеглени входове на невроните ще бъдат обозначени с малки букви x.

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

Таблица 6.1. Алгоритъм за обратно разпространение.

Първоначални стойноститеглата на всички неврони от всички слоеве V(t=0) и W(t=0) се приемат за произволни числа.

Мрежата се представя с входно изображение X, в резултат на което се формира изходно изображение yY. В този случай невроните последователно от слой на слой функционират съгласно следните формули:

скрит слой

изходен слой

Тук f(x) е сигмоидна функция, дефинирана от формула (6.1)

Функционален квадратична грешкамрежа за дадено входно изображение има формата:

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

Функцията на грешката не зависи изрично от теглото V jk, така че използваме формулите за имплицитно диференциране на сложна функция:

Тук се взема предвид полезно свойствосигмоидална функция f(x): нейната производна се изразява само чрез стойността на самата функция, f’(x)=f(1-f). По този начин са получени всички необходими стойности за регулиране на теглата на изходния слой V.

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

Производните се изчисляват по същите формули, с изключение на някои усложнения на формулата за грешката  j .

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

Стъпки 1-3 се повтарят за всички тренировъчни вектори. Обучението приключва, когато се достигне малка обща грешка или максимално допустимия брой итерации, както при метода на обучение на Розенблат.

Както може да се види от описанието на стъпки 2-3, обучението се свежда до решаване на проблема за оптимизиране на функционалната грешка чрез градиентния метод. Цялата „сол“ на обратното разпространение на грешката е, че за нейната оценка за невроните на скритите слоеве можете да вземете претеглената сума на грешките на следващия слой.

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

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

В края на лекцията ще направим забележка относно настройката на праговете на невроните. Лесно е да се види, че прагът на неврон може да бъде направен еквивалентен на допълнителното тегло, свързано с фиктивния вход, равно на -1. Наистина, избирайки W 0 =, x 0 =-1 и започвайки сумирането от нула, можем да разгледаме неврон с нулев праг и един допълнителен вход:

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

Алгоритъм за обратно разпространение

Синоними: алгоритъм BackProp, алгоритъм за обратно разпространение, BackProp

Логин: Невронна мрежа (класификация) (процесор), Невронна мрежа (регресия) (процесор)

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

Идеята на алгоритъма се основава на използването на изходната грешка на невронната мрежа:

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

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

където - i-то тегловръзки на j-тия неврон, е параметърът на скоростта на обучение, който ви позволява допълнително да контролирате размера на стъпката на корекция, за да коригирате по-точно минималната грешка и се избира експериментално в процеса на обучение (промени в диапазона от 0 до 1).

Като се има предвид, че изходната сума на j-тия неврон е равна на

може да се покаже, че

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

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

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

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

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

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

  • неопределено дълъг процес на обучение:
  • възможността за „парализа на мрежата“, когато големи стойностиработната точка на функцията за активиране се оказва в областта на насищане на сигмоида и производната в израз (1) става близка до 0, а корекцията на теглото практически не се извършва и процесът на обучение „замръзва“;
  • уязвимост на алгоритъма към удари локални минимумифункции за грешки.

Алгоритъмът е описан за първи път през 1974 г.

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

Обучение на конволюционна невронна мрежа

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

По този начин обучението на невронната мрежа се свежда до минимизиране на функцията за грешка чрез коригиране на коефициентите на тегло на синаптичните връзки между невроните. Функцията за грешка е разликата между получения и желания отговор. Например, входът е изображение на лице, да предположим, че изходът на невронната мрежа е 0,73 и желан резултат 1 (тъй като изображението на лицето), получаваме, че мрежовата грешка е разликата, тоест 0,27. След това теглата на изходния слой от неврони се коригират според грешката. За невроните на изходния слой са известни техните действителни и желани изходни стойности. Следователно, настройването на теглата на връзката за такива неврони е относително лесно. Въпреки това, за невроните от предишните слоеве, настройката не е толкова очевидна. Дълго време не беше известен алгоритъм за разпространение на грешки през скрити слоеве.

Алгоритъм за обратно разпространение

За обучение на описаната невронна мрежа е използван алгоритъмът за обратно разпространение. Този метод за обучение на многослойна невронна мрежа се нарича обобщено делта правило. Методът е предложен през 1986 г. от Rumelhart, McClelland и Williams. Това бележи възраждане на интереса към невронните мрежи, който започва да избледнява в началото на 70-те години. Този алгоритъм е първият и основен практически приложим за обучение на многослойни невронни мрежи.

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

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

Стойността на грешката се определя по формулата 2.8 средна квадратична грешка:

Инактивираното състояние на всеки неврон j за изображението p се записва като претеглена сума съгласно формула 2.9:

Резултатът от всеки неврон j е стойността на функцията за активиране

Което поставя неврона в активирано състояние. Всяка непрекъснато диференцируема монотонна функция може да се използва като активираща функция. Активираното състояние на неврона се изчислява по формула 2.10:

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

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

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

Грешката на неврон обикновено се записва като символ δ (делта). За изходния слой грешката е изрично дефинирана, ако вземем производната на формула 2.8, получаваме Tминус г, тоест разликата между желаната и получената продукция. Но как да изчислим грешката за скрити слоеве? За да се реши този проблем, беше изобретен алгоритъмът за обратно разпространение. Същността му се състои в последователното изчисляване на грешките на скритите слоеве, като се използват стойностите на грешките на изходния слой, т.е. стойностите на грешката се разпространяват през мрежата в обратна посока от изход към вход.

Грешката δ за скрития слой се изчислява по формула 2.13:

Алгоритъмът за разпространение на грешката се свежда до следните стъпки:

  • директно разпространение на сигнала по мрежата, изчисляване на състоянието на невроните;
  • изчисляване на стойност на грешка 5 за изходния слой;
  • обратно разпространение: последователно от края към началото за всички скрити слоеве, изчисляваме δ, използвайки формула 2.13;
  • актуализиране на теглата на мрежата до предварително изчислената грешка δ.
Алгоритъмът за обратно разпространение на грешки в многослоен перцептрон е показан по-долу:


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

Изчисляване на грешката на слоя подпроба

Изчисляването на грешката на слоя подпроба се представя по няколко начина. Първият случай, когато слоят на подпробата е пред напълно свързания слой, тогава той има неврони и връзки от същия тип като в напълно свързания слой, съответно изчисляването на грешката δ не се различава от изчисляването на δ на скрития слой. Във втория случай, когато слоят за подизвадка е пред конволюционния слой, изчисляването на δ става чрез обратна конволюция. За да разберете обратната конволюция, първо трябва да разберете обикновената конволюция и факта, че плъзгащият се прозорец на картата на характеристиките (по време на разпространението на сигнала напред) може да се интерпретира като нормален скрит слой с връзки между неврони, но основната разлика е, че тези връзки са сепарируеми, тоест няколко двойки неврони могат да имат една връзка с определена стойност на теглото, а не само една. Интерпретация на операцията на навиване в обичайната многопластова форма в съответствие с Фигура 2.8.


Фигура 2.8 - Интерпретация на операцията за навиване в многослоен изглед, където връзките с един и същи цвят имат еднакво тегло. Картата на подпробата е маркирана в синьо, синаптичното ядро ​​е многоцветно, а получената намотка е оранжева

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


Фигура 2.9 - Изчисляване на δ подизвадков слой поради δ конволюционен слой и ядро

Обратна навивкае същият начин за изчисляване на делти, само че по малко сложен начин, който се състои в завъртане на ядрото на 180 градуса и плъзгане на процеса на сканиране на конволюционната карта на делтите с модифицирани ръбови ефекти. С прости думи, трябва да вземем сърцевината на конволюционната карта (до слоя с подпробата), да я завъртим на 180 градуса и да направим нормална конволюция, използвайки делтите на конволюционната карта, изчислени по-рано, но така че прозорецът за сканиране да се простира отвъд картата. Резултатът от операцията по деконволюция в съответствие с Фигура 2.10, цикълът на преминаване на деконволюция в съответствие с Фигура 2.11.


Фигура 2.10 - Резултатът от операцията за обратна навивка


Фигура 2.11 - Завъртено ядро ​​на 180 градуса сканира картата на навивката

Изчисляване на грешки в конволюционния слой

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

Заключение

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