Dubinsko učenje s Pythonom: Vodič za dubinsko učenje za početnike

Ovaj će vam članak pružiti sveobuhvatno i detaljno znanje o dubinskom učenju s Pythonom i o tome koliko je korisno u svakodnevnom životu.

jedna je od Najpopularnijih tema 2018.-19. i to s dobrim razlogom. Toliko je napretka u industriji došlo da je došlo vrijeme kada strojevi ili računalni programi zapravo zamjenjuju ljude. Ovaj Dubinsko učenje s Pythonom članak će vam pomoći da shvatite što je zapravo duboko učenje i kako je ovaj prijelaz omogućen. U ovom ću članku pokriti sljedeće teme:

Znanost o podacima i njegove komponente

Pa, Data Science je nešto što postoji već stoljećima. Znanost o podacima je izdvajanje znanja iz podataka korištenjem različitih tehnika i algoritama.





AI Vremenska crta - Dubinsko učenje s Pythonom - Edureka

je tehnika koja omogućuje strojevima da oponašaju ljudsko ponašanje. Ideja koja stoji iza AI prilično je jednostavna, ali fascinantna, a to je stvaranje inteligentnih strojeva koji mogu samostalno donositi odluke. Godinama se smatralo da računala nikada neće odgovarati snazi ​​ljudskog mozga.



E, tada nismo imali dovoljno podataka i snage računanja, ali sada s Veliki podaci nastajanjem i pojavom GPU-a moguća je umjetna inteligencija.

je podskup AI tehnike koja koristi statističke metode kako bi se strojevima omogućilo poboljšanje s iskustvom.



Duboko učenje je podskup ML koji čini računanje višeslojne neuronske mreže izvedivim. Neuronske mreže koristi za simuliranje donošenja odluka nalik ljudima.

Potreba za dubokim učenjem

Korak ka umjetnoj inteligenciji je strojno učenje. Strojno učenje podgrupa je umjetne inteligencije i temelji se na ideji da bi strojevi trebali dobiti pristup podacima i treba ih ostaviti da sami uče i istražuju. Bavi se izdvajanjem uzoraka iz velikih skupova podataka. Rukovanje velikim skupovima podataka nije bio problem.

  • Algoritmi strojnog učenja ne može obrađivati ​​visokodimenzionalne podatke - gdje imamo velik broj ulaza i izlaza: oko tisuće dimenzija. Rukovanje i obrada takvih vrsta podataka postaje vrlo složeno i iscrpljujuće resurse. Ovo se naziva Prokletstvo dimenzionalnosti.

  • Još jedan izazov s kojim se suočio bio je, da se precizira značajke koje se trebaju izvući . To igra važnu ulogu u predviđanju ishoda, kao i u postizanju bolje točnosti. Stoga, bez izdvajanja značajki, izazov za programera raste jer učinkovitost algoritma uvelike ovisi o tome koliko je programer pronicljiv.

Eto, tu je duboko učenje priskočilo u pomoć. Duboko učenje je sposoban za obradu visokodimenzionalnih podataka a također je učinkovit u usredotočujući se na prave značajke samostalno.

Što je duboko učenje?

Dubinsko učenje podskup je Strojnog učenja u kojem se za trening koriste slični algoritmi strojnog učenja kako bi se postigla bolja preciznost u onim slučajevima kada prvi nije radio do oznake. U osnovi, Dubinsko učenje oponaša način na koji funkcionira naš mozak tj. uči iz iskustva.

Kao što znate,naš mozak je sastavljen od milijarde neurona koji nam omogućuje da radimo nevjerojatne stvari. Čak je i mozak malog djeteta sposoban riješiti složene probleme koje je vrlo teško riješiti čak i pomoću Super-računala. Pa, kako možemo postići istu funkcionalnost u programu? Eto, ovdje razumijemo Umjetni neuron (Perceptron) i Umjetna neuronska mreža.

Perceptron i umjetne neuronske mreže

Dubinsko učenje proučava osnovnu jedinicu mozga koja se naziva moždana stanica ili neuron. Sada, shvatimo funkcionalnost bioloških neurona i kako oponašamo tu funkcionalnost u percepciji ili umjetni neuron.

  • Dendrit: Prima signale od drugih neurona
  • Tijelo stanice: Zbraja sve ulazne podatke
  • Axon: Koristi se za prijenos signala u druge stanice

