Apprendimento automatico e Reti Neurali - pagina 35

 

Tensorflow per la ricerca sul deep learning - Lezione 1



Tensorflow per la ricerca sul deep learning - Lezione 1

Il video "Tensorflow for Deep Learning Research - Lecture 1" introduce il tutorial su TensorFlow coprendo la necessità di un tutorial di livello approfondito, spiegando le basi della libreria e le applicazioni pratiche. La lezione spiega come costruire e strutturare modelli utilizzando TensorFlow da una prospettiva di deep learning. Il tutorial copre anche gli strumenti utilizzati in TensorBoard per visualizzare un modello grafico computazionale, incluso come operare con nodi, bordi e sessioni, che forniscono opzioni di calcolo efficienti eseguendo sottografi. Il docente consiglia di imparare TensorFlow da zero per creare modelli personalizzati e gestire in modo efficiente le risorse, con la possibilità di funzionare su CPU, GPU, Android o iOS, fornendo allo stesso tempo la possibilità di distribuire i modelli.

  • 00:00:00 In questa sezione, il relatore introduce il tutorial su TensorFlow spiegando che sono necessari tutorial video che non siano troppo superficiali e affrontino i punti che mancano ad altri tutorial. Annuncia che la conferenza seguirà il contenuto di CS 20 della Stanford University e utilizza le diapositive create da Chip Huyen, con i suoi pensieri personali. Inoltre, sottolinea che TensorFlow è una libreria per il calcolo numerico, sviluppata da Google, che consente grafici e calcoli numerici, rendendola adatta alla costruzione di vari modelli di machine learning che vanno dalla regressione logistica ai modelli di deep learning. TensorFlow offre anche la possibilità di distribuire modelli su CPU, GPU, Android o iOS.

  • 00:05:00 In questa sezione, il relatore discute il concetto di punti di controllo, stati salvati di modelli che consentono la continuazione dallo stesso punto in caso di interruzioni. Viene evidenziata l'importanza della differenziazione nei framework di deep learning e il relatore suggerisce di provare a scrivere manualmente i livelli di backpropagation per comprendere la facilità che Tensorflow apporta al processo. La popolarità di Tensorflow è attribuita al suo utilizzo da parte di una vasta comunità e vengono discussi vari progetti come il trasferimento dello stile dell'immagine, la generazione della scrittura a mano e StackGAN. La lezione mira a coprire il modello grafico computazionale di Tensorflow, le funzioni di costruzione e i modelli di strutturazione da una prospettiva di apprendimento profondo. Infine, il relatore consiglia di utilizzare il sito Web Tensorflow come fonte per le API e le librerie più recenti.

  • 00:10:00 In questa sezione, il relatore discute l'importanza di imparare TensorFlow da zero. Sebbene le astrazioni di alto livello possano gestire attività più complesse, la comprensione del funzionamento dietro il codice è fondamentale per la creazione di modelli personalizzati. Il relatore spiega che TensorFlow separa la definizione di calcolo dalla sua esecuzione, assemblando un grafico computazionale e utilizzando una sessione per eseguire operazioni. La sezione spiega come la definizione delle operazioni in TensorFlow crea un grafico che può essere visualizzato utilizzando lo strumento integrato TensorBoard. Il codice di esempio utilizzato mostra i nodi per operatori e tensori, dove i valori del bordo rappresentano i valori del tensore.

  • 00:15:00 In questa sezione, il docente discute i nodi e gli archi in un grafico TensorFlow, nonché l'uso delle sessioni per eseguire calcoli all'interno del grafico. I nodi possono essere operatori, variabili o costanti, mentre i bordi sono tensori. Una sessione viene utilizzata per istanziare il grafico ed eseguire calcoli, con la sessione che si occupa delle risorse necessarie. L'esecuzione di un nodo specifico nel grafico con una sessione calcolerà il grafico e restituirà il valore del nodo, e il docente lo dimostra con un esempio usando l'addizione. L'oggetto sessione incapsula l'ambiente delle risorse per gli operatori e gli oggetti tensore da eseguire all'interno. Il docente cita anche l'uso dell'affermazione "con" come alternativa alla chiusura esplicita della sessione.

  • 00:20:00 In questa sezione, il video spiega il concetto di valutazione pigra in Tensorflow. Afferma che quando un grafico viene creato in Tensorflow, non viene precalcolato o memorizzato nella cache da qualche parte, ma i calcoli vengono eseguiti pigramente come e quando sono necessari. Il potere della valutazione pigra deriva dal fatto che non tutto deve essere calcolato, quindi risparmia un sacco di calcoli mentre seguiamo più a fondo i modelli. Quando si chiama il metodo session dot run, il primo argomento è un elenco di nodi all'interno dell'elenco dei recuperi che devono essere calcolati e Tensorflow calcola tutti questi diversi nodi e restituisce i risultati sotto forma di elenco.

  • 00:25:00 In questa sezione, il docente discute i vantaggi della modellazione dei calcoli come un grafico in TensorFlow, inclusa la possibilità di eseguire sottografi in parallelo su più CPU o GPU. Spiegano come specificare un grafico specifico da eseguire su una particolare GPU utilizzando il comando TF device GPU e come creare più grafici in TensorFlow, che potrebbero essere utili in casi come l'apprendimento dell'ensemble in cui potresti avere diversi modelli in esecuzione in parallelo. Il docente osserva inoltre che le sessioni in TensorFlow possono essere avide in termini di utilizzo delle risorse, quindi potrebbe essere necessario gestire le risorse con attenzione quando si utilizzano più grafici.

  • 00:30:00 In questa sezione, il docente discute come creare e manipolare grafici in TensorFlow. Spiegano che è possibile creare più sessioni, ma può essere complesso passare i dati tra di loro. Si consiglia di utilizzare una sola sessione per semplicità. Per aggiungere nodi a un grafico, viene utilizzata l'API TF dot Graph, in cui il grafico istanziato può essere impostato come predefinito. Quando viene istanziata la sessione, il grafico può essere passato come argomento e attorno ad esso viene creato l'intero ambiente di esecuzione. È importante evitare di mescolare due grafici e, per ottenere un handle sul grafico predefinito, viene utilizzata l'API TF dot get underscore default.

  • 00:35:00 In questa sezione, il relatore discute i vantaggi dell'utilizzo dei grafici in TensorFlow. Uno dei vantaggi è la possibilità di eseguire sottografi e persino una singola operazione, piuttosto che dover eseguire l'intero grafico, rendendo i calcoli più efficienti. TensorFlow ha anche una modalità distribuita, che consente di eseguire i calcoli su diversi dispositivi e macchine quando il calcolo viene descritto utilizzando i sottografi. Il risultato di questa sezione è l'importanza di impostare grafici di calcolo ed eseguire sottografi all'interno di una sessione.
 

Tensorflow per la ricerca sul deep learning - Lezione 2



Tensorflow per la ricerca sul deep learning - Lezione 2

La conferenza su TensorFlow per la ricerca sull'apprendimento approfondito copre un'ampia gamma di argomenti, tra cui operazioni di base, tipi di tensori, segnaposto e caricamento lento. Viene sottolineata l'importanza di utilizzare TensorBoard per visualizzare il grafico in esecuzione e vengono discusse varie funzioni dell'API TensorFlow, tra cui random shuffle, random crop, TF.dot multinomial e la funzione random gamma. Il video copre anche i concetti di definizione di 0-ness per diversi tipi di dati, inizializzazione delle variabili, assegnazione di valori e i vantaggi dell'utilizzo di una sessione interattiva TensorFlow. Infine, l'uso dei segnaposto in TensorFlow è trattato in dettaglio e vengono discussi i potenziali problemi quando si utilizzano segnaposto con forme non definite.

