Deep learning con Python: guida per principianti al deep learning

Questo articolo ti fornirà una conoscenza completa e dettagliata del Deep Learning con Python e di quanto sia utile nella vita quotidiana.

è uno degli argomenti più caldi del 2018-19 e per una buona ragione. Ci sono stati così tanti progressi nel settore in cui è giunto il momento in cui le macchine oi programmi per computer stanno effettivamente sostituendo gli umani. Questo Apprendimento profondo con Python l'articolo ti aiuterà a capire cos'è esattamente il Deep Learning e come è stata resa possibile questa transizione. Tratterò i seguenti argomenti in questo articolo:

Scienza dei dati e componenti

Bene, Data Science è qualcosa che esiste da secoli. Scienza dei dati è l'estrazione di conoscenza dai dati utilizzando diverse tecniche e algoritmi.





Timeline AI - Deep Learning con Python - Edureka

è una tecnica che consente alle macchine di imitare il comportamento umano. L'idea alla base dell'IA è abbastanza semplice ma affascinante, ovvero creare macchine intelligenti in grado di prendere decisioni da sole. Per anni si è pensato che i computer non avrebbero mai eguagliato la potenza del cervello umano.



Bene, allora non avevamo dati e potenza di calcolo sufficienti, ma ora con Big Data nascendo e con l'avvento delle GPU, l'intelligenza artificiale è possibile.

funzione goto c ++

è un sottoinsieme della tecnica di intelligenza artificiale che utilizza metodi statistici per consentire alle macchine di migliorare con l'esperienza.



Apprendimento approfondito è un sottoinsieme di ML che rende fattibile il calcolo della rete neurale multistrato. Utilizza reti neurali per simulare un processo decisionale simile a quello umano.

La necessità del Deep Learning

Un passo verso l'intelligenza artificiale è l'apprendimento automatico. L'apprendimento automatico è un sottoinsieme dell'intelligenza artificiale e si basa sull'idea che le macchine dovrebbero avere accesso ai dati e dovrebbero essere lasciate a imparare ed esplorare da sole. Si occupa dell'estrazione di modelli da grandi set di dati. La gestione di set di dati di grandi dimensioni non era un problema.

  • Algoritmi di machine learning non può gestire dati ad alta dimensione - dove abbiamo un gran numero di input e output: intorno a migliaia di dimensioni. La gestione e l'elaborazione di questo tipo di dati diventa molto complessa e le risorse esauriscono. Questo è definito come Maledizione della dimensionalità.

  • Un'altra sfida affrontata è stata, per specificare il file caratteristiche da estrarre . Questo gioca un ruolo importante nella previsione del risultato e per ottenere una migliore precisione. Pertanto, senza estrazione delle caratteristiche, la sfida per il programmatore aumenta poiché l'efficacia dell'algoritmo dipende molto da quanto è perspicace il programmatore.

Ora, è qui che il Deep Learning è venuto in soccorso. L'apprendimento profondo lo è in grado di gestire i dati ad alta dimensione ed è anche efficiente in concentrandosi sulle caratteristiche giuste da solo.

Cos'è il deep learning?

Il deep learning è un sottoinsieme del machine learning in cui vengono utilizzati algoritmi di machine learning simili per l'addestramento in modo da ottenere una migliore precisione nei casi in cui il primo non era all'altezza del marchio. Fondamentalmente, L'apprendimento profondo imita il modo in cui funziona il nostro cervello cioè impara dall'esperienza.

Come sai,il nostro cervello è composto da miliardi di neuroni che ci permette di fare cose incredibili. Anche il cervello di un bambino piccolo è in grado di risolvere problemi complessi che sono molto difficili da risolvere anche utilizzando i supercomputer. Allora, come possiamo ottenere la stessa funzionalità in un programma? Ora, è qui che capiamo Neurone artificiale (Perceptron) e Rete neurale artificiale.

Perceptron e reti neurali artificiali