Umjetni neuron ili a Perceptron je linearni model koji se koristi za binarnu klasifikaciju. Modelira neuron koji ima skup ulaza, od kojih svaki ima određenu težinu. Neuron izračunava neku funkciju na njima ponderiran ulazi i daje izlaz.

Prima n ulaza (koji odgovaraju svakoj značajki). Zatim zbraja te ulaze, primjenjuje transformaciju i daje izlaz. Ima dvije funkcije:

  • Zbrajanje
  • Transformacija (aktivacija)

Ponder pokazuje učinkovitost određenog unosa. Što je veća težina ulaza, to će više imati utjecaja na neuronsku mrežu . S druge strane, Pristranost je dodatni parametar u Perceptronu koji se koristi za podešavanje izlaza zajedno s ponderiranom zbrojem ulaza u neuron koji pomaže modelu na način da najbolje odgovara danim podacima.

Funkcije aktivacije prevodi ulaze u izlaze. Koristi prag za stvaranje rezultata. Postoje mnoge funkcije koje se koriste kao funkcije aktiviranja, poput:

  • Linearno ili identitetno
  • Jedinica ili Binarni korak
  • Sigmoidni ili logistički
  • Tanh
  • ReLU
  • Softmax

Dobro. ako mislite da Perceptron rješava problem, onda griješite. Bila su dva glavna problema:

  • Jednoslojni perceptroni ne mogu klasificirati nelinearno odvojene točke podataka .
  • Složeni problemi koji uključuju puno parametara ne mogu se riješiti jednoslojnim perceptronima.

Razmotrite primjer ovdje i složenost parametara uključenih u donošenje odluke marketinškog tima.

Jedan neuron ne može unijeti toliko ulaza i zato bi se za rješavanje ovog problema koristilo više neurona. Neuronska mreža zapravo je samo sastav Perceptrona, povezanih na različite načine i operiranje različitih funkcija aktivacije.

  • Ulazni čvorovi pružaju informacije iz vanjskog svijeta mreži i zajedno se nazivaju 'ulazni sloj'.
  • Skriveni čvorovi izvoditi proračune i prenositi podatke s ulaznih čvorova na izlazne čvorove. Zbirka skrivenih čvorova čini 'Skriveni sloj'.
  • Izlazni čvorovi zajednički se nazivaju 'izlazni sloj' i odgovorni su za proračune i prijenos podataka s mreže u vanjski svijet.

Sad kad imate ideju o ponašanju perceptrona, različitim uključenim parametrima i različitim slojevima neuronske mreže, nastavimo ovo duboko učenje s Python blogom i vidjet ćemo neke super primjene dubokog učenja.

Primjene dubokog učenja

Postoje razne primjene dubokog učenja u industriji, evo nekoliko važnih koje su prisutne u našim svakodnevnim zadacima.

  • Prepoznavanje govora

  • Strojno prevođenje

  • Prepoznavanje lica i automatsko označavanje

  • Virtualni osobni asistenti

  • Samovozeći automobil

  • Chatbotovi

Zašto Python za dubinsko učenje?

  • je jedan takav alat koji ima jedinstveni atribut, biti a programski jezik opće namjene kao biti jednostavan za korištenje kada je riječ o analitičkom i kvantitativnom računanju.
  • To je vrlo lako za razumjeti
  • Python je Dinamički upisano
  • Ogroman
  • Širok raspon knjižnica za različite svrhe poput Numpy, Seaborn, Matplotlib, Pandas i Scikit-learn

Sad dovoljno teorije, pogledajmo kako možemo započeti duboko učenje s Pythonom na malom, ali uzbudljivom primjeru.

Dubinsko učenje s Pythonom: Primjer perceptrona

Sad sam siguran da ste vi sigurno upoznati s radom ' ILI' vrata. Izlaz je jedan ako je bilo koji od ulaza također jedan.

Stoga se Perceptron može koristiti kao separator ili linija odluke koja dijeli ulazni skup OR Gate u dvije klase:

Klasa 1: Ulazi koji imaju izlaz kao 0 koji se nalazi ispod crte odluke.
Klasa 2: Ulazi koji imaju izlaz kao 1 koji se nalazi iznad linije odluke ili separatora.