Il relatore discute anche dell'uso dei segnaposto in TensorFlow, incluso come alimentare più punti dati e utilizzare dict gratuiti. La lezione passa quindi al caricamento pigro, in cui il calcolo viene posticipato fino al runtime per evitare di gonfiare il grafico causato da più nodi della stessa operazione in loop. Separare la definizione degli oggetti operativi dal calcolo e strutturare il codice per le definizioni delle variabili e le funzioni di calcolo aiuta a evitare problemi con le funzioni di chiamata in TensorFlow. Il relatore spiega anche come l'ottimizzatore riduca al minimo l'entropia incrociata e aggiorni pesi e distorsioni mentre utilizza le proprietà per strutturare il codice TensorFlow in modo efficiente.

  • 00:00:00 In questa sezione della lezione, l'istruttore tratta le operazioni di base, i tipi di tensore, i segnaposto e il lazy loading. Dimostrano come visualizzare il grafico TF utilizzando TensorBoard con un semplice programma grafico che viene visualizzato utilizzando TensorBoard. Il processo prevede l'aggiunta di un writer del file di riepilogo della tabella TF al contesto della sessione, fornendo una posizione in cui scrivere gli eventi, specificando cosa scrivere e quindi chiudendo il writer al termine. Mostrano anche come rendere il grafico più leggibile aggiungendo gli argomenti del nome.

  • 00:05:00 In questa sezione, il relatore sottolinea l'importanza di utilizzare TensorBoard per visualizzare il grafico in esecuzione, che è una funzione automatica in TensorFlow che non è prontamente disponibile in altri framework. La lezione approfondisce quindi la firma della funzione TF.constant e come il suo valore, la forma e il tipo di dati possono essere specificati o dedotti. Inoltre, il relatore spiega cosa succede quando verify_shape è impostato su true o false e in che modo TensorFlow gestisce i nomi univoci per le costanti. Infine, la lezione mostra come creare un vettore e una matrice, sommarli e utilizzare TensorBoard per visualizzare il grafico.

  • 00:10:00 In questa sezione della conferenza viene introdotto l'argomento della trasmissione in TensorFlow e viene dimostrato come sia simile a NumPy. La trasmissione viene mostrata attraverso esempi di aggiunta e moltiplicazione di costanti a una matrice. Viene trattato anche il concetto di creazione di tensori precompilati con determinati valori, sia con zeri che uno, e come creare tensori riempiti con un valore personalizzato utilizzando il metodo TF.fill. Viene sottolineata l'importanza di impostare correttamente il tipo di dati per questi tensori. Nel complesso, la conferenza sottolinea l'importanza di comprendere le somiglianze e le differenze tra TensorFlow e altre librerie basate su numeri, come NumPy.

  • 00:15:00 In questa sezione, il relatore discute alcuni diversi tipi di vincoli e sequenze che possono essere utilizzati in Tensorflow. Un esempio è l'uso di linspace per creare una sequenza di intervalli equidistanti, in cui i valori di inizio e fine sono float 32 o float 64. Un altro esempio è la funzione normale casuale, che genera un tensore di una forma specificata campionando da una distribuzione normale. Il normale troncato è simile, ma i campioni entro due deviazioni standard dalla media. Infine, lo shuffle casuale viene discusso come un modo per mescolare i valori di un tensore su una dimensione specifica. Il relatore suggerisce di praticare queste funzioni per sviluppare la memoria muscolare ed evitare di affidarsi costantemente alla documentazione.

  • 00:20:00 In questa sezione, il docente discute varie funzioni dell'API Tensorflow, a partire dalla funzione random shuffle, che mescola i dati sulla quarta dimensione per impostazione predefinita, rendendola utile per i set di dati di immagini. La funzione di ritaglio casuale ritaglia blocchi contigui di dati di una forma specificata da un tensore. La funzione multinomiale TF.dot campiona da una distribuzione multinomiale con un dato tensore logit e un dato numero di campioni. Infine, viene discussa la funzione gamma casuale, che è un'altra distribuzione statistica che ha due parametri: forma e beta.

  • 00:25:00 In questa sezione, il relatore discute l'uso delle funzioni TensorFlow per generare costanti e sequenze generate casualmente per la ricerca sul deep learning. Viene introdotta la funzione set_random_seed, che consente agli utenti di impostare un feed casuale per l'intero grafico, rendendo i risultati più deterministicamente casuali e consentendo agli utenti di ripetere gli esperimenti in modo coerente. Il relatore spiega anche varie funzioni TensorFlow per le operazioni di base, come addizione per elemento, moltiplicazione di matrici e operazioni modulo. Inoltre, il relatore sottolinea che alcuni dei tipi nativi di Python, come boolean e string, possono essere utilizzati con TensorFlow.

  • 00:30:00 In questa sezione della lezione, il relatore discute i concetti di definizione di 0-ness per diversi tipi di dati, come vettori, matrici e stringhe, in TensorFlow, e quale sarà l'output previsto per ciascun tipo. Coprono anche i tipi di dati TensorFlow, che includono slow 32 64, in 8 16 32 64, e come possono essere usati in modo intercambiabile con NumPy. Inoltre, il relatore mette in guardia contro l'uso di costanti in TensorFlow, poiché sono memorizzate nella definizione del grafico, il che può causare problemi in seguito.

  • 00:35:00 In questa sezione, il relatore discute l'uso delle variabili TensorFlow, spiegando che gli utenti possono definire una variabile utilizzando TFDOTvariable insieme a un valore e un nome facoltativo. Le dimensioni vengono dedotte dal valore inserito e gli utenti possono scegliere di inizializzare le proprie variabili utilizzando la funzione TF.global_variables_initializer(). L'oratore avverte che le variabili non inizializzate porteranno a errori, ma che gli utenti possono inizializzare solo un sottoinsieme delle variabili se necessario. Inoltre, l'oratore spiega che le costanti sono diverse dalle variabili, poiché la costante è un operatore mentre una variabile è una classe con più funzioni e metodi che gli utenti possono chiamare.

  • 00:40:00 In questa sezione, il video spiega i diversi modi di inizializzare le variabili in TensorFlow, uno dei quali è chiamando l'operazione "assign" su di esse con un certo valore. Questo approccio può essere utile quando si esegue il training di un modello utilizzando l'apprendimento di trasferimento, in cui ad alcuni livelli vengono assegnati valori da un modello pre-addestrato mentre altri vengono inizializzati in modo casuale. Il video illustra anche come inizializzare una singola variabile e come ottenere il valore di una variabile utilizzando il metodo "eval". Inoltre, il video spiega che quando si assegna un valore a una variabile, va bene se la variabile non è stata inizializzata prima e l'operazione "assegna" può inizializzare la variabile prima di assegnare il valore.

  • 00:45:00 In questa sezione, il video illustra l'inizializzazione delle variabili e l'assegnazione di valori ad esse. L'inizializzatore op assegna il valore iniziale di una variabile alla variabile stessa. Inoltre, l'operazione di assegnazione aggiunge, sottrae o moltiplica il valore corrente di una variabile con un nuovo valore, mentre l'operazione sub di assegnazione sottrae il nuovo valore dal valore corrente. Più sessioni manterranno le proprie copie di variabili e inizializzazioni ed è importante gestire e seguire attentamente il percorso di esecuzione quando si ha a che fare con più sessioni per evitare risultati imprevisti. Infine, le variabili non inizializzate non avranno alcun effetto su assegnazioni o operazioni e tutte le sessioni dovrebbero essere chiuse per rilasciare risorse.

  • 00:50:00 In questa sezione, il relatore discute l'inizializzazione delle variabili nella libreria TensorFlow. Quando si esegue TensorFlow, tutte le variabili utilizzate nel codice devono essere inizializzate. Questo può essere rischioso quando si utilizzano più variabili poiché possono dipendere l'una dall'altra. In casi come questi, si dovrebbe usare il valore di inizializzazione della variabile per assicurarsi che il valore della variabile sia sicuro prima di usarlo per inizializzare un'altra variabile. Il relatore prosegue poi spiegando i vantaggi dell'utilizzo di una sessione interattiva TensorFlow e come utilizzare la sessione per valutare una serie di operazioni all'interno del codice. Infine, l'oratore discute la dipendenza dal controllo, un metodo per garantire che tutte le operazioni pertinenti vengano eseguite prima di chiamare l'operazione finale. Questo può essere utile in modelli complessi di machine learning contenenti molte operazioni.

  • 00:55:00 In questa sezione, il video discute i segnaposto in TensorFlow, che consentono l'assemblaggio di un grafico senza conoscere i valori dei dati che verranno utilizzati nel calcolo. I segnaposto fungono da segnaposto per i valori effettivi che verranno calcolati lungo la linea e vengono definiti utilizzando l'operatore TF.placeholder con un tipo e una forma definiti. Quando si eseguono operazioni che coinvolgono i segnaposto, è necessario creare un dizionario con i segnaposto ei relativi valori e questo dizionario viene quindi inserito nella chiamata session.run(). Vale la pena notare che mentre i segnaposto possono avere la forma impostata su none, alcune operazioni richiedono la definizione della forma, il che potrebbe causare errori.

  • 01:00:00 In questa sezione, il video discute i segnaposto e il modo in cui sono valide operazioni di prima classe a se stanti, che possono essere visualizzate in TensorBoard. La sezione illustra anche come inserire più punti dati e come utilizzare il dict gratuito per qualsiasi variabile o costante nel grafico. Il video passa quindi al caricamento lento, in cui gli oggetti vengono creati solo quando sono necessari, e al caricamento normale in cui viene creato un nodo all'interno del grafico prima di eseguirlo. Il concetto di caricamento lento aiuta nella gestione della memoria, soprattutto quando si lavora con set di dati di grandi dimensioni.

  • 01:05:00 In questa sezione, il relatore spiega il caricamento lento e le sue implicazioni per TensorFlow. Il caricamento lento è una tecnica in cui il calcolo viene posticipato fino al runtime, piuttosto che alla costruzione del grafico: questo può portare a più nodi della stessa operazione nel grafico di calcolo, specialmente nei loop. Per evitare di gonfiare il grafico e altri problemi associati, il relatore raccomanda di separare la definizione degli oggetti operativi dal calcolo e dall'esecuzione delle operazioni. Inoltre, il relatore sottolinea l'importanza di strutturare il codice in modo che le definizioni delle variabili siano in un posto e le funzioni di calcolo in un altro.

  • 01:10:00 In questa sezione, il docente spiega come strutturare il codice per evitare problemi con le funzioni di chiamata quando si utilizza TensorFlow per la ricerca sul deep learning. Usando le proprietà di Python, il docente mostra come definire attributi interni come 'start_prediction', 'optimized' e 'error'. La prima parte del blocco di codice calcola la dimensione dei dati, la dimensione di destinazione, il peso e il bias prima di aggiungere un'operazione. L'output risultante di questa operazione viene aggiunto al grafico. La funzione 'ottimizza' segue lo stesso schema, creando i nodi iniziali la prima volta che viene chiamata e restituendo gli handle a questi nodi le volte successive che viene chiamata.

  • 01:15:00 In questa sezione, il relatore discute di come l'ottimizzatore riduca al minimo l'entropia incrociata e aggiorni pesi e distorsioni in TensorFlow. Quando l'ottimizzatore viene chiamato per la prima volta, TensorFlow esegue la retropropagazione e aggiorna le variabili che contribuiscono alla perdita. Quando l'ottimizzatore viene chiamato successivamente, TensorFlow ha già il grafico e calcola i nodi in entrata per minimizzare e aggiornare i pesi senza chiamare nodi aggiuntivi. L'uso delle proprietà aiuta a strutturare il codice TensorFlow in modo più efficiente. La prossima lezione fornirà un esempio per comprendere meglio questo processo.
 

Tensorflow per la ricerca sul deep learning - Lezione 3



Tensorflow per la ricerca sul deep learning - Lezione 3

