Sügav õppimine Pythoni abil: sügava õppimise juhend algajatele



See artikkel annab teile põhjalikud ja üksikasjalikud teadmised Pythoni süvendatud õppimisest ja selle kasulikkusest igapäevases elus.

on üks ajavahemiku 2018-19 kuumimaid teemasid ja seda põhjusega. Tööstuses on olnud nii palju edusamme, kus on aeg, mil masinad või arvutiprogrammid asendavad tegelikult inimesi. See Sügav õppimine Pythoniga artikkel aitab teil mõista, mis täpselt on sügavõppimine ja kuidas see üleminek võimalikuks on tehtud. Käsitlen selles artiklis järgmisi teemasid:

Andmeteadus ja selle komponendid

Noh, andmeteadus on midagi, mis on seal olnud läbi aegade. Andmeteadus on teadmiste ammutamine andmetest, kasutades erinevaid tehnikaid ja algoritme.





Tehisintellekti ajaskaala - sügav õppimine Pythoni abil - Edureka

on tehnika, mis võimaldab masinatel jäljendada inimese käitumist. Tehisintellekti idee on üsna lihtne, kuid põnev, milleks on intelligentsete masinate valmistamine, mis suudaksid otsuseid ise vastu võtta. Aastaid arvati, et arvutid ei vasta kunagi inimese aju jõule.



Noh, siis ei olnud meil piisavalt andmeid ja arvutusvõimsust, kuid nüüd Suured andmed olemasolu ja GPU-de ilmumisega on võimalik tehisintellekt.

on tehisintellekti tehnika alamhulk, mis kasutab statistilisi meetodeid, et võimaldada masinatel kogemustega paremaks saada.



Sügav õppimine on ML alamhulk, mis muudab mitmekihilise närvivõrgu arvutamise teostatavaks. See kasutab närvivõrke, et simuleerida inimesetaolist otsuste tegemist.

Sügava õppimise vajadus

Samm tehisintellekti poole on masinõpe. Masinõpe on tehisintellekti alamhulk ja põhineb ideel, et masinatele tuleks anda juurdepääs andmetele ning jätta õppima ja ise uurima. See tegeleb mustrite väljavõtmisega suurtest andmekogumitest. Suurte andmekogumite käsitsemine ei olnud probleem.

  • Masinõppe algoritmid ei saa hakkama kõrgemõõtmeliste andmetega - kus meil on palju sisendeid ja väljundeid: ümmargused tuhanded mõõtmed. Sellist tüüpi andmete käitlemine ja töötlemine muutub väga keerukaks ja ressursside ammendavaks. Seda nimetatakse Mõõtlikkuse needus.

  • Teine väljakutse, millega silmitsi seisis, oli eraldatavad funktsioonid . See mängib olulist rolli nii tulemuse ennustamisel kui ka parema täpsuse saavutamisel. Seetõttu ilma funktsioonide väljavõtmiseta programmeerija väljakutse suureneb, kuna algoritmi efektiivsus sõltub paljuski programmeerija läbinägelikkusest.

Siin tuli appi Deep Learning. Sügav õppimine on võimeline töötama kõrgemõõtmelisi andmeid ja on ka tõhus keskendudes õigetele funktsioonidele omaette.

Mis on sügav õppimine?

Sügavõpe on masinõppe alamhulk, kus treenimiseks kasutatakse sarnaseid masinõppe algoritme parema täpsuse saavutamiseks juhtudel, kui esimene ei esinenud kuni märgini. Põhimõtteliselt Sügav õppimine jäljendab meie aju toimimist st õpib kogemustest.

Nagu sa tead,meie aju koosneb miljardeid neuroneid mis võimaldab meil teha hämmastavaid asju. Isegi väikese lapse aju on võimeline lahendama keerukaid probleeme, mida on isegi superarvutite abil väga raske lahendada. Niisiis, kuidas saaksime programmis saavutada sama funktsionaalsuse? Nüüd saame sellest aru Kunstneuron (Perceptron) ja Kunstnärvivõrk.

Perceptron ja tehisnärvivõrgud

Sügav õppimine uurib aju põhiüksust, mida nimetatakse ajurakuks või neuroniks. Mõistkem nüüd bioloogiliste neuronite funktsionaalsust ja seda, kuidas me seda funktsionaalsust tajus või kunstlikus neuronis jäljendame.

  • Dendriit: Võtab vastu signaale teistelt neuronitelt
  • Rakukeha: Summeerib kõik sisendid
  • Axon: Seda kasutatakse signaalide edastamiseks teistele rakkudele