Il Deep Learning studia l'unità di base di un cervello chiamata cellula cerebrale o neurone. Ora, cerchiamo di capire la funzionalità dei neuroni biologici e come imitiamo questa funzionalità nella percezione o in un neurone artificiale.

  • Dendrite: Riceve segnali da altri neuroni
  • Corpo cellulare: Somma tutti gli input
  • Axon: Viene utilizzato per trasmettere segnali alle altre cellule

Un neurone artificiale o un Perceptron è un modello lineare utilizzato per la classificazione binaria. Modella un neurone che ha una serie di input, ognuno dei quali ha un peso specifico. Il neurone calcola alcune funzioni su questi ponderato input e fornisce l'output.

Riceve n ingressi (corrispondenti a ciascuna funzione). Quindi somma gli input, applica una trasformazione e produce un output. Ha due funzioni:

  • Somma
  • Trasformazione (attivazione)

Il peso mostra l'efficacia di un particolare input. Più il peso dell'input, più avrà un impatto sulla rete neurale . D'altronde, Bias è un parametro aggiuntivo nel Perceptron che viene utilizzato per regolare l'output insieme alla somma ponderata degli input per il neurone che aiuta il modello in modo che possa adattarsi meglio ai dati forniti.

Funzioni di attivazione traduce gli input in output. Utilizza una soglia per produrre un output. Ci sono molte funzioni che vengono utilizzate come funzioni di attivazione, come:

  • Lineare o identità
  • Unità o passo binario
  • Sigmoide o logistico
  • Tanh
  • ReLU
  • Softmax

Bene. se pensi che Perceptron risolva il problema, ti sbagli. C'erano due problemi principali:

  • Perceptrons monostrato non è possibile classificare i punti dati separabili in modo non lineare .
  • Problemi complessi, che coinvolgono molti parametri non può essere risolto da Single-Layer Perceptrons.

Considera l'esempio qui e la complessità con i parametri coinvolti per prendere una decisione da parte del team di marketing.

Un neurone non può ricevere così tanti input ed è per questo che verrebbe utilizzato più di un neurone per risolvere questo problema. Neural Network è davvero solo un file composizione di Perceptrons, collegati in modi diversi e operando su diverse funzioni di attivazione.

  • Nodi di input forniscono informazioni dal mondo esterno alla rete e sono insieme denominati 'Livello di input'.
  • Nodi nascosti eseguire calcoli e trasferire informazioni dai nodi di input ai nodi di output. Una raccolta di nodi nascosti forma un 'livello nascosto'.
  • Nodi di output sono indicati collettivamente come 'Livello di output' e sono responsabili dei calcoli e del trasferimento delle informazioni dalla rete al mondo esterno.

Ora che hai un'idea di come si comporta un perceptron, dei diversi parametri coinvolti e dei diversi livelli di una rete neurale, continuiamo questo Deep Learning con il blog di Python e vediamo alcune fantastiche applicazioni di Deep Learning.

Applicazioni del deep learning

Esistono varie applicazioni del Deep Learning nel settore, eccone alcune di quelle importanti presenti nelle nostre attività quotidiane.

  • Riconoscimento vocale

  • Traduzione automatica

  • Riconoscimento facciale e codifica automatica

  • Assistenti personali virtuali

  • Auto a guida autonoma

  • Chatbot

Perché Python per il deep learning?

  • è uno di questi strumenti che ha un attributo unico, essere un linguaggio di programmazione generico come essere facile da usare quando si tratta di calcolo analitico e quantitativo.
  • È molto facile da capire
  • Python lo è Digitato dinamicamente
  • Enorme
  • Una vasta gamma di librerie per scopi diversi come Numpy, Seaborn, Matplotlib, Panda e Scikit-learn

Ora basta con la teoria, vediamo come possiamo iniziare il Deep Learning con Python con un piccolo ma entusiasmante esempio.

Apprendimento profondo con Python: esempio di Perceptron

Ora sono sicuro che voi ragazzi dovete avere familiarità con il funzionamento del ' O' cancello. L'output è uno se uno qualsiasi degli input è anche uno.

Pertanto, un Perceptron può essere utilizzato come separatore o linea di decisione che divide l'insieme di input di OR Gate, in due classi:

