Qual è la differenza tra reti neurali convoluzionali, macchine Boltzmann riservate e codificatori automatici?


Risposte:


237

Autoencoder è una semplice rete neurale a 3 strati in cui le unità di uscita sono direttamente collegate alle unità di ingresso . Ad esempio in una rete come questa:

inserisci qui la descrizione dell'immagine

output[i]ha un vantaggio input[i]per tutti i. In genere, il numero di unità nascoste è molto inferiore al numero di unità visibili (input / output). Di conseguenza, quando si passano i dati attraverso tale rete, per prima cosa comprime (codifica) il vettore di input per "adattarlo" in una rappresentazione più piccola, quindi tenta di ricostruirlo (decodificarlo) indietro. Il compito della formazione è ridurre al minimo un errore o la ricostruzione, ovvero trovare la rappresentazione compatta (codifica) più efficiente per i dati di input.

RBM condivide un'idea simile, ma utilizza un approccio stocastico. Invece di deterministico (es. Logistica o ReLU) usa unità stocastiche con una particolare distribuzione (solitamente binaria di gaussiana). La procedura di apprendimento consiste in diverse fasi del campionamento di Gibbs (propagazione: campionare i hiddens con i visibles; ricostruire: campionare i visibles con i hiddens; ripetere) e regolare i pesi per minimizzare l'errore di ricostruzione.

inserisci qui la descrizione dell'immagine

L'intuizione dietro gli RBM è che ci sono alcune variabili casuali visibili (ad esempio recensioni di film di diversi utenti) e alcune variabili nascoste (come generi di film o altre caratteristiche interne), e il compito della formazione è scoprire come questi due insiemi di variabili sono effettivamente collegati tra loro (ulteriori informazioni su questo esempio sono disponibili qui ).

Le reti neurali convoluzionali sono in qualche modo simili a queste due, ma invece di apprendere una singola matrice di peso globale tra due strati, mirano a trovare un insieme di neuroni collegati localmente. Le CNN sono utilizzate principalmente nel riconoscimento delle immagini. Il loro nome deriva dall'operatore "convoluzione" o semplicemente "filtro". In breve, i filtri sono un modo semplice per eseguire operazioni complesse mediante una semplice modifica di un kernel di convoluzione. Applica il kernel di sfocatura gaussiana e lo otterrai liscio. Applica il kernel Canny e vedrai tutti i bordi. Applica il kernel Gabor per ottenere le caratteristiche del gradiente.

inserisci qui la descrizione dell'immagine

(immagine da qui )

