Како работи нервната мрежа.Алгоритми, обуки, активирање и функции на загуба

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

Под а нервна мрежа се разбира обидот за делумна репродукција на работата на човечкиот мозок со цел да се изработат механизми со вештачка интелигенција.

За да се постигнат овие цели, потребен е сет за обука (збир на податоци). Идеално, овој сет се состои од примери со реални вредности: ознаки, класи, мерки.

На пример, ако реченицата за обука ја анализира тоналноста на текстот, тогаш е потребен список на реченици со соодветни емоционални проценки. Да се ​​осврнеме на речениците како X и означува како Y. Функција ја одредува врската помеѓу нив. Во случај на анализа на тоналитетот на текстот, ова се одлики како зборови, фрази, реченична структура што ја прави реченицата звучна негативна или позитивна.

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

мрежа

Трите најважни компоненти на вештачката нервна мрежа се:

  • Влезен слој;
  • Скриени (пресметковни) слоеви;
  • Излезен слој.

Обуката на нервните мрежи се одвива во две фази:

  • Директно размножување
  • Назад-ширење

Со директно размножување, се предвидува одговор. Особеноста на backpagation е минимизирање на грешката помеѓу реалниот одговор и предвидениот.

Директно размножување

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

  • w1
  • w2

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

  • h1 = (x1 * w1) + (x2 * w1)
  • h2 = (x1 * w2) + (x2 * w2)
  • h3 = (x1 * w3) + (x2 * w3)

Нелинеарната функција (функција за активирање) ги пренесува излезните податоци од скриениот слој за да се добие мрежниот излез:

  • y_ = fn (h1, h2, h3)

Назад-ширење

  • Вкупната грешка (total_error) е разликата помеѓу очекуваната вредност “y” (од множеството обука) и добиената вредност “y_” (т.е. се пресметува во фазата на директно размножување) низ која поминува функцијата на загуба (функција на трошок).
  • Делумниот дериват на грешката се пресметува за секоја тежина. Овие делумни диференцијали се смета дека го одразуваат придонесот на секоја тежина во вкупната грешка (total_loss).
  • Во следната фаза, овие диференцијали се множат со број наречен брзина на учење или стапка на учење (η).

Конечно, резултатот се одзема од соодветните пондери.

Резултатот е следниве ажурирани тежини:

  • w1 = w1 - (η * ∂ (грешка)/∂ (w1))
  • w2 = w2 - (η * ∂ (грешка)/∂ (w2))
  • w3 = w3 - (η * ∂ (грешка)/∂ (w3))

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

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

Поместувањата се тегови што се додаваат на скриените слоеви. Тие исто така случајно се иницијализираат и ажурираат како скриениот слој. Но, како тие се разликуваат? Улогата на скриениот слој е да се одреди обликот на основната функција во податоците. Улогата на поместување, од друга страна, е да ја неутрализира главната функција, така што таа делумно се совпаѓа со функцијата за излез.

Делумни деривати

Делумни деривати може да се пресметаат. Затоа, познат е придонесот кон грешка за секоја тежина. Потребата од извод е очигледна. Како пример, може да се наведе нервната мрежа што се обидува да ја одреди оптималната брзина на возилото без екипаж. Ако автомобилот утврди дека патува побрзо или побавно од потребната брзина, нервната мрежа ја прилагодува брзината со забрзување или забавување на автомобилот. Што се забрзува/забавува? Изведените брзини.

Неколку примери исто така се разгледуваат за да се анализира неопходноста од парцијални деривати.

На пример, на децата им е дадена задача да фрлат стрела кон целта со насочување кон центарот. Еве ги резултатите:

Кога ќе се најде заедничка грешка и едноставно се одземе од сите тежини, грешките направени од секое дете се генерализираат. Да претпоставиме дека дете фрлило премногу ниско иако од сите деца било побарано да се обидат да ја погодат целта. Ова води кон следниве резултати:

Грешката кај некои деца може да се намали, но целокупната грешка продолжува да се зголемува.

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

Хиперпараметри

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

Стапка на учење

Брзината на учење е една од многу важните хиперпараметри. Ако брзината на учење е бавна, нервната мрежа не постигнува оптимални резултати дури и по континуирана обука. Резултатите може да се претстават на следниов начин:

Од друга страна, нервната мрежа ги дава одговорите многу брзо со голема брзина на учење. Еве ги резултатите:

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

Функцијата за активирање е една од најмоќните алатки бидејќи влијае на перформансите што им се доделуваат на нервните мрежи. Делумно, тој одредува кои неврони се активираат; Х. какви информации се пренесуваат на следните смени.

Без функции за активирање, длабоките мрежи губат голем дел од нивната способност за учење. Бидејќи нелинеарноста на овие функции е одговорна за зголемување на степенот на слобода, проблемите со висока димензија можат да се генерализираат на пониски димензии. Следниве се примери на вообичаени функции за активирање:

Функција на загуба

Функцијата на загуба е во средината на нервната мрежа. Се користи за пресметување на грешката помеѓу реалните и добиените одговори. Нашата глобална цел е да ги минимизираме овие грешки. На овој начин, функцијата на загуба ефикасно ја приближува нервната мрежа до оваа цел.

Функцијата на загуба мери „колку е добра“ нервната мрежа во однос на овие податоци за обука и очекуваните одговори. Може да зависи и од варијабли како што се тежини и смени.

Функцијата на загуба е еднодимензионална и не е вектор, бидејќи мери колку добро функционира нервната мрежа како целина.