La terza lezione su TensorFlow per la ricerca sul deep learning copre la regressione lineare e la regressione logistica utilizzando il set di dati MNIST. Il docente mostra come addestrare un modello di regressione lineare in TensorFlow creando segnaposto per i dati di input, inizializzando variabili addestrabili per pesi e bias, elaborando previsioni, calcolando la perdita e definendo l'ottimizzatore come discesa del gradiente con un tasso di apprendimento specifico. La lezione spiega anche la discesa del gradiente stocastico mini-batch e l'importanza di ricordare la forma delle variabili. L'accuratezza del modello viene calcolata confrontando l'indice del valore massimo ottenuto dalla funzione TF argmax con la variabile target y, calcolando il numero di previsioni corrette utilizzando TF reduce sum e TF float e dividendolo per il numero totale di test esempi. Infine, il docente osserva che questo modello non è considerato potente e che esistono modelli più robusti come gli strati convoluzionali che producono una maggiore precisione.

  • 00:00:00 In questa sezione, il relatore inizia la terza lezione su TensorFlow per la ricerca sul deep learning e inizia con una revisione del materiale della lezione precedente. Spiegano come TensorFlow separi la definizione del grafico di calcolo dalla sua esecuzione e come assemblare un grafico aggiungendovi varie operazioni. Quindi discutono le costanti, le variabili e i segnaposto TF e le loro funzionalità all'interno di un grafico. Il relatore sottolinea l'importanza di evitare il caricamento pigro e separare invece l'assemblaggio del grafico e la sua esecuzione per un'efficienza ottimale. Quindi introducono il primo esempio di regressione lineare e spiegano come prevedere la variabile dipendente Y in base a variabili indipendenti nel set di dati. L'oratore raccomanda agli ascoltatori di seguire gli esempi e di risolvere i problemi da soli.

  • 00:05:00 In questa sezione, il docente spiega le basi della regressione lineare e dimostra come addestrare un modello di regressione lineare in TensorFlow. Viene utilizzato un semplice modello lineare in cui il valore previsto di y è W moltiplicato per X, aggiunto a B. La perdita viene calcolata come la differenza tra il valore previsto e il valore effettivo di Y e l'addestramento avviene minimizzando la perdita ottimizzando il variabili addestrabili di W e B. Il docente condivide quindi il codice per un esempio di regressione lineare in cui i dati di input sono il numero di incendi e la variabile target di output è il numero di test in un dato campione. Il codice dimostra come creare segnaposto per i dati di input, inizializzare le variabili addestrabili di W e B, elaborare previsioni, calcolare la perdita e definire l'ottimizzatore come discesa del gradiente con un tasso di apprendimento specifico.

  • 00:10:00 In questa sezione, il docente descrive il processo di addestramento di un modello in TensorFlow per la ricerca sul deep learning. Dopo aver creato il modello e progettato la funzione di perdita, il passaggio successivo è avviare una sessione ed eseguire il modello per un numero definito di epoche. Ogni epoca comporta l'esecuzione ripetuta dei dati di addestramento durante la sessione e l'aggiornamento delle variabili per ridurre al minimo la perdita. Il processo viene visualizzato tramite TensorBoard e il modello risultante può essere utilizzato per prevedere l'output per qualsiasi dato valore di input. Il docente rileva inoltre la presenza di un valore anomalo nei dati che influisce sulla previsione del modello.

  • 00:15:00 In questa sezione, il docente spiega il ruolo degli ottimizzatori nei modelli di addestramento in TensorFlow ed elenca diversi ottimizzatori tra cui gradiente discendente, grad momentum, Adam, RMSprop, prossimale gradiente e prossimale a grad. Il docente sottolinea l'importanza di testare le prestazioni del modello su dati che non ha visto prima per garantire che il modello sia generalizzabile. Per affrontare la sensibilità della funzione di perdita dell'errore quadrato ai valori anomali, il docente introduce la funzione di perdita di Huber e spiega come funziona. Il docente fornisce anche istruzioni su come codificare la funzione di perdita di Huber in TensorFlow.

  • 00:20:00 In questa sezione, il docente spiega l'implementazione della perdita di Huber, che è una funzione di perdita comunemente utilizzata nel deep learning. La perdita di Huber viene utilizzata per problemi di regressione e funziona trovando il residuo tra previsioni ed etichette. Se il residuo è minore del valore Delta, viene restituita una funzione chiamata Small Res. Tuttavia, se è maggiore di Delta, viene restituito Large Res. Il docente passa quindi alla discussione della regressione logistica utilizzando il set di dati MNIST. La regressione logistica viene utilizzata per problemi di classificazione e funziona calcolando il logit come X in W più B. Il risultato viene quindi passato attraverso una funzione softmax, producendo una distribuzione di probabilità. La funzione di perdita utilizzata in questo caso è la perdita di entropia incrociata, che misura la distanza tra due distribuzioni di probabilità.

  • 00:25:00 In questa sezione, l'istruttore spiega il concetto di discesa del gradiente stocastico mini-batch e l'uso di batch durante l'addestramento dei modelli per il deep learning. In questo modo, aiuta a sfruttare al meglio la memoria della GPU ed è efficiente quando non è possibile utilizzare l'intero set di addestramento. L'esercitazione include passaggi per creare un segnaposto per il modello, inizializzare i valori di peso e distorsioni per le funzionalità di input e output e creare un modello con tensorflow utilizzando la funzione tf.random.normal per l'inizializzazione. È stata inoltre sottolineata l'importanza di ricordare la forma di queste variabili durante la loro creazione, in particolare con l'ultima dimensione della funzione di input e il numero di classi.

  • 00:30:00 In questa sezione viene discusso il semplice modello DF con dimensionalità a dimensione batch di 10, in cui viene utilizzata la funzione di perdita di entropia incrociata per calcolare la perdita. Viene definito un ottimizzatore e, una volta addestrato il modello, viene testato per trovare il numero totale di previsioni corrette. Le previsioni corrette vengono calcolate utilizzando il batch logits e la funzione softmax, in cui i valori di probabilità vengono inseriti nel modello e confrontati con le etichette effettive per calcolare i valori di previsione corretti. Si consiglia di non eseguire l'ottimizzatore sul set di test per evitare l'overfitting.

  • 00:35:00 In questa sezione, il presentatore spiega come calcolare l'accuratezza del modello. La funzione TF argmax viene utilizzata per ottenere il valore massimo nella riga e restituisce l'indice della cifra con la probabilità più alta. Confrontiamo questo indice con la variabile target y. Quindi, calcoliamo il numero di previsioni corrette utilizzando TF reduce sum e TF float. Infine, dividiamo il numero di previsioni corrette per il numero totale di esempi di test per ottenere l'accuratezza, che è del 90% per questo specifico modello lineare. Il presentatore osserva inoltre che questo modello non è considerato potente e che esistono modelli più robusti come i livelli convoluzionali che producono una maggiore precisione.
 

Tensorflow per la ricerca sul deep learning - Lezione 4



Tensorflow per la ricerca sul deep learning - Lezione 4

