Дубинско учење помоћу Питхона: Водич за почетнике за дубинско учење



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

је једна од Најпопуларнијих тема 2018-19 и то са добрим разлогом. Било је толико напретка у индустрији да је дошло време када машине или рачунарски програми заправо замењују људе. Ово Дубоко учење помоћу Питхона чланак ће вам помоћи да схватите шта је тачно дубинско учење и како је овај прелазак омогућен. У овом чланку ћу обрађивати следеће теме:

Наука података и њене компоненте

Па, Дата Сциенце је нешто што постоји већ вековима. Наука о подацима је издвајање знања из података коришћењем различитих техника и алгоритама.





АИ Временска црта - Дубоко учење са Питхоном - Едурека

је техника која омогућава машинама да опонашају људско понашање. Идеја која стоји иза АИ прилично је једноставна, али фасцинантна, а то је стварање интелигентних машина које саме могу доносити одлуке. Годинама се сматрало да рачунари никада неће одговарати снази људског мозга.



Е, тада нисмо имали довољно података и рачунарске снаге, али сада са Велики података постојањем и појавом ГПУ-а могућа је вештачка интелигенција.

је подскуп АИ технике која користи статистичке методе како би омогућила машинама да се побољшају искуством.



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

Потреба за дубоким учењем

Корак ка вештачкој интелигенцији је машинско учење. Машинско учење је подскуп уметничке интелигенције и заснива се на идеји да машинама треба омогућити приступ подацима и треба их оставити да уче и истражују сами. Бави се издвајањем образаца из великих скупова података. Руковање великим скуповима података није био проблем.

  • Алгоритми машинског учења не може да обрађује податке високе димензије - где имамо велики број улаза и излаза: око хиљаде димензија. Руковање и обрада такве врсте података постаје веома сложено и исцрпљује ресурсе. Ово се назива Проклетство димензионалности.

  • Још један изазов са којим се суочио био је, да се прецизира карактеристике које треба извући . Ово игра важну улогу у предвиђању исхода, као и у постизању боље тачности. Стога, без издвајања карактеристика, изазов за програмера се повећава јер ефикасност алгоритма веома зависи од тога колико је програмер проницљив.

Ево, овде је дубоко учење прискочило у помоћ. Дубоко учење је способан за руковање високодимензионалним подацима а такође је ефикасан у фокусирајући се на праве особине сама по себи.

Шта је дубоко учење?

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

Као што знате,наш мозак је састављен од милијарде неурона то нам омогућава да радимо невероватне ствари. Чак је и мозак малог детета способан да реши сложене проблеме које је врло тешко решити чак и помоћу Супер-рачунара. Па, како можемо постићи исту функционалност у програму? Ето, овде разумемо Вештачки неурон (Перцептрон) и Вештачка неуронска мрежа.

Перцептрон и вештачке неуронске мреже

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

  • Дендрит: Прима сигнале од других неурона
  • Ћелија тела: Збраја све улазе
  • Акон: Користи се за пренос сигнала у друге ћелије

Вештачки неурон или а Перцептрон је линеарни модел који се користи за бинарну класификацију. Моделира неурон који има скуп улаза, од којих сваки добија одређену тежину. Неурон израчунава неку функцију на њима пондерисана улази и даје излаз.

стринг константни базен у јави

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

  • Сабирање
  • Трансформација (активација)

Пондер показује ефикасност одређеног уноса. Што је већа тежина улаза, то ће више утицати на неуронску мрежу . С друге стране, Склоност је додатни параметар у Перцептрону који се користи за подешавање излаза заједно са пондерисаном сумом улаза у неурон који помаже моделу на начин да најбоље одговара датим подацима.

Функције активирања преводи улазе у излазе. Користи праг за производњу резултата. Постоје многе функције које се користе као функције активирања, попут:

  • Линеарно или идентитет
  • Јединица или Бинарни корак
  • Сигмоид или Логистика
  • Танх
  • РеЛУ
  • Софтмак

Добро. ако мислите да Перцептрон решава проблем, онда грешите. Била су два главна проблема:

  • Једнослојни перцептрони не могу класификовати нелинеарно одвојиве тачке података .
  • Сложени проблеми који укључују пуно параметара не могу се решити једнослојним перцептронима.

Размотрите пример овде и сложеност параметара укључених у доношење одлуке маркетиншког тима.

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

скооп увоз из орацле-а у хдфс
  • Улазни чворови пружају информације из спољног света мрежи и заједно се називају „улазни слој“.
  • Скривени чворови извршавају прорачуне и преносе информације са улазних чворова на излазне чворове. Колекција скривених чворова чини „Скривени слој“.
  • Излазни чворови заједнички се називају „излазни слој“ и одговорни су за прорачуне и пренос информација са мреже у спољни свет.

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

Примене дубоког учења

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

  • Препознавање говора

  • Машинско превођење

  • Препознавање лица и аутоматско означавање

  • Виртуелни лични асистенти

  • Самовозећи аутомобил

  • Цхатботс

