Globoko učenje s Pythonom: Vodnik za globinsko učenje za začetnike



V tem članku boste našli celovito in podrobno znanje o poglobljenem učenju s Pythonom in o tem, kako koristno je v vsakdanjem življenju.

je ena najbolj vročih tem v letih 2018-19 in z dobrim razlogom. V industriji je bilo toliko napredka, da je napočil čas, ko stroji ali računalniški programi dejansko nadomeščajo ljudi. To Globoko učenje s Pythonom članek vam bo pomagal razumeti, kaj natančno je poglobljeno učenje in kako je ta prehod omogočen. V tem članku bom obravnaval naslednje teme:

Podatkovna znanost in njene komponente

No, Data Science je nekaj, kar obstaja že stoletja. Znanost o podatkih je pridobivanje znanja iz podatkov z uporabo različnih tehnik in algoritmov.





AI Časovnica - Poglobljeno učenje s Pythonom - Edureka

je tehnika, ki omogoča strojem posnemanje človeškega vedenja. Ideja, ki stoji za umetno inteligenco, je dokaj preprosta, a fascinantna: ustvariti inteligentne stroje, ki se lahko sami odločajo. Leta so mislili, da se računalniki nikoli ne bodo ujemali z močjo človeških možganov.



No, takrat nismo imeli dovolj podatkov in računalniške moči, zdaj pa še Veliki podatki z nastankom grafičnih procesorjev je mogoča umetna inteligenca.

je podskupina tehnike umetne inteligence, ki s statističnimi metodami omogoča strojem izboljšanje z izkušnjami.



Globoko učenje je podskupina ML, ki omogoča izračun večplastne nevronske mreže. Uporablja nevronske mreže za simulacijo človeku podobnega odločanja.

Potreba po globokem učenju

Korak k umetni inteligenci je strojno učenje. Strojno učenje je podskupina umetne inteligence in temelji na ideji, da bi morali stroji dobiti dostop do podatkov in jim pustiti, da se sami učijo in raziskujejo. Ukvarja se z ekstrakcijo vzorcev iz velikih naborov podatkov. Ravnanje z velikimi nabori podatkov ni predstavljalo težav.

ustvari singleton razred v javi
  • Algoritmi strojnega učenja ne more obdelovati visokorazsežnih podatkov - kjer imamo veliko število vhodov in izhodov: okrog tisoč dimenzij. Ravnanje in obdelava tovrstnih podatkov postane zelo zapletena in izčrpna. To se imenuje Prekletstvo dimenzionalnosti.

  • Še en izziv, s katerim se je soočil, je bil, če navedemo funkcije, ki jih je treba izvleči . To igra pomembno vlogo pri napovedovanju izida in tudi pri doseganju boljše natančnosti. Zato brez ekstrakcije lastnosti, izziv za programerja se povečuje, saj je učinkovitost algoritma zelo odvisna od tega, kako pronicljiv je programer.

Tu je na pomoč prišlo globoko učenje. Globoko učenje je sposoben obdelovati visoko dimenzionalne podatke in je tudi učinkovit pri s poudarkom na pravih lastnostih sam.

Kaj je poglobljeno učenje?

Poglobljeno učenje je podskupina strojnega učenja, kjer se za vadbo uporabljajo podobni algoritmi strojnega učenja tako da se doseže boljša natančnost v tistih primerih, ko prvi ni deloval do oznake. V bistvu, Poglobljeno učenje posnema način delovanja naših možganov torej se uči iz izkušenj.

Kot veš,naši možgani so sestavljeni iz milijarde nevronov ki nam omogoča neverjetne stvari. Tudi možgani majhnega otroka so sposobni reševati zapletene probleme, ki jih je zelo težko rešiti tudi z uporabo Super-računalnikov. Torej, Kako lahko dosežemo enako funkcionalnost v programu? Zdaj to razumemo Umetni nevroni (Perceptron) in Umetna nevronska mreža.

Perceptron in umetne nevronske mreže

Deep Learning preučuje osnovno enoto možganov, imenovano možganska celica ali nevron. Zdaj pa razumimo funkcionalnost bioloških nevronov in kako posnemamo to funkcionalnost v zaznavanju ali umetnem nevronu.

  • Dendrit: Sprejema signale drugih nevronov
  • Telo celice: Sešteva vse vložke
  • Axon: Uporablja se za prenos signalov v druge celice