Nella lezione 4 della serie TensorFlow for Deep Learning Research, il relatore approfondisce i word embedding nell'elaborazione del linguaggio naturale basata sul deep learning. La conferenza spiega il concetto di apprendimento di word embedding per problemi di PNL e descrive il processo di rappresentazione delle parole come vettori numerici nelle reti neurali. La conferenza discute diversi metodi per generare vettori di parole utilizzando CBOW basato su AI e salta i grammi e affronta il problema della complessità computazionale in softmax usando campionamento negativo e NCE. Inoltre, il docente evidenzia il processo di incorporamento delle variabili in TensorFlow e l'utilizzo di t-SNE per visualizzare vettori di parole ad alta dimensione in dimensioni ridotte. Infine, la lezione si conclude con un riassunto dei concetti trattati e un brief sulla lezione successiva, che si concentrerà sulla costruzione di modelli di parole.

  • 00:00:00 In questa sezione, il docente discute il concetto di word embedding nella PNL basato sul deep learning. Gli incorporamenti di parole sono un modo per rappresentare le parole come numeri in una rete neurale, che cattura le relazioni semantiche tra le parole. L'obiettivo è quello di costruire un modello in grado di raggruppare concetti simili, come i paesi, quando li si proietta su uno spazio bidimensionale. Il docente spiega anche il processo di apprendimento degli incorporamenti di parole attraverso il conteggio e introduce il nuovo approccio dell'utilizzo della retropropagazione con le reti neurali.

  • 00:05:00 In questa sezione, il relatore discute i modi per rappresentare le parole come vettori utilizzando la matrice di co-occorrenza. Tuttavia, la matrice delle ricorrenze è molto ampia e scarsa, il che rende difficile lavorarci. Per risolvere questo problema, l'oratore suggerisce di utilizzare SVD troncato per trovare un'approssimazione di basso rango della matrice. Ciò comporta la fattorizzazione della matrice in tre matrici e la selezione solo del primo K dei vettori singolari giusti da utilizzare come rappresentazioni. Tuttavia, SVD è un'operazione computazionalmente costosa, specialmente per vocabolari di grandi dimensioni, che ne rende difficile la scalabilità. Inoltre, aggiungere una nuova parola al vocabolario richiederebbe di rifare l'intero calcolo.

  • 00:10:00 In questa sezione, il video discute due metodi per generare vettori di parole utilizzando metodi basati sulla creazione di intelligenza artificiale: borsa continua di parole (CBOW) e skip gram. CBOW utilizza il contesto attorno alla parola target per prevedere la parola centrale, mentre skip gram utilizza la parola centrale per prevedere le parole contestuali. I vettori one-hot vengono utilizzati per rappresentare ogni parola e una matrice di peso viene creata attraverso una semplice rete neurale per apprendere i vettori di parole. I campioni di addestramento vengono scelti selezionando una dimensione della finestra e spostando la finestra sul testo. La rete neurale è addestrata a trovare la probabilità di qualsiasi altra parola nel contesto data una parola specifica nel mezzo della frase.

  • 00:15:00 In questa sezione della lezione, il relatore spiega la tecnica del word embedding, che consiste nel rappresentare le parole come vettori per renderle interpretabili alla rete neurale. La tecnica prevede la selezione casuale di una parola da un contesto e l'utilizzo di una matrice di peso per apprendere i vettori di parole, che vengono quindi accoppiati con una matrice di output per creare una distribuzione di probabilità delle parole nel vocabolario. La funzione softmax viene utilizzata per normalizzare la distribuzione scalare dell'output, quindi parole con contesti simili avranno probabilità simili assegnate a loro. Usando questo approccio, un esempio nella lezione ha mostrato come le parole intelligent e smart ricorrerebbero in contesti simili e quindi i vettori di parole per queste due parole sarebbero molto simili.

  • 00:20:00 In questa sezione, il docente discute le potenziali soluzioni al problema della complessità computazionale che si pone con softmax. I due metodi comunemente utilizzati per affrontare questo problema sono il campionamento negativo e la stima del contrasto del rumore (NCE). Sebbene NCE possa approssimare softmax con una garanzia teorica, entrambi i metodi producono risultati simili per scopi pratici. La lezione approfondisce quindi le definizioni di distribuzione empirica e di conoscenza, dove l'obiettivo è approssimare la distribuzione empirica con l'aiuto dei parametri del modello. Infine, il docente introduce l'NCE come metodo per ridurre il problema della stima del modello linguistico.

  • 00:25:00 In questa sezione, il relatore spiega come genereranno i dati per il problema di addestramento a due classi utilizzando la classificazione binaria proxy. Campionano una parola centrale dalla P tilde C e poi prendono un vero campione da PT piccola P tilde W virgola C. Genereranno K campioni di rumore usando QW e assegneranno loro l'etichetta, D, che è uguale a 0 per indicare che questi i punti dati sono rumore. Quindi calcolano la probabilità congiunta di D, virgola W nei dati a due classi creando una combinazione di due distribuzioni. Usando la definizione di probabilità condizionata, possono trasformarla nella probabilità condizionata di D, dati W e C per i due casi in cui D è 0 e quando è 1.

  • 00:30:00 In questa sezione, il relatore discute il problema del costoso calcolo della funzione di partizione e come risolverlo utilizzando la stima contrastiva del rumore (NCE). NCE propone di aggiungere la funzione di partizione come parametro per ogni parola di contesto empirica e di apprenderla attraverso la propagazione all'indietro. Fissando il parametro Vc a uno e sostituendo la P tilde W virgola C con u theta W virgola C divisa per la funzione di partizione per Vc, si ottiene un problema di classificazione binaria. L'obiettivo è massimizzare la verosimiglianza condizionale di D rispetto ai campioni K negativi, che può essere scritta come probabilità logaritmica. Il relatore spiega come NCE sostituisce l'aspettativa con un'approssimazione Monte Carlo, rendendo il processo meno costoso dal punto di vista computazionale.

  • 00:35:00 In questa sezione viene discusso l'uso della stima contrastiva del rumore (NCE) invece del campionamento negativo (NS). NCE è in grado di ridurre l'obiettivo di modellazione del linguaggio a un problema di classificazione binaria, ed è dimostrato che l'obiettivo sarà realizzato nello stesso punto per i parametri del modello. Viene presentata l'API TensorFlow per la perdita NCE e l'uso dell'ambito del nome, che consente di raggruppare i nodi per una migliore visualizzazione in TensorBoard. L'ambito dei nomi delle variabili è spiegato anche nel contesto della funzionalità dell'ambito dei nomi.

  • 00:40:00 In questa sezione, il docente discute il processo di incorporamento delle variabili in TensorFlow per la ricerca sul deep learning. Incorporando le variabili all'interno di un ambito specifico, diventano parte di una visualizzazione ben raggruppata nella scheda TensorFlow. Il docente spiega anche come visualizzare i vettori di parole utilizzando una tecnica chiamata t-SNE e fornisce una ricetta per tracciare il TC per la visualizzazione. Prendendo i vettori ad alta dimensione appresi dalla matrice di incorporamento, t-SNE viene utilizzato per ridurre le dimensioni in 2D o 3D, mostrando le relazioni di prossimo più vicino tra le parole. Infine, il docente fornisce una panoramica del codice utilizzato per il modello word to work.

  • 00:45:00 In questa sezione, il docente discute il processo di definizione dei segnaposto per l'input e l'output, la costruzione di una variabile per la perdita NCE e la definizione degli incorporamenti e della matrice di incorporamento. Utilizzando una dimensione del vocabolario di 50.000 e una dimensione del batch di 128, la lezione definisce una matrice di incorporamento che apprende un vettore di parole a 128 dimensioni per ogni parola. Viene anche spiegato il processo di inferenza in skip-gram, con la lezione che si concentra su una parola alla volta per facilitare la spiegazione. La funzione di perdita viene quindi definita utilizzando l'API TensorFlow, con la lezione che fornisce una ripartizione delle variabili chiave come i campioni negativi e il numero di passaggi di addestramento.

  • 00:50:00 In questa sezione, il relatore discute come NCE (noise contrastive estimation) viene utilizzato per creare un problema di classificazione binaria che aiuta a risolvere la complessità del softmax. Ciascuno dei 64 esempi negativi e uno positivo creati per la classificazione proxy corrisponde a un vettore di parole. La differenziazione automatica di TensorFlow viene utilizzata per aggiornare i pesi di un classificatore binario per separare l'unico esempio positivo dai 64 esempi negativi. La lezione si conclude con un riepilogo dei concetti trattati finora, inclusi vettori di parole, NCE, matrici di incorporamento e analisi delle componenti principali (PCA). La prossima lezione si concentrerà sulla gestione di diversi programmi ed esperimenti durante la creazione di modelli di parole.
 

Tensorflow per la ricerca sul deep learning - Lezione 5_1



Tensorflow per la ricerca sul deep learning - Lezione 5_1

La quinta conferenza della serie TensorFlow for Deep Learning Research copre diversi argomenti, tra cui come gestire efficacemente gli esperimenti di deep learning, l'importanza della differenziazione automatica in TensorFlow e il processo di addestramento dei modelli e salvataggio delle variabili. Il relatore spiega che la differenziazione automatica è fornita in framework di deep learning come TensorFlow, rendendo più facile per gli utenti codificare i propri modelli senza occuparsi dei gradienti. Sebbene non sia essenziale calcolare i gradienti manualmente, è comunque utile elaborarli per funzioni e reti semplici. Viene trattata anche la creazione di un modello di riconoscimento di entità denominate con sottoclassi e i necessari segnaposto e tecniche di feed, nonché il salvataggio e il ripristino delle variabili in TensorFlow e il processo di salvataggio dei modelli su diverse sessioni e macchine.

  • 00:00:00 In questa sezione, il relatore discute come gestire gli esperimenti di deep learning e l'importanza della differenziazione automatica in TensorFlow. Spiegano che quando scrivi un modello, proverai varie cose e inizierai e ricomincerai la formazione, quindi è essenziale una corretta gestione. La differenziazione automatica è fornita in framework di deep learning come TensorFlow, rendendo facile per gli utenti codificare i propri modelli senza occuparsi dei gradienti effettivi. Il relatore fornisce un esempio in cui l'operazione 'gradienti' di TensorFlow consente di trovare i gradienti di Y rispetto a ciascun tensore in un elenco fornito come secondo argomento. Dicono anche che tutto in TensorFlow e nel deep learning si basa sulla differenziazione numerica.

  • 00:05:00 In questa sezione, il relatore spiega se è necessario imparare a calcolare i gradienti a mano quando TensorFlow ha già una funzione di gradienti a punti. Suggerisce che sebbene non sia essenziale, è comunque utile elaborare gradienti per funzioni o reti semplici, specialmente quando si scrivono livelli personalizzati o si affrontano problemi di gradiente come esplosioni o gradienti che svaniscono. Suggerisce inoltre di strutturare il modello in un modo più orientato agli oggetti per renderlo più facile da usare e spostare completamente il modello fuori dalla funzione. Il relatore cita la struttura di assegnazione CS 244 D come esempio di come incapsulare i componenti di un modello di deep learning.

  • 00:10:00 In questa sezione, il relatore discute l'aspetto del modello della creazione di un modello di deep learning. Spiegano che il modello è dove viene scritta l'inferenza completa, prendendo un input ed eseguendo un passaggio in avanti per fornire l'output, quindi aggiungendo l'operazione di perdita che crea uno scalare di perdita che confronta l'output previsto con le etichette di output reali dai segnaposto. L'oratore suggerisce di astrarre tutto come una classe base e di creare sottoclassi per tipi specifici di modelli, come un modello linguistico. Infine, spiegano come creare un modello di riconoscimento di entità con nome con sottoclassi e le API necessarie come segnaposto e tecnologia dei feed.

  • 00:15:00 In questa sezione, apprendiamo il processo di addestramento dei modelli di deep learning utilizzando TensorFlow e come gestire gli esperimenti in modo efficace. Il processo prevede la creazione di matrici variabili e l'ottenimento di incorporamenti per i dati di addestramento prima di eseguire un'epoca di dati di addestramento in un ciclo, che addestra le matrici di incorporamento. Per salvare i progressi, il TF to train.saver salva le variabili nel grafico in file binari, che possono essere richiamati durante le esecuzioni future per iniziare da dove ci si è fermati. L'esempio di codice mostra come creare un'istanza dell'oggetto saver e ripetere il passaggio di addestramento per eseguire l'ottimizzatore, salvando la sessione e un nome di directory.

  • 00:20:00 In questa sezione, il relatore approfondisce i dettagli della classe Save di TensorFlow e le variabili ad essa associate. La variabile del passo globale, definita come una variabile di codice non addestrabile che inizia da 0, può essere incrementata ogni volta che viene chiamata l'operazione di addestramento fornendola nella funzione "riduci a icona". Inoltre, la variabile "max to keep" limita il numero di checkpoint salvati a quelli più recenti e la variabile "mantieni checkpoint ogni" controlla la frequenza con cui viene salvato un checkpoint, rendendolo utile per lunghi cicli di addestramento.

  • 00:25:00 In questa sezione, l'istruttore spiega come salvare e ripristinare le variabili in TensorFlow. Spiega che gli utenti possono specificare un elenco di variabili o un dizionario per salvare variabili specifiche invece di salvare tutto. Il vantaggio di questo è risparmiare spazio e aumentare il throughput, soprattutto quando si esegue l'apprendimento del trasferimento. Per ripristinare le variabili, gli utenti possono chiamare la funzione tf.latest_checkpoint, che verificherà l'ultimo checkpoint in una directory specifica e ripristinerà da lì utilizzando la funzione session.restore(). L'istruttore menziona inoltre che gli utenti possono salvare il grafico in TensorFlow 0.11 in poi creando raccolte con chiavi e valori corrispondenti alle variabili e quindi istanziando l'oggetto saver con tutti i valori predefiniti.

  • 00:30:00 In questa sezione della lezione, l'istruttore spiega come salvare e ripristinare i modelli TensorFlow in sessioni diverse e persino in macchine diverse. I passaggi prevedono l'esecuzione dell'inizializzatore delle variabili globali, il salvataggio della sessione e l'utilizzo del metodo "export meta graph" per creare un file grafico salvato. Questo grafico salvato può essere ripristinato e le variabili possono essere reinizializzate in un processo o in una macchina completamente diversa se il grafico originale non è disponibile. L'istruttore menziona anche TF.summary, che sarà trattato nel prossimo video.
 