L'obiettivo delle reti neurali convoluzionali non è quello di utilizzare uno dei kernel predefiniti, ma invece di apprendere i kernel specifici dei dati . L'idea è la stessa degli autoencoder o degli RBM: tradurre molte funzioni di basso livello (ad es. Recensioni degli utenti o pixel dell'immagine) nella rappresentazione ad alto livello compresso (ad es. Generi o bordi del film), ma ora i pesi vengono appresi solo dai neuroni che sono spazialmente vicini l'uno all'altro.

inserisci qui la descrizione dell'immagine

Tutti e tre i modelli hanno i loro casi d'uso, pro e contro, ma probabilmente le proprietà più importanti sono:

  1. Gli autoencoder sono i più semplici. Sono intuitivamente comprensibili, facili da implementare e su cui ragionare (ad es. È molto più facile trovare buoni meta-parametri per loro che per gli RBM).
  2. Gli RBM sono generativi. Cioè, a differenza dei codificatori automatici che discriminano solo alcuni vettori di dati a favore di altri, gli RBM possono anche generare nuovi dati con una data distribuzione unita. Sono anche considerati più ricchi di funzionalità e flessibili.
  3. Le CNN sono un modello molto specifico che viene utilizzato principalmente per attività molto specifiche (sebbene un'attività piuttosto popolare). La maggior parte degli algoritmi di alto livello nel riconoscimento delle immagini sono oggi in qualche modo basati sulle CNN, ma al di fuori di quella nicchia sono difficilmente applicabili (ad esempio, qual è il motivo per usare la convoluzione per l'analisi delle recensioni dei film?).

UPD.

Riduzione dimensionale

Quando rappresentiamo un oggetto come un vettore di elementi, diciamo che questo è un vettore nello spazio -dimensionale. Pertanto, la riduzione dimensionalità si riferisce ad un processo di raffinazione dati in modo tale che ciascuna dati vettoriali è tradotto in un altro vettore in un spazio dimensionale (vettoriale con elementi), dove . Probabilmente il modo più comune per farlo è PCA . In parole povere, PCA trova "assi interni" di un set di dati (chiamati "componenti") e li ordina in base alla loro importanza. Primon x x m m m < n mnnxxmmm<nmi componenti più importanti vengono quindi utilizzati come nuova base. Ognuno di questi componenti può essere pensato come una funzionalità di alto livello, che descrive i vettori di dati meglio degli assi originali.

Entrambi - autoencoder e RBM - fanno la stessa cosa. Prendendo un vettore nello spazio dimensionale, lo traducono in uno dimensionale, cercando di mantenere quante più informazioni possibili possibili e, allo stesso tempo, rimuovere il rumore. Se l'addestramento di autoencoder / RBM ha avuto successo, ogni elemento del vettore risultante (cioè ogni unità nascosta) rappresenta qualcosa di importante sull'oggetto: la forma di un sopracciglio in un'immagine, il genere di un film, il campo di studio in un articolo scientifico, ecc. prende molti dati rumorosi come input e produce molti meno dati in una rappresentazione molto più efficiente.mnm

Architetture profonde

Quindi, se abbiamo già avuto PCA, perché diavolo abbiamo inventato autoencoder e RBM? Si scopre che PCA consente solo la trasformazione lineare di un vettore di dati. Cioè, avendo componenti principali , puoi rappresentare solo i vettori . Questo è già abbastanza buono, ma non sempre abbastanza. Indipendentemente da quante volte applichi il PCA a una relazione dati, rimarrà sempre lineare.c 1 . . c m x = m i = 1 w i c imc1..cmx=i=1mwici

Autoencoder e RBM, d'altra parte, non sono lineari per natura, e quindi possono apprendere relazioni più complicate tra unità visibili e nascoste. Inoltre, possono essere impilati , il che li rende ancora più potenti. Ad esempio, ti alleni RBM con visibili e nascoste, quindi metti un altro RBM con visibili e nascoste sopra il primo e lo alleni anche tu, ecc. E esattamente allo stesso modo con gli autoencoder.m m knmmk

Ma non aggiungi solo nuovi livelli. Su ogni livello si tenta di apprendere la migliore rappresentazione possibile per un dato dal precedente:

inserisci qui la descrizione dell'immagine

Nell'immagine sopra c'è un esempio di una rete così profonda. Iniziamo con pixel ordinari, procediamo con semplici filtri, quindi con elementi facciali e infine finiamo con facce intere! Questa è l'essenza dell'apprendimento profondo .

Ora notate che in questo esempio abbiamo lavorato con i dati di immagine e abbiamo preso sequenzialmente aree sempre più grandi di pixel spazialmente vicini. Non sembra simile? Sì, perché è un esempio di rete convoluzionale profonda . Sia basato su autoencoder o RBM, utilizza la convoluzione per sottolineare l'importanza della località. Ecco perché le CNN sono in qualche modo distinte dagli autoencoder e dagli RBM.

Classificazione

Nessuno dei modelli menzionati qui funziona da solo come algoritmi di classificazione. Al contrario, vengono utilizzati per la pre - elaborazione : l'apprendimento delle trasformazioni da una rappresentazione di basso livello e difficile da consumare (come i pixel) a una di alto livello. Una volta che viene profilata una rete profonda (o forse non così profonda), i vettori di input vengono trasformati in una migliore rappresentazione e i vettori risultanti vengono infine passati al classificatore reale (come SVM o regressione logistica). In un'immagine sopra significa che in fondo c'è un altro componente che fa effettivamente la classificazione.


3
@ffriend Spiegazione molto breve e chiara. C'è molto scritto su questi argomenti, ma il tuo briefing è fantastico. "RockTheStar" Se vuoi una spiegazione più dettagliata puoi leggere questo libro di 100 pagine di Yoshua Bengio (www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)
Javierfdr,

cosa useresti per prevedere sequenze di eventi?
skan

2
@skan: dai un'occhiata a RNNs . In particolare, LSTM è abbastanza popolare ora. Potresti anche fare una domanda separata con maggiori dettagli per ottenere una risposta qualificata, perché le RNN non sono proprio il mio campo di competenza.
Amico,

15

Tutte queste architetture possono essere interpretate come una rete neurale. La differenza principale tra AutoEncoder e Convolutional Network è il livello di cablaggio della rete. Le reti convoluzionali sono praticamente cablate. L'operazione di convoluzione è praticamente locale nel dominio dell'immagine, il che significa molta più scarsità nel numero di connessioni nella vista della rete neurale. L'operazione di pooling (sottocampionamento) nel dominio dell'immagine è anche un insieme cablato di connessioni neurali nel dominio neurale. Tali vincoli topologici sulla struttura della rete. Dati tali vincoli, l'addestramento della CNN apprende i pesi migliori per questa operazione di convoluzione (in pratica ci sono più filtri). Le CNN vengono generalmente utilizzate per attività di immagine e parlato in cui i vincoli convoluzionali sono un buon presupposto.

Al contrario, i codificatori automatici non specificano quasi nulla sulla topologia della rete. Sono molto più generali. L'idea è quella di trovare una buona trasformazione neurale per ricostruire l'input. Sono composti da un codificatore (proietta l'input sul livello nascosto) e un decodificatore (ripropone il livello nascosto sull'output). Il livello nascosto apprende un insieme di funzioni o fattori latenti. Gli autocodificatori lineari coprono lo stesso sottospazio con PCA. Dato un set di dati, apprendono il numero di basi per spiegare il modello sottostante dei dati.

Gli RBM sono anche una rete neurale. Ma l'interpretazione della rete è totalmente diversa. Gli RBM interpretano la rete non come un feedforward, ma un grafico bipartito in cui l'idea è quella di apprendere la distribuzione di probabilità congiunta di variabili nascoste e di input. Sono visti come un modello grafico. Ricorda che sia AutoEncoder che CNN apprendono una funzione deterministica. RBM, d'altra parte, è un modello generativo. Può generare campioni da rappresentazioni nascoste apprese. Esistono diversi algoritmi per addestrare gli RBM. Tuttavia, alla fine della giornata, dopo aver appreso gli RBM, è possibile utilizzare i suoi pesi di rete per interpretarlo come una rete feedforward.


6

Gli RBM possono essere visti come una sorta di encoder automatico probabilistico. In realtà, è stato dimostrato che a determinate condizioni diventano equivalenti.

Tuttavia, è molto più difficile mostrare questa equivalenza piuttosto che credere che si tratti di bestie diverse. In effetti, trovo difficile trovare molte somiglianze tra i tre, non appena inizio a guardare da vicino.

Ad esempio, se annoti le funzioni implementate da un codificatore automatico, un RBM e una CNN, otterrai tre espressioni matematiche completamente diverse.


1

Non posso dirti molto sugli RBM, ma i codificatori automatici e le CNN sono due diversi tipi di cose. Un autoencoder è una rete neurale che viene addestrata in modo non supervisionato. L'obiettivo di un codificatore automatico è trovare una rappresentazione più compatta dei dati imparando un codificatore, che trasforma i dati nella loro rappresentazione compatta corrispondente e un decodificatore, che ricostruisce i dati originali. La parte encoder degli autoencoder (e originariamente gli RBM) è stata utilizzata per apprendere buoni pesi iniziali di un'architettura più profonda, ma ci sono altre applicazioni. In sostanza, un codificatore automatico apprende un raggruppamento di dati. Al contrario, il termine CNN si riferisce a un tipo di rete neurale che utilizza l'operatore di convoluzione (spesso la convoluzione 2D quando viene utilizzato per attività di elaborazione delle immagini) per estrarre funzionalità dai dati. Nell'elaborazione delle immagini, i filtri, che sono contorti di immagini, vengono appresi automaticamente per risolvere il compito da svolgere, ad esempio un compito di classificazione. Che il criterio di addestramento sia una regressione / classificazione (supervisionato) o una ricostruzione (non supervisionato) non è correlato all'idea delle convoluzioni come alternativa alle trasformazioni affine. Puoi anche avere un codificatore automatico CNN.


autoencoder è un training supervisionato, mentre ti alleni per generare le stesse informazioni dell'output dell'input dato, solo con un player nascosto più piccolo, in modo che la rete debba trovare una codifica appropriata, che trasforma l'input nella dimensione del layer nascosto e viceversa . nell'addestramento non sorvegliato, come utilizzato nelle reti statistiche, come SOM o gas neurale, non si dispone di informazioni di destinazione che vengono presentate alla rete come output.
SCI
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.