Kunstneuron või a Perceptron on lineaarne mudel, mida kasutatakse binaarse klassifikatsiooni jaoks. See modelleerib neuroni, millel on hulk sisendeid, millest igaühele antakse konkreetne kaal. Neuron arvutab nende kohta mingi funktsiooni kaalutud sisendab ja annab väljundi.

See saab n sisendit (vastab igale funktsioonile). Seejärel summeerib need sisendid, rakendab teisenduse ja toodab väljundi. Sellel on kaks funktsiooni:

  • Kokkuvõte
  • Teisendamine (aktiveerimine)

Kaal näitab konkreetse sisendi efektiivsust. Mida suurem on sisendi kaal, seda rohkem mõjutab see närvivõrku . Teiselt poolt, Eelarvamus on an täiendav parameeter Perceptronis, mida kasutatakse väljundi reguleerimiseks koos neuroni sisendite kaalutud summaga, mis aitab mudelit viisil, mis sobib antud andmetega kõige paremini.

Aktiveerimisfunktsioonid tõlgib sisendid väljunditeks. Väljundi tootmiseks kasutatakse künnist. Aktiveerimisfunktsioonidena kasutatakse palju funktsioone, näiteks:

  • Lineaarne või identiteet
  • Ühik või binaarne samm
  • Sigmoid või logistika
  • Tanh
  • ReLU
  • Softmax

Noh. kui arvate, et Perceptron lahendab probleemi, siis eksite. Oli kaks suurt probleemi:

  • Ühekihilised perceptronid ei saa klassifitseerida mittelineaarselt eraldatavaid andmepunkte .
  • Keerulised probleemid, mis hõlmavad palju parameetreid ei saa lahendada ühekihiliste perceptronidega.

Vaatleme siin toodud näidet ja keerukust parameetritega, et turundusmeeskond otsuse vastu võtta.

Üks Neuron ei saa nii palju sisendeid vastu võtta ja seetõttu kasutatakse selle probleemi lahendamiseks rohkem kui ühte neuroni. Neural Network on tegelikult lihtsalt a Perceptronsi koostis, mis on ühendatud erineval viisil ja töötab erinevatel aktiveerimisfunktsioonidel.

  • Sisendsõlmed pakkuda võrgu kaudu teavet välismaailmast ja neid nimetatakse koos sisendkihiks.
  • Peidetud sõlmed teha arvutusi ja edastada teavet sisendsõlmedest väljundsõlmedesse. Peidetud sõlmede kogu moodustab varjatud kihi.
  • Väljundsõlmed neid nimetatakse üheskoos väljundkihiks ja nad vastutavad arvutuste ja teabe edastamise eest võrgust välismaailma.

Nüüd, kui teil on ettekujutus perceptroni käitumisest, kaasatud erinevatest parameetritest ja närvivõrgu erinevatest kihtidest, jätkame seda põhjalikku õppimist Pythoni ajaveebiga ja näeme mõningaid Deep Learning'i lahedaid rakendusi.

Sügava õppimise rakendused

Tööstuses on sügava õppe erinevaid rakendusi. Siin on mõned olulised, mis on meie igapäevaste ülesannete juures.

  • Kõnetuvastus

  • Masintõlge

  • Näotuvastus ja automaatne sildistamine

  • Virtuaalsed isiklikud assistendid

  • Isesõitev auto

  • Juturobotid

Miks Python süvendatud õppimiseks?

  • on üks selline tööriist, millel on ainulaadne atribuut, olemine a üldotstarbeline programmeerimiskeel olemisena lihtne kasutada kui tegemist on analüütilise ja kvantitatiivse arvutamisega.
  • See on väga lihtne arusaada
  • Python on Dünaamiliselt kirjutatud
  • Tohutu
  • Suur valik raamatukogusid erinevatel eesmärkidel, näiteks Numpy, Seaborn, Matplotlib, Pandas ja Scikit-learn

kuidas seleeni veebidraiveris java abil ekraanipilti teha

Piisavalt teooriast, vaatame, kuidas saaksime Pythoniga Deep Learning'i alustada väikese, kuid põneva näitega.

Sügav õppimine Pythoniga: Perceptroni näide

Nüüd olen kindel, et te peate olema tuttav VÕI ” värav. Väljund on üks kui ka mõni sisenditest on üks.

Seetõttu saab Perceptroni kasutada eraldajana või otsustusjoonena, mis jagab OR-värava sisendkomplekti kahte klassi:

1. klass: Sisendid, mille väljund on 0 ja mis asub otsustusjoone all.
2. klass: Sisendid, mille väljund on 1 ja mis asub otsustusjoone või eraldaja kohal.