Tensorflow per la ricerca sul deep learning - Lezione 5_2



Tensorflow per la ricerca sul deep learning - Lezione 5_2

Il video tutorial illustra l'implementazione delle operazioni di riepilogo TF, che consentono la visualizzazione dei dati in TensorBoard. L'esercitazione copre tre tipi di operazioni di riepilogo: TF.summary.scalar, TF.summary.histogram e TF.summary.image e spiega come unirle in una sola e scriverle in un file di eventi utilizzando la classe FileWriter. Il docente dimostra come utilizzare gli ambiti dei nomi per visualizzare il grafico in TensorBoard e definisce uno scrittore di test e uno scrittore esperto per scrivere riepiloghi in file separati. Sottolineano lo sfruttamento delle capacità di visualizzazione di TensorBoard per comprendere meglio le prestazioni del proprio modello. Nel complesso, TensorBoard è uno strumento cruciale per tenere traccia dei progressi della formazione e l'API per aggiungere operazioni e unirle è semplice.

  • 00:00:00 In questa sezione, il tutorial video illustra come utilizzare le operazioni di riepilogo TF, che sono funzioni che allegano informazioni ai nodi nel grafico computazionale per generare dati di riepilogo per la visualizzazione in TensorBoard. Il tutorial copre tre tipi di operazioni di riepilogo: TF.summary.scalar, per il collegamento a nodi di valore scalari nel grafico come perdita, entropia incrociata e tassi di apprendimento; TF.summary.histogram, per visualizzare la distribuzione di un tensore, come i pesi di un particolare strato; e TF.summary.image, per visualizzare immagini, input o anche alcuni livelli intermedi. L'esercitazione spiega come unire tutte le operazioni di riepilogo in una e scriverle in un file di evento utilizzando la classe FileWriter.

  • 00:05:00 In questa sezione, il relatore spiega come impostare un file writer e un riepilogo in TensorFlow per visualizzare i dati su TensorBoard. Raccomandano di configurare il writer in modo che venga eseguito a intervalli specifici, poiché eseguirlo a ogni passaggio potrebbe produrre troppi dati. Fornendo allo scrittore di file l'oggetto grafico, il grafico computazionale può essere salvato come definizione grafico e visualizzato su TensorBoard. Il relatore dimostra come visualizzare scalari e istogrammi su TensorBoard selezionando passi specifici sull'asse x per vedere i valori corrispondenti sull'asse y. Incoraggiano gli utenti a sfruttare le capacità di visualizzazione di TensorBoard per comprendere meglio le prestazioni del loro modello.

  • 00:10:00 In questa sezione, il docente discute la definizione di una funzione chiamata variable_summary, che accetta un tensore e aggiunge un nodo di riepilogo. La funzione copre media, deviazione standard, massimo, minimo e istogramma; ogni variabile verrà delimitata da una prospettiva di denominazione. Discutono anche dell'idea di disordine nelle distribuzioni in cui le perdite sono massime quando il modello non è sufficientemente addestrato e, all'aumentare della dimensione del passo, le perdite diminuiscono. Diversi scrittori di file possono essere utilizzati per vari esperimenti e possono essere salvati nell'ingranaggio del registro. L'opzione dimora densa consente di selezionare e alternare tra diverse scelte.

  • 00:15:00 In questa sezione, il video si concentra sull'implementazione delle operazioni di riepilogo e sull'utilizzo degli ambiti dei nomi in TensorFlow per la visualizzazione. Il codice definisce gli ambiti dei nomi per l'entropia incrociata e la precisione per facilitare la visualizzazione del grafico in TensorBoard. L'operazione unita si ottiene chiamando TF.summary.merge_all e questa operazione viene utilizzata durante l'esecuzione della sessione. Il codice definisce anche uno scrittore di test e uno scrittore addestrato per scrivere i riepiloghi risultanti in file separati. Per ogni passaggio, il codice addestra il modello e scrive i riepiloghi. Se il numero di passaggi mod 10 è uguale a zero, il riepilogo viene scritto all'autore del test e per tutti gli altri passaggi viene scritto all'autore esperto.

  • 00:20:00 In questa sezione, il relatore discute il metodo per eseguire TensorBoard per visualizzare simultaneamente gli eventi sia nel test writer che nel train writer. Il comando "s about - - clock there is equal to the path" aiuta a visualizzare tutto, e l'host corrente è localhost colon sei zero zero sei, che può essere navigato tramite il browser. Inoltre, l'immagine del punto di riepilogo del punto TF ha un nome tensor max output per impostazione predefinita e interpreta un tensore quadridimensionale con la larghezza e i canali della dimensione del percorso della forma. L'argomento max outputs determina quante immagini offset back verranno renderizzate e mostrate su TensorBoard. Nel complesso, TensorBoard è uno strumento cruciale per tenere traccia dei progressi della formazione e l'API per aggiungere varie operazioni e unirle è semplice.
 

Intuizione dietro la retropropagazione come grafico computazionale



Intuizione dietro la retropropagazione come grafico computazionale

L'intuizione alla base della backpropagation come grafico computazionale è spiegata in questo video. Il relatore discute di come viene utilizzata una funzione surrogata per stimare la funzione empirica che associa gli input agli output e che l'obiettivo è trovare i parametri che minimizzano la funzione di perdita. La retropropagazione consente di calcolare il gradiente della funzione di perdita rispetto a ciascun parametro attraverso un passaggio all'indietro del grafico. Vengono calcolati i gradienti locali per ciascuna porta nel grafico e possono essere utilizzati per calcolare il gradiente dell'output finale rispetto a ciascun input. Il relatore spiega anche come gestire i gradienti per le operazioni di ramificazione e vettorizzazione e come garantire che la dimensionalità funzioni durante il calcolo delle derivate.

  • 00:00:00 questa sezione, la backpropagation consente all'addestramento delle reti neurali di convergere rapidamente e una sua comprensione approfondita può essere vantaggiosa per i ricercatori. La lezione inizia spiegando che l'obiettivo di una rete neurale è trovare la funzione che associa gli input agli output, denotata da F(x), che è una funzione empirica che potrebbe non essere rilevabile. La lezione delinea che una funzione surrogata G(x,θ) viene utilizzata per stimare F, dove θ denota i parametri della rete neurale, e l'obiettivo è trovare i parametri che minimizzano una funzione di perdita J. La lezione discute poi come la tecnica di backpropagation consente alla rete di trovare i parametri ottimali calcolando il gradiente della funzione di perdita rispetto a ciascun parametro attraverso un passaggio all'indietro del grafico.

  • 00:05:00 In questa sezione, il relatore discute la ricerca della derivata di G rispetto a theta, che è cruciale nell'addestramento di una rete neurale. L'esempio utilizzato è una semplice funzione di X, Y e Z, dove deve essere calcolata la derivata parziale di F rispetto a X, Y e Z. Viene introdotto il concetto di gradienti locali, che sono le derivate dell'output rispetto all'input per una data operazione. Tuttavia, la regola della catena è necessaria per calcolare l'output finale rispetto alla variabile distante, che in questo caso sono X, Y e Z.

  • 00:10:00 In questa sezione, vediamo come trovare i gradienti nel grafico computazionale utilizzando il flusso all'indietro del gradiente. Il gradiente del nodo di output è banalmente 1, e per calcolare il gradiente in ogni nodo moltiplichiamo il gradiente locale per il gradiente ricevuto dal nodo precedente. Il programma può quindi calcolare i gradienti finali di del F per Del X, del F per Del Y e del F per Del V. È fondamentale tenere presente che calcoliamo sempre il gradiente rispetto alla funzione di perdita finale, che nel caso di una rete neurale, è la funzione di perdita J. Infine, apprendiamo come un neurone in una rete neurale esegue una semplice funzione durante il passaggio in avanti e come, durante la retropropagazione, possiamo calcolare e utilizzare localmente i gradienti.

  • 00:15:00 In questa sezione, il relatore spiega l'intuizione alla base della backpropagation come grafico computazionale per un neurone. Il gradiente locale si ottiene moltiplicando la funzione all'indietro con i valori del Z per Del X e del Z per Del Y. Il flusso all'indietro va nella direzione dell'output del neurone, dove altri neuroni che gli stanno inviando dati ottengono Del J da Del X. La tecnica del grafico computazionale viene utilizzata anche per funzioni più complesse come la funzione sigmoidea in cui il gradiente all'indietro è calcolato numericamente. Il gradiente locale per ciascun nodo viene calcolato prendendo la derivata della funzione e quindi moltiplicandola per il flusso del gradiente.

  • 00:20:00 In questa sezione, il relatore spiega come calcolare i gradienti locali di ciascuna porta in un grafico computazionale e come possono essere utilizzati per ottenere il gradiente dell'uscita finale rispetto a ciascun ingresso. L'esempio utilizzato nel video coinvolge un piccolo grafico computazionale costituito da più porte, come porte di addizione e moltiplicazione, e l'oratore spiega l'intuizione alla base dell'algoritmo di backpropagation utilizzando questo esempio. Il relatore descrive in dettaglio come calcolare i gradienti locali per ciascuna porta nel grafico e mostra come possono essere combinati per calcolare il gradiente dell'uscita finale rispetto a ciascun ingresso.

  • 00:25:00 In questa sezione, il relatore discute l'intuizione alla base della backpropagation come grafico computazionale. Spiegano come vengono calcolati i gradienti per diversi tipi di porte, come porte addizionali e porte moltiplicative, e il modello che emerge quando si calcola il flusso all'indietro. Il relatore spiega anche come definire le funzioni avanti e indietro per ciascuna porta e, una volta definite, queste funzioni possono essere utilizzate per qualsiasi grafico computazionale, rendendo il processo più efficiente.

  • 00:30:00 In questa sezione, il concetto di passaggi avanti e indietro nella retropropagazione viene discusso come grafico computazionale. Il forward pass calcola l'output che diventa l'input per il nodo successivo fino al raggiungimento della perdita. Nel passaggio all'indietro, DZ è inizialmente impostato come uno e i calcoli vengono eseguiti nella direzione inversa. Quando si tratta di vettori, il gradiente locale viene preso utilizzando matrici Jacobiane e la moltiplicazione a sinistra viene utilizzata nella regola della catena. Del L by Del X o Del L by Del Y viene calcolato utilizzando le due matrici Jacobiane, del Z by Del X o del Z by Del Y e del L by Del V.

  • 00:35:00 In questa sezione, il relatore spiega come calcolare il passaggio in avanti e la retropropagazione di una data funzione utilizzando il grafico computazionale. Utilizzando una funzione di esempio, l'oratore illustra il processo di creazione di variabili intermedie e il calcolo del passaggio in avanti. Quindi, il relatore mostra come calcolare il passaggio all'indietro calcolando i gradienti rispetto all'ingresso e all'uscita di ciascun gate. Il relatore sottolinea l'utilità di tenere presenti le derivate della funzione sigmoidea.

  • 00:40:00 In questa sezione, il relatore spiega come gestire i gradienti per operazioni di ramificazione e vettorizzazione in backpropagation. Quando si verifica la ramificazione, vengono aggiunti i gradienti e, quando si calcolano i gradienti per le funzioni, è possibile riutilizzare i gradienti intermedi precedenti. Le operazioni vettorializzate, come la moltiplicazione di matrici, possono essere gestite in modo simile calcolando i gradienti rispetto a ciascun elemento separatamente e utilizzando le operazioni di matrice per combinarle. La dimensionalità dei gradienti è determinata dalla dimensionalità dell'output dell'operazione che viene eseguita.

  • 00:45:00 In questa sezione, il relatore spiega come garantire che la dimensionalità funzioni durante il calcolo del D/del W e del D/del X in una funzione, utilizzando l'esempio della moltiplicazione di matrici in TensorFlow. Le dimensioni di W e DD sono note e poiché l'unico modo per far funzionare la moltiplicazione è usare W punto punto punto X, è una buona idea memorizzare questa formula. L'oratore ricorda agli spettatori che comprendere le operazioni dei grafici computazionali in TensorFlow è importante, anche se framework come TensorFlow astraggono tale complessità. Questa conoscenza si rivelerà utile quando si ha a che fare con livelli personalizzati, che richiedono all'utente di scrivere i propri passaggi avanti e indietro.
 