Do sada smo shvatili da se linearni perceptron može koristiti za klasifikaciju ulaznih podataka u dvije klase. Ali, kako zapravo klasificira podatke?

Matematički se perceptron može smatrati jednadžbom težina, ulaza i pristranosti.

Korak 1: Uvezite svu potrebnu knjižnicu

Ovdje ću uvesti samo jednu knjižnicu, tj. TensorFlow

uvoz tensorflow kao tf

Korak 2: Definirajte vektorske varijable za ulaz i izlaz

Dalje, moramo stvoriti varijable za pohranu ulaza, izlaza i pristranosti za Perceptron.

vlak_u = [[0,0,1], [0,1,1], [1,0,1], [1,1,1]] vlak_out = [[0], [1], [1], [1]]

Korak 3: Definirajte varijablu težine

Ovdje ćemo definirati tenzorsku varijablu oblika 3 × 1 za naše težine i dodijeliti joj neke slučajne vrijednosti u početku.

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

Korak 4: Definirajte rezervirana mjesta za ulaz i izlaz

Moramo definirati rezervirana mjesta kako bi mogli prihvatiti vanjske ulaze u bijegu.

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

Korak 5: Izračunajte izlaznu i aktivacijsku funkciju

Kao što je prethodno rečeno, ulaz primljen perceptronom prvo se pomnoži s odgovarajućim ponderima, a zatim se svi ti ponderirani ulazi zbrajaju zajedno. Ova zbrojena vrijednost zatim se dovodi u aktivaciju za dobivanje konačnog rezultata.

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

Napomena: U ovom sam slučaju koristio relu kao moja funkcija aktiviranja. Slobodno možete koristiti bilo koju aktivacijsku funkciju prema svojoj potrebi.

Korak 6: Izračunajte cijenu ili pogrešku

Moramo izračunati cijenu = srednja kvadratura pogreške koja nije ništa drugo do kvadrat razlike izlaza perceptrona i željenog izlaza.

gubitak = tf.reduce_sum (tf.square (izlaz - y))

Korak 7: Umanjivanje pogreške

Cilj perceptrona je minimalizirati gubitak ili trošak ili pogrešku. Dakle, ovdje ćemo koristiti Gradient Descent Optimizer.

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

Korak 8: Inicijalizirajte sve varijable

Varijable su definirane samo s tf.Promjenjivo. Dakle, moramo inicijalizirati definirane varijable.

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

Korak 9: Trening perceptrona u iteracijama

Moramo osposobiti svoj perceptron, tj. Ažurirati vrijednosti težine i pristranosti u uzastopnoj iteraciji kako bismo smanjili pogrešku ili gubitak. Ovdje ću trenirati naš perceptron u 100 epoha.

za i u dometu (100): sess.run (vlak, {x: train_in, y: train_out}) trošak = sess.run (gubitak, feed_dict = {x: train_in, y: train_out}) print ('Epoha-- ', i,' - gubitak - ', trošak)

Korak 10: Izlaz

što je hashmap u javi

……

……

Kao što ovdje možete vidjeti, gubitak je započeo u 2.07 i završio u 0,27

.

Dubinsko učenje s Pythonom: Stvaranje duboke neuronske mreže

Sad kad smo uspješno stvorili perceptron i osposobili ga za OR vrata. Nastavimo ovaj članak i vidjet ćemo kako možemo stvoriti vlastitu neuronsku mrežu od nule, gdje ćemo stvoriti ulazni sloj, skrivene slojeve i izlazni sloj.

Koristit ćemo skup podataka MNIST. Skup podataka MNIST sastoji se od 60.000 treninga uzorci i 10.000 testiranja uzorci rukom napisanih digitalnih slika. Slike su velike 28 × 28 piksela a izlaz može ležati između 0-9 .

Zadatak je ovdje osposobiti model koji može točno prepoznati znamenku prisutnu na slici

Prvo ćemo upotrijebiti donji uvoz da funkciju ispisa iz Pythona 3 prenesemo u Python 2.6+. Izjave __future__ moraju biti pri vrhu datoteke jer mijenjaju osnovne stvari u vezi s jezikom, pa ih prevodilac mora znati od početka

iz __future__ uvoz print_funkcija

Slijedi kod s komentarima na svakom koraku