Siiani saime aru, et sisendandmekogumi klassifitseerimiseks kahte klassi saab kasutada lineaarset perceptroni. Kuid kuidas see andmeid tegelikult klassifitseerib?

Matemaatiliselt võib perceptroni mõelda nagu kaalu, sisendi ja eelarvamuse võrrandit.

1. samm: importige kogu vajalik kogu

Siin hakkan importima ainult ühte raamatukogu, st. TensorFlow

impordi tensorflow tf-na

2. samm: määratlege sisendi ja väljundi vektormuutujad

Järgmisena peame looma muutujad Perceptroni sisendi, väljundi ja eelarvamuste salvestamiseks.

rongi sisse = [[0,0,1], [0,1,1], [1,0,1], [1,1,1]] rongi väljumine = [[0], [1], [1], [1]]

3. samm: määratlege kaalu muutuja

Siin määratleme oma kaalu jaoks kuju 3 × 1 tensori muutuja ja määrame sellele esialgu mõned juhuslikud väärtused.

w = tf. Muutuv (tf.juhuslik_normaalne ([3, 1], seeme = 15))

4. samm: määrake sisendi ja väljundi kohahoidjad

Peame määratlema kohatäited, et nad saaksid jooksvalt väliseid sisendeid aktsepteerida.

php mysql_fetch_
x = tf.placeholder (tf.float32, [Puudub, 3]) y = tf.placeholder (tf.float32, [Puudub, 1])

5. samm: arvutage väljund- ja aktiveerimisfunktsioon

Nagu varem arutletud, korrutatakse perceptroni poolt sisestatud sisend kõigepealt vastavate kaaludega ja seejärel liidetakse kõik need kaalutud sisendid kokku. See summaarne väärtus lisatakse seejärel lõpptulemuse saamiseks aktiveerimisele.

väljund = tf.nn.relu (tf.matmul (x, w))

Märkus: Sel juhul olen kasutanud relu minu aktiveerimisfunktsioonina. Võite vabalt kasutada mis tahes aktiveerimisfunktsiooni vastavalt teie vajadustele.

6. samm: arvutage kulu või viga

Peame arvutama kulu = keskmine ruutviga, mis pole midagi muud kui perceptroni väljundi ja soovitud väljundi erinevuse ruut.

kaotus = tf.reduce_sum (tf.ruut (väljund - y))

7. samm: minimeerige viga

Perceptroni eesmärk on minimeerida kahju või kulu või viga. Nii et siin hakkame kasutama gradientide laskumise optimeerijat.

optimeerija = tf.train.GradientDescentOptimizer (0,01) rong = optimeerija.minimeeri (kadu)

8. samm: lähtestage kõik muutujad

Muutujad on määratletud ainult tf. Muutuv. Niisiis, me peame lähtestama määratletud muutujad.

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

9. samm: Perceptroni treenimine kordustes

Vea või kaotuse minimeerimiseks peame treenima oma perceptroni, st värskendama kaalu ja kallutatuse väärtusi järjestikuses iteratsioonis. Koolitan siin meie perceptroni 100 ajastul.

i jaoks vahemikus (100): sess.run (rong, {x: train_in, y: train_out}) maksumus = sess.run (loss, feed_dict = {x: train_in, y: train_out}) print ('Epoch-- ', i,' - kahjum - ', maksumus)

10. samm: väljund

……

……

Nagu siin näete, algas kaotus 2.07 ja lõppes kell 0,27

.

Sügav õppimine Pythoniga: sügava närvivõrgu loomine

Nüüd, kui oleme edukalt loonud perceptroni ja treeninud selle OR-värava jaoks. Jätkame seda artiklit ja vaatame, kuidas saab Scratchist luua oma närvivõrgu, kus loome sisendkihi, peidetud kihid ja väljundkihi.

Kasutame andmekogumit MNIST. Andmekomplekt MNIST koosneb 60 000 koolitust proovid ja 10 000 testimist käsitsi kirjutatud numbripiltide näidised. Kujutised on suurusega 28 × 28 pikslit ja väljund võib jääda vahemikku 0–9 .

Siin on ülesandeks koolitada mudel, mis suudaks täpselt tuvastada pildil oleva numbri

Esiteks kasutame alltoodud importi, et tuua printimisfunktsioon Python 3-st Python 2.6+. __future__-laused peavad olema faili ülaosas, kuna need muudavad keele põhialuseid ja seetõttu peab kompilaator neist algusest peale teadma

alates __future__ impordi_funktsioon

Järgmine on kood koos kommentaaridega igal sammul