Produrre il deep learning per la visione artificiale



Produrre il deep learning per la visione artificiale

Il CTO e Chief Scientist di Jumio, Lavash Patel, discute di come la loro azienda utilizzi un mix di esperti di intelligenza artificiale e ID per stabilire la fiducia online e verificare l'autenticità dei documenti di identità. Il processo di verifica dell'identità è impegnativo a causa della varietà di ID e sottotipi, nonché della necessità di rettifica e rifiuto di immagini non leggibili. Per mantenere la precisione, viene adottato un approccio human-in-the-loop, in cui i modelli di intelligenza artificiale rilevano i problemi e un essere umano esegue un controllo di integrità sui risultati. Patel discute anche di come Jumio produca l'apprendimento profondo utilizzando un algoritmo di apprendimento attivo ibrido, che si adatta a nuovi sottotipi e migliora riqualificandosi. Inoltre, sottolinea l'importanza di dati puliti nel riconoscimento facciale e nel mantenimento della conformità PCI quando si trattano dati sensibili per scopi di machine learning.

  • 00:00:00 In questa sezione, Lavash Patel, CTO e Chief Scientist di Jumio, descrive l'attività dell'azienda di stabilire la fiducia online attraverso il mix di esperti di intelligenza artificiale e ID per verificare l'autenticità di un documento di identità. Il problema con questo tipo di processo di verifica è reso difficile dal fatto che accettano traffico da tutti i tipi di canali, inclusi telefoni cellulari, webcam e semplici chiamate API. Per affrontare questi problemi, Jumio utilizza un mix di modelli di classificazione e Facemash per aiutare a verificare l'autenticità di un documento d'identità e l'identità della persona davanti alla telecamera.

  • 00:05:00 In questa sezione, il relatore discute le sfide dell'utilizzo dell'IA per la verifica dell'identità, data la varietà di ID e sottotipi esistenti. Viene sottolineata l'importanza della rettifica, o allineamento delle immagini, così come la necessità di rifiutare immagini non leggibili a causa di sfocature o bagliori. L'approvazione delle immagini ID è un processo più rigoroso rispetto al rifiuto, poiché ogni componente deve passare per essere considerato valido. Al fine di mantenere una rigorosa accuratezza e il rifiuto degli utenti fraudolenti, viene adottato un approccio umano in cui vengono utilizzati modelli di intelligenza artificiale per rilevare i problemi e un essere umano viene utilizzato per eseguire un controllo di integrità sui risultati. Questo approccio consente un'accuratezza leader del settore in termini di conversione e rilevamento delle frodi.

  • 00:10:00 In questa sezione, il relatore discute l'aspetto della classificazione della produzione dell'apprendimento profondo per la visione artificiale. Mentre la classificazione delle immagini è stata risolta negli ultimi anni utilizzando una rete pre-addestrata come Inception versione 4 o Viji 16, il problema è leggermente diverso a causa dei tag aggregati anziché dei tag granulari. Con oltre 100 milioni di immagini contrassegnate, scoprire le diverse classi è diventato un problema di scoperta di classi trasformate, che l'apprendimento attivo può risolvere. L'apprendimento attivo ibrido prevede una fase di apprendimento non supervisionato o cluster integrato, a partire dalle classi più popolari con esempi etichettati per ottenere una manciata di classi.

  • 00:15:00 In questa sezione, il relatore spiega come produrre il deep learning per la visione artificiale utilizzando un algoritmo di apprendimento attivo ibrido. L'algoritmo raccoglie un gran numero di campioni per classe e addestra un classificatore per classificare con sicurezza le immagini in 50 classi, con livelli di confidenza dell'output. L'algoritmo quindi raggruppa automaticamente le immagini in cui il classificatore non è sicuro e un agente umano le rivede per aggiungere nuove classi se necessario. Una volta creato, il modello viene distribuito come API e, se sono presenti normative di conformità, è possibile aggiungere registrazione, monitoraggio e controlli di integrità. Inoltre, l'oratore osserva che l'algoritmo si adatta a nuovi sottotipi e continua a migliorare riqualificandosi, come ha fatto quando è stato rilevato un nuovo ID con ortografia errata e l'agente umano lo ha rifiutato.

  • 00:20:00 In questa sezione, il relatore discute di come producono nuovi modelli avendo sempre un modello campione in atto e valutando i nuovi modelli in base alle loro prestazioni rispetto al campione. Questo metodo consente inoltre il miglioramento continuo utilizzando un'infrastruttura di apprendimento attivo ibrida che raccoglie e pulisce continuamente i set di dati. La pipeline di produzione è sensibile alla pulizia dei set di dati, con un tasso di errore target per l'addestramento non superiore al 20%. L'intero processo deve inoltre essere conforme a PCI e PIL, il che significa che tutto deve essere crittografato e portato ai dati anziché ai dati per la formazione. L'oratore presenta quindi un secondo caso di studio sulla corrispondenza dei volti, in cui utilizzano i pregiudizi dei dati su età, sesso ed etnia a proprio vantaggio nell'abbinare i selfie agli ID.

  • 00:25:00 In questa sezione, il relatore discute un possibile approccio per affrontare il problema del rilevamento di utenti fraudolenti attraverso l'uso di face embedding e la funzione di tripletta di perdita in una rete a convoluzione profonda. Il processo prevede il ritaglio dei volti utilizzando un rilevatore di volti e l'utilizzo di set di dati pubblici per addestrare il modello, seguito dalla messa a punto dei dati di produzione. Il modello viene messo a punto attraverso il processo di apprendimento attivo, che prevede l'utilizzo di un'infrastruttura supervisionata per raccogliere campioni informativi e aumentare continuamente i dati. Il relatore sottolinea l'efficacia dell'apprendimento attivo in un'ampia gamma di casi d'uso.

  • 00:30:00 In questa sezione, il relatore sottolinea l'importanza dei dati puliti nella visione artificiale, in particolare nel riconoscimento facciale. Sottolinea che la produzione del deep learning implica molto di più della semplice modellazione e anche problemi semplici come la classificazione possono finire per avere numerose complessità nella fase di produzione. Anche l'intelligenza collaborativa o i flussi di lavoro umani nel ciclo possono essere utili per migliorare gli algoritmi e sono particolarmente importanti nel riconoscimento facciale poiché richiedono set di dati puliti. Il relatore ha anche affermato che la loro azienda sta assumendo per i loro team di ricerca e sviluppo con sede a Vienna e Montreal.

  • 00:35:00 In questa sezione, il relatore discute le sfide del mantenimento della conformità PCI quando si tratta di dati sensibili per scopi di machine learning e AI. Il relatore spiega che i dati devono essere utilizzati solo per lo scopo previsto e che devono essere predisposti luoghi e procedure altamente sicuri per impedire qualsiasi accesso non autorizzato. Il relatore spiega inoltre che i dati vengono inseriti nei bucket Amazon S3 all'interno della DMZ PCI e che vengono create immagini offuscate per scopi di apprendimento automatico, che vengono quindi supervisionate da remoto per garantire che non vi siano perdite di dati personali.
 

Gail Weiss: Pensare come Transformers



Gail Weiss: Pensare come Transformers