Зашто Питхон за дубинско учење?

  • је један такав алат који има јединствени атрибут, бити а програмски језик опште намене као бити једноставан за коришћење када је реч о аналитичком и квантитативном рачунању.
  • То је врло лако разумети
  • Питхон је Динамицалли Типед
  • Огроман
  • Широк спектар библиотека за различите намене попут Нумпи, Сеаборн, Матплотлиб, Пандас и Сцикит-леарн

Сад довољно теорије, да видимо како можемо започети дубоко учење помоћу Питхона са малим, али узбудљивим примером.

Дубоко учење помоћу Питхона: пример перцептрона

Сада сам сигуран да сте момци сигурно упознати са радом „ ИЛИ ” капија. Излаз је један ако је било који од улаза такође један.

Према томе, Перцептрон се може користити као сепаратор или линија одлуке која дели улазни скуп ОР Гате у две класе:

Класа 1: Улази који имају излаз као 0 који се налази испод линије одлуке.
Класа 2: Улази који имају излаз 1 који се налази изнад линије одлуке или сепаратора.

До сада смо разумели да се линеарни перцептрон може користити за класификацију улазних података у две класе. Али, како заправо класификује податке?

Математички се перцептрон може сматрати једначином пондера, улаза и пристрасности.

Корак 1: Увезите сву потребну библиотеку

Овде ћу увести само једну библиотеку, тј. ТенсорФлов

увоз тенсорфлов као тф

Корак 2: Дефинишите векторске променљиве за улаз и излаз

Даље, треба да креирамо променљиве за складиштење улаза, излаза и пристрасности за Перцептрон.