# Uvezi MNIST podatke iz tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets ('/ tmp / data /', one_hot = True) import tensorflow as tf import matplotlib.pyplot as plt # Parametri learning_rate = 0,001 training_epoch batch_size = 100 display_step = 1 # Parametri mreže n_hidden_1 = 256 # Broj značajki 1. sloja n_hidden_2 = 256 # Broj značajki 2. sloja n_input = 784 # Unos podataka MNIST (img oblik: 28 * 28) n_classes = 10 # MNIST ukupne klase ( 0-9 znamenki) # tf Ulaz grafikona x = tf.placeholder ('float', [None, n_input]) y = tf.placeholder ('float', [None, n_classes]) # Stvori model def višeslojni_perceptron (x, težine , pristranosti): # Skriveni sloj s aktivacijskim slojem RELU_1 = tf.add (tf.matmul (x, težine ['h1']), pristranosti ['b1']) layer_1 = tf.nn.relu (sloj_1) # Skriveni sloj s RELU aktivacijskim slojem_2 = tf.add (tf.matmul (sloj_1, težine ['h2']), pristranosti ['b2']) layer_2 = tf.nn.relu (sloj_2) # Izlazni sloj s linearnom aktivacijom out_layer = tf. matmul (sloj _2, utezi ['out']) + pristranosti ['out'] return out_layer # Pohrani težinu slojeva i težine pristranosti = {'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]))} pristranosti = {'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 = višeslojni_perceptron (x, težine, pristranosti) # Definirajte gubitak i trošak optimizacije = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (logits = pred, labels = y)) optimizer = tf.train.AdamOptimizer (learning_rate = learning_rate) .minimize (cost) # Inicijalizacija varijabli init = tf.global_variables_initializer () # kreirajte prazan popis za pohranu povijesti troškova i povijesti točnosti cost_history = [] точnost_historija = [] # Pokrenite graf s tf.Session () kao sess: sess.run (init ) # Ciklus treninga za epohu u rasponu (training_epochs): avg_cost = 0. total_batch = int (mnist.train.num_examples / batch_size) # Petlja preko svih serija za i u rasponu (total_batch): batch_x, batch_y = mnist.train.next_batch (batch_size) # Pokreni optimizaciju op (backprop) i trošak op (za dobivanje vrijednosti gubitka) _, c = sess.run ([optimizer, trošak], feed_dict = {x: batch_x, y: batch_y}) # Izračunajte prosječni gubitak prosječni trošak + = c / total_batch # Prikaži zapisnike po koraku razdoblja ako epoha% display_step == 0: pravilno_predviđanje = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Izračunaj točnost točnosti = tf.reduce_mean (tf.cast (pravilno_predviđanje, 'plutaj') ) acu_temp = točnost.eval ({x: mnist.test.images, y: mnist.test.labels}) #dodaj točnost na popis točnost_historija.append (acu_temp) #dodaj povijesti troškova cost_history.append (avg_cost) print ('Epoha:', '% 04d'% (epoha + 1), '- trošak =', '{: .9f}'. Format (avg_cost), '- Točnost =', acu_temp) print ('Optimizacija završena! ') #plot povijest troškova plt.plot (hist_stroška) plt.show () #plot povijest točnosti plt.plot (točnost _history) plt.show () # Test model correct_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Izračunajte točnost točnosti = tf.reduce_mean (tf.cast (ispravno_predviđanje, ' float ')) print (' Točnost: ', točnost.eval ({x: mnist.test.images, y: mnist.test.labels}))

Izlaz:

Sad s ovim, došli smo do kraja ovog članka Deep Learning with Python. Nadam se da ste razumjeli razne komponente dubokog učenja, kako je sve počelo i kako pomoću Pythona možemo stvoriti jednostavan perceptron i duboku neuronsku mrežu.

Edureka’s kuriraju profesionalci u industriji prema industrijskim zahtjevima i zahtjevima. Svladati ćete koncepte kao što su SoftMax funkcija, Neuronske mreže automatskog kodiranja, Ograničeni Boltzmannov stroj (RBM) i raditi s bibliotekama poput Kerasa i TFLearna. Tečaj su posebno pripremili industrijski stručnjaci sa studijama slučajeva u stvarnom vremenu.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare 'Dubinsko učenje s Pythonom', a mi ćemo vam se javiti.