Gail Weiss discute il concetto di encoder a trasformatore in questo video, spiegando la loro capacità di elaborare sequenze e codificarle in vettori. Weiss evidenzia diversi studi che esplorano i punti di forza e i limiti dei codificatori a trasformatore e introduce un linguaggio di programmazione chiamato RASP (Restricted Access Sequence Processing Language) per rappresentare le capacità dei codificatori a trasformatore. Discute anche dell'attenzione a più teste, dei modelli di selezione e delle sfide del softmax in determinate condizioni, prima di approfondire l'uso degli operatori di sequenza e delle funzioni di libreria per calcolare l'inverso e il flip selector. Weiss fornisce informazioni sulla creazione di un programma ottimale per un trasformatore e le intuizioni dei trasformatori universali e sandwich, discutendo infine il predicato selezionato e le relazioni binarie vs. ordine tre.

Parla anche dei potenziali vantaggi e svantaggi dell'utilizzo dell'attenzione di ordine superiore nei modelli di trasformatore, nonché dell'importanza delle connessioni residue nel mantenere le informazioni attraverso i livelli. Discute anche potenziali problemi con trasformatori molto profondi che deviano dal modello RASP e suggerisce l'uso di incorporamenti più lunghi per superare la confusione nelle informazioni.

  • 00:00:00 In questa sezione del video, Gail Weiss introduce il concetto di encoder a trasformatore, che fanno parte di una rete neurale progettata per elaborare sequenze. Spiega che il codificatore del trasformatore prende una data sequenza e la codifica in un insieme di vettori, con alcuni esempi popolari tra cui BERT. Weiss evidenzia quindi diversi studi che hanno esplorato i punti di forza e i limiti dei codificatori a trasformatore, inclusa la loro capacità di riconoscere linguaggi formali ed eseguire calcoli. Sebbene questi studi forniscano approfondimenti sulle capacità dei codificatori dei trasformatori, Weiss osserva che non offrono una chiara intuizione su come i trasformatori elaborano effettivamente le attività.

  • 00:05:00 In questa sezione, Gail Weiss spiega che le reti neurali ricorrenti (RNN) sono simili a una macchina a stati finiti, che definisce le transizioni tra gli stati in base ai vettori di input, emettendo una classificazione finale in base allo stato raggiunto. Analizzando il loro potere espressivo utilizzando la nostra comprensione degli automi finiti deterministici, ottengono informazioni su cosa fare con gli RNN, consentendo la conversione di un RNN in automi finiti pesati, automi finiti deterministici o automi finiti deterministici pesati. Tuttavia, questa intuizione non esiste per Transformers ed è necessario elaborare un modello che serva a uno scopo simile per il codificatore Transformer. A differenza degli RNN, i codificatori Transformer prendono l'intero input in una volta ed elaborano tutti i token di input in parallelo attraverso una rete profonda che applica l'elaborazione un numero fisso di volte. Sebbene non ci siano stati in Transformers, c'è un senso di elaborazione e propagazione delle informazioni attraverso una serie di operazioni.

  • 00:10:00 In questa sezione, Gail Weiss spiega come un encoder trasformatore può essere rappresentato come un linguaggio di programmazione chiamato RASP (Restricted Access Sequence Processing Language), che descrive la creazione di Sequence Operators (S-ops). Le S-op rappresentano gli strati del codificatore del trasformatore che applicano le operazioni alla sequenza, creando più informazioni elaborate. RASP fornisce due costanti, token e indici, che creano nuove sequenze di caratteri e indici da qualsiasi sequenza di input, quindi applicano una rete di feed-forward basata sugli elementi a ciascuno dei vettori che entrano nell'input del livello del codificatore del trasformatore. Il programmatore è responsabile del calcolo logico o ragionevole delle operazioni applicate, in quanto possono essere qualsiasi operazione a livello di elementi.

  • 00:15:00 In questa sezione del video, Gail Weiss introduce il concetto di attenzione a più teste, che fa parte dello strato del codificatore del trasformatore che non è a livello di elementi. Inizia spiegando l'attenzione a testa singola e come funziona applicando due trasformazioni lineari alla sequenza di vettori, creando un insieme di query e un insieme di chiavi. La chiave descrive le informazioni che ha da offrire e la query descrive le informazioni desiderate in ciascuna posizione. Attraverso il prodotto scalare della query con ciascuna delle chiavi, i pesi vengono normalizzati e si ottiene l'output in ciascuna posizione. Weiss chiarisce anche una questione riguardante la trasformazione intermedia delle chiavi e dei valori che permettono al modello di avere più parametri.

  • 00:20:00 In questa sezione, il relatore discute l'auto-attenzione a più teste e come può essere utilizzata per comprimere più operazioni in un unico livello. Il processo prevede la suddivisione dei vettori di input in vettori di uguale lunghezza e il passaggio di ciascun blocco in teste diverse. Una volta che le teste multiple sono state applicate, vengono concatenate per formare l'output dell'auto-attenzione a più teste. Sebbene non ci sia dipendenza tra le diverse teste, un singolo strato può eseguire più operazioni perché ha più teste diverse. Questo processo consente al programmatore di preoccuparsi delle teste di attenzione invece dell'auto-attenzione a più teste, che è un problema per il compilatore.

  • 00:25:00 In questa sezione, Gail Weiss fornisce esempi di come codificare determinati schemi di selezione per un trasformatore. Utilizzando l'esempio della selezione delle posizioni in base al fatto che si descrivano con uno zero, uno o due, Weiss indica che la prima posizione sceglie le ultime due posizioni, la seconda posizione non sceglie nulla e la terza posizione sceglie solo la prima. Weiss spiega anche che è possibile selezionare vari tipi di confronto come maggiore o uguale, minore o uguale o disuguale e che i selettori possono essere composti insieme. Tuttavia, Weiss osserva che l'astrazione dei modelli di selezione ai trasformatori dipende dalla ragionevolezza dell'operazione eseguita, e questo spetta al programmatore garantire.

  • 00:30:00 In questa sezione, il relatore discute le sfide dell'utilizzo di softmax in determinate condizioni, vale a dire che c'è una leggera attenzione sulle posizioni rimanenti che non soddisfano i criteri di selezione. Per affrontare questo problema, l'oratore suggerisce che se la dimensione di questi incorporamenti viene aumentata, softmax inizierà ad approssimare una selezione rigida di posizioni "minore o uguale" e "superiore". La presentazione passa quindi all'idea di aggregazione e al modo in cui i token possono essere selezionati e ponderati utilizzando una media. L'oratore fornisce un esempio di inversione del token e di come hanno creato un selettore di inversione e aggregato i token per ottenere la sequenza di input invertita usando l'esempio della parola "ciao" per produrre "olleh".

  • 00:35:00 In questa sezione, l'oratore discute di come l'operatore di lunghezza può essere utilizzato nei trasformatori anche se non fa parte dell'input e di come le decisioni di selezione sono a coppie per impedire operazioni di selezione arbitrariamente potenti che potrebbero nascondere potenza arbitraria. Il relatore parla anche di altri componenti del trasformatore come lo skip o la connessione residua, che aggiunge valore agli embedding, e le norme di livello, che non sono presenti nel modello RASP. Inoltre, l'oratore menziona l'uso di funzioni e selettori di composizione per comodità per evitare la ripetizione del codice.

  • 00:40:00 In questa sezione, il relatore discute l'uso di operatori di sequenza come val, min e max per verificare quali indici rientrano in un certo intervallo. Menzionano anche l'utilità delle funzioni di libreria come la larghezza del selettore nell'implementazione di funzioni come istogrammi sul posto e conteggio dei token nelle sequenze di input. Inoltre, il relatore descrive come hanno calcolato la lunghezza di una sequenza utilizzando un selettore e una funzione di indicatore, osservando che la normalizzazione del livello potrebbe complicare tali calcoli. Infine, suggeriscono una soluzione alternativa che coinvolge una rete di feedback per calcolare l'inverso, ma riconoscono che potrebbe ancora essere influenzata dalla normalizzazione del livello.

  • 00:45:00 In questa sezione, Gail Weiss spiega come i trasformatori possono imparare a calcolare l'inverso e il flip selector, anche quando hanno a che fare con sequenze relativamente brevi. Spiega inoltre che l'analisi del programma Ras può essere utilizzata per determinare quando applicare il calcolo inverso e quando applicare il flip selector, assicurando al contempo che le coppie selezionate e aggregate siano solo teste di attenzione. Infine, esplora come un vero trasformatore potrebbe eseguire il calcolo inverso in due strati, il che è stato supportato dai risultati secondo cui il trasformatore è riuscito a raggiungere una precisione del 99,6% quando inverte le sequenze di input fino a 100 di lunghezza dopo 20 epoche.

  • 00:50:00 In questa sezione, Gail Weiss discute la creazione di un programma ottimale per un trasformatore, che richiede due livelli per eseguire l'attività in modo efficace. Anche se il programma viene ridotto a un livello e vengono aggiunti due volte i parametri o vengono utilizzate due teste, non riuscirà ad ottenere un'elevata precisione perché non sa come gestire la lunghezza variabile della sequenza. Inoltre, i modelli di attenzione sono gli stessi in entrambi gli strati, con il primo strato che utilizza un'attenzione uniforme per calcolare la lunghezza della sequenza e il secondo strato che utilizza lo stesso modello di attenzione inversa. Più avanti, Weiss dimostra un istogramma sul posto, che prevede la selezione di token e l'output del numero di volte in cui il token appare nella sequenza di input. Focalizzando ogni token sullo stesso token di se stesso o sulla prima posizione all'inizio del token della sequenza, utilizzano solo una testa di attenzione per addestrare un trasformatore, rendendo molto più semplice il calcolo dell'inverso e di altri elementi.

  • 00:55:00 In questa sezione, Gail Weiss parla dell'intuizione che deriva dall'Universal Transformer e dal Sandwich Transformer, che influenzano entrambi il modo di pensare e utilizzare il modello del trasformatore. Spiega che ogni operatore di sequenza in RASP è il risultato di un numero finito di operazioni, quindi il linguaggio non è infinitamente potente ma un numero finito di calcoli O(n^2). Tocca anche il costo computazionale di una testa di attenzione nel codificatore del trasformatore e come potrebbe non valere la pena utilizzare i calcoli n ^ 2. La conversazione si sposta quindi su una discussione sul predicato select e sulle relazioni binarie vs. ordine tre.

  • 01:00:00 n questa sezione, Gail Weiss discute il potenziale aumento di potenza di un modello di trasformatore con attenzione di ordine superiore, come un terzo ordine anziché un secondo ordine. Spiega che un tale modello potrebbe potenzialmente calcolare funzioni con operazioni maggiori di O(n^2), aumentandone la potenza. Tuttavia, questo sarebbe anche più costoso dal punto di vista computazionale. Weiss sottolinea inoltre l'importanza delle connessioni residue nel modello del trasformatore come un modo per conservare e riutilizzare le informazioni in tutti i livelli e suggerisce che la loro rimozione può ridurre drasticamente le prestazioni anche se potrebbero non apparire come un'operazione distinta.

  • 01:05:00 In questa sezione del video, Gail Weiss discute i potenziali problemi che potrebbero sorgere con trasformatori molto profondi e come possono deviare dal modello RASP. Cita un documento che ha letto in ICML sull'importanza di rimuovere determinate informazioni da un trasformatore che potrebbe causare la rapida perdita di informazioni. Tuttavia, osserva anche che le informazioni possono essere conservate se riconosciute come importanti. Weiss discute anche l'idea di avere un incorporamento molto lungo per superare i problemi di confusione nelle informazioni man mano che il trasformatore va più in profondità.
 