Umetni nevroni ali a Perceptron je linearni model, ki se uporablja za binarno klasifikacijo. Oblikuje nevron, ki ima nabor vhodov, od katerih ima vsak določeno težo. Nevron izračuna nekaj funkcij na teh ponderirana vhode in daje izhod.

Prejema n vhodov (ustreza vsaki funkciji). Nato te vnose sešteje, uporabi transformacijo in ustvari izhod. Ima dve funkciji:

  • Vsota
  • Transformacija (aktivacija)

Utež prikazuje učinkovitost določenega vnosa. Večja je teža vložka, več bo vplival na nevronsko mrežo . Po drugi strani, Pristranskost je dodatni parameter v Perceptronu, ki se uporablja za prilagajanje izhoda skupaj s tehtano vsoto vhodov v nevronu, ki pomaga modelu tako, da se najbolje prilega danim podatkom.

Aktivacijske funkcije pretvori vhode v izhode. Za ustvarjanje izhodne vrednosti uporablja prag. Obstaja veliko funkcij, ki se uporabljajo kot funkcije aktiviranja, na primer:

  • Linearno ali identitetno
  • Enota ali binarni korak
  • Sigmoid ali Logistika
  • Tanh
  • ReLU
  • Softmax

No. če menite, da problem rešuje Perceptron, se motite. Prišlo je do dveh glavnih težav:

  • Enoslojni perceptroni ne more razvrstiti nelinearno ločljivih podatkovnih točk .
  • Kompleksne težave, ki vključujejo veliko parametrov ni mogoče rešiti z enoplastnimi perceptroni.

Upoštevajte primer tukaj in zapletenost parametrov, ki so potrebni za sprejetje odločitve s strani marketinške skupine.

En nevron ne more vnesti toliko vložkov in zato bi za reševanje tega problema uporabili več kot en nevron. Nevronska mreža je v resnici le sestava perceptronov, povezanih na različne načine in deluje na različnih aktivacijskih funkcijah.

  • Vhodna vozlišča omrežju zagotavljajo informacije iz zunanjega sveta in se skupaj imenujejo »vhodna plast«.
  • Skrita vozlišča izvajati izračune in prenašati informacije od vhodnih vozlišč do izhodnih vozlišč. Zbirka skritih vozlišč tvori 'skrito plast'.
  • Izhodna vozlišča se skupaj imenujejo 'izhodni sloj' in so odgovorni za izračune in prenos informacij iz omrežja v zunanji svet.

Zdaj, ko imate idejo o tem, kako se obnaša perceptron, različne vključene parametre in različne plasti nevronske mreže, nadaljujmo s tem globokim učenjem s Python Blogom in si oglejmo nekaj kul aplikacij globokega učenja.

Aplikacije globokega učenja

V industriji obstajajo različne aplikacije globokega učenja, tukaj je nekaj pomembnih, ki so prisotne v naših vsakodnevnih nalogah.

  • Prepoznavanje govora

  • Strojno prevajanje

  • Prepoznavanje obraza in samodejno označevanje

  • Navidezni osebni asistenti

  • Samovozeči avto

  • Klepetalnice

Zakaj Python za globoko učenje?

  • je eno od takih orodij, ki ima edinstven atribut, da je splošni programski jezik kot biti enostaven za uporabo ko gre za analitično in kvantitativno računalništvo.
  • Je zelo lahko razumeti
  • Python je Dinamično vneseno
  • Ogromno
  • Širok nabor knjižnic za različne namene, kot je Numpy, Seaborn, Matplotlib, Pandas in Scikit-learn

Zdaj dovolj teorije, poglejmo, kako lahko začnemo globoko učenje s Pythonom z majhnim, a vznemirljivim primerom.

Poglobljeno učenje s Pythonom: primer Perceptron

Zdaj sem prepričan, da morate biti seznanjeni z delovanjem ' ALI ' vrata. Izhod je eno če je tudi kateri od vhodov eno.

Zato lahko Perceptron uporabimo kot ločilo ali odločitveno črto, ki deli vhodni niz OR Gate v dva razreda:

1. razred: Vhodi z izhodom 0, ki leži pod odločitveno črto.
2. razred: Vhodi z izhodom 1, ki leži nad odločitveno črto ali ločilom.

Do zdaj smo razumeli, da lahko linearni perceptron uporabimo za razvrstitev nabora vhodnih podatkov v dva razreda. Toda kako dejansko razvršča podatke?

Matematično lahko perceptron razumemo kot enačbo uteži, vložkov in pristranskosti.

1. korak: Uvozite vso potrebno knjižnico

Tukaj bom uvozil samo eno knjižnico, tj. TensorFlow