воз_у = [[0,0,1], [0,1,1], [1,0,1], [1,1,1]] воз_излаз = [[0], [1], [1], [1]

Корак 3: Дефинишите променљиву тежине

Овде ћемо дефинисати тензорску променљиву облика 3 × 1 за наше тежине и у почетку ћемо јој доделити неке случајне вредности.

в = тф.Вариабле (тф.рандом_нормал ([3, 1], сеед = 15))

Корак 4: Дефинисање резервираних места за улаз и излаз

Морамо да дефинишемо чуваре места како би могли да прихватају спољне улазе у бекству.

к = тф.плацехолдер (тф.флоат32, [Ноне, 3]) и = тф.плацехолдер (тф.флоат32, [Ноне, 1])

Корак 5: Израчунајте излазну и активацијску функцију

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

излаз = тф.нн.релу (тф.матмул (к, в))

Напомена: У овом случају сам користио релу као моју функцију активирања. Можете користити било коју од функција за активирање у складу са својим потребама.

Корак 6: Израчунајте цену или грешку

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

губитак = тф.редуце_сум (тф.скуаре (излаз - и))

Корак 7: Умањивање грешке

Циљ перцептрона је да минимизира губитак или трошак или грешку. Дакле, овде ћемо користити Градиент Десцент Оптимизер.

оптимизер = тф.траин.ГрадиентДесцентОптимизер (0,01) траин = оптимизер.минимизе (губитак)

Корак 8: Иницијализујте све променљиве

Променљиве су дефинисане само са тф.Промена. Дакле, треба да иницијализујемо дефинисане променљиве.

инит = тф.глобал_вариаблес_инитиализер () сесс = тф.Сессион () сесс.рун (инит)

Корак 9: Обука перцептрона у понављању

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

за и у домету (100): сесс.рун (воз, {к: траин_ин, и: траин_оут}) трошак = сесс.рун (губитак, феед_дицт = {к: траин_ин, и: траин_оут}) принт ('Епоха-- ', и,' - губитак - ', трошак)

Корак 10: Излаз

……

……

Као што овде видите, губитак је почео у 2.07 и завршио се у 0.27

.

Дубоко учење помоћу Питхона: Стварање дубоке неуронске мреже

Сада када смо успешно креирали перцептрон и обучили га за ИЛИ капију. Наставимо овај чланак и видећемо како можемо створити сопствену неуронску мрежу од огреботина, где ћемо створити улазни слој, скривене слојеве и излазни слој.

Користићемо скуп података МНИСТ. Скуп података МНИСТ састоји се од 60.000 тренинга узорци и 10.000 тестирања узорци слика ручно написаних цифара. Слике су велике 28 × 28 пиксела а излаз може лежати између 0-9 .

Задатак је овде да се обучи модел који може тачно да идентификује цифру присутну на слици

Прво, користићемо увоз испод како бисмо функцију исписа из Питхон 3 пребацили у Питхон 2.6+. Изјаве __футуре__ морају да буду при врху датотеке, јер мењају основне ствари у вези са језиком, па преводилац мора о њима знати од почетка

фром __футуре__ импорт принт_ фунцтион

Следи код са коментарима на сваком кораку

# Увези МНИСТ податке из тенсорфлов.екамплес.туториалс.мнист импорт инпут_дата мнист = инпут_дата.реад_дата_сетс ('/ тмп / дата /', оне_хот = Труе) импорт тенсорфлов ас тф импорт матплотлиб.пиплот ас плт # Параметри леарнинг_рате = 0.001 траининг_епоцх батцх_сизе = 100 дисплаи_степ = 1 # Мрежни параметри н_хидден_1 = 256 # Број карактеристика 1. слоја н_хидден_2 = 256 # Број карактеристика 2. слоја н_инпут = 784 # МНИСТ унос података (имг схапе: 28 * 28) н_цлассес = 10 # МНИСТ укупне класе ( 0-9 цифара) # тф Улаз графикона к = тф.плацехолдер ('флоат', [Ноне, н_инпут]) и = тф.плацехолдер ('флоат', [Ноне, н_цлассес]) # Направите модел деф вишеслојни_перцептрон (к, тежине , пристрасности): # Скривени слој са РЕЛУ активацијским слојем_1 = тф.адд (тф.матмул (к, тежине ['х1']), пристраности ['б1']) лаиер_1 = тф.нн.релу (слој_1) # Скривени слој са РЕЛУ активацијским слојем_2 = тф.адд (тф.матмул (слој_1, тежине ['х2']), пристраности ['б2']) лаиер_2 = тф.нн.релу (слој_2) # Излазни слој са линеарном активацијом оут_лаиер = тф. матмул (слој _2, пондери ['оут']) + пристраности ['оут'] ретурн оут_лаиер # Складиштење тежине слојева и преднапрезања = {'х1': тф.Вариабле (тф.рандом_нормал ([н_инпут, н_хидден_1])), 'х2' : тф.Вариабле (тф.рандом_нормал ([н_хидден_1, н_хидден_2])), 'оут': тф.Вариабле (тф.рандом_нормал ([н_хидден_2, н_цлассес]))} пристраности = {'б1': тф.Вариабле (тф. рандом_нормал ([н_хидден_1])), 'б2': тф.Вариабле (тф.рандом_нормал ([н_хидден_2])), 'оут': тф.Вариабле (тф.рандом_нормал ([н_цлассес]))} # Конструирај модел пред = вишеслојни_перцептрон (к, пондери, пристрасности) # Дефинишите губитак и трошкове оптимизатора = тф.редуце_меан (тф.нн.софтмак_цросс_ентропи_витх_логитс (логитс = пред, лабелс = и)) оптимизер = тф.траин.АдамОптимизер (леарнинг_рате = леарнинг_рате) .минимизе (цост) # Иницијализација променљивих инит = тф.глобал_вариаблес_инитиализер () # креирајте празну листу за чување историје трошкова и историје тачности цост_хистори = [] точност_хисторија = [] # Покрените граф са тф.Сессион () као сесс: сесс.рун (инит ) # Циклус тренинга за епоху у опсегу (траининг_епоцхс): авг_цост = 0. тотал_батцх = инт (мнист.траин.нум_екамплес / батцх_сизе) # Прегледајте све серије за и у опсегу (тотал_батцх): батцх_к, батцх_и = мнист.траин.нект_батцх (батцх_сизе) # Покрените оптимизацију оп (бацкпроп) и трошак оп (за добијање вредности губитака) _, ц = сесс.рун ([оптимизер, трошак], феед_дицт = {к: батцх_к, и: батцх_и}) # Израчунајте просечни губитак авг_цост + = ц / тотал_батцх # Прикажите дневнике по кораку епохе ако епоха% дисплаи_степ == 0: правилно_предвиђање = тф.екуал (тф.аргмак (пред, 1), тф.аргмак (и, 1)) # Израчунај тачност тачности = тф.редуце_меан (тф.цаст (правилно_предвиђање, 'флоат') ) ацу_темп = тачност.евал ({к: мнист.тест.имагес, и: мнист.тест.лабелс}) #додај тачност на списак дакладнаст_хистори.аппенд (ацу_темп) #додај историји трошкова цост_хистори.аппенд (авг_цост) принт ('Епоха:', '% 04д'% (епоха + 1), '- трошак =', '{: .9ф}'. Формат (авг_цост), '- Тачност =', ацу_темп) принт ('Оптимизација завршена! ') #плот историје трошкова плт.плот (цост_хистори) плт.схов () #плот историја тачности плт.плот (тачност _хистори) плт.схов () # Тест модел цоррецт_предицтион = тф.екуал (тф.аргмак (пред, 1), тф.аргмак (и, 1)) # Израчунај тачност тачности = тф.редуце_меан (тф.цаст (правилно_предвиђање, ' флоат ')) принт (' Тачност: ', тачност.евал ({к: мнист.тест.имагес, и: мнист.тест.лабелс}))

Излаз:

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

стл сортирај ц ++

Едурека је припремљен од стране професионалних професионалаца у складу са индустријским захтевима и захтевима. Савладаћете концепте као што су СофтМак функција, Неуронске мреже аутоматског кодирања, Ограничена Болтзманнова машина (РБМ) и рад са библиотекама попут Керас & ТФЛеарн. Курс су посебно припремили индустријски стручњаци са студијама случајева у стварном времену.

Имате питање за нас? Молимо вас да га спомињете у одељку за коментаре „Дубинско учење помоћу Питхона“ и јавићемо вам се.