Visualizzazione e comprensione delle reti neurali profonde di Matt Zeiler



Visualizzazione e comprensione delle reti neurali profonde di Matt Zeiler

Matt Zeiler discute la visualizzazione e la comprensione delle reti neurali convoluzionali (CNN) per il riconoscimento di oggetti in immagini e video. Descrive le prestazioni delle reti neurali profonde rispetto agli esseri umani e ai primati nel riconoscere gli oggetti e mostra come le CNN imparano a identificare gli oggetti attraversando gli strati. Zeiler spiega il processo di miglioramento dell'architettura CNN e discute i limiti durante l'allenamento con dati limitati. Infine, risponde a domande sull'utilizzo di livelli inferiori in livelli superiori e sull'applicazione delle convoluzioni nelle reti neurali.

  • 00:00:00 In questa sezione, Matt Zeiler descrive una tecnica per visualizzare reti convoluzionali utilizzate per riconoscere gli oggetti in immagini e video, che consente loro di capire cosa sta imparando ogni livello e ottenere informazioni per migliorare le prestazioni. Le reti neurali convoluzionali esistono dalla fine degli anni '80, con nuovi approcci che utilizzano praticamente la stessa architettura di prima. La svolta nel campo è stata opera del team di Geoff Hinton, poiché la loro rete neurale ha ridotto i tassi di errore sul benchmark comune, ImageNet, del dieci percento invece del solito ventisei percento, portando a prestazioni migliori nelle attività di riconoscimento.

  • 00:05:00 In questa sezione, Matt Zeiler discute studi recenti che confrontano le prestazioni delle reti neurali profonde con quelle dei primati e degli esseri umani nel riconoscere gli oggetti. Uno studio ha coinvolto la registrazione dell'attivazione degli elettrodi nel cervello di una scimmia quando gli sono state presentate immagini e ha confrontato la sua precisione di riconoscimento con quella delle reti neurali profonde e degli esseri umani. I risultati hanno mostrato che gli esseri umani, le reti neurali profonde e la corteccia informatica della scimmia hanno funzionato quasi allo stesso modo quando le immagini sono state presentate per meno di 100 millisecondi. Inoltre, Zeiler discute le reti convoluzionali D, che sono modelli di apprendimento senza supervisione utilizzati per ricostruire le immagini rendendo sparse le caratteristiche di primo livello, con l'obiettivo di apprendere ciò che una rete convoluzionale sta effettivamente imparando.

  • 00:10:00 In questa sezione, Matt Zeiler spiega l'importanza di rendere reversibili le operazioni nelle reti convoluzionali per ottenere buone ricostruzioni, soprattutto quando si ha a che fare con più livelli di informazioni. Dimostra come viene visualizzato il livello più alto della rete (utilizzando un set di convalida di 50.000 immagini) selezionando la singola mappa delle caratteristiche con l'attivazione più forte alla volta e utilizzandola come input nella parte superiore della rete convoluzionale per ricostruire le visualizzazioni da il basso verso l'alto. La visualizzazione delle mappe delle caratteristiche del primo livello mostra filtri che comprendono bordi orientati e bordi colorati a diversi orientamenti e frequenze, che è ciò che i ricercatori si aspettavano in precedenza. Tuttavia, la visualizzazione dei livelli superiori fornisce nuove informazioni su come la rete apprende e classifica diversi oggetti mostrando le attivazioni e le invarianti più forti su più immagini.

  • 00:15:00 In questa sezione, Zeiler spiega lo sviluppo del secondo livello di reti neurali, che presenta un insieme di schemi molto più complesso rispetto al primo. Nel secondo strato sono presenti combinazioni di bordi, linee parallele, curve, cerchi e blocchi colorati, tra le altre strutture. Attraverso il pooling, ha una portata più ampia di ciò che può elaborare dall'immagine. Osservando il terzo strato, Zeiler mostra come apprende parti di oggetti che sono cruciali per costruire una rappresentazione di un oggetto, come il volto di un cane o un volto umano. Le caratteristiche di raggruppamento rimangono presenti nel terzo livello, ma come un raggruppamento semanticamente più rilevante di griglie o strutture facciali specifiche.

  • 00:20:00 In questa sezione viene spiegato come la rete neurale impara a identificare oggetti specifici mentre attraversa i livelli. Nel quarto livello della rete, le connessioni diventano più specifiche per gli oggetti e le categorie che non sono esplicite nelle attività, come l'erba, diventano una caratteristica. Il modello impara anche a riconoscere caratteristiche plurali come diverse razze di cani o diversi tipi di tastiere con orientamenti diversi. L'ultimo strato di convoluzione diventa più grande a causa degli effetti di confine sulle convoluzioni man mano che si avvicina allo strato di classificazione. Il contenuto di quest'ultimo livello diventa altamente specifico dell'oggetto poiché il modello deve prendere una decisione sulla classe a cui appartiene l'immagine e in questo livello esistono solo 256 caratteristiche.

  • 00:25:00 In questa sezione, Matt Zeiler discute un esperimento per confermare che le visualizzazioni si attivano su parti rilevanti dell'immagine. Hanno fatto scorrere un blocco di zeri con pixel medio 128 sull'immagine e hanno registrato le attivazioni o le probabilità del modello. Bloccando la faccia di un cane Pomerania, hanno scoperto che la probabilità di Pomerania diminuisce in modo significativo, mentre la classe più probabile è una pallina da tennis quando la faccia è bloccata. È interessante notare che hanno scoperto che il quinto livello ha appreso un rilevatore di testo poiché riduce significativamente la funzione quando blocca qualsiasi testo in un'immagine, fornendo un'idea che il livello può associare il testo ad altre classi. Infine, hanno utilizzato il modello del gruppo di Toronto che ha vinto la sfida ImageNet nel 2012 e ha riscontrato un'enorme disparità nella normalizzazione dei filtri nel primo livello.

  • 00:30:00 In questa sezione del video, Matt Zeiler discute il processo di miglioramento dell'architettura delle reti neurali profonde. Spiega che dopo aver risolto il problema della rinormalizzazione, è diventato chiaro che i filtri del primo livello erano troppo grandi, risultando in filtri morti. Il secondo strato presentava anche molti artefatti di blocco, causando la perdita di informazioni, portandoli a ridurre i passi nella convoluzione e rimuovere gli artefatti di blocco e aumentare la flessibilità nel secondo strato. Queste modifiche li hanno aiutati a vincere il concorso ImageNet 2013 e questi approcci sono stati riutilizzati nelle competizioni successive, portando a buoni risultati. Zeiler discute anche le capacità di generalizzazione e gli usi di queste reti neurali nel determinare la salienza.

  • 00:35:00 In questa sezione, Zeiler discute i limiti dei modelli profondi quando viene utilizzata solo una piccola quantità di dati di addestramento, affermando che i modelli faticano ad apprendere correttamente le funzionalità. Spiega che questi modelli sono abili nel riconoscere le caratteristiche che sono importanti in generale per il riconoscimento degli oggetti, e questo può essere trasferito ad altre attività con solo pochi esempi, come mostrato attraverso varie tabelle e grafici. Inoltre, Zeiler esamina quanto sia importante addestrare un modello profondo esaminando tutti i livelli intermedi e i diversi tipi di classificatori. Infine, Zeiler suggerisce che l'utilizzo di un modello addestrato per ripulire i dati delle etichette raccolti è possibile e potrebbe potenzialmente migliorare i modelli di addestramento.

  • 00:40:00 In questa sezione, Zeiler risponde alla domanda se i livelli inferiori di una rete neurale, che hanno mostrato prestazioni decenti nella classificazione, possano essere utilizzati nei livelli superiori o vicino agli output della classificazione. Spiega che potrebbero esserci più informazioni negli strati più alti a causa dell'estrazione ripetuta, ma anche diversi tipi di informazioni potrebbero essere d'aiuto. La conversazione si sposta quindi sulle prestazioni di diversi livelli e considerazioni sull'hardware per l'addestramento di reti neurali di grandi dimensioni. Zeiler discute anche la capacità delle reti neurali di riconoscere classi meno concrete, come emozioni o gesti sottili, e la mappatura di diverse dimensioni dei livelli.

  • 00:45:00 In questa sezione, il relatore spiega come le convoluzioni vengono applicate su un'immagine e altri livelli nelle reti neurali. L'applicazione delle convoluzioni dipende da due parametri: la dimensione del filtro e il passo tra il punto in cui viene applicato il filtro. Negli strati inferiori, l'oratore spiega che vengono utilizzati passi di due perché c'è troppo contenuto spaziale e il calcolo in ogni posizione è troppo costoso. Tuttavia, ciò potrebbe causare una perdita di informazioni. L'oratore menziona anche che non c'è apprendimento senza supervisione nei primi strati della rete neurale e che parole descrittive come "abbandonato" sono già integrate nel vocabolario.