uvoz tensorflow kot tf

2. korak: Določite vektorske spremenljivke za vhod in izhod

Nato moramo ustvariti spremenljivke za shranjevanje vhoda, izhoda in pristranskosti za Perceptron.

vlak_in = [[0,0,1], [0,1,1], [1,0,1], [1,1,1]] vlak_out = [[0], [1], [1], [1]]

3. korak: Določite spremenljivko teže

Tu bomo definirali tenzorno spremenljivko oblike 3 × 1 za naše uteži in ji na začetku dodelili nekaj naključnih vrednosti.

w = tf.Variable (tf.random_normal ([3, 1], seme = 15))

4. korak: Določite ograde za vhod in izhod

Opredeliti moramo ograde, tako da bodo lahko med tekom sprejemali zunanje vložke.

x = tf.placeholder (tf.float32, [Brez, 3]) y = tf.placeholder (tf.float32, [Brez, 1])

5. korak: Izračunajte izhodno in aktivacijsko funkcijo

Kot smo že omenili, se vhod, ki ga prejme perceptron, najprej pomnoži z ustreznimi utežmi, nato pa se vsi tehtani vhodi seštejejo skupaj. Ta vsota vrednosti se nato dovede v aktivacijo za pridobitev končnega rezultata.

izhod = tf.nn.relu (tf.matmul (x, w))

Opomba: V tem primeru sem uporabil relu kot moja aktivacijska funkcija. Svojo aktivacijsko funkcijo lahko uporabljate glede na vaše potrebe.

6. korak: Izračunajte ceno ali napako

Izračunati moramo strošek = povprečna kvadratna napaka, ki ni nič drugega kot kvadrat razlike izhodne vrednosti perceptrona in želene izhodne vrednosti.

izguba = tf.reduce_sum (tf.square (output - y))

7. korak: zmanjšajte napako

Cilj perceptrona je zmanjšati izgubo ali stroške ali napake. Torej, tukaj bomo uporabili Gradient Descent Optimizer.

optimizer = tf.train.GradientDescentOptimizer (0,01) vlak = optimizer.minimize (izguba)

8. korak: Inicializirajte vse spremenljivke

Spremenljivke so definirane samo z tf.Variable. Torej moramo inicializirati definirane spremenljivke.

init = tf.global_variables_initializer () sess = tf.Session () sess.run (init)

9. korak: Izobraževanje perceptrona v ponovitvah

Trenirati moramo svoj perceptron, torej posodobiti vrednosti uteži in pristranskosti v zaporedni ponovitvi, da zmanjšamo napako ali izgubo. Tu bom naš perceptron treniral v 100 epohah.

za i v dosegu (100): sess.run (vlak, {x: train_in, y: train_out}) stroški = sess.run (izguba, feed_dict = {x: train_in, y: train_out}) print ('Epoha-- ', i,' - izguba - ', stroški)

Korak 10: Izhod

……

……

Kot lahko vidite tukaj, se je izguba začela ob 2.07 in se končala ob 0,27

.

Poglobljeno učenje s Pythonom: Ustvarjanje globokega nevronskega omrežja

Zdaj, ko smo uspešno ustvarili perceptron in ga usposobili za vrata OR. Nadaljujmo s tem člankom in poglejmo, kako lahko ustvarimo lastno nevronsko mrežo iz nič, kjer bomo ustvarili vhodno plast, skrite plasti in izhodno plast.

Uporabili bomo nabor podatkov MNIST. Nabor podatkov MNIST je sestavljen iz 60.000 treningov vzorci in 10.000 testiranj vzorci ročno napisanih digitalnih slik. Slike so velike 28 × 28 pik in izhod je lahko med 0-9 .

Naloga tukaj je usposobiti model, ki lahko natančno identificira številko na sliki

Najprej bomo uporabili spodnji uvoz za prenos funkcije tiskanja iz Pythona 3 v Python 2.6+. Stavki __future__ morajo biti na vrhu datoteke, ker spreminjajo temeljne stvari v jeziku, zato mora prevajalnik vedeti o njih od začetka

iz __future__ uvozi tiskanje_funkcije

Sledi koda s komentarji na vsakem koraku

