Вештачка интелигенција (АИ) је стекла значајну популарност последњих година.
Ако сте софтверски инжењер, рачунарски научник или уопште ентузијаста науке о подацима, онда сте вероватно заинтригирани невероватним апликацијама обраде слика, препознавања образаца и детекције објеката које пружа ова област.
Најважније подпоље АИ за које сте вероватно чули је дубоко учење. Ово поље се фокусира на моћне алгоритме (инструкције рачунарског програма) моделоване према функционалности људског мозга познате као Неуронске мреже.
У овом чланку ћемо прећи преко концепта неуронских мрежа и како да изградимо, компајлирамо, прилагодимо и проценимо ове моделе користећи Питон.
Неуронске мреже
Неуралне мреже или НН су низ алгоритама моделованих према биолошкој активности људског мозга. Неуралне мреже се састоје од чворова, који се такође називају неурони.
Колекција вертикалних чворова позната је као слојеви. Модел се састоји од једног улаза, једног излаза и више скривених слојева. Сваки слој се састоји од чворова, који се називају и неурони, где се одвијају прорачуни.
У следећем дијаграму, кругови представљају чворове, а вертикална колекција чворова представља слојеве. У овом моделу постоје три слоја.
Чворови једног слоја су повезани са следећим слојем преко далековода као што се види испод.
Наш скуп података се састоји од означених података. То значи да је сваком ентитету података додељена одређена вредност имена.
Дакле, за скуп података о класификацији животиња имаћемо слике мачака и паса као наше податке, са 'мачком' и 'пасом' као нашим ознакама.
Важно је напоменути да ознаке треба да се конвертују у нумеричке вредности да би наш модел имао смисла за њих, тако да наше ознаке животиња постају '0' за мачку и '1' за пса. И подаци и ознаке се преносе кроз модел.
Учење
Подаци се уносе у модел један по један ентитет. Ови подаци се рашчлањују на делове и прослеђују кроз сваки чвор модела. Чворови изводе математичке операције на овим деловима.
Не морате да знате математичке функције или прорачуне за овај водич, али је важно имати општу представу о томе како ови модели функционишу. Након серије прорачуна у једном слоју, подаци се преносе на следећи слој и тако даље.
Када се заврши, наш модел предвиђа ознаку података на излазном слоју (на пример, у проблему класификације животиња добијамо предвиђање '0' за мачку).
Модел затим наставља да пореди ову предвиђену вредност са оном стварне вредности ознаке.
Ако се вредности поклапају, наш модел ће узети следећи унос, али ако се вредности разликују, модел ће израчунати разлику између обе вредности, што се назива губитком, и прилагодити прорачуне чворова да би следећи пут произвео одговарајуће ознаке.
Оквири за дубоко учење
Да бисмо изградили неуронске мреже у коду, морамо да увеземо Оквири дубоког учења познате као библиотеке које користе наше интегрисано развојно окружење (ИДЕ).
Ови оквири су колекција унапред написаних функција које ће нам помоћи у овом водичу. Користићемо Керас оквир за изградњу нашег модела.
Керас је Питхон библиотека која користи позадину дубоког учења и вештачке интелигенције тзв. Тенсорфлов да са лакоћом креира НН у облику једноставних секвенцијалних модела.
Керас такође долази са сопственим већ постојећим моделима који се такође могу користити. За овај водич, креираћемо сопствени модел користећи Керас.
Можете сазнати више о овом оквиру за дубоко учење из Веб страница Керас.
Изградња неуронске мреже (водич)
Пређимо на изградњу неуронске мреже користећи Питхон.
Изјава о проблему
Неуралне мреже су врста решења за проблеме засноване на вештачкој интелигенцији. За овај водич ћемо прећи преко података о дијабетесу Индијанаца Пима, који су доступни ovde.
УЦИ Машинско учење је саставило овај скуп података и садржи медицински картон индијских пацијената. Наш модел мора да предвиди да ли пацијент има почетак дијабетеса у року од 5 година или не.
Учитавање скупа података
Наш скуп података је једна ЦСВ датотека под називом 'диабетес.цсв' којом се лако може манипулисати помоћу Мицрософт Екцел-а.
Пре креирања нашег модела, морамо да увеземо наш скуп података. Користећи следећи код можете то учинити:
увези панде као пд
подаци = пд.реад_цсв('диабетес.цсв')
к = дата.дроп(“Исход”)
и = подаци[“Исход”]
Овде користимо панде да бисмо могли да манипулишемо нашим подацима из ЦСВ датотеке, реад_цсв() је уграђена функција Панде која нам омогућава да чувамо вредности у нашој датотеци у променљивој која се зове 'подаци'.
Променљива к садржи наш скуп података без података о исходу (ознаке). То постижемо функцијом дата.дроп() која уклања ознаке за к, док и садржи само податке о исходу (ознаку).
Изградња секвенцијалног модела
Корак 1: Увоз библиотека
Прво, морамо да увеземо ТенсорФлов и Керас, заједно са одређеним параметрима потребним за наш модел. Следећи код нам омогућава да то урадимо:
импорт тенсорфлов као тф
из тенсорфлов импорт керас
из тенсорфлов.керас.моделс импорт Секуентиал
из тенсорфлов.керас.лаиерс импорт Ацтиватион, Денсе
из тенсорфлов.керас.оптимизерс импорт Адам
из тенсорфлов.керас.метрицс импорт цатегорицал_цроссентропи
За наш модел увозимо густе слојеве. Ово су потпуно повезани слојеви; тј. сваки чвор у слоју је у потпуности повезан са другим чвором у следећем слоју.
Такође увозимо и активирање функција потребна за скалирање података послатих чворовима. Оптимизатори су такође увезени да би се минимизирали губици.
Адам је познати оптимизатор који чини прорачуне чворова ажурирања нашег модела ефикаснијим, заједно са категоричка_кросентропија која је тип функције губитка (израчунава разлику између стварних и предвиђених вредности ознаке) коју ћемо користити.
Корак 2: Дизајнирање нашег модела
Модел који креирам има један улазни (са 16 јединица), један скривени (са 32 јединице) и један излазни (са 2 јединице) слој. Ови бројеви нису фиксни и у потпуности ће зависити од датог проблема.
Постављање правог броја јединица и слојева је процес који се може побољшати током времена кроз праксу. Активација одговара врсти скалирања које ћемо извршити на нашим подацима пре него што их прођемо кроз чвор.
Релу и Софтмак су познате функције за активацију за овај задатак.
модел = секвенцијални([
Густо(јединице = 16, инпут_схапе = (1,), активација = 'релу'),
Густо (јединице = 32, активација = 'релу'),
Густо (јединице = 2, активација = 'софтмак')
])
Ево како би резиме модела требало да изгледа:
Обука модела
Наш модел ће бити обучен у два корака, први је компајлирање модела (састављање модела) а следећи прилагођавање модела на датом скупу података.
Ово се може урадити коришћењем функције модел.цомпиле() иза које следи функција модел.фит().
модел.цомпиле(оптимизер = Адам(леарнинг_рате = 0.0001), губитак = 'бинари_цроссентропи', метрицс = ['аццураци'])
модел.фит(к, и, епохе = 30, батцх_сизе = 10)
Одређивање метрике „тачности“ нам омогућава да посматрамо тачност нашег модела током тренинга.
Пошто су наше ознаке у облику 1 и 0, користићемо бинарну функцију губитка да бисмо израчунали разлику између стварних и предвиђених ознака.
Скуп података се такође дели на групе од 10 (батцх_сизе) и биће прослеђени кроз модел 30 пута (епохе). За дати скуп података, к би били подаци, а и би биле ознаке које одговарају подацима.
Тестирање модела помоћу предвиђања
Да бисмо проценили наш модел, правимо предвиђања на основу података теста помоћу функције предицт().
предвиђања = модел.предицт(к)
И то је то!
Сада би требало да добро разумете Дееп Леарнинг апликација, Неуралне мреже, како уопште функционишу и како изградити, обучити и тестирати модел у Питхон коду.
Надам се да ће вам овај водич дати почетни корак да креирате и примените сопствене моделе дубоког учења.
Обавестите нас у коментарима да ли је чланак био од помоћи.
Ostavite komentar