# Importige MNIST-i andmed saidilt tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets ('/ tmp / data /', one_hot = True) importige tensorflow tf-failina import matplotlib.pyplot plt # Parameetrid learning_rate = 0.001 batch_size = 100 display_step = 1 # Võrgu parameetrid n_hidden_1 = 256 # 1. kihi funktsioonide arv n_hidden_2 = 256 # 2. kihi funktsioonide arv n_input = 784 # MNIST andmesisestus (img kuju: 28 * 28) n_classes = 10 # MNIST klasside koguarv ( 0–9 numbrit) # tf Graafiku sisend x = tf.placeholder ('float', [None, n_input]) y = tf.placeholder ('float', [None, n_classes]) # Loo mudel def multilayer_perceptron (x, kaalud , eelarvamused): # Peidetud kiht RELU aktiveerimiskihiga_1 = tf.add (tf.matmul (x, kaalud ['h1']), kallutused ['b1']) kiht_1 = tf.nn.relu (kiht_1) # Peidetud kiht RELU aktiveerimiskihiga_2 = tf.add (tf.matmul (kiht_1, kaalud ['h2']), eelarvamused ['b2']) kiht_2 = tf.nn.relu (kiht_2) # Lineaarse aktiveerimisega väljundkiht out_layer = tf. matmul (kiht _2, kaalud ['välja']) + eelarvamused [välja '] tagastavad_kiht # kihtide kaalu ja eelarvemasside salvestamine = {' 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]))} eelarvamused = {'b1': tf.Variable (tf. juhuslik_normaalne ([n_hidden_1])), 'b2': tf.Variable (tf.random_normal ([n_hidden_2])), 'out': tf.Variable (tf.random_normal ([n_classes]))}} # Konstrueeri mudel pred = mitmekihiline_perceptron (x, kaalud, eelarvamused) # Defineerige kadu ja optimeerija kulu = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (logits = pred, labels = y)) optimeerija = tf.train.AdamOptimizer (learning_rate = learning_rate) .minimeerige (kulu) # Muutujate initsialiseerimine init = tf.global_variables_initializer () # looge kulude ajaloo ja täpsuse ajaloo salvestamiseks tühi loend cost_history = [] täpsuse_ajalugu = [] # Käivitage graafik koos tf.Session () -ga sess: sess.run (init ) # Treeningtsükkel ajavahemikus vahemikus (koolitus_epohhid): avg_cost = 0. total_batch = int (mnist.train.num_examples / batch_size) # Loop kõigi vahemikus i olevate i partiide vahel (total_batch): batch_x, batch_y = mnist.train.next_batch (batch_size) # Käivita optimeerimine op (backprop) ja maksumus op (kaotuse väärtuse saamiseks) _, c = sess.run ([optimeerija, maksumus], feed_dict = {x: batch_x, y: batch_y}) # Keskmise kaotuse keskm. arvutamine epohh% display_step == 0: õige_ennustus = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Arvuta täpsuse täpsus = tf.reduce_mean (tf.cast (correct_prediction, 'float') ) acu_temp = täpsus.eval ({x: mnist.test.images, y: mnist.test.labels}) # lisage täpsus loendisse täpsus_history.append (acu_temp) # lisage kulude ajaloo cost_history.append (avg_cost) print ('Epohh:', '% 04d'% (epohh + 1), '- cost =', '{: .9f}'. Formaat (keskm. Hind), '- Täpsus =', acu_temp) print ('Optimeerimine lõpetatud! ') # joonista kulude ajalugu plt.plot (kulu_ajalugu) plt.show () # joonista täpsuse ajalugu plt.plot (täpsus _ajalugu) plt.show () # Testmudeli korrektne ennustus = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Arvuta täpsuse täpsus = tf.reduce_mean (tf.cast (õige_prognoos, ' float ')) print (' Täpsus: ', täpsus.eval ({x: mnist.test.images, y: mnist.test.labels}))

Väljund:

Nüüd jõuame sellega selle Pythoni abil süvitsi õppiva õppe lõppu. Loodan, et saite aru sügavõppe erinevatest komponentidest, kuidas see kõik algas ja kuidas Pythoni kasutades saame luua lihtsa perceptroni ja sügava närvivõrgu.

Edureka oma on kureeritud valdkonna spetsialistide poolt vastavalt tööstusharu nõuetele ja nõudmistele. Sa valdad selliseid mõisteid nagu funktsioon SoftMax, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) ja töötad raamatukogudega nagu Keras & TFLearn. Kursuse on spetsiaalselt kureerinud valdkonna eksperdid reaalajas juhtumiuuringutega.

Kas teil on meile küsimus? Palun mainige seda kommentaari jaotises „Sügav õppimine Pythoniga” ja me pöördume teie poole.