# Uvozi podatke MNIST iz tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets ('/ tmp / data /', one_hot = True) uvoz tensorflow kot tf import matplotlib.pyplot kot plt # Parametri batch_size = 100 display_step = 1 # Omrežni parametri n_hidden_1 = 256 # Število elementov 1. plasti n_hidden_2 = 256 # Število elementov 2. sloja n_input = 784 # Vnos podatkov MNIST (oblika slike: 28 * 28) n_classes = 10 # skupni razredi MNIST ( 0-9 števk) # tf Vnos grafa x = tf.placeholder ('float', [None, n_input]) y = tf.placeholder ('float', [None, n_classes]) # Ustvari model def multilayer_perceptron (x, uteži , pristranskosti): # Skrita plast z aktivacijsko plastjo RELU_1 = tf.add (tf.matmul (x, uteži ['h1']), pristranskosti ['b1']) layer_1 = tf.nn.relu (plast_1) # Skrita plast z aktivacijsko plastjo RELU_2 = tf.add (tf.matmul (plast_1, uteži ['h2']), pristranskosti ['b2']) plast_2 = tf.nn.relu (plast_2) # Izhodna plast z linearno aktivacijo out_layer = tf. matmul (plast _2, uteži ['out']) + pristranskosti ['out'] return out_layer # Shrani plast teže & uteži pristranskosti = {'h1': tf.Variable (tf.random_normal ([n_input, n_hidden_1])), 'h2' : tf.Variable (tf.random_normal ([n_hidden_1, n_hidden_2])), 'out': tf.Variable (tf.random_normal ([n_hidden_2, n_classes]))} pristranskosti = {'b1': tf.Variable (tf. random_normal ([n_hidden_1])), 'b2': tf.Variable (tf.random_normal ([n_hidden_2])), 'out': tf.Variable (tf.random_normal ([n_classes]))} # Konstruiraj model pred = večplastni_perceptron (x, uteži, pristranskosti) # Določite izgubo in stroške optimizatorja = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (logits = pred, labels = y)) optimizer = tf.train.AdamOptimizer (learning_rate = learning_rate) .minimize (cost) # Inicializacija spremenljivk init = tf.global_variables_initializer () # ustvari prazen seznam za shranjevanje zgodovine stroškov in zgodovine natančnosti cost_history = [] natančnost_historija = [] # Zaženi graf s tf.Session () kot sess: sess.run (init ) # Vadbeni cikel za obdobje v obsegu (training_epochs): avg_cost = 0. total_batch = int (mnist.train.num_examples / batch_size) # Zanka čez vse pakete za i v obsegu (total_batch): batch_x, batch_y = mnist.train.next_batch (batch_size) # Zaženi optimizacijo op (backprop) in stroške op (za pridobitev vrednosti izgube) _, c = sess.run ([optimizator, stroški], feed_dict = {x: batch_x, y: batch_y}) # Izračunajte povprečno izgubo avg_cost + = c / total_batch # Prikaži dnevnike po korakih, epoha% display_step == 0: pravilna_predviditev = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Izračunaj natančnost natančnosti = tf.reduce_mean (tf.cast (pravilno_predvidiranje, 'float')) ) acu_temp = natančnost.eval ({x: mnist.test.images, y: mnist.test.labels}) #dodaj natančnost na seznam natančnost_historija.append (acu_temp) #andnd zgodovini stroškov cost_history.append (avg_cost) print ('Epoch:', '% 04d'% (epoha + 1), '- cost =', '{: .9f}'. Format (avg_cost), '- Accuracy =', acu_temp) print ('Optimizacija končana! ') #plot zgodovina stroškov plt.plot (cost_history) plt.show () #plot zgodovina natančnosti plt.plot (natančnost _history) plt.show () # Testni model correct_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Izračunaj natančnost natančnosti = tf.reduce_mean (tf.cast (pravilna_predviditev, ' float ')) print (' Natančnost: ', natančnost.eval ({x: mnist.test.images, y: mnist.test.labels}))

Izhod:

razvrsti matriko c ++ padajoče

Zdaj smo s tem prišli do konca tega članka Deep Learning with Python. Upam, da ste razumeli različne komponente globokega učenja, kako se je vse začelo in kako z uporabo Pythona lahko ustvarimo preprost perceptron in globoko nevronsko mrežo.

Edureka je kurator s strani strokovnjakov iz panoge v skladu z zahtevami in zahtevami panoge. Obvladali boste koncepte, kot so funkcija SoftMax, nevronske mreže samodejnega kodiranja, omejeni stroj Boltzmann (RBM) in delo s knjižnicami, kot sta Keras in TFLearn. Tečaj so posebej pripravili strokovnjaki iz industrije s študijami primerov v realnem času.

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje v poglavju 'Poglobljeno učenje s Pythonom' in javili se vam bomo.