Galleria mappe mentale Conoscenza teorica del deep learning
Parte del contenuto è compresso e sono inclusi un totale di 1216 moduli. Basato sui due libri di Yasuki Saito "Introduzione all'apprendimento profondo: teoria e implementazione basata su Python" e "Apprendimento profondo avanzato: elaborazione del linguaggio naturale Autore: [giapponese] Yasuki Saito Traduttore: Lu Yujie". Questo è il libro più adatto per iniziare con il deep learning che abbia mai letto. Lo consiglio vivamente prima di studiare "Hands-On Deep Learning" di Li Mu! Il contenuto all'interno non richiede alcuna conoscenza di base, viene insegnato da zero e può essere compreso dagli studenti delle scuole superiori.
Modificato alle 2024-02-04 00:57:48Questa è una mappa mentale su una breve storia del tempo. "Una breve storia del tempo" è un'opera scientifica popolare con un'influenza di vasta portata. Non solo introduce i concetti di base della cosmologia e della relatività, ma discute anche dei buchi neri e dell'espansione dell'universo. questioni scientifiche all’avanguardia come l’inflazione e la teoria delle stringhe.
Dopo aver letto "Il coraggio di essere antipatico", "Il coraggio di essere antipatico" è un libro filosofico che vale la pena leggere. Può aiutare le persone a comprendere meglio se stesse, a comprendere gli altri e a trovare modi per ottenere la vera felicità.
"Il coraggio di essere antipatico" non solo analizza le cause profonde di vari problemi nella vita, ma fornisce anche contromisure corrispondenti per aiutare i lettori a comprendere meglio se stessi e le relazioni interpersonali e come applicare la teoria psicologica di Adler nella vita quotidiana.
Questa è una mappa mentale su una breve storia del tempo. "Una breve storia del tempo" è un'opera scientifica popolare con un'influenza di vasta portata. Non solo introduce i concetti di base della cosmologia e della relatività, ma discute anche dei buchi neri e dell'espansione dell'universo. questioni scientifiche all’avanguardia come l’inflazione e la teoria delle stringhe.
Dopo aver letto "Il coraggio di essere antipatico", "Il coraggio di essere antipatico" è un libro filosofico che vale la pena leggere. Può aiutare le persone a comprendere meglio se stesse, a comprendere gli altri e a trovare modi per ottenere la vera felicità.
"Il coraggio di essere antipatico" non solo analizza le cause profonde di vari problemi nella vita, ma fornisce anche contromisure corrispondenti per aiutare i lettori a comprendere meglio se stessi e le relazioni interpersonali e come applicare la teoria psicologica di Adler nella vita quotidiana.
Conoscenza teorica del deep learning
introduzione
concetti basilari
Il problema del deep learning è un problema di machine learning, che si riferisce al riassunto di regole generali attraverso algoritmi da esempi limitati e alla loro applicazione a nuovi dati sconosciuti.
A differenza del machine learning tradizionale, i modelli utilizzati nel deep learning sono generalmente più complessi.
Il flusso di dati dall'input originale alla destinazione di output passa attraverso più componenti lineari o non lineari. Ciascun componente elabora le informazioni e a sua volta influenza i componenti successivi.
Quando finalmente otteniamo l'output, non sappiamo esattamente quanto contribuisce ciascun componente. Questa domanda si chiama contributo Problema di allocazione.
Il problema della distribuzione dei contributi viene spesso tradotto anche come problema della distribuzione del credito o problema della distribuzione del credito.
Il problema dell'assegnazione dei contributi è una questione molto critica, legata a come apprendere i parametri di ciascuna componente.
Allo stato attuale, il modello che può meglio risolvere il problema della distribuzione dei contributi è la rete neurale artificiale (ANN).
Le reti neurali e il deep learning non sono equivalenti. L'apprendimento profondo può utilizzare modelli di rete neurale o altri modelli (ad esempio, la rete di credenze profonde è un modello grafico probabilistico).
AI
Concetti base dell'intelligenza artificiale
concetto intelligente
intelligenza naturale
definizione
Si riferisce al potere e alle capacità comportamentali degli esseri umani e di alcuni animali
intelligenza umana naturale
È la capacità globale degli esseri umani di comprendere il mondo oggettivo che si manifesta attraverso i processi di pensiero e le attività mentali.
Differenti visioni e gerarchie di intelligenza
Visualizzazione
teoria della mente
L'intelligenza deriva dalle attività di pensiero
teoria della soglia di conoscenza
L'intelligenza dipende dalla conoscenza applicabile
teoria evolutiva
L’intelligenza può essere raggiunta attraverso un’evoluzione graduale
Gerarchia
Capacità caratteristiche incluse nell'intelligenza
Percezione
memoria e capacità di pensiero
apprendimento e adattabilità
capacità
Concetto di intelligenza artificiale
spiegare
Utilizzare metodi artificiali per ottenere l'intelligenza sulle macchine
Studia come costruire macchine o sistemi intelligenti e simulare ed estendere l'intelligenza artificiale
Prova di Turing
Contenuti di base della ricerca sull'intelligenza artificiale
La posizione soggettiva dell'intelligenza artificiale
L’intersezione tra scienze naturali e scienze sociali
Nucleo: pensiero e intelligenza
Materie di base: matematica, scienze del pensiero, informatica
Ricerca interdisciplinare con la scienza del cervello e la scienza cognitiva
Ricerca su metodi e tecnologie di simulazione intelligente
percezione della macchina
Visione
udito
pensiero meccanico
apprendimento automatico
comportamento della macchina
Classificazione del dominio
Percezione: cioè simulazione della capacità percettiva umana di percepire ed elaborare informazioni provenienti da stimoli esterni (visivi e vocali, ecc.). Le principali aree di ricerca includono l'elaborazione delle informazioni vocali e la visione artificiale.
Apprendimento: simulazione della capacità di apprendimento umana, principalmente studiando come apprendere da esempi o interagire con l'ambiente. Le principali aree di ricerca includono l'apprendimento supervisionato, l'apprendimento non supervisionato e l'apprendimento per rinforzo.
Cognizione: simula le capacità cognitive umane. Le principali aree di ricerca includono la rappresentazione della conoscenza, la comprensione del linguaggio naturale, il ragionamento, la pianificazione, il processo decisionale, ecc.
storia
Diverse scuole di ricerca sull’intelligenza artificiale
simbolismo
Simbolismo, noto anche come logica, scuola di psicologia o scuola di informatica. Analizzando le funzioni dell'intelligenza umana e poi realizzando queste funzioni attraverso i computer.
Assunzioni base
Le informazioni possono essere rappresentate utilizzando simboli
I simboli possono essere manipolati attraverso regole esplicite (come le operazioni logiche)
I processi cognitivi umani possono essere visti come processi di manipolazione simbolica. Nel periodo del ragionamento e della conoscenza dell’intelligenza artificiale, il metodo simbolico è più popolare e ha ottenuto molti risultati.
connessionismo
Il connessionismo, noto anche come scuola bionica o scuola fisiologica, è un tipo di metodi e teorie di elaborazione delle informazioni nel campo delle scienze cognitive.
Nel campo delle scienze cognitive, il processo cognitivo umano può essere considerato come un processo di elaborazione delle informazioni. Il connessionismo ritiene che i processi cognitivi umani siano processi di elaborazione delle informazioni in reti neurali composte da un gran numero di neuroni semplici, piuttosto che operazioni simboliche.
Pertanto, la struttura principale del modello connessionista è una rete interconnessa composta da un gran numero di semplici unità di elaborazione delle informazioni, che ha le caratteristiche di non linearità, distribuzione, parallelizzazione, calcolo locale e adattabilità.
Comportamentismo
Il comportamentismo ritiene che l’intelligenza artificiale derivi dalla cibernetica.
Oltre al deep learning, attualmente esiste un’altra interessante tecnologia nel campo del machine learning, l’apprendimento per rinforzo.
Lasciare che un agente (Agente) esegua continuamente azioni diverse (Azione), cambi il suo stato (Stato) e interagisca con l'ambiente (Ambiente) per ottenere ricompense diverse (Ricompensa). Dobbiamo solo progettare regole di ricompensa appropriate (Ricompensa). l'agente può apprendere strategie appropriate attraverso continui tentativi ed errori.
Reti neurali
rete neurale del cervello
Reti neurali artificiali
La storia dello sviluppo delle reti neurali
Modello proposto
Il periodo dal 1943 al 1969 fu il primo periodo culminante dello sviluppo delle reti neurali. Durante questo periodo, gli scienziati hanno proposto numerosi modelli neuronali e regole di apprendimento.
Nel 1943, lo psicologo Warren McCulloch e il matematico Walter Pitts descrissero per primi una rete neurale artificiale idealizzata e costruirono un meccanismo informatico basato su semplici operazioni logiche. Il modello di rete neurale da loro proposto è chiamato modello MP.
era glaciale
Dal 1969 al 1983, è stato il primo sviluppo di rete neurale di basso livello. periodo di valle. Durante questo periodo, la ricerca sulle reti neurali rimase per molti anni in uno stato di stagnazione e di basso declino.
Nel 1969 Marvin Minsky pubblicò il libro "Perceptron", sottolineando due difetti fondamentali delle reti neurali: il primo è che il perceptron non può gestire il problema del ciclo XOR; il secondo è che i computer dell'epoca non potevano supportare l'elaborazione di grandi dimensioni; reti neurali. Richiede potenza di calcolo.
Nel 1974, Paul Webos dell'Università di Harvard inventò l'algoritmo di backpropagation (BP), ma all'epoca non ricevette l'attenzione che meritava.
La rinascita causata dall'algoritmo di backpropagation
1983~1995. L'algoritmo di backpropagation ha riacceso l'interesse per le reti neurali.
Il fisico del Caltech John Hopfield ha proposto una rete neurale per la memoria associativa e i calcoli di ottimizzazione, chiamata rete Hopfield. La rete Hopfield ottenne all'epoca i migliori risultati sul problema del commesso viaggiatore e fece scalpore.
David Rumelhart e James McClelland forniscono una discussione completa sull'applicazione del connessionismo alle simulazioni computerizzate dell'attività neurale e reinventano l'algoritmo di backpropagation.
Calo di popolarità
1995~2006. Le macchine vettoriali di supporto e altri metodi più semplici (come i classificatori lineari) stanno gradualmente superando la popolarità delle reti neurali nel campo dell'apprendimento automatico.
L’ascesa del deep learning
2006 ~ adesso. Le reti neurali feedforward multistrato possono essere pre-addestrate strato per strato e quindi ottimizzate utilizzando l'algoritmo di backpropagation. Impara in modo efficace.
apprendimento automatico
Preelaborazione dei dati
Dopo la preelaborazione dei dati, ad esempio la rimozione del rumore, ecc. Ad esempio, nella classificazione del testo, nella rimozione delle parole stop, ecc.
Estrazione di caratteristiche
Estrai alcune funzionalità efficaci dai dati grezzi. Ad esempio, nella classificazione delle immagini, nell'estrazione dei bordi, nella trasformazione delle caratteristiche invarianti di scala (SIFT), ecc.
Trasformazione delle caratteristiche
Eseguire determinate elaborazioni sulle funzionalità, come la riduzione della dimensionalità e il miglioramento della dimensionalità. La riduzione della dimensionalità include due approcci: Feature Extraction e Feature Selection. I metodi di trasformazione delle caratteristiche comunemente usati includono l'analisi delle componenti principali (PCA), l'analisi discriminante lineare (analisi discriminante lineare), ecc.
prevedere
La parte centrale dell'apprendimento automatico, ovvero l'esecuzione di previsioni tramite una funzione
Indica l'apprendimento
Al fine di migliorare la precisione del sistema di apprendimento automatico, le informazioni di input vengono convertite in funzionalità efficaci
Se esiste un algoritmo in grado di apprendere automaticamente funzionalità efficaci e migliorare le prestazioni del modello di apprendimento automatico finale, allora questo tipo di apprendimento può essere chiamato apprendimento della rappresentazione.
metodo di visualizzazione
rappresentanza locale
Un modo per rappresentare i colori è denominare colori diversi con nomi diversi
La dimensione è alta e non può essere espansa. La somiglianza tra i diversi colori è 0.
rappresentazione distribuita
Valori RGB per rappresentare i colori
Per apprendere una buona rappresentazione semantica di alto livello (generalmente rappresentazione distribuita), di solito è necessario partire dalle caratteristiche di basso livello e passare attraverso più passaggi di trasformazione non lineare per ottenerla.
apprendimento approfondito
fare un passo
Problema di distribuzione dei contributi
Diversamente dallo “shallow learning”, il problema chiave che il deep learning deve risolvere è la distribuzione del contributo
Prendiamo come esempio il seguente gioco del Go. Ogni volta che si gioca, il risultato finale è una vittoria o una sconfitta. Penseremo a quali mosse hanno portato alla vittoria finale e quali hanno portato alla sconfitta finale. Come giudicare il contributo di ogni mossa è il problema della distribuzione del contributo, che è anche un problema molto difficile.
In un certo senso, l'apprendimento profondo può anche essere considerato una sorta di apprendimento di rinforzo (RL). Ciascun componente interno non può ottenere direttamente le informazioni di supervisione, ma deve ottenerle attraverso le informazioni di supervisione finali (ricompensa) dell'intero modello, e c'è. Ritardo certo.
Il modello di rete neurale può utilizzare l'algoritmo di propagazione dell'errore all'indietro, che può risolvere meglio il problema della distribuzione del contributo.
Apprendimento end-to-end
stile di apprendimento tradizionale
In alcune attività complesse, i metodi tradizionali di apprendimento automatico devono suddividere artificialmente l'input e l'output di un'attività in molti sottomoduli (o più fasi) e ciascun sottomodulo viene appreso separatamente.
Ad esempio, un compito di comprensione del linguaggio naturale richiede generalmente passaggi come la segmentazione delle parole, l'etichettatura di parti del discorso, l'analisi sintattica, l'analisi semantica e il ragionamento semantico.
Ci sono due problemi con questo modo di apprendere
Innanzitutto, ciascun modulo deve essere ottimizzato separatamente e non è garantito che i suoi obiettivi di ottimizzazione e gli obiettivi generali della missione siano coerenti.
Il secondo è la propagazione degli errori, ovvero gli errori nel passaggio precedente avranno un grande impatto sui modelli successivi. Ciò aumenta la difficoltà dell’applicazione pratica dei metodi di apprendimento automatico.
Nuovo modo di apprendere
L'apprendimento end-to-end, noto anche come formazione end-to-end, si riferisce all'obiettivo generale di ottimizzare direttamente l'attività senza condurre formazione in moduli o fasi durante il processo di apprendimento.
In generale, non è necessario assegnare esplicitamente le funzioni dei diversi moduli o fasi e non è richiesto alcun intervento umano nel processo intermedio.
La maggior parte del deep learning che utilizza modelli di rete neurale può anche essere considerato un apprendimento end-to-end.
Framework di deep learning comunemente utilizzati
Theano: un toolkit Python dell'Università di Montreal, utilizzato per definire, ottimizzare ed eseguire in modo efficiente il progetto Theano è attualmente fuori manutenzione. I dati dell'array multidimensionale corrispondono a espressioni matematiche. Theano può utilizzare in modo trasparente GPU e simboli efficienti differenziale.
Caffe: il nome completo è Convolutional Architecture for Fast Feature Embedding. È un framework informatico per modelli di rete convoluzionali. La struttura di rete da implementare può essere specificata nel file di configurazione e non richiede codifica. Caffe è implementato in C e Python ed è utilizzato principalmente per la visione artificiale.
TensorFlow: un toolkit Python sviluppato da Google che può essere eseguito su qualsiasi dispositivo dotato di CPU o GPU. Il processo di calcolo di TensorFlow è rappresentato utilizzando grafici del flusso di dati. Il nome di Tensor Flow deriva dal fatto che l'oggetto dell'operazione nel suo processo di calcolo è un array multidimensionale, cioè un tensore.
Chainer: uno dei primi framework di reti neurali che utilizza grafici di calcolo dinamico. Il suo team di sviluppo principale è Preferred Networks, una startup di machine learning dal Giappone. Rispetto ai grafici di calcolo statico utilizzati da Tensorflow, Theano, Caffe e altri framework, i grafici di calcolo dinamico possono costruire dinamicamente grafici di calcolo in fase di esecuzione, quindi sono molto adatti per alcuni compiti decisionali o di ragionamento complessi.
PyTorch5: un framework di deep learning sviluppato e gestito da Facebook, NVIDIA, Twitter e altre società. Il suo predecessore è Torch6 del linguaggio Lua. PyTorch è anche un framework basato su grafici di calcolo dinamico, che presenta evidenti vantaggi nelle attività che richiedono la modifica dinamica della struttura delle reti neurali.
Organizzazione di questo libro
percettrone
Un perceptron è un algoritmo con input e output. Dato un input, verrà restituito un determinato valore.
Il percettrone imposta pesi e pregiudizi come parametri
Circuiti logici come porte AND e porte OR possono essere rappresentati utilizzando i percettroni.
Una porta XOR non può essere rappresentata da un percettrone a singolo strato.
Una porta XOR può essere rappresentata utilizzando un percettrone a 2 strati
I perceptron a strato singolo possono rappresentare solo spazi lineari, mentre i perceptron multistrato possono rappresentare spazi non lineari.
Un perceptron a 2 strati può (in teoria) rappresentare un computer.
Reti neurali
Percettroni e reti neurali
"Percettrone ingenuo" si riferisce a una rete a strato singolo e a un modello che utilizza la funzione passo come funzione di attivazione.
"Percettrone multistrato" si riferisce a una rete neurale, ovvero una rete multistrato che utilizza funzioni di attivazione fluida come la funzione sigmoide o la funzione ReLU.
Operazione: prodotto interno della rete neurale
Y = np.punto(X, W)
Le reti neurali possono essere implementate in modo efficiente utilizzando operazioni di matrice.
Strato affine
L'operazione del prodotto di matrice eseguita nella propagazione in avanti della rete neurale è chiamata "trasformazione affine" nel campo della geometria.
La trasformazione affine comprende una trasformazione lineare e una traslazione, che corrispondono rispettivamente all'operazione di somma ponderata e all'operazione di offset della rete neurale.
Y = sigmoide(Y)
strato di uscita
Funzione di attivazione: la funzione Identity viene utilizzata per problemi di regressione e la funzione softmax viene utilizzata per problemi di classificazione.
Funzione identitaria
Il segnale di ingresso verrà emesso invariato
funzione softmax
Supponiamo che lo strato di output abbia n neuroni in totale e calcoli l'output yk del neurone k-esimo.
Caratteristiche: la somma dei valori di output del livello di output è 1
Nota: problemi di overflow
quantità
Problema di classificazione
Generalmente impostato sul numero di categorie
Riconoscimento delle cifre scritte a mano
Lo strato di input ha 28*28=784 neuroni e lo strato di output ha 10 neuroni. Ci sono anche due strati nascosti e il numero di neuroni può assumere qualsiasi valore.
Elaborazione in lotti
Inserisci più set di dati contemporaneamente
Apprendimento delle reti neurali
funzione di perdita
Introdurre concetti
Quando si cercano parametri ottimali (pesi e bias), si cercano parametri che rendano il valore della funzione di perdita il più piccolo possibile, quindi è necessario calcolare le derivate dei parametri (il gradiente per essere precisi)
Perché non utilizzare direttamente la precisione del riconoscimento come indicatore?
La derivata del parametro diventerà 0 nella maggior parte dei casi
Lo stesso vale per le funzioni di passo come funzioni di attivazione
tipo
errore quadratico medio
errore di entropia incrociata
mini-lotto
Estrai alcuni dati di test
pendenza
Il vettore sommato dalle derivate parziali di tutte le variabili è chiamato gradiente
La direzione indicata dal gradiente è la direzione in cui il valore della funzione in ciascun punto diminuisce maggiormente.
iperparametri
Impostazione manuale
tasso di apprendimento n
dimensione del minibatch
Tempi di aggiornamento iters_num
formazione acquisita
Peso w e bias theta
Reti neurali
Il gradiente della funzione di perdita rispetto ai parametri di peso
epoca
Numero di cicli/dimensione minibatch
Discesa del gradiente stocastico (SGD)
Eseguire la discesa del gradiente su dati selezionati casualmente
metodo di propagazione dell'errore all'indietro
Sebbene la differenziazione numerica sia semplice e facile da implementare, lo svantaggio è che richiede molto tempo per il calcolo. Esiste un metodo in grado di calcolare in modo efficiente il gradiente dei parametri di peso: il metodo della propagazione a ritroso dell'errore
Grafico computazionale
Utilizzando i grafici di calcolo, è possibile comprendere in modo intuitivo il processo di calcolo
La propagazione in avanti dei grafici computazionali esegue calcoli generali. Effettuando la propagazione all'indietro del grafico computazionale, è possibile calcolare le derivate di ciascun nodo
Il termine di errore dello strato l può essere calcolato mediante il termine di errore dello strato l 1 Ottenuta questa è la propagazione all'indietro dell'errore.
formula
calcolare
La quantità di giallo è il valore ottenuto durante la backpropagation
La quantità verde è una quantità nota
Implementando gli elementi costitutivi di una rete neurale come strati, i gradienti possono essere calcolati in modo efficiente
Confrontando i risultati ottenuti mediante differenziazione numerica e il metodo di propagazione all'indietro dell'errore, è possibile confermare se l'implementazione del metodo di propagazione all'indietro dell'errore è corretta (conferma del gradiente)
Video di riferimento
https://www.bilibili.com/video/BV1LM411J7cW/?spm_id_from=333.788&vd_source=048c7bdfe54313b8b3ee1483d9d07e38
rete neurale convoluzionale
Tutto dovrebbe essere il più semplice possibile, ma non troppo semplice. [Albert Einstein]
l'intero fotogramma
Rispetto
Rete basata su un livello completamente connesso (livello affine)
Rete basata sulla CNN
ordine di collegamento
Convoluzione[livello di convoluzione]-ReLU-(Pooling[livello di pooling])
Il livello vicino all'output utilizza la precedente combinazione Affine [trasformazione affine] - ReLU
Il livello di output finale utilizza la precedente combinazione Affine-Softmax
strato di convoluzione
Concetto di convoluzione
Problemi con il livello completamente connesso
La forma dei dati viene "ignorata". L'immagine è solitamente una forma tridimensionale nelle direzioni altezza, lunghezza e canale, ma i dati tridimensionali devono essere appiattiti in dati unidimensionali durante l'immissione.
L'immagine è una forma tridimensionale e questa forma dovrebbe contenere importanti informazioni spaziali.
I pixel spazialmente adiacenti hanno valori simili
Ogni canale di RBG è strettamente correlato l'uno all'altro.
C'è poca correlazione tra i pixel distanti
Lo strato convoluzionale può mantenere invariata la forma
definizione
I dati di input e output del livello di convoluzione sono chiamati mappe delle caratteristiche
I dati di input del livello convoluzionale sono chiamati mappa delle caratteristiche di input
I dati di output vengono chiamati mappa delle funzionalità di output
Operazione di convoluzione
L'operazione di convoluzione è equivalente all'operazione di filtro nell'elaborazione delle immagini
La funzione principale della convoluzione è quella di far scorrere un kernel di convoluzione (cioè un filtro) su un'immagine (o qualche caratteristica) e ottenere un nuovo insieme di caratteristiche attraverso l'operazione di convoluzione.
bidimensionale
Data un'immagine X ∈ R(M×N), e un filtro W ∈ R (m×n), generalmente m << M, n << N, la convoluzione è
tridimensionale
Correlazione
Nel processo di calcolo della convoluzione, è spesso necessario capovolgere il nucleo di convoluzione.
Capovolgi significa invertire l'ordine in due dimensioni (dall'alto in basso, da sinistra a destra), ovvero ruotare di 180 gradi.
In termini di implementazione specifica, vengono utilizzate operazioni di correlazione incrociata anziché convoluzioni, il che ridurrà alcune operazioni o spese generali non necessarie.
La correlazione incrociata è una funzione che misura la correlazione tra due serie, solitamente implementata utilizzando il calcolo del prodotto scalare con finestra scorrevole.
Data un'immagine X ∈ R(M×N) e un kernel di convoluzione W ∈ R (m×n), la loro correlazione incrociata è
La differenza tra correlazione incrociata e convoluzione è solo se il nucleo di convoluzione viene invertito. La correlazione incrociata può anche essere chiamata convoluzione non capovolta.
La convoluzione viene utilizzata nelle reti neurali per l'estrazione delle funzionalità. Il fatto che il kernel di convoluzione venga capovolto non ha nulla a che fare con la sua capacità di estrazione delle funzionalità. Soprattutto quando il nucleo di convoluzione è un parametro apprendibile, convoluzione e correlazione incrociata sono equivalenti.
Varianti di convoluzione
Imbottitura zero
Per mantenere costante la dimensione dello spazio, i dati di input devono essere riempiti
lunghezza del passo
L'intervallo di posizioni in cui viene applicato il filtro è chiamato passo
Convoluzioni comunemente usate
Convoluzione stretta: dimensione del passo s = 1, nessun riempimento di zero su entrambe le estremità p = 0 e la lunghezza dell'output dopo la convoluzione è n − m 1.
Convoluzione ampia: dimensione del passo s = 1, riempimento zero su entrambe le estremità p = m - 1 e la lunghezza dell'output dopo la convoluzione è n m - 1.
Convoluzione di uguale larghezza: dimensione del passo s = 1, riempimento zero su entrambe le estremità p = (m −1)/2, lunghezza dell'output n dopo la convoluzione.
Proprietà matematiche della convoluzione
Operazione di convoluzione su dati 3D
I dati di ingresso e i numeri dei canali del filtro devono essere impostati sullo stesso valore.
Operazioni di convoluzione multipla
Per quanto riguarda i filtri dell'operazione di convoluzione bisogna considerare anche il numero di filtri. Pertanto, come dati quadridimensionali, i dati del peso del filtro dovrebbero essere scritti nell'ordine di (canale_uscita, canale_ingresso, altezza, larghezza). Ad esempio, se sono presenti 20 filtri con un numero di canale pari a 3 e una dimensione pari a 5 × 5, è possibile scriverlo come (20, 3, 5, 5).
Elaborazione in lotti
Ci auguriamo che l'operazione di convoluzione corrisponda anche all'elaborazione batch. Per fare ciò, i dati passati tra ciascun livello devono essere salvati come dati quadridimensionali. Nello specifico, i dati vengono salvati nell'ordine di (batch_num, canale, altezza, larghezza).
Proprietà degli strati convoluzionali
Connessione locale: ogni neurone nello strato convoluzionale (presupposto essere lo strato l-esimo) è collegato solo ai neuroni in una finestra locale nello strato successivo (strato l-1), formando una rete di connessione locale. Il numero di connessioni tra lo strato convoluzionale e lo strato successivo è notevolmente ridotto, dalle connessioni originali n(l) × n(l - 1) alle connessioni n(l) × m. m è la dimensione del filtro.
Condivisione del peso: il filtro w(l) come parametro è lo stesso per tutti i neuroni dello strato l.
A causa delle connessioni locali e della condivisione del peso, i parametri dello strato convoluzionale hanno solo un peso m-dimensionale w(l) e un bias unidimensionale b(l), con un totale di m 1 parametri.
Il numero di neuroni nello strato l non è scelto arbitrariamente, ma soddisfa n(l) = n(l−1) − m 1.
Strato di raggruppamento
Chiamato anche strato di aggregazione, strato di sottocampionamento
Il raggruppamento è la selezione delle funzionalità, che riduce il numero di funzionalità, riducendo quindi il numero di parametri, riducendo le dimensioni delle funzionalità e riducendo lo spazio nelle direzioni di altezza e lunghezza.
Funzioni di aggregazione comunemente utilizzate
Massimo: generalmente viene preso il valore massimo di tutti i neuroni in una regione.
Aggregazione media (media): generalmente viene preso il valore medio di tutti i neuroni nell'area.
Un tipico livello di pooling divide ciascuna mappa delle caratteristiche in regioni non sovrapposte di dimensioni 2×2 e quindi utilizza il pooling massimo per il downsampling.
Lo strato di pooling può anche essere considerato uno strato convoluzionale speciale
In alcune delle prime reti convoluzionali (come LeNet-5), le funzioni di attivazione non lineare venivano talvolta utilizzate nel livello di pooling.
dove Y(′d) è l'output del livello di pooling, f(·) è la funzione di attivazione non lineare, w(d) eb(d) sono pesi scalari e bias apprendibili.
Caratteristiche dello strato di pooling
Non ci sono parametri da imparare
Il numero di canali non cambia
Variazioni di posizione da robuste a piccole (robustezza)
apprendimento dei parametri
Calcolo dei termini di errore
Visualizzazione della CNN
Visualizzazione dei pesi del livello 1
Il filtro prima dell'apprendimento viene inizializzato in modo casuale, quindi non esiste alcun motivo nelle sfumature del bianco e nero, ma il filtro dopo l'apprendimento diventa un'immagine regolare. Abbiamo scoperto che attraverso l'apprendimento, i filtri vengono aggiornati in filtri regolari, come filtri che sfumano dal bianco al nero, filtri che contengono aree a blocchi (chiamate blob), ecc. Filtro sensibile ai bordi orizzontali e verticali
Si può vedere che i filtri dello strato convoluzionale estrarranno le informazioni originali come bordi o patch. La CNN appena implementata passerà queste informazioni grezze ai livelli successivi.
Estrazione delle informazioni basata sulla struttura gerarchica
Informazioni estratte dagli strati convoluzionali della CNN. I neuroni nello strato 1 rispondono ai bordi o alle toppe, lo strato 3 risponde alla trama, lo strato 5 risponde alle parti dell'oggetto e lo strato finale completamente connesso risponde alla categoria dell'oggetto (cane o macchina).
Se vengono impilati più strati convoluzionali, man mano che gli strati si approfondiscono, le informazioni estratte diventano più complesse e astratte. Questa è una parte molto interessante dell'apprendimento profondo. Man mano che gli strati si approfondiscono, i neuroni cambiano da forme semplici a informazioni di "alto livello". In altre parole, proprio quando comprendiamo il “significato” delle cose, gli oggetti della risposta cambiano gradualmente.
Tipica rete neurale convoluzionale
LeNet-5
LeNet è stata proposta nel 1998 come rete per il riconoscimento delle cifre scritte a mano. Ha strati convoluzionali consecutivi e strati di pooling e infine restituisce i risultati attraverso uno strato completamente connesso.
Escludendo lo strato di input, LeNet-5 ha un totale di 7 strati.
Livello di input: la dimensione dell'immagine di input è 32 × 32 = 1024.
Livello convoluzionale: utilizzando 6 filtri 5 × 5, si ottengono 6 serie di mappe di caratteristiche con una dimensione di 28 × 28 = 784. Pertanto, il numero di neuroni nello strato C1 è 6 × 784 = 4704, il numero di parametri addestrabili è 6 × 25 6 = 156 e il numero di connessioni è 156 × 784 = 122304 (inclusi i bias, gli stessi sotto).
Livello di pooling: la finestra di campionamento è 2×2, viene utilizzato il pooling medio e viene utilizzata una funzione non lineare. Il numero di neuroni è 6 × 14 × 14 = 1176, il numero di parametri addestrabili è 6 × (1 1) = 12 e il numero di connessioni è 6 × 196 × (4 1) = 5.880.
Strato convoluzionale. In LeNet-5 viene utilizzata una tabella di connessione per definire la dipendenza tra le mappe delle caratteristiche di input e di output. Come mostrato nella figura, vengono utilizzati un totale di 60 filtri 5 × 5 per ottenere 16 gruppi di mappe delle caratteristiche con una dimensione di 10 ×. 10. Il numero di neuroni è 16 × 100 = 1.600, il numero di parametri addestrabili è (60 × 25) 16 = 1.516 e il numero di connessioni è 100 × 1.516 = 151.600.
Nel livello di pooling, la finestra di campionamento è 2 × 2 e si ottengono 16 mappe di caratteristiche di dimensione 5 × 5. Il numero di parametri addestrabili è 16 × 2 = 32 e il numero di connessioni è 16 × 25 × (4 1). ) = 2000.
Gli strati convoluzionali, utilizzando 120 × 16 = 1, 920 filtri 5 × 5, ottengono 120 serie di mappe di caratteristiche con una dimensione di 1 × 1. Il numero di neuroni nello strato C5 è 120, il numero di parametri addestrabili è 1.920 × 25 120 = 48120 e il numero di connessioni è 120 × (16 × 25 1) = 48120.
Lo strato completamente connesso ha 84 neuroni e il numero di parametri addestrabili è 84×(120 1) =10164. Il numero di connessioni e il numero di parametri addestrabili sono gli stessi, ovvero 10164.
Strato di output: lo strato di output è costituito da 10 funzioni di base radiale euclidea
unisciti alla tabella
La relazione completamente connessa tra le mappe delle caratteristiche di input e output dello strato convoluzionale non è necessaria ed è possibile utilizzare una convoluzione non condivisa
Definire una tabella di collegamento (Link Table) T per descrivere la relazione di connessione tra le mappe delle caratteristiche di input e output.
Se la p-esima mappa delle caratteristiche di output dipende dalla d-esima mappa delle caratteristiche di input, allora Tp,d = 1, altrimenti 0.
AlexNet
È stato proposto nel 2012 e utilizza molti metodi tecnici delle moderne reti convoluzionali profonde.
Formazione parallela utilizzando GPU
La funzione di attivazione utilizza ReLU
Utilizzare Dropout per evitare l'overfitting
Utilizza l'aumento dei dati per migliorare la precisione del modello
Utilizzare il livello LRN (Local Response Normalization) per la normalizzazione locale
Rete iniziale
Modulo di inizio: uno strato convoluzionale contiene più operazioni di convoluzione di diverse dimensioni
La rete Inception è composta da più moduli Inception e da un numero limitato di livelli di aggregazione.
Versione V1
La prima versione v1 della rete Inception è la famosissima GoogLeNet [Szegedy et al., 2015], e ha vinto il concorso di classificazione delle immagini ImageNet 2014.
Rete residua ResNet
L'efficienza della propagazione delle informazioni viene migliorata aggiungendo bordi diretti allo strato convoluzionale non lineare.
elementi non lineari
Possono essere uno o più strati convoluzionali
Lascia che questa unità non lineare f(x, θ) approssimi una funzione obiettivo h(x)
Un'unità non lineare composta da una rete neurale ha capacità sufficiente per approssimare approssimativamente la funzione obiettivo originale o la funzione residua, ma in pratica quest'ultima è più facile da apprendere
Conclusione: lasciamo che l'unità non lineare f(x, θ) approssimi la funzione residua h(x)−x, e usiamo f(x, θ) x per approssimare h(x).
La rete residua è una rete molto profonda composta da molte unità residue collegate in serie.
Altri metodi di convoluzione
convoluzione trasposta
Convoluzione atro (convoluzione dilatata)
apprendimento approfondito
Approfondire la rete
Verso una rete più profonda
Questa rete si riferisce a VGG che verrà introdotta nella sezione successiva.
Strato convoluzionale basato su piccoli filtri 3×3
La funzione di attivazione è ReLU
Il livello Dropout viene utilizzato dietro il livello completamente connesso.
Ottimizzazione basata su Adam
Utilizzare il valore iniziale di He come valore iniziale del peso
La precisione del riconoscimento è del 99,38%
Migliorare ulteriormente la precisione del riconoscimento
Apprendimento d'insieme
decadimento del tasso di apprendimento
Aumento dei dati
Aumenta il numero di immagini applicando piccole modifiche come rotazione, movimento verticale o orizzontale, ritaglio, capovolgimento, aumento della luminosità, ecc.
Motivazione più profonda
Migliorare le prestazioni di riconoscimento
L'importanza dell'approfondimento può essere vista dai risultati dei concorsi su larga scala di riconoscimento delle immagini rappresentati da ILSVRC. I risultati di questo concorso mostrano che i metodi più utilizzati negli ultimi tempi si basano per lo più sul deep learning e tendono ad approfondire gradualmente gli strati della rete. In altre parole, si può vedere che quanto più profondo è lo strato, tanto maggiore è la prestazione di riconoscimento.
Ridurre il numero di parametri della rete
Il vantaggio di impilare piccoli filtri per approfondire la rete è che può ridurre il numero di parametri ed espandere il campo recettivo (una regione spaziale locale che impone cambiamenti ai neuroni). Inoltre, attraverso strati sovrapposti, funzioni di attivazione come ReLU vengono inserite al centro dello strato convoluzionale, migliorando ulteriormente l'espressività della rete. Questo perché alla rete si aggiunge l'espressività "non lineare" basata su funzioni di attivazione. Attraverso la sovrapposizione di funzioni non lineari si possono esprimere cose più complesse.
Rendi l'apprendimento più efficiente
Rispetto ad una rete senza strati di approfondimento, approfondendo gli strati, i dati di apprendimento possono essere ridotti e l'apprendimento può essere eseguito in modo efficiente.
Struttura della rete di apprendimento profondo
Concorso ILSVRC
ImageNet contiene una varietà di immagini e ciascuna immagine è associata a un'etichetta (nome della categoria). Ogni anno si tiene il concorso di riconoscimento delle immagini ILSVRC che utilizza questo enorme set di dati.
Il concorso su larga scala per il riconoscimento delle immagini ILSVRC si è tenuto nel 2012. Nella competizione di quell'anno, il metodo basato sul deep learning (comunemente noto come AlexNet) vinse in maniera schiacciante, sovvertendo completamente i precedenti metodi di riconoscimento delle immagini. Nelle competizioni successive, il deep learning è stato attivo al centro della scena.
In particolare, nel 2015 ResNet (una rete profonda con più di 150 layer) ha ridotto il tasso di falsi riconoscimenti al 3,5%. Si dice che questo risultato superi addirittura la capacità di riconoscimento della gente comune.
VGG
VGG è una CNN di base composta da strati convoluzionali e strati di pooling. Tuttavia, la sua caratteristica è che sovrappone strati ponderati (strati convoluzionali o strati completamente connessi) a 16 strati (o 19 strati), che hanno profondità (a volte chiamata anche "VGG16" o "VGG19" a seconda della profondità dello strato).
GoogLeNet
La rete non ha solo profondità in verticale, ma anche larghezza in orizzontale, che è chiamata struttura Inception.
ResNet
Ha una struttura più profonda rispetto alle reti precedenti
Sappiamo già che approfondire è importante per migliorare le prestazioni. Tuttavia, nel deep learning, se si approfondisce troppo la profondità, in molti casi l’apprendimento non procederà in modo fluido, con conseguenti prestazioni finali scadenti. In ResNet, per risolvere questo tipo di problemi, viene introdotta la "struttura delle scorciatoie" (chiamata anche "scorciatoia" o "percorso"). Dopo aver importato questa struttura di scorciatoie, le prestazioni possono essere migliorate continuamente man mano che il livello si approfondisce (ovviamente anche l'approfondimento del livello è limitato).
In pratica, i dati sui pesi appresi utilizzando l'enorme set di dati di ImageNet vengono spesso applicati in modo flessibile. Questo è chiamato apprendimento di trasferimento. I pesi appresi (parti) vengono copiati su altre reti neurali per il riapprendimento (ottimizzazione). Ad esempio, preparare una rete con la stessa struttura di VGG, utilizzare i pesi appresi come valori iniziali e utilizzare il nuovo set di dati come oggetto da riapprendere. L'apprendimento basato sul trasferimento è molto efficace quando si ha a disposizione un piccolo set di dati.
Accelerare l'apprendimento profondo
Problemi che devono essere risolti
Il rapporto temporale di ciascun livello nell'elaborazione in avanti di AlexNet: il lato sinistro è quando si utilizza la GPU e il lato destro è quando si utilizza la CPU. "conv" nella figura corrisponde allo strato di convoluzione, "pool" corrisponde allo strato di pooling, "fc" corrisponde allo strato completamente connesso e "norm" corrisponde allo strato di regolarizzazione
Il tempo di elaborazione dello strato convoluzionale rappresenta il 95% della GPU complessiva e l'89% della CPU complessiva.
Accelerazione basata su GPU
Le GPU sono fornite principalmente da due società, NVIDIA e AMD. Sebbene entrambe le GPU possano essere utilizzate per calcoli numerici generali, la GPU di NVIDIA è più "vicina" al deep learning. In effetti, la maggior parte dei framework di deep learning beneficiano solo delle GPU NVIDIA. Questo perché il framework di deep learning utilizza CUDA, un ambiente di sviluppo completo per il GPU computing fornito da NVIDIA.
Apprendimento distribuito
Calcolo distribuito su più GPU o più macchine
TensorFlow di Google e CNTK di Microsoft attribuiscono grande importanza all'apprendimento distribuito durante il processo di sviluppo
L'asse orizzontale è il numero di GPU L'asse verticale rappresenta la velocità di accelerazione rispetto a una singola GPU.
Riduzione delle cifre della precisione aritmetica
Per quanto riguarda la precisione numerica (numero di cifre per rappresentare un valore), sappiamo già che il deep learning non richiede precisione numerica in cifre. Questa è una proprietà importante delle reti neurali. Questa proprietà si basa sulla robustezza delle reti neurali.
In futuro verranno utilizzati come standard numeri in virgola mobile a mezza precisione e si prevede di raggiungere velocità fino a circa 2 volte quella della precedente generazione di GPU.
Casi applicativi del deep learning
Rilevamento oggetti
Determinare il tipo di oggetto e la posizione dell'oggetto dall'immagine
Tra i metodi di utilizzo della CNN per il rilevamento di oggetti, esiste un metodo chiamato R-CNN
Segmentazione delle immagini
Classificare le immagini a livello di pixel
FCN classifica tutti i pixel attraverso un processo di inoltro.
FCN significa letteralmente "una rete composta interamente da strati convoluzionali". Rispetto alla CNN generale contenente strati completamente connessi, FCN sostituisce gli strati completamente connessi con strati convoluzionali che svolgono lo stesso ruolo.
Generazione didascalie immagini
Un metodo rappresentativo per generare didascalie di immagini basate sul deep learning è chiamato NIC
La NIC è composta da profonde CNN e RNN (Recurrent Neural Network) che elaborano il linguaggio naturale.
Il futuro del deep learning
Trasformazione dello stile dell'immagine
Generazione di immagini
Autopilota
insegnamento rafforzativo
Rappresentazione distribuita del linguaggio naturale e delle parole
Marty: "Questo è pesante." Dr. Brown: “Nel futuro le cose saranno così pesanti?” —Il film "Ritorno al futuro"
Cos'è l'elaborazione del linguaggio naturale
La nostra lingua è fatta di parole e il significato della lingua è fatto di parole. In altre parole, una parola è la più piccola unità di significato.
Tre modi per far comprendere ai computer il significato delle parole
Approccio basato sul thesaurus
approccio basato sul conteggio
Approccio basato sull'inferenza (word2vec)
Approccio basato sul thesaurus
Prendi in considerazione la possibilità di definire manualmente i significati delle parole
Attualmente ampiamente utilizzato è il dizionario dei sinonimi
Un diagramma basato sulla relazione iperonimo-iponimo in base al significato di ciascuna parola
WordNet
Il dizionario dei sinonimi più famoso
effetto
Ottieni sinonimi per una parola
Calcola la somiglianza tra le parole
Utilizzato tramite il modulo NLTK
I problemi
Nuove parole continuano ad apparire, rendendo difficile adattarsi ai cambiamenti dei tempi
Costo del lavoro elevato
Incapace di esprimere sottili differenze a parole
approccio basato sul conteggio
corpo
Un corpus è una grande quantità di dati testuali
I corpora utilizzati nel campo dell'elaborazione del linguaggio naturale talvolta aggiungono informazioni aggiuntive ai dati di testo. Ad esempio, ogni parola dei dati di testo può essere contrassegnata con una parte del discorso. In questo caso si presuppone che al corpus utilizzato non siano stati aggiunti tag.
Preelaborazione del corpus basata su Python
corpus famoso
Wikipedia e Google News
preelaborazione
Maiuscolo -> Minuscolo
testo.inferiore()
Punteggiatura del processo
testo.sostituisci('.', '.')
re.split('(\W )', testo)
\W: corrisponde a caratteri non verbali (non lettere, numeri o trattini bassi)
: Indica la corrispondenza con il modello precedente "\W" ripetuto una o più volte
Crea ID di parole e tabelle di corrispondenza
Converti un elenco di parole in un elenco di ID di parole
corpus = [word_to_id[w] per w in parole]
Rappresentazione distribuita delle parole
Costruire rappresentazioni vettoriali compatte e ragionevoli nel dominio delle parole
Ipotesi di distribuzione
Il significato di una parola è formato dalle parole che la circondano
Il contesto si riferisce alle parole che circondano una parola centrata
La dimensione del contesto è chiamata dimensione della finestra
La dimensione della finestra è 1 e il contesto contiene 1 parola a sinistra e a destra
matrice di co-occorrenza
Il modo più semplice per utilizzare un vettore è contare quante volte una parola appare attorno ad esso.
text = 'Tu dici addio e io saluto.'
Imposta la dimensione della finestra su 1
somiglianza tra vettori
somiglianza del coseno
Ordinamento di parole simili
Ottieni il vettore di parole della parola interrogata
Ottenere la somiglianza del coseno tra il vettore di parole della parola interrogata e tutti gli altri vettori di parole rispettivamente.
Risultati basati sulla somiglianza del coseno, che mostrano i loro valori in ordine decrescente
Miglioramenti nei metodi basati sul conteggio
Fare clic su informazioni reciproche
Nella matrice delle co-occorrenze, si considererà che parole comuni come abbiano una forte correlazione con sostantivi come car
PMI
, P(x) rappresenta la probabilità che si verifichi x, P(y) rappresenta la probabilità che si verifichi y e P(x, y) rappresenta la probabilità che xey si verifichi simultaneamente.
PMI basato sulla matrice di co-occorrenza
insufficiente
Quando il numero di co-occorrenze di due parole è 0, log(2)(0) = −∞
punto positivo informazione reciproca
Ottieni la matrice PPMI in base alla matrice di co-occorrenza
Riduzione della dimensionalità
Dobbiamo osservare la distribuzione dei dati e trovare "assi" importanti
Scomposizione in valori singolari (SVD)
SVD decompone qualsiasi matrice nel prodotto di 3 matrici
dove U e V sono matrici ortogonali i cui vettori colonna sono ortogonali tra loro e S è una matrice diagonale dove tutti gli elementi tranne quelli diagonali sono 0
La matrice originale può essere approssimata rimuovendo i vettori colonna ridondanti nella matrice U
U, S, V = np.linalg.svd(W)
Se la dimensione della matrice è N*N, la complessità computazionale di SVD raggiungerà O(N^3). Pertanto, vengono spesso utilizzati metodi più veloci come SVD troncato. L'SVD troncato raggiunge un'alta velocità troncando le parti con valori singolari più piccoli.
da sklearn.utils.extmath importa randomized_svd U, S, V = randomized_svd(W, n_components=wordvec_size, n_iter=5, random_state=None)
Set di dati PTB
Il corpus PTB viene spesso utilizzato come punto di riferimento per la valutazione dei metodi proposti
Preelaborazione del corpus PTB
parentesi per sostituire le parole rare con il carattere speciale
Sostituisci numeri specifici con "N"
La preelaborazione che ho fatto
Concatena tutte le frasi e trattale come un unico grande dato di serie temporali. In questo caso, alla fine di ogni frase viene inserito un carattere speciale <eos>
Assegnazione degli iperparametri
dimensione_finestra = 2
dimensione_wordvec = 100
Valutazione basata sul set di dati PTB
Per la parola di ricerca tu, puoi vedere che i pronomi personali come i e noi sono al primo posto. Queste sono parole con lo stesso utilizzo in grammatica.
La parola query anno ha sinonimi come mese e trimestre.
La parola chiave automobile ha sinonimi come automobile e veicolo.
Quando si utilizzava toyota come termine di ricerca, apparivano nomi di produttori di automobili o nomi di marchi come nissan, honda e lexus.
Riassumere
Utilizzare il corpus per calcolare il numero di parole nel contesto, convertirle in una matrice PPMI e quindi ottenere buoni vettori di parole basati sulla riduzione della dimensionalità SVD.
word2vec
“Se non hai una base per giudicare, non ragionare”. ——Arthur Conan Doyle, "Uno scandalo in Boemia"
incorporamento di parole
Word2Vec è un algoritmo per generare "word embedding"
Oltre a Word2Vec, esistono altri metodi per generare incorporamenti di parole, come GloVe (Global Vector for Word Representation), FastText, ecc. Questi metodi possono utilizzare strategie e algoritmi diversi, ma mirano tutti a catturare in modo efficace l'informazione semantica delle parole nello spazio vettoriale.
Metodi basati sull'inferenza e reti neurali
Problemi con metodi basati sul conteggio
Nel mondo reale, i corpora trattano un numero molto elevato di parole. Ad esempio, si dice che il vocabolario inglese contenga più di 1 milione di parole. Se la dimensione del vocabolario supera 1 milione, l'utilizzo del metodo basato sul conteggio richiede la generazione di un'enorme matrice di 1 milione × 1 milione, ma è ovviamente irrealistico eseguire SVD su una matrice così grande.
Approcci basati sull'inferenza che utilizzano reti neurali
Apprendimento sui dati mini-batch. Cioè, utilizzando parte dei dati per apprendere e aggiornare ripetutamente i pesi.
L'apprendimento delle reti neurali può essere eseguito in parallelo utilizzando più macchine e più GPU, accelerando così l'intero processo di apprendimento.
Riepilogo dei metodi basati sull'inferenza
Bersaglio
Prevedi quali parole verranno al centro quando vengono fornite le parole circostanti (contesto), come un cloze
metodo di ragionamento
Inserisci il contesto e il modello restituisce la probabilità di occorrenza di ciascuna parola.
Come prodotto dell'apprendimento del modello, otterremo una rappresentazione distribuita della parola
Come elaborare le parole nelle reti neurali
Converti parole in vettori
Le reti neurali non possono elaborare direttamente le parole come te o dire. Per utilizzare le reti neurali per elaborare le parole, devi prima convertire le parole in vettori di lunghezza fissa.
Metodo di conversione
vettore monocaldo
Solo un elemento è 1, gli altri elementi sono 0
Reti neurali
strato di ingresso
Strato completamente connesso
I pesi iniziali sono casuali
Parola semplice2vec
Inferenza del modello CBOW
struttura
Caratteristiche
Ci sono due livelli di input
La trasformazione dallo strato di input allo strato intermedio è completata dallo stesso strato completamente connesso (peso W(in))
La trasformazione dei neuroni dallo strato intermedio allo strato di output è completata da un altro strato completamente connesso (peso W(out))
I neuroni dello strato intermedio rappresentano la "media" dei valori ottenuti da ciascuno strato di input dopo essere stati trasformati dallo strato completamente connesso.
I neuroni nello strato di output rappresentano i punteggi di ciascuna parola e maggiore è il suo valore Maggiore è il valore, maggiore è la probabilità di occorrenza della parola corrispondente.
Apprendimento del modello CBOW
Converti i punteggi in probabilità utilizzando la funzione Softmax
Trova l'errore di entropia incrociata tra queste probabilità e le etichette supervisionate
Imparalo come una perdita
Rappresentazione ponderata e distribuita di word2vec
Il peso W(in) è la rappresentazione distribuita della parola che vogliamo
Preparazione dei dati dello studio
contesto e parole target
Convertire in rappresentazione one-hot
Implementazione del modello CBOW
Informazioni aggiuntive
Modelli CBOW e probabilità
La probabilità che wt si verifichi dopo che si verificano wt−1 e wt 1.
Funzione di perdita L (log verosimiglianza negativa) del modello CBOW
modello skip-gram
word2vec ha due modelli
CBOW
salta grammo
Skip-gram è un modello che inverte il contesto e le parole target elaborate dal modello CBOW.
diagramma della struttura di rete skip-gram
modelli skip-gram e probabilità
Il modello skip-gram ha un solo livello di input e il numero di livelli di output è uguale al numero di parole nel contesto. Innanzitutto, le perdite di ciascuno strato di output devono essere calcolate separatamente e poi sommate come perdita finale.
Prevedere il contesto wt−1 e wt 1 in base alla parola centrale (parola di destinazione) wt
La funzione di perdita del modello skip-gram può essere espressa come
Confronto delle funzioni di perdita
Il numero di previsioni del modello skip-gram è pari al numero di parole di contesto, quindi la sua funzione di perdita richiede la somma delle perdite corrispondenti a ciascuna parola di contesto. Il modello CBOW richiede solo la perdita della parola target.
A giudicare dall’accuratezza della rappresentazione distribuita delle parole, il modello skip-grm fornisce risultati migliori nella maggior parte dei casi.
Basato sul conteggio e basato sull'inferenza
Scenari in cui è necessario aggiungere nuove parole al vocabolario e aggiornare la rappresentazione distribuita delle parole
I metodi basati sul conteggio richiedono calcoli da zero
I metodi basati sull'inferenza consentono l'apprendimento incrementale dei parametri
Proprietà delle rappresentazioni distribuite delle parole
I metodi basati sul conteggio codificano principalmente la somiglianza delle parole
I metodi basati sull'inferenza possono comprendere schemi complessi tra le parole
donna re=regina
Accuratezza delle rappresentazioni distribuite delle parole
I metodi basati sull’inferenza e i metodi basati sul conteggio sono indistinguibili
Accelerare word2vec
Non cercare di sapere tutto, altrimenti non saprai nulla. ——Democrito (filosofo greco antico)
Migliorare
studio
altro
Applicazione di word2vec
La rappresentazione distribuita delle parole ottenuta utilizzando word2vec può essere utilizzata per trovare parole approssimative
trasferire l'apprendimento
La conoscenza appresa in un campo può essere applicata ad altri campi
Quando si risolvono compiti di elaborazione del linguaggio naturale, word2vec generalmente non viene utilizzato per apprendere da zero la rappresentazione distribuita delle parole, ma viene prima appreso su un corpus su larga scala (dati di testo come Wikipedia, Google News, ecc.) e poi la rappresentazione distribuita appresa è Si applica a una singola attività.
Nelle attività di elaborazione del linguaggio naturale come la classificazione del testo, il clustering del testo, il tagging di parti del discorso e l'analisi dei sentimenti, il primo passo della vettorizzazione delle parole può utilizzare la rappresentazione distribuita delle parole apprese.
Le rappresentazioni distribuite delle parole funzionano alla grande in quasi tutti i tipi di attività di elaborazione del linguaggio naturale!
Utilizzando rappresentazioni distribuite di parole è anche possibile convertire documenti (sequenze di parole) in vettori di lunghezza fissa.
Se riesci a convertire il linguaggio naturale in vettori, puoi utilizzare molti metodi di apprendimento automatico
Come valutare i vettori di parole
valutazione della somiglianza delle parole creata artificialmente impostata per valutare
La somiglianza tra gatto e animale è 8 e la somiglianza tra gatto e macchina è 2... In modo simile, la somiglianza tra le parole viene valutata manualmente con un punteggio da 0 a 10.
Confronta i punteggi assegnati dalle persone e la somiglianza del coseno fornita da word2vec per esaminare la correlazione tra loro
Insomma
Modelli diversi hanno accuratezze diverse (scegli il modello migliore in base al corpus)
Più grande è il corpus, migliori saranno i risultati (i big data sono sempre necessari)
La dimensionalità dei vettori di parole deve essere moderata (troppo grande porterà a una scarsa precisione)
RNN
Ricordo solo che miagolavo e piangevo in un luogo buio e umido. ——"I am a Cat" di Natsume Soseki
Modelli di probabilità e linguaggio
Una semplice rete feedforward non può apprendere completamente le proprietà dei dati delle serie temporali. Di conseguenza, è nata la RNN (Recurrent Neural Network).
word2vec da una prospettiva probabilistica
Lo scopo originale del modello CBOW "prevedere le parole target dal contesto" può essere utilizzato per qualcosa? P(wt|wt−2, wt−1) può avere un ruolo in alcuni scenari pratici?
Le finestre che abbiamo considerato prima sono tutte simmetriche, quindi consideriamo solo quella di sinistra.
modello linguistico
Utilizzare la probabilità per valutare la probabilità che si verifichi una sequenza di parole, ovvero la misura in cui la sequenza di parole è naturale.
Rappresentazione della probabilità
Dove P(A,B) = P(A|B)*P(B) = P(B|A)*P(A)
Utilizzando il modello CBOW come modello linguistico
catena di Markov
Quando la probabilità di un evento dipende solo dagli N eventi che lo precedono, si parla di "catena di Markov di ordine N".
Restringere il contesto alle 2 parole a sinistra è una catena di Markov del secondo ordine
insufficiente
Se la finestra è troppo breve, il contesto non può essere combinato
Se la finestra è troppo lunga l'ordine delle parole nel contesto verrà ignorato.
CBOW è l'abbreviazione di Continuous Bag-Of-Words. Bag-Of-Words significa "un sacchetto di parole", il che significa che l'ordine delle parole nel sacchetto viene ignorato.
RNN ha un meccanismo in grado di ricordare le informazioni sul contesto, indipendentemente dalla lunghezza del contesto. Pertanto, i dati delle serie temporali di lunghezza arbitraria possono essere elaborati utilizzando RNN.
word2vec è un metodo volto a ottenere una rappresentazione distribuita delle parole e generalmente non viene utilizzato nei modelli linguistici.
RNN
rete neurale ricorrente
La struttura dello strato RNN
L'input al tempo t è xt, il che implica che i dati della serie temporale (x0, x1, ··· , xt, ···) verranno immessi nel livello. Quindi, nella forma corrispondente all'input, output (h0, h1, ··· , ht, ···)
L'output ha due fork, il che significa che è stata copiata la stessa cosa. Un fork nell'output diventerà il proprio input.
srotolare il ciclo
Usiamo la parola "momento" per fare riferimento all'indice dei dati delle serie temporali (ovvero, i dati di input al tempo t sono xt). Vengono utilizzate espressioni come "la t-esima parola" e "il t-esimo strato RNN", nonché espressioni come "la parola al tempo t" o "lo strato RNN al tempo t".
Lo strato RNN in ogni momento riceve due valori, che sono l'input passato a questo strato e l'output dello strato RNN precedente.
RNN ha due pesi, vale a dire il peso Wx che converte l'input x nell'output h e il peso Wh che converte l'output del precedente strato RNN nell'output al momento attuale. Inoltre, c'è un pregiudizio b.
Da un'altra prospettiva, RNN ha uno stato h, che viene continuamente aggiornato tramite la formula sopra. Quindi h può essere chiamato uno stato nascosto o un vettore di stati nascosti
I due metodi di disegno schematico sono equivalenti
Retropropagazione nel tempo
propagazione all'indietro basata sul tempo
Per trovare il gradiente basato su BPTT, i dati intermedi dello strato RNN in ogni momento devono essere salvati in memoria. Pertanto, man mano che i dati delle serie temporali si allungano, aumenta anche l'utilizzo della memoria del computer (non solo i calcoli).
BPTT troncato
Per risolvere il problema di cui sopra, quando si elaborano dati di serie temporali lunghe, la pratica comune è quella di tagliare la connessione di rete ad una lunghezza adeguata.
Le reti che sono troppo lunghe nella direzione dell'asse del tempo vengono troncate in posizioni appropriate per creare più piccole reti, quindi il metodo di backpropagation dell'errore viene eseguito sulle piccole reti ritagliate. Questo metodo è chiamato BPTT troncato (BPTT troncato).
Nel BPTT troncato, la connessione di propagazione all'indietro della rete viene interrotta, ma la connessione di propagazione in avanti viene comunque mantenuta.
Ordine di elaborazione
La prima cosa da fare è inserire i dati di input del blocco 1 (x0, ..., x9) nello strato RNN.
Eseguire prima la propagazione in avanti e poi la propagazione all'indietro per ottenere il gradiente desiderato.
Successivamente, i dati di input del blocco successivo (x10, x11, ··· , x19) vengono immessi nello strato RNN. Il calcolo di questa propagazione in avanti richiede l'ultimo stato nascosto h9 del blocco precedente, in modo che la connessione di propagazione in avanti possa essere mantenuta.
Apprendimento mini-batch del BPTT troncato
All'inizio dei dati di input è necessario effettuare un "offset" all'interno dei singoli lotti.
Avviso
Per inserire i dati in ordine
Per spostare la posizione iniziale di ciascun lotto (ciascun campione) di dati di input
Attuazione della RNN
Considerando l'apprendimento basato su BPTT troncato, la rete neurale target riceve dati di serie temporali di lunghezza T (T è qualsiasi valore) e questi stati T possono essere considerati come uno strato
Chiama uno strato che elabora T passaggi alla volta "strato Time RNN"
Il livello che esegue l'elaborazione in un unico passaggio nel livello Time RNN è chiamato "livello RNN"
Come Time RNN, i livelli che elaborano i dati delle serie temporali in modo olistico vengono denominati iniziando con la parola "Time", che è la convenzione di denominazione stabilita in questo libro. Successivamente, implementeremo anche il livello Time Affine, il livello Time Embedding, ecc.
Implementazione del livello RNN
propagazione in avanti
Propagazione all'indietro
Implementazione del livello Time RNN
propagazione in avanti
Il livello RNN temporale salva lo stato nascosto h in una variabile membro per ereditare lo stato nascosto tra i blocchi
Utilizzare il parametro stateful per registrare se viene richiamato lo stato nascosto h. Nella propagazione all'indietro, quando stateful è False, lo stato nascosto del primo strato RNN è la matrice zero.
Propagazione all'indietro
Memorizziamo il gradiente che scorre verso lo stato nascosto nel momento precedente nella variabile membro dh. Questo perché lo useremo quando parleremo di seq2seq (sequenza-sequenza) nel Capitolo 7
Implementazione di livelli per l'elaborazione di dati di serie temporali
Quadro completo dell'RNNLM
I modelli linguistici basati su RNN sono chiamati RNNLM
struttura
Il livello 1 è il livello di incorporamento, che converte gli ID delle parole in rappresentazioni distribuite delle parole (vettori di parole). Questo vettore di parole viene inserito nello strato RNN.
Il livello RNN trasmette lo stato nascosto al livello successivo (in alto) e trasmette anche lo stato nascosto al livello RNN successivo (a destra).
Lo stato nascosto emesso dallo strato RNN verso l'alto passa attraverso lo strato Affine e viene passato allo strato Softmax.
Campione
Tu dici addio, e io dico ciao
Viene inserita la prima parola, tu con ID parola 0. In questo momento, osservando la distribuzione di probabilità prodotta dal livello Softmax, possiamo vedere che la probabilità di dire è la più alta, il che indica che si prevede correttamente che la parola che appare dopo di te sarà pronunciata.
Parola 2 dice. In questo momento, l'output del livello Softmax ha una maggiore probabilità di arrivederci e ciao. Perché il livello RNN salva le informazioni passate di "tu dici" come un breve vettore di stato nascosto. Il compito dello strato RNN è passare queste informazioni allo strato Affine superiore e allo strato RNN nel momento successivo.
Implementazione del livello temporale
Struttura della rete neurale target
Affine al tempo
Il livello Time Affine non utilizza semplicemente i livelli T Affine, ma utilizza operazioni di matrice per ottenere un'elaborazione complessiva efficiente.
Tempo Softmax
L'errore di perdita è implementato in Softmax Il livello Cross Entropy Error calcola l'errore di entropia incrociata.
T Softmax con i livelli di perdita calcola ciascuno la perdita, quindi li somma insieme e fa la media, e il valore risultante viene utilizzato come perdita finale.
Apprendimento e valutazione del RNNLM
Attuazione dell'RNNLM
Valutazione del modello linguistico
Il dato di input è 1
La perplessità viene spesso utilizzata come indicatore per valutare le prestazioni di previsione dei modelli linguistici. Perplessità=1/probabilità
I dati di input sono multipli
In questo caso si presuppone che la quantità di dati sia N. tn è l'etichetta della soluzione corretta sotto forma di vettore one-hot, tnk rappresenta il valore k dei dati n-esimi e ynk rappresenta la distribuzione di probabilità (l'output di Softmax in una rete neurale). A proposito, L è la perdita della rete neurale
Maggiore è la probabilità, meglio è, mentre minore è la confusione, meglio è.
La perplessità rappresenta il numero di opzioni che possono essere scelte successivamente. Se la confusione è 1,25 significa che il numero di candidati per la parola successiva è circa 1.
Apprendimento dell'RNNLM
Classe formatori della RNNLM
Incapsulare le operazioni di cui sopra in classi
Esteso alle strutture grafiche
rete neurale ricorrente
Esistono tre livelli nascosti h1, h2 e h3, dove h1 viene calcolato da due input x1 e x2, h2 viene calcolato da altri due livelli di input x3 e x4 e h3 viene calcolato da due livelli nascosti h1 e h2.
rete grafica
RNN recintato
Togli i bagagli e viaggia leggero. --Nietzsche
Quando diciamo RNN, ci riferiamo più allo strato LSTM che all'RNN del capitolo precedente. Quando dobbiamo fare riferimento esplicitamente all'RNN del capitolo precedente, diciamo "RNN semplice" o "Elman".
Problemi con RNN semplici
Durante il processo di apprendimento, lo strato RNN apprende le dipendenze nella direzione del tempo trasmettendo "gradienti significativi" al passato. Ma il gradiente di apprendimento è difficile da controllare, il che può portare alla scomparsa o all’esplosione del gradiente.
motivo
funzione di attivazione
tan
Come puoi vedere dal grafico, il suo valore è inferiore a 1,0 e diminuisce man mano che x si allontana da 0. Ciò significa che quando il gradiente propagato all'indietro passa attraverso il nodo tanh, il suo valore diventerà sempre più piccolo. Pertanto, se si supera la funzione tanh T volte, anche il gradiente diminuirà T volte.
ReLU
Il gradiente non si degrada
Nodo MatMul (prodotto matrice).
esplosione del gradiente
Come mostrato nella figura, la dimensione del gradiente aumenta esponenzialmente con il passo temporale. Se si verifica un'esplosione del gradiente, alla fine porterà a un overflow e a valori come NaN (Not a Number, valore non numerico). Di conseguenza, l'apprendimento della rete neurale non funzionerà correttamente.
il gradiente scompare
Come mostrato nella figura, la dimensione del gradiente diminuisce esponenzialmente con il passo temporale. Se si verifica la scomparsa del gradiente, il gradiente diventerà rapidamente più piccolo. Una volta che il gradiente diventa piccolo, il gradiente del peso non può essere aggiornato e il modello non può apprendere le dipendenze a lungo termine.
ragione per cambiare
La matrice Wh viene moltiplicata ripetutamente T volte. Se Wh fosse uno scalare il problema sarebbe semplice: quando Wh è maggiore di 1 il gradiente aumenta esponenzialmente; quando Wh è minore di 1 il gradiente diminuisce esponenzialmente;
Se Wh è una matrice. A questo punto i valori singolari della matrice diventeranno indicatori. In parole povere, i valori singolari di una matrice rappresentano il grado di dispersione dei dati. A seconda che questo valore singolare (più precisamente il massimo di più valori singolari) sia maggiore di 1, si possono prevedere cambiamenti nell'entità del gradiente.
Contromisure contro i gradienti esplosivi
Esiste un metodo consolidato per risolvere l'esplosione del gradiente, chiamato ritaglio del gradiente.
Si presuppone qui che i gradienti di tutti i parametri utilizzati dalla rete neurale possano essere integrati in una variabile e rappresentati dal simbolo g. Quindi impostare la soglia su soglia. A questo punto, se la norma L2 g del gradiente è maggiore o uguale alla soglia, il gradiente viene corretto come descritto sopra.
Gradiente di fuga e LSTM
Nell'apprendimento RNN, anche la scomparsa del gradiente è un grosso problema. Per risolvere questo problema, la struttura dello strato RNN deve essere radicalmente modificata. Qui sta per apparire l'argomento di questo capitolo, Gated RNN. Sono stati proposti molti framework Gated RNN (strutture di rete), tra cui LSTM e GRU sono quelli rappresentativi.
Interfaccia LS™
LSTM è l'abbreviazione di Long Short-Term Memory, il che significa che è in grado di mantenere la memoria a breve termine (Short-Term Memory) per un lungo periodo.
Innanzitutto esprimi il calcolo di tanh(h(t−1)*Wh xt*Wx b) come un nodo rettangolare tanh (ht−1 e xt sono vettori riga)
Confrontiamo l'interfaccia (input e output) di LSTM e RNN
La differenza tra l'interfaccia di LSTM e RNN è che anche LSTM ha il percorso c. Questa c è chiamata unità di memoria (o semplicemente "unità"), che equivale al reparto di memoria dedicato di LSTM.
La caratteristica dell'unità di memoria è che riceve e trasmette dati solo all'interno dello strato LSTM. Vale a dire, dal lato che riceve l'uscita dell'LSTM, l'uscita dell'LSTM ha solo il vettore di stato nascosto h. L'unità di memoria c è invisibile al mondo esterno e non abbiamo nemmeno bisogno di considerare la sua esistenza.
La struttura dello strato LSTM
ct memorizza la memoria dell'LSTM al tempo t, che può essere considerata contenente tutte le informazioni necessarie dal passato al tempo t. Quindi, in base al ct di questa memoria portante, viene emesso lo stato nascosto ht.
calcolare
L'unità di memoria corrente ct viene calcolata sulla base dei tre ingressi c(t−1) h(t−1) e xt tramite "una sorta di calcolo" (descritto più avanti).
Lo stato nascosto ht viene calcolato utilizzando il ct aggiornato, la formula è ht = tanh(ct)
Cancello
Dai dati viene appreso automaticamente anche il grado di apertura e chiusura della porta. Il grado di apertura e chiusura è rappresentato da un numero reale compreso tra 0,0 e 1,0 (1,0 è completamente aperto).
cancello di uscita
Lo stato nascosto ht applica la funzione tanh solo all'unità di memoria ct e consideriamo l'applicazione di porte a tanh(ct). Poiché questa porta gestisce l'output del successivo stato nascosto ht, viene chiamata porta di output.
Il gate di uscita viene calcolato come segue. La funzione sigmoide è rappresentata da σ()
ht può essere calcolato dal prodotto di o e tanh(ct). Il metodo di calcolo è il prodotto per elementi, che è il prodotto degli elementi corrispondenti. È anche chiamato prodotto di Hadamard.
porta dell'oblio
Ora aggiungiamo una porta per dimenticare i ricordi non necessari sull'unità di memoria c(t−1), che qui è chiamata porta della dimenticanza.
Il calcolo del dimenticare gate è il seguente
ct si ottiene dal prodotto di questa f e del corrispondente elemento della precedente unità di memoria ct−1
nuova unità di memoria
Ora vogliamo anche aggiungere a questa unità di memoria alcune nuove informazioni che dovrebbero essere ricordate, per questo aggiungiamo un nuovo nodo tanh
Il risultato calcolato in base al nodo tanh viene aggiunto all'unità di memoria ct−1 al momento precedente.
Il ruolo di questo nodo tanh non è quello di gate, ma di aggiungere nuove informazioni all'unità di memoria. Pertanto, non utilizza la funzione sigmoidea come funzione di attivazione, ma utilizza la funzione tanh.
cancello d'ingresso
Aggiungiamo una porta a g nella Figura 6-17. Questa porta appena aggiunta è chiamata qui porta di input.
La porta di ingresso determina il valore di ciascun elemento della nuova informazione g. Le porte di input non aggiungono nuove informazioni senza considerazione; piuttosto, scelgono quali informazioni aggiungere. In altre parole, il gate di input aggiunge nuove informazioni ponderate.
La porta di ingresso viene calcolata come segue
Flusso gradiente LSTM
La propagazione all'indietro delle celle di memoria avviene solo attraverso i nodi " " e "×". Il nodo " " esce dal gradiente a monte così com'è, quindi il gradiente non cambia (degenera). Il calcolo del nodo "×" non è un prodotto di matrice, ma il prodotto degli elementi corrispondenti (prodotto Hadama), che non causerà variazioni di gradiente.
Implementazione dell'LSTM
Per modifiche affini come x*Wx h*Wh b, può essere integrato in un'unica formula
Le librerie di matrici sono generalmente più veloci quando si calcolano "matrici di grandi dimensioni" e il codice sorgente è più pulito gestendo insieme i pesi.
Modello linguistico utilizzando LSTM
Il modello linguistico implementato qui è quasi lo stesso del capitolo precedente L'unica differenza è che dove nel capitolo precedente è stato utilizzato il livello Time RNN, questa volta viene utilizzato il livello Time LSTM.
Ulteriori miglioramenti a RNNLM
Multistrato di strati LSTM
Approfondire il livello LSTM (impilando più livelli LSTM) spesso funziona bene.
Quanti strati sono appropriati?
Poiché il numero di livelli è un iperparametro, deve essere determinato in base alla complessità del problema da risolvere e alla dimensione dei dati di training che possono essere forniti.
Nel caso dell'apprendimento di un modello linguistico sul set di dati PTB, si possono ottenere risultati migliori quando il numero di strati LSTM è compreso tra 2 e 4
Il modello GNMT utilizzato in Google Translate è sovrapposto a una rete di 8 strati di LSTM.
Elimina l'overfitting in base al Dropout
Approfondendo la profondità, è possibile creare modelli più espressivi, ma tali modelli spesso soffrono di un adattamento eccessivo. A peggiorare le cose, le RNN sono più inclini al sovraadattamento rispetto alle reti neurali feedforward convenzionali, quindi le contromisure di sovraadattamento per le RNN sono molto importanti.
Contromisure
Aggiungi dati di allenamento
Ridurre la complessità del modello
Regolarizzazione
Ritirarsi
Ritirarsi
Il dropout seleziona casualmente un sottoinsieme di neuroni, quindi li ignora e interrompe la trasmissione dei segnali in avanti.
Posizione di inserimento del livello di esclusione
Abbandono regolare
struttura degli errori
Se Dropout viene inserito nella direzione delle serie temporali, le informazioni verranno gradualmente perse nel tempo man mano che il modello apprende.
Struttura corretta
Inserisci il livello Dropout verticalmente
Abbandono della variazione
Condividendo la maschera tra Dropout dello stesso livello, la maschera viene "fissa". In questo modo, anche il modo in cui le informazioni vengono perse viene "fissato", in modo da evitare la perdita esponenziale di informazioni che si verifica con il Dropout regolare.
condivisione del peso
La legatura del peso può essere letteralmente tradotta come "legatura del peso".
Il trucco per legare (condividere) i pesi del livello Incorporamento e del livello Affine è la condivisione del peso. Condividendo i pesi tra questi due livelli, il numero di parametri appresi può essere notevolmente ridotto. Oltre a ciò, migliora la precisione.
Migliore implementazione dell'RNNLM
Ricerca di frontiera
Genera testo basato su RNN
Non esiste un articolo perfetto, così come non esiste la disperazione perfetta. ——Haruki Murakami "Ascolta il canto del vento"
Genera testo utilizzando modelli linguistici
Come generare la nuova parola successiva
Seleziona la parola con la probabilità più alta, il risultato è determinato in modo univoco
Le parole con alta probabilità sono facili da selezionare, le parole con bassa probabilità sono difficili da selezionare
Implementazione della generazione di testo
Migliore generazione del testo
Utilizzare modelli linguistici migliori
modello seq2seq
Seq2Seq (modello da sequenza a sequenza, da sequenza a sequenza)
Modelli per convertire i dati delle serie temporali in altri dati delle serie temporali
Il principio di seq2seq
Questo modello ha due moduli: Encoder e Decoder. Il codificatore codifica i dati di ingresso e il decodificatore decodifica i dati codificati.
seq2seq è costituito da due strati LSTM, il codificatore LSTM e il decodificatore LSTM.
Lo stato nascosto h di LSTM è un vettore di lunghezza fissa. La differenza tra questo e il modello della sezione precedente è che lo strato LSTM riceve il vettore h. Questo singolo, piccolo cambiamento ha consentito ai modelli linguistici ordinari di evolversi in decodificatori in grado di gestire la traduzione.
Un semplice tentativo di conversione dei dati delle serie temporali
Cercando di fare in modo che seq2seq esegua calcoli di addizione
Dati di serie temporali di lunghezza variabile
Riempimento
Compila i dati originali con dati non validi (privi di significato), da E allinea la lunghezza dei dati.
Quando si utilizza il riempimento è necessario aggiungere un'elaborazione specifica per il riempimento a seq2seq
Quando il riempimento viene immesso nel decodificatore, la sua perdita non deve essere calcolata (questo può essere risolto aggiungendo una funzione Softmax con maschera di perdita al livello)
Quando si inserisce l'input nel codificatore, il livello LSTM dovrebbe emettere l'input dal momento precedente così com'è
set di dati additivi
Implementazione di seq2seq
Miglioramenti a seq2seq
Invertire i dati di input
In molti casi, l'apprendimento progredisce più velocemente e la precisione finale migliora dopo l'utilizzo di questa tecnica.
Intuitivamente, la propagazione dei gradienti può essere più fluida ed efficace dopo aver invertito i dati.
sbirciando
L'encoder che utilizza il casco si chiama Peeky Decoder e il seq2seq che utilizza Peeky Decoder si chiama Peeky seq2seq.
Il codificatore converte la frase in input in un vettore h di lunghezza fissa, che concentra tutte le informazioni richieste dal decodificatore. È l'unica fonte di informazioni per il decoder.
L'uscita h del codificatore, che concentra informazioni importanti, può essere assegnata ad altri strati del decodificatore
Due vettori vengono immessi contemporaneamente nel livello LSTM e nel livello Affine, che in realtà rappresenta la concatenazione dei due vettori.
Applicazione di seq2seq
Traduzione automatica: converti "testo in una lingua" in "testo in un'altra lingua"
Riepilogo automatico: converte "un testo lungo" in un "riepilogo breve"
Sistema di domande e risposte: converti la "domanda" in "risposta"
Risposta automatica email: converti il "testo email ricevuto" in "testo di risposta"
chatbot
apprendimento dell'algoritmo
Descrizione automatica dell'immagine
Attenzione
L'attenzione è tutto. ——Titolo dell'articolo di Vaswani
L’attenzione è senza dubbio una delle tecnologie più importanti nel campo del deep learning negli ultimi anni. L'obiettivo di questo capitolo è comprendere la struttura dell'Attenzione a livello di codice e quindi applicarla a problemi pratici per sperimentarne i meravigliosi effetti.
Struttura dell'attenzione
Problemi con seq2seq
Un codificatore viene utilizzato in seq2seq per codificare i dati della serie temporale, quindi le informazioni codificate vengono passate al decodificatore. A questo punto, l'uscita del codificatore è un vettore a lunghezza fissa.
I vettori a lunghezza fissa significano che qualunque sia la lunghezza dell'istruzione di input (non importa quanto lunga), verrà convertita in un vettore della stessa lunghezza.
Miglioramenti dell'encoder
La lunghezza dell'output del codificatore dovrebbe cambiare di conseguenza in base alla lunghezza del testo di input
Poiché il codificatore elabora da sinistra a destra, in senso stretto, il vettore "cat" contiene solo le informazioni delle tre parole "我的人", "は" e "猫". Considerando l'equilibrio generale, è meglio includere le informazioni attorno alla parola "gatto" in modo uniforme. In questo caso, l’RNN bidirezionale (o LSTM bidirezionale) che elabora i dati delle serie temporali da entrambe le direzioni è più efficace.
Miglioramenti al decodificatore
In precedenza abbiamo inserito l'"ultimo" stato nascosto dello strato LSTM del codificatore nello stato nascosto "iniziale" dello strato LSTM del decodificatore.
Il decodificatore nel capitolo precedente utilizzava solo l'ultimo stato nascosto del livello LSTM del codificatore. Se usi hs, solo l'ultima riga viene estratta e passata al decodificatore. Successivamente miglioriamo il decoder per poter utilizzare tutti gli hs.
Ci concentriamo su una determinata parola (o insieme di parole) e convertiamo questa parola in qualsiasi momento. Ciò consente a seq2seq di apprendere la corrispondenza tra "quali parole nell'input e nell'output sono correlate a quali parole".
Esempio
La mia generazione [わがはい] = I
猫[ねこ] = gatto
Molti studi sfruttano la conoscenza delle corrispondenze di parole come "gatto = gatto". Tali informazioni che indicano la corrispondenza tra parole (o frasi) sono chiamate allineamento. Finora, l'allineamento è stato eseguito principalmente manualmente, ma la tecnologia Attenzione che introdurremo ha introdotto con successo automaticamente l'idea di allineamento in seq2seq. Questa è anche l'evoluzione dal "funzionamento manuale" all'"automazione meccanica".
cambiamenti strutturali
Come calcolare
L'operazione di "selezione" può essere sostituita da un'operazione differenziabile? Invece di "selezione singola", è meglio "selezionare tutto". Calcoliamo separatamente il peso che rappresenta l'importanza (valore del contributo) di ciascuna parola.
a Come una distribuzione di probabilità, ogni elemento è uno scalare da 0,0 a 1,0 e la somma è 1. Quindi, calcolare la somma ponderata del peso che rappresenta l'importanza di ciascuna parola e del vettore di parole hs per ottenere il vettore di destinazione.
Durante l'elaborazione dei dati della sequenza, la rete dovrebbe prestare maggiore attenzione alle parti importanti dell'input e ignorare le parti non importanti. Pesa esplicitamente le parti importanti della sequenza di input apprendendo i pesi delle diverse parti, in modo che il modello possa essere pagato meglio particolare attenzione alle informazioni relative all’output. La chiave del meccanismo di attenzione è introdurre un meccanismo per calcolare dinamicamente il peso di ciascuna posizione nella sequenza di input, in modo che ad ogni passo temporale, diverse parti della sequenza di input vengano pesate e sommate per ottenere l'output del passo temporale corrente . Durante la generazione di ciascun output, il decodificatore presta un'attenzione diversa alle diverse parti della sequenza di input, consentendo al modello di concentrarsi meglio sulle informazioni importanti nella sequenza di input.
Apprendimento del peso a
Il nostro obiettivo è esprimere numericamente quanto "simile" sia questa h ai singoli vettori di parole di hs.
Qui utilizziamo il prodotto interno vettoriale più semplice.
Esistono diversi modi per calcolare la somiglianza dei vettori. Oltre ai prodotti interni, esiste anche la pratica di utilizzare piccole reti neurali per produrre punteggi.
Successivamente, s viene regolarizzato utilizzando la vecchia funzione Softmax
Integrare
Implementazione di seq2seq con attenzione
Valutazione dell'attenzione
Ci siamo rivolti per confermare l'effetto di seq2seq con Attenzione studiando il problema della "conversione del formato della data".
Problema di conversione del formato della data
Apprendimento di seq2seq con attenzione
Visualizzazione dell'attenzione
Altri argomenti sull'attenzione
RNN bidirezionale
Se consideriamo l'equilibrio complessivo, vogliamo che il vettore contenga le informazioni attorno alla parola "gatto" in modo più uniforme.
LSTM bidirezionale aggiunge un'elaborazione del livello LSTM nella direzione opposta sopra il livello LSTM precedente.
Unisci gli stati nascosti dei due strati LSTM in ogni momento e usalo come vettore di stato nascosto finale (oltre allo splicing, puoi anche "somma" o "media", ecc.)
Come utilizzare il livello Attenzione
L'output dello strato di attenzione (vettore di contesto) viene collegato all'input dello strato LSTM nel momento successivo. Attraverso questa struttura, lo strato LSTM è in grado di utilizzare le informazioni del vettore di contesto. Al contrario, il modello che abbiamo implementato utilizza vettori di contesto nel livello Affine.
Approfondimento di seq2seq e skip connessione
Approfondire lo strato RNN
seq2seq con attenzione utilizzando 3 strati di strato LSTM
collegamento residuo
Alla giunzione della connessione residua vengono aggiunte due uscite.
Poiché l'addizione propaga i gradienti "così come sono" durante la propagazione all'indietro, i gradienti nelle connessioni residue possono essere propagati al livello precedente senza alcun effetto. In questo modo, anche se lo strato viene approfondito, il gradiente può propagarsi normalmente senza scomparsa del gradiente (o esplosione del gradiente) e l'apprendimento può procedere senza intoppi.
Applicazione dell'attenzione
GNMT
La storia della traduzione automatica
Traduzione basata su regole
Utilizza la traduzione basata sui casi
Traduzione basata sulle statistiche
Traduzione automatica neurale
Dal 2016, Google Translate utilizza la traduzione automatica neurale per i servizi reali. Sistema di traduzione automatica chiamato GNMT
GNMT richiede grandi quantità di dati e risorse di calcolo. GNMT utilizza una grande quantità di dati di addestramento (1 modello) appresi su quasi 100 GPU per 6 giorni. Inoltre, GNMT sta anche cercando di migliorare ulteriormente la precisione basandosi su tecnologie come l’apprendimento d’insieme e l’apprendimento per rinforzo che possono apprendere 8 modelli in parallelo.
Trasformatore
RNN è in grado di gestire bene i dati di serie temporali a lunghezza variabile. Tuttavia, la RNN presenta anche delle lacune, come ad esempio problemi di elaborazione parallela.
L'RNN deve essere calcolato passo dopo passo in base ai risultati del calcolo del momento precedente, quindi è (praticamente) impossibile calcolare l'RNN in parallelo nella direzione del tempo. Ciò diventerà un grosso collo di bottiglia quando si esegue il deep learning in un ambiente di calcolo parallelo utilizzando GPU, quindi abbiamo la motivazione per evitare RNN.
Transformer non utilizza RNN, ma utilizza l'attenzione per l'elaborazione. Diamo una breve occhiata a questo Transformer.
Autoattenzione
Transformer si basa sull'Attenzione, che utilizza la tecnica dell'Auto-Attenzione, che è importante. L'autoattenzione si traduce letteralmente come "la propria attenzione a se stessi", vale a dire, si tratta di attenzione basata su dati di serie temporali, con l'obiettivo di osservare la relazione tra ciascun elemento di dati di serie temporali e altri elementi.
Utilizza una rete neurale completamente connessa con un livello nascosto e la funzione di attivazione ReLU. Inoltre Nx nella figura significa che gli elementi circondati dallo sfondo grigio sono impilati N volte.
NTM
NTM (Macchina di Turing Neurale)
Le reti neurali possono anche acquisire funzionalità aggiuntive utilizzando dispositivi di archiviazione esterni.
Basandosi sull'attenzione, codificatori e decodificatori implementano "operazioni di memoria" nei computer. In altre parole, questo può essere interpretato come se il codificatore scrivesse le informazioni necessarie in memoria e il decodificatore leggesse dalla memoria Ottieni le informazioni necessarie.
Per imitare il funzionamento della memoria del computer, il funzionamento della memoria di NTM utilizza due attenzioni,
L'Attenzione basata sul contenuto è la stessa dell'Attenzione che abbiamo introdotto prima e viene utilizzata per trovare vettori simili di un determinato vettore (vettore di query) dalla memoria.
L'attenzione basata sulla posizione viene utilizzata per spostarsi avanti e indietro rispetto all'indirizzo di memoria (il peso di ciascuna posizione nella memoria) su cui ci si è concentrati all'ultimo momento. Qui omettiamo la discussione dei suoi dettagli tecnici, che possono essere ottenuti attraverso un'operazione di convoluzione unidimensionale. La funzione di movimento basata sulla posizione della memoria può riprodurre l'attività unica del computer di "leggere avanzando (un indirizzo di memoria)".
NTM ha risolto con successo problemi di memoria a lungo termine, problemi di ordinamento (organizzazione dei numeri da grandi a piccoli), ecc.
Ottimizzazione e regolarizzazione della rete
Nessun trucco matematico può compensare la mancanza di informazioni [Cornelio Lanczos]
Due grandi difficoltà
Ottimizzazione
Difficile da ottimizzare e richiede molti calcoli
problema di generalizzazione
La capacità di adattamento è troppo forte ed è facile adattarsi eccessivamente.
Ottimizzazione della rete
Difficoltà nell'ottimizzazione della rete
Diversità della struttura della rete
È difficile trovare un metodo di ottimizzazione generale. Diversi metodi di ottimizzazione presentano anche differenze relativamente grandi nelle diverse strutture di rete.
Difficoltà con spazi a bassa dimensione
Come scegliere i parametri di inizializzazione
Fuga dall'ottimo locale
Difficoltà con spazi ad alta dimensionalità
Come scegliere i parametri di inizializzazione
Come uscire da un punto di sella
In alcune dimensioni è il punto più alto, in altre dimensioni è il punto più basso
fondo piatto
Ci sono molti parametri nelle reti neurali profonde e c'è un certo grado di ridondanza, per cui ogni singolo parametro ha un impatto relativamente piccolo sulla perdita finale.
bloccato nel minimo locale
ottimizzazione
Tipo di metodo di discesa del gradiente
discesa del gradiente batch
discesa del gradiente stocastico
discesa del gradiente in mini-batch
Se si utilizza la discesa del gradiente, il calcolo del gradiente sull'intero dato di training per ogni iterazione richiede più risorse di calcolo. Inoltre, i dati in set di addestramento di grandi dimensioni sono spesso molto ridondanti e non è necessario calcolare i gradienti sull'intero set di addestramento.
decadimento del tasso di apprendimento
Il tasso di apprendimento dovrebbe essere mantenuto maggiore all'inizio per garantire la velocità di convergenza e minore quando converge vicino al punto ottimale per evitare oscillazioni avanti e indietro.
tipo
Decadimento temporale inverso
decadimento esponenziale
decadimento esponenziale naturale
β è il tasso di attenuazione, generalmente assume un valore di 0,96.
Esistono anche metodi per regolare in modo adattivo il tasso di apprendimento, come AdaGrad, RMSprop, AdaDelta, ecc.
Metodo AdaGrad
Tra le tecniche efficaci per il tasso di apprendimento c'è un metodo chiamato decadimento del tasso di apprendimento, che diminuisce gradualmente il tasso di apprendimento man mano che l'apprendimento procede.
AdaGrad porta ulteriormente questa idea, regolando il tasso di apprendimento in modo appropriato per ciascun elemento dei parametri e imparando allo stesso tempo
Ada deriva dalla parola inglese Adaptive, che significa "appropriato"
Come il precedente SGD, W rappresenta il parametro del peso da aggiornare, la derivata parziale rappresenta il gradiente e n rappresenta il tasso di apprendimento.
Ma appare una nuova variabile h, che memorizza la somma dei quadrati di tutti i valori del gradiente precedenti. Pertanto, più profondo è l'apprendimento, minore è l'ampiezza dell'aggiornamento.
Metodo RMSProp
Se impari all'infinito, l'importo dell'aggiornamento diventerà 0
Il metodo RMSProp non aggiunge tutti i gradienti passati allo stesso modo, ma li dimentica gradualmente e riflette più informazioni sui nuovi gradienti durante l'operazione di addizione.
Tecnicamente questa operazione si chiama “media mobile esponenziale”, che riduce esponenzialmente la scala dei gradienti passati.
Ottimizzazione della direzione del gradiente
Metodo della quantità di moto
Nella discesa del gradiente mini-batch, se il numero di campioni selezionati ogni volta è relativamente piccolo, la perdita diminuirà in modo oscillante.
Utilizzando il gradiente medio nell'ultimo periodo di tempo invece del gradiente al momento attuale come direzione di aggiornamento dei parametri.
chiamato anche metodo della quantità di moto
Svantaggi dell'SGD
f(x,y)=(1/20)*x^2 y^2
Percorso di aggiornamento ottimizzato basato su SGD: movimento verso il valore minimo (0, 0) a zigzag, bassa efficienza
modi per migliorare
Come il precedente SGD, W rappresenta il parametro del peso da aggiornare, la derivata parziale rappresenta il gradiente e n rappresenta il tasso di apprendimento.
Ma appare una nuova variabile v, che corrisponde alla velocità fisica, che può essere intesa come la forza esercitata sull'oggetto nella direzione del gradiente.
Metodo Adamo
Lo slancio si muove secondo le regole fisiche di una palla che rotola in una ciotola e AdaGrad regola il ritmo di aggiornamento in modo appropriato per ciascun elemento del parametro. Combinarli è un'idea di Adam
Non esiste (ancora) un metodo che funzioni bene su tutti i problemi. Ciascuno di questi quattro metodi ha le proprie caratteristiche e ognuno ha i propri problemi che è bravo a risolvere e problemi che non è bravo a risolvere.
taglio del gradiente
Se il gradiente aumenta improvvisamente, l'utilizzo di un gradiente elevato per aggiornare i parametri porterà ad un allontanamento dal punto ottimale.
Quando il modulo del gradiente è maggiore di una certa soglia, il gradiente viene troncato.
Limita il modulo del gradiente a un intervallo e troncalo quando il modulo del gradiente è inferiore o maggiore di questo intervallo.
tipo
Troncare per valore
gt = max(min(gt, b), a).
Troncare secondo lo stampo
Inizializzazione dei parametri
Inizializzazione della distribuzione gaussiana
Il metodo di inizializzazione gaussiano è il metodo di inizializzazione più semplice. I parametri vengono inizializzati in modo casuale da una distribuzione gaussiana con una media fissa (come 0) e una varianza fissa (come 0,01).
Quando il numero di connessioni di input di un neurone è n(in), il suo peso di connessione di input può essere impostato per essere inizializzato con la distribuzione gaussiana di N(0,sqrt(1/nin)).
Se si considera anche il numero di connessioni di uscita nout, è possibile inizializzarlo secondo la distribuzione gaussiana di N(0,sqrt(2/(nin nout)))
Inizializzazione uniformemente distribuita
L'inizializzazione della distribuzione uniforme utilizza la distribuzione uniforme per inizializzare i parametri entro un dato intervallo [−r, r]. L'impostazione dell'iperparametro r può anche essere regolata in modo adattivo in base al numero di connessioni dei neuroni.
Tipo di funzione di attivazione
funzione logistica
tan
Valore iniziale di Saverio
Abbiamo provato a utilizzare i valori iniziali di peso raccomandati nell'articolo di Xavier Glorot et al.
Se il numero di nodi nel livello precedente è n, il valore iniziale utilizza una distribuzione gaussiana con una deviazione standard di (1/sqrt(n))
Valore iniziale del peso ReLU
Quando la funzione di attivazione utilizza ReLU, si consiglia generalmente di utilizzare il valore iniziale dedicato a ReLU, che è il valore iniziale raccomandato da Kaiming He et al., noto anche come "valore iniziale He".
Quando il numero di nodi nel livello corrente è n, il valore iniziale di He utilizza una distribuzione gaussiana con una deviazione standard di (2/sqrt(n))
Preelaborazione dei dati
diverse unità
Le diverse fonti e unità di misura di ciascuna caratteristica dimensionale faranno sì che l'intervallo di distribuzione di questi valori di caratteristica sia molto diverso. Quando calcoliamo la distanza euclidea tra diversi campioni, le caratteristiche con un ampio intervallo di valori giocheranno un ruolo dominante.
normalizzazione del ridimensionamento
L'intervallo di valori di ciascuna caratteristica viene normalizzato su [0, 1] o [−1, 1] mediante ridimensionamento.
normalizzazione standard
Chiamata anche normalizzazione del punteggio z
Ogni caratteristica dimensionale viene elaborata per conformarsi alla distribuzione normale standard (la media è 0, la deviazione standard è 1).
Ridondanza dei dati
Dopo che i dati di input sono stati sbiancati, la correlazione tra le funzionalità è bassa e tutte le funzionalità hanno la stessa varianza.
Uno dei modi principali per ottenere lo sbiancamento è utilizzare l'analisi delle componenti principali per rimuovere la correlazione tra i componenti.
Normalizzazione strato per strato
Quando si utilizza la discesa del gradiente stocastico per addestrare una rete, ogni aggiornamento dei parametri causerà la modifica della distribuzione degli input su ciascun livello al centro della rete. Quanto più profondo è lo strato, tanto più evidente sarà il cambiamento della distribuzione del suo input.
normalizzazione batch
Chiamato anche normalizzazione batch, metodo BN
Affinché ogni strato abbia l'ampiezza adeguata, la distribuzione dei valori di attivazione è "costretta" ad essere modificata.
Eseguire la regolarizzazione in modo che la media della distribuzione dei dati sia 0 e la varianza sia 1.
Qualsiasi strato intermedio nella rete neurale può essere normalizzato.
vantaggio
Può far sì che l’apprendimento avvenga rapidamente (può aumentare il tasso di apprendimento)
Meno dipendente dai valori iniziali (non così sensibile ai valori iniziali)
Eliminare l'overfitting (ridurre la necessità di Dropout, ecc.)
Livello norma batch
Affine->Norma batch->ReLU
normalizzazione degli strati
Limitazioni della normalizzazione batch
La normalizzazione batch è un'operazione di normalizzazione su un singolo neurone in uno strato intermedio, quindi il numero di campioni mini-batch non deve essere troppo piccolo, altrimenti sarà difficile calcolare l'informazione statistica di un singolo neurone.
Se la distribuzione dell'input netto di un neurone cambia dinamicamente in una rete neurale, come una rete neurale ricorrente, l'operazione di normalizzazione batch non può essere applicata
La normalizzazione dello strato normalizza tutti i neuroni in uno strato intermedio.
La normalizzazione batch è molto efficace nelle reti neurali convoluzionali (CNN), mentre la normalizzazione dei livelli è più comune nelle reti neurali ricorrenti (RNN) e nelle reti Transformer.
Ottimizzazione degli iperparametri
composizione
Struttura della rete
connessioni tra neuroni
Numero di strati
Numero di neuroni per strato
Tipo di funzione di attivazione
Parametri di ottimizzazione
Metodi di ottimizzazione della rete
tasso di apprendimento
Dimensione del campione per piccoli lotti
coefficiente di regolarizzazione
Dati di convalida (set di convalida)
Le prestazioni dell'iperparametro non possono essere valutate utilizzando i dati di test
Se i dati del test vengono utilizzati per confermare la "bontà" del valore dell'iperparametro, il valore dell'iperparametro verrà regolato per adattarsi solo ai dati del test.
I dati di training vengono utilizzati per l'apprendimento dei parametri (pesi e bias) mentre i dati di convalida vengono utilizzati per la valutazione delle prestazioni degli iperparametri. Per confermare la capacità di generalizzazione, i dati del test dovrebbero essere utilizzati alla fine (idealmente solo una volta)
Ottimizzazione
ricerca in griglia
Scegli quello giusto provando tutte le combinazioni di iperparametri Metodi per la configurazione degli iperparametri di gruppo.
Scegli diversi valori di "esperienza". Ad esempio, possiamo impostare il tasso di apprendimento α α ∈ {0,01, 0,1, 0,5, 1,0}.
ricerca casuale
Imposta l'intervallo di iperparametri e campiona in modo casuale dall'intervallo impostato di iperparametri
Valutare l'accuratezza del riconoscimento attraverso i dati di verifica (ma impostare l'epoca molto piccola)
Ripetere quanto sopra (100 volte, ecc.) e restringere l'intervallo degli iperparametri in base ai risultati della loro precisione di riconoscimento
Ottimizzazione bayesiana
Allocazione dinamica delle risorse
regolarizzazione della rete
Scopo: eliminare il sovradattamento
decadimento del peso
Il decadimento del peso è un metodo che è stato spesso utilizzato per sopprimere il sovradattamento. Questo metodo penalizza i pesi elevati durante il processo di apprendimento.
In poche parole, la funzione di perdita diventa
λ è un iperparametro che controlla la forza della regolarizzazione
metodo di scarto
Metodo di abbandono
Se il modello di rete diventa molto complesso, sarà difficile gestirlo utilizzando solo il decadimento del peso.
Il metodo di eliminazione casuale dei neuroni durante il processo di apprendimento sceglie di scartare i neuroni in modo casuale ogni volta. Il modo più semplice è impostare una probabilità fissa p. Per ogni neurone esiste una probabilità p di determinare se trattenerlo.
aumento dei dati
Ruota, capovolgi, ridimensiona, trasla, aggiungi rumore
levigatura dell'etichetta
Aggiungere disturbo alle etichette di output per evitare un adattamento eccessivo del modello
Metodo di apprendimento indipendente dal modello
Apprendimento d'insieme
Integrare più modelli attraverso una determinata strategia per migliorare l'accuratezza del processo decisionale attraverso il processo decisionale di gruppo. Il problema principale nell’apprendimento d’insieme è come integrare più modelli. Le strategie di integrazione più comunemente utilizzate includono la media diretta, la media ponderata, ecc.
Autoformazione e formazione collaborativa
Appartengono tutti all'apprendimento semi-supervisionato
auto allenamento
L'autoaddestramento consiste nell'utilizzare innanzitutto i dati etichettati per addestrare un modello, quindi utilizzare questo modello per prevedere le etichette dei campioni senza etichetta, aggiungere campioni con una confidenza di previsione relativamente elevata e le relative pseudo etichette previste al set di addestramento, quindi addestrare nuovamente il nuovo modello, e continua a ripetere questo processo.
formazione collaborativa
La co-formazione è un metodo migliorato di auto-formazione
Due classificatori basati su punti di vista diversi si promuovono a vicenda. Molti dati hanno prospettive diverse che sono relativamente indipendenti.
A causa dell'indipendenza condizionata delle diverse prospettive, i modelli formati su prospettive diverse equivalgono a comprendere il problema da prospettive diverse e hanno una certa complementarità. La formazione collaborativa è un metodo che utilizza questa complementarità per svolgere attività di autoformazione. Innanzitutto, addestra due modelli f1 e f2 in base a diverse prospettive sul set di training, quindi utilizza f1 e f2 per effettuare previsioni sul set di dati senza etichetta, seleziona campioni con una confidenza di previsione relativamente elevata da aggiungere al set di training e riqualifica due prospettive diverse. modellare e ripetere questo processo.
apprendimento multitasking
I modelli generali di machine learning sono mirati a un singolo compito specifico, come il riconoscimento di cifre scritte a mano, il rilevamento di oggetti, ecc. I modelli per compiti diversi vengono appresi separatamente nei rispettivi set di formazione.
Se due attività sono correlate, ci sarà una certa conoscenza condivisa tra loro e questa conoscenza sarà utile per entrambe le attività. Queste conoscenze condivise possono essere rappresentazioni (caratteristiche), parametri del modello o algoritmi di apprendimento, ecc.
tipo
trasferire l'apprendimento
Se è presente un'attività correlata che dispone già di una grande quantità di dati di addestramento, sebbene la distribuzione di questi dati di addestramento sia diversa da quella dell'attività di destinazione, a causa della scala relativamente ampia dei dati di addestramento, presupponiamo di poterne apprendere alcuni conoscenza generalizzabile da esso, allora questa conoscenza sarà utile per i compiti Target sarà di qualche aiuto. Come trasferire la conoscenza generalizzabile nei dati di addestramento dei compiti correlati al compito di destinazione è il problema da risolvere mediante il trasferimento dell'apprendimento.
L'apprendimento per trasferimento si riferisce al processo di trasferimento della conoscenza tra due campi diversi, utilizzando la conoscenza appresa nel dominio di origine (Source Domain) DS per facilitare i compiti di apprendimento nel dominio di destinazione (Target Domain) DT. Il numero di campioni di addestramento nel dominio di origine è generalmente molto maggiore di quello nel dominio di destinazione.
Classificazione
apprendimento di trasferimento induttivo
Sul set di dati di addestramento viene appreso un modello che minimizza il rischio atteso (ovvero il tasso di errore sulla distribuzione dei dati reali).
Derivazione dell'apprendimento di trasferimento
Impara un modello che riduce al minimo l'errore su un dato set di test
Il fine-tuning è un metodo di applicazione del trasferimento dell'apprendimento. Di solito si riferisce all'utilizzo di nuovi set di dati specifici per un compito per eseguire una formazione aggiuntiva sulla base di un modello già addestrato per migliorare le prestazioni del modello su un compito specifico. Lo scopo del perfezionamento è utilizzare la conoscenza generale appresa dal modello pre-addestrato su dati su larga scala per accelerare e ottimizzare il processo di apprendimento su compiti specifici.
l'apprendimento permanente
domanda
Una volta completato l'addestramento, il modello rimane fisso e non viene più aggiornato in modo iterativo.
È ancora molto difficile per un modello avere successo in molti compiti diversi contemporaneamente.
L'apprendimento permanente, chiamato anche apprendimento continuo, si riferisce alla capacità di apprendimento continuo come gli esseri umani, utilizzando l'esperienza e la conoscenza appresa in compiti storici per aiutare ad apprendere nuovi compiti che emergono costantemente, e queste esperienze e conoscenze vengono continuamente accumulate e non cambieranno a causa di nuovi compiti e dimenticare le vecchie conoscenze.
Nell'apprendimento permanente, si presuppone che un algoritmo di apprendimento permanente abbia appreso un modello sui compiti storici T1, T2, · · · , Tm Quando appare un nuovo compito Tm 1, questo algoritmo può apprendere un modello basato sui compiti passati su cui ha appreso m compiti. conoscenza per aiutare il m 1° compito, accumulando conoscenza su tutti i m 1 compiti.
Questa impostazione è molto simile all'apprendimento del trasferimento induttivo, ma l'obiettivo dell'apprendimento del trasferimento induttivo è ottimizzare le prestazioni del compito target senza preoccuparsi dell'accumulo di conoscenza. L’obiettivo dell’apprendimento permanente è l’apprendimento continuo e l’accumulo di conoscenze. Inoltre, a differenza dell’apprendimento multitasking, l’apprendimento permanente non implica l’apprendimento simultaneo di tutte le attività.
meta-apprendimento
Secondo il teorema del “no free lunch”, nessun algoritmo di apprendimento universale è efficace in tutti i compiti. Pertanto, quando si utilizzano algoritmi di apprendimento automatico per implementare un determinato compito, di solito è necessario "discutere la questione" e scegliere il modello, la funzione di perdita, l'algoritmo di ottimizzazione e gli iperparametri appropriati in base ai compiti specifici.
La capacità di adattare dinamicamente i propri metodi di apprendimento è chiamata meta-apprendimento, noto anche come apprendimento dell'apprendimento.
Un altro problema di machine learning legato al meta-learning è l’apprendimento di piccoli campioni
Due tipici metodi di meta-apprendimento
Meta-apprendimento basato sull'ottimizzatore
La differenza tra i diversi algoritmi di ottimizzazione risiede nelle diverse regole per l'aggiornamento dei parametri. Pertanto, un meta-apprendimento naturale consiste nell'apprendimento automatico di una regola per l'aggiornamento dei parametri, ovvero nel modellare il processo di discesa del gradiente attraverso un'altra rete neurale (come una neurale ricorrente). rete).
Meta-apprendimento indipendente dal modello
Si tratta di un semplice algoritmo di meta-apprendimento indipendente dal modello e dal compito.