Classe 1: Input con output pari a 0 che si trova al di sotto della linea di decisione.
Classe 2: Input con output come 1 che si trova sopra la linea di decisione o il separatore.

crea una classe singleton in java

Fino ad ora, abbiamo capito che un perceptron lineare può essere utilizzato per classificare il data set di input in due classi. Ma come classifica effettivamente i dati?

Matematicamente un perceptron può essere pensato come un'equazione di pesi, input e bias.

Passaggio 1: importa tutta la libreria richiesta

Qui importerò solo una libreria, ad es. TensorFlow

importa tensorflow come tf

Passaggio 2: definizione delle variabili vettoriali per input e output

Successivamente, dobbiamo creare variabili per memorizzare l'input, l'output e il bias per Perceptron.

train_in = [[0,0,1], [0,1,1], [1,0,1], [1,1,1]] train_out = [[0], [1], [1], [1]]

Passaggio 3: definire la variabile di peso

Qui definiremo la variabile tensore di forma 3 × 1 per i nostri pesi e le assegneremo inizialmente alcuni valori casuali.

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

Passaggio 4: definire i segnaposto per input e output

Dobbiamo definire segnaposto in modo che possano accettare input esterni durante la corsa.

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

Passaggio 5: calcolo dell'output e della funzione di attivazione

Come discusso in precedenza, l'input ricevuto da un perceptron viene prima moltiplicato per i rispettivi pesi e quindi tutti questi input ponderati vengono sommati insieme. Questo valore sommato viene quindi alimentato all'attivazione per ottenere il risultato finale.

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

Nota: in questo caso, ho usato relu come funzione di attivazione. Sei libero di utilizzare una qualsiasi delle funzioni di attivazione in base alle tue necessità.

Passaggio 6: calcolare il costo o l'errore

Dobbiamo calcolare il costo = errore quadratico medio che non è altro che il quadrato della differenza tra l'output del perceptron e l'output desiderato.

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

Passaggio 7: ridurre al minimo l'errore

L'obiettivo di un perceptron è ridurre al minimo la perdita, il costo o l'errore. Quindi qui useremo l'ottimizzatore della discesa del gradiente.

optimizer = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (loss)

Passaggio 8: inizializza tutte le variabili

Le variabili vengono definite solo con tf.Variable. Quindi, dobbiamo inizializzare le variabili definite.

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

Passaggio 9: addestramento di Perceptron nelle iterazioni

Dobbiamo allenare il nostro perceptron, cioè aggiornare i valori di pesi e bias nell'iterazione successiva per ridurre al minimo l'errore o la perdita. Qui, allenerò il nostro percettore in 100 epoche.

for i in range (100): sess.run (train, {x: train_in, y: train_out}) cost = sess.run (loss, feed_dict = {x: train_in, y: train_out}) print ('Epoch-- ', i,' - perdita - ', costo)

Passaggio 10: output

……

……

Come puoi vedere qui, la perdita è iniziata a 2.07 e si è conclusa alle 0.27

.

Apprendimento profondo con Python: creazione di una rete neurale profonda

Ora che abbiamo creato con successo un perceptron e lo abbiamo addestrato per una porta OR. Continuiamo questo articolo e vediamo come creare la nostra rete neurale da zero, dove creeremo un livello di input, livelli nascosti e un livello di output.

Useremo il set di dati MNIST. Il set di dati MNIST è costituito da 60.000 formazione campioni e 10.000 test campioni di immagini di cifre scritte a mano. Le immagini sono di dimensioni 28 × 28 pixel e l'output può trovarsi tra 0-9 .

Il compito qui è addestrare un modello in grado di identificare con precisione la cifra presente sull'immagine

In primo luogo, utilizzeremo l'importazione di seguito per portare la funzione di stampa da Python 3 a Python 2.6+. Le istruzioni __future__ devono essere all'inizio del file perché cambiano le cose fondamentali sulla lingua, quindi il compilatore deve conoscerle dall'inizio

from __future__ import print_function

Di seguito è riportato il codice con i commenti ad ogni passaggio