Некои познати функции на загуба се:

  • Квадратна (средна девијација на квадрат)
  • Крос-ентропија
  • Експоненцијали (AdaBoost/Адаптивно зајакнување)
  • Дивергенција или добивка на информации од Kullback-Leibler.

Средното квадратно отстапување на коренот е наједноставната и најчесто користената функција за загуба. Поставено е вака:

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

  • Функцијата на загуба е прикажана како просек.
  • Функцијата на загуба не зависи од какви било вредности на активирање на нервната мрежа. Исклучок се вредностите што се излегуваат на излезот.

Длабоки нервни мрежи

Длабокото учење се однесува на класа алгоритми за машинско учење кои се обучени со цел подлабоко (поапстрактно) да ги разберат податоците. Шемата подолу претставува популарни алгоритми на нервната мрежа за длабоко учење:

Неколку детали за длабоко учење:

  • Каскада се користи за извлекување и трансформација на карактеристики од многу слоеви на обработка (нелинеарни), т.е. цевковод како последователно пренесен проток.
  • Длабокото учење се заснова на одликите за учење (репрезентација на информации) во податоците без надгледувано учење. Функциите на повисоко ниво, кои се наоѓаат во последните слоеви, се добиваат од функциите на пониското ниво, кои се наоѓаат во почетните слоеви.
  • Длабокото учење ги истражува слоевитите претстави кои одговараат на различни нивоа на апстракција. Овие нивоа формираат хиерархија на приказ.

пример

Подолу е претставата на еден слој нервна мрежа:

Треба да се напомене дека во овој случај само првиот слој (зелени неврони) е обучен и едноставно поминат до излезот.

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

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

Да не се меша со широка нервна мрежа, каде што голем број на неврони во слој не предизвикува длабоко разбирање на податоците, но доведува до учење на поголем број карактеристики.

Кога учите граматика на германски јазик, мора да знаете различни поими. Во овој случај, има повеќе смисла да се користи еднослојна широка нервна мрежа отколку длабока нервна мрежа што е многу помала.

Кога се учи Фуриевата трансформација, нервната мрежа треба да биде длабока бидејќи нема толку многу поими што треба да се знаат, но секој од нив е доста комплициран и бара длабоко разбирање.

Најважно е рамнотежата

Многу е вредно да се користат длабоки и широки нервни мрежи за која било задача. Еве неколку причини зошто ова не е секогаш добра идеја:

  • За двете мрежи, потребна е многу поголема количина на податоци за обука со цел да се постигне саканата минимална точност.
  • Експоненцијалната сложеност е типична за обете мрежи.
  • Премногу длабока нервна мрежа ќе направи обид да ги уништи основните поими. Притоа, тоа ќе направи погрешни предвидувања и ќе најде псевдо-зависности кои воопшто не постојат.
  • Премногу широка нервна мрежа ќе се обиде да најде повеќе карактеристики отколку што има. Исто како длабока мрежа, таа ќе направи лажни предвидувања за податоците.

Проклетство на димензионалноста

Проклетството на димензијата е израз што се користи за упатување на разни појави при анализа и организирање на податоци во повеќедимензионални простори (често со стотици или илјадници димензии). Не се јавува во ниски димензионални ситуации.

Граматиката на германскиот јазик има голем број атрибути кои влијаат на тоа. Во машинското учење, тие се претставени како одлики во форма на низа/матрица со конечна должина и многу пократки од бројот на постојните одлики. За таа цел, мрежите ги генерализираат овие карактеристики. Ова доведува до два проблеми:

  • Погрешните претпоставки предизвикуваат поместувања. Голема промена може да доведе до тоа алгоритмот да не забележи суштинска врска помеѓу карактеристиките и целните променливи. Овој феномен се нарекува недоволно обука.
  • Малите отстапувања во големиот број податоци за обука ја зголемуваат варијансата, бидејќи карактеристиките се недоволно научени. Високата варијанса предизвикува преквалификација, грешките се перципираат како веродостојни информации.

Компромис

Во раната фаза на обука, смената е голема, бидејќи излезот на мрежата е далеку од потребниот резултат. И варијансата е премала поради моменталното мало влијание на податоците.

На крајот од обуката, смената е мала бидејќи главната функција се најде во податоците од мрежата. Со континуирана обука, мрежата исто така ја истражува бучавата што е типична за оваа група податоци. Ова предизвикува големи варијации на резултатите при тестирање за различни мнозинства, бидејќи бучавата се менува од збир на податоци во збир на податоци.

Всушност, алгоритмите со големи офсет се базираат на едноставни модели кои не се склони кон претренирање. Сепак, тие можат да бидат недоволно обучени и да не успеат да утврдат важни правилности или својства на карактеристиките. Малите модели на поместување, големите варијанси имаат тенденција да бидат посложени во однос на нивната структура, што овозможува попрецизно претставување на сетот за обука. Бидејќи тие можат да мапираат многу бучава од сетот за обука, нивните предвидувања се помалку точни и покрај нивната дополнителна комплексност.

Од ова може да се заклучи дека истовремено постоење на мала промена и мала варијанса е обично невозможно.

Денес постојат многу алатки кои го олеснуваат создавањето комплицирани модели за машинско учење, а првото место го зафаќа претренирање. Кога мрежата прима недоволни информации, се јавува смена. Колку повеќе примери се обучуваат, толку повеќе варијанти на зависности и варијабилности се појавуваат во овие корелации.