# Importa i dati MNIST da tensorflow.examples.tutorials.mnist importa input_data mnist = input_data.read_data_sets ('/ tmp / data /', one_hot = True) importa tensorflow come tf importa matplotlib.pyplot come plt # Parametri learning_rate = 0.001 training_epochs = 15 batch_size = 100 display_step = 1 # Network Parameters n_hidden_1 = 256 # 1st layer number of features n_hidden_2 = 256 # 2nd layer number of features n_input = 784 # MNIST data input (img shape: 28 * 28) n_classes = 10 # MNIST total classes ( 0-9 cifre) # tf Input grafico x = tf.placeholder ('float', [None, n_input]) y = tf.placeholder ('float', [None, n_classes]) # Crea modello def multilayer_perceptron (x, weights , bias): # Livello nascosto con attivazione RELU layer_1 = tf.add (tf.matmul (x, weights ['h1']), biases ['b1']) layer_1 = tf.nn.relu (layer_1) # Livello nascosto con attivazione RELU layer_2 = tf.add (tf.matmul (layer_1, weights ['h2']), biases ['b2']) layer_2 = tf.nn.relu (layer_2) # Livello di output con attivazione lineare out_layer = tf. matmul (strato _2, pesi ['out']) + bias ['out'] return out_layer # Memorizza il peso dei livelli e i pesi di polarizzazione = {'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]))} bias = {'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]))} # Costruisci il modello pred = multilayer_perceptron (x, weights, biases) # Define loss and optimizer cost = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (logits = pred, labels = y)) optimizer = tf.train.AdamOptimizer (learning_rate = learning_rate) .minimize (cost) # Inizializzazione delle variabili init = tf.global_variables_initializer () #crea una lista vuota per memorizzare la cronologia dei costi e la cronologia dell'accuratezza cost_history = [] accuratezza_istoria = [] # Lancia il grafico con tf.Session () as sess: sess.run (init ) # Ciclo di addestramento per l'epoca nell'intervallo (training_epochs): avg_cost = 0. total_batch = int (mnist.train.num_examples / batch_size) # Ciclo su tutti i batch per i nell'intervallo (total_batch): batch_x, batch_y = mnist.train.next_batch (batch_size) # Esegui ottimizzazione op (backprop) e costo op (per ottenere il valore della perdita) _, c = sess.run ([optimizer, cost], feed_dict = {x: batch_x, y: batch_y}) # Calcola la perdita media avg_cost + = c / total_batch # Visualizza i log per passo dell'epoca se epoch% display_step == 0: correct_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Calcola accuratezza accuratezza = tf.reduce_mean (tf.cast (correct_prediction, 'float') ) acu_temp = accuratezza.eval ({x: mnist.test.images, y: mnist.test.labels}) #append l'accuratezza all'elenco accuratezza_history.append (acu_temp) #append la cronologia dei costi cost_history.append (avg_cost) stampa ('Epoch:', '% 04d'% (epoch + 1), '- cost =', '{: .9f}'. Format (avg_cost), '- Accuracy =', acu_temp) print ('Ottimizzazione finita! ') # traccia la cronologia dei costi plt.plot (cost_history) plt.show () # traccia la cronologia dell'accuratezza plt.plot (accuratezza _history) plt.show () # Test model correct_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Calcola accuratezza accuratezza = tf.reduce_mean (tf.cast (correct_prediction, ' float ')) print (' Precisione: ', accuratezza.eval ({x: mnist.test.images, y: mnist.test.labels}))

Produzione:

cos'è il corso di data science

Con questo, arriviamo alla fine di questo articolo Deep Learning with Python. Spero che tu abbia capito i vari componenti del Deep Learning, come tutto è iniziato e come usando Python possiamo creare un semplice percettrone e una rete neurale profonda.

Edureka's è curato da professionisti del settore secondo i requisiti e le richieste del settore. Imparerai concetti come la funzione SoftMax, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) e lavorerai con librerie come Keras e TFLearn. Il corso è stato appositamente curato da esperti del settore con casi di studio in tempo reale.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di 'Deep Learning with Python' e ti risponderemo.