Una panoramica delle reti a credenza profonda (DBN) nell'apprendimento profondo

  • Redazione
  • 17/03/2022
  • Tempo di lettura: 8 minuti

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Un modello generativo sofisticato che impiega un’architettura profonda. In questo articolo, impareremo tutto su di esso. Dopo aver letto questo articolo, avrete una migliore comprensione di cosa sia una Deep Belief Network, come funziona, dove usarla e come codificare la vostra Deep Belief Network.

Cos’è una Rete di Credenza Profonda?

Noi creiamo le Reti di Credenza Profonde (DBN) per affrontare i problemi delle reti neurali classiche nelle reti a strati profondi. Per esempio - l’apprendimento lento, il bloccarsi in minimi locali a causa di una cattiva selezione dei parametri, e la necessità di un gran numero di serie di dati di allenamento.

Diversi strati di variabili latenti stocastiche formano una DBN. Le variabili latenti binarie che sono spesso conosciute come rilevatori di caratteristiche o unità nascoste sono variabili binarie.

DBN è un modello grafico generativo ibrido. I due strati superiori non hanno direzione. Gli strati superiori hanno collegamenti diretti agli strati inferiori.

DBN è un algoritmo per l’apprendimento profondo probabilistico non supervisionato.

Fonte: Mdpi.com

Le Deep Belief Networks sono algoritmi di apprendimento automatico che assomigliano alla rete neurale profonda, ma non sono la stessa cosa. Sono reti neurali feedforward con un’architettura profonda, cioè con molti strati nascosti. Reti semplici e non supervisionate come le macchine di Boltzmann ristrette - RBM o gli autocodificatori fanno le DBN, con lo strato nascosto di ogni sottorete che serve come strato visibile per lo strato successivo.

Come si sono evolute le reti neurali a credenza profonda?

Nella prima generazione di reti neurali impieghiamo i Perceptrons per identificare un certo oggetto o qualsiasi altra cosa considerando il peso. Tuttavia, i Perceptrons possono essere utili solo per la tecnologia di base, ma non per la tecnologia sofisticata. Per affrontare questi problemi, la Seconda Generazione di Reti Neurali ha introdotto la nozione di Backpropagation, che confronta l’output ricevuto con l’output desiderato e riduce il valore di errore a zero. Poi sono arrivati i grafi aciclici diretti noti come reti di credenze, che hanno aiutato nella soluzione di problemi di inferenza e apprendimento. Poi, useremo le reti di credenza profonde per aiutare a costruire valori imparziali che possiamo memorizzare nei nodi foglia.

Fonte: Medium.com

Macchine di Boltzmann limitate

Una Restricted Boltzmann Machine (RBM) è un tipo di rete neurale artificiale stocastica generativa che può imparare una distribuzione di probabilità dai suoi input. Anche le reti di apprendimento profondo possono utilizzare RBM. Le reti di credenza profonde, in particolare, possono essere create “impilando” le RBM e mettendo a punto la rete profonda risultante attraverso la discesa del gradiente e la backpropagation.

L’architettura di DBN

Una serie di macchine di Boltzmann vincolate collegate in un ordine specifico costituiscono una Deep Belief Network. Integriamo il risultato dello strato di “output” della macchina di Boltzmann come input alla prossima macchina di Boltzmann consecutivamente. Poi la addestriamo fino alla sua convergenza e applichiamo lo stesso fino al completamento dell’intera rete.

Fonte: Medium.com

Le connessioni indirette e simmetriche tra i due livelli superiori di DBN formano la memoria associativa. Le frecce che puntano verso lo strato più vicino ai dati indicano le relazioni tra tutti gli strati inferiori. Le connessioni acicliche dirette negli strati inferiori traducono la memoria associativa in variabili osservabili. Lo strato più basso di unità visibili riceve i dati di input. Possiamo usare dati binari o reali come input. Come la Restricted Boltzmann Machine (RBM), non ci sono connessioni intralayer. Le unità nascoste rappresentano le caratteristiche che incapsulano le correlazioni dei dati. Una matrice di pesi simmetrici W collega due strati. Collegheremo ogni unità in ogni strato ad ogni altra unità nello strato superiore.

Come funziona DBN?

La prima fase consiste nell’addestrare uno strato di proprietà che può acquisire direttamente i segnali di input dai pixel. In una sottocasta alternativamente ritirata, impara le caratteristiche delle caratteristiche ottenute preliminarmente trattando i valori di questa sottocasta come pixel. Il limite inferiore dell’affidabilità logaritmica del set di dati di addestramento migliora ogni volta che si aggiunge alla rete una nuova sottocasta di pacchi o caratteristiche.

Fonte: Hindawi.com

La pipeline operativa di Deep Belief Network è la seguente:

Useremo l’algoritmo di apprendimento Greedy per pre-addestrare DBN. Per imparare i pesi generativi top-down, il metodo di apprendimento greedy che impiega un approccio strato per strato. Questi pesi generativi determinano la relazione tra le variabili in uno strato e le variabili nello strato superiore.

Sui due strati nascosti superiori, eseguiamo numerosi passi di campionamento di Gibbs in DBN. I primi due strati nascosti definiscono la RBM quindi, questa fase è effettivamente l’estrazione di un campione da essa.

Poi generiamo un campione dalle unità visibili utilizzando un singolo passaggio di campionamento ancestrale attraverso il resto del modello.

Useremo un singolo passaggio bottom-up per inferire i valori delle variabili latenti in ogni strato. Nello strato inferiore, il pretraining avido inizia con un vettore di dati osservati. Poi mette a punto in modo opposto i pesi generativi.

Fonte: Medium.com

È necessario ricordare che la costruzione di una Deep Belief Network richiede l’allenamento di ogni strato RBM. Inizialmente, inizieremo le unità e i parametri per questo scopo. Nell’algoritmo Contrastive Divergence, ci sono due fasi: positiva e negativa. Calcoleremo gli stati binari degli strati nascosti nella fase positiva calcolando le probabilità dei pesi e delle unità visibili. È conosciuta come la fase positiva poiché aumenta la probabilità del set di dati di addestramento La fase negativa riduce la probabilità che il modello produca dei campioni. Per addestrare una Deep Belief Network completa, impiegheremo la tecnica di apprendimento greedy. L’algoritmo di apprendimento avido addestra una RBM alla volta fino a quando tutte le RBM sono addestrate.

Creare una Rete a Credenza Profonda

Più RBM insieme fanno una Deep Belief Network, che si riflette nella loro struttura di record Clojure. Usiamo una forma completamente non supervisionata di DBN per inizializzare una Rete Neurale Profonda, mentre usiamo una DBN di classificazione (CDBN) come modello di classificazione a sé stante.

Fonte: Peltarion.com

Ogni tipo di record include le RBM che compongono gli strati della rete, così come un vettore che indica la dimensione degli strati e, nel caso del DBN di classificazione, il numero di classi nel dataset rappresentativo. Il record DBN rappresenta un modello composto interamente da RBM impilate, ma il record CDBN contiene la memoria associativa di primo livello, che è un record CRBM. Questo permette al livello superiore di essere addestrato a creare etichette di classe per i vettori di dati in ingresso e a classificare i vettori di dati sconosciuti.

Apprendimento di una rete a credenza profonda

Di fatto, abbiamo imparato che le RBM sono quelle che rendono le DBN non supervisionate rendendole molto più facili da addestrare. La durata dell’addestramento RBM è più lunga dell’intero periodo di addestramento DBN, ma il codice è più semplice. Poiché le CDBN richiedono che le etichette di osservazione siano disponibili durante l’addestramento dello strato superiore, una sessione di addestramento comporta prima l’addestramento dello strato inferiore, poi la propagazione del dataset attraverso la RBM appresa e l’utilizzo del dataset appena modificato come dati di addestramento per la RBM successiva. Ripetiamo questo processo fino al passaggio del dataset attraverso la penultima RBM addestrata, e poi tutte le etichette vengono concatenate con il dataset alterato e utilizzate per addestrare la memoria associativa dello strato superiore. Il DBN ha iperparametri da impostare, simili al modello RBM, e offre valori di default ragionevoli.

Applicazioni

Impieghiamo le reti di credenza profonde al posto delle reti feedforward profonde o anche delle reti neurali convoluzionali in configurazioni più sofisticate. Hanno il vantaggio di essere meno costose dal punto di vista computazionale (la complessità computazionale cresce linearmente con il numero di strati, piuttosto che esponenzialmente come per le reti neurali feedforward) e sono meno suscettibili al problema dei gradienti sfumati.

Le applicazioni di DBN sono le seguenti:

Riconoscimento di immagini.

Sequenze di video.

Dati su mocap.

Riconoscimento vocale.

Implementazione Python di base

Inizieremo importando le librerie Python. Per l’apprendimento, ci sono innumerevoli set di dati disponibili. Useremo https://www.kaggle.com/c/digit-recognizer per questo articolo.

from sklearn.model_selection import train_test_split from dbn.tensorflow import SupervisedDBNClassification import numpy as np import pandas as pd from sklearn.metrics.classification import accuracy_score

Poi caricheremo il file CSV e useremo il pacchetto sklearn per creare un modello DBN. Inoltre, dividiamo il set di prova e il set di allenamento in 25% e 75%, rispettivamente. L’output è stato poi previsto e salvato in y pred. Infine, abbiamo calcolato il punteggio di accuratezza e l’abbiamo visualizzato sullo schermo.

digits = pd.read_csv(“train.csv”) from sklearn.preprocessing import standardscaler X = np.array(digits.drop([“label”], axis=1)) Y = np.array(digits[“label”]) ss=standardscaler() X = ss.fit_transform(X) x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.25) clasifier = SupervisedDBNClassification(hidden_layers_structure =[256, 256], learning_rate_rbm=0.05, learning_rate=0.1, n_epochs_rbm=10, n_iter_backprop=100, batch_size=32, activation_function=‘relu’, dropout_p=0.2) clasifier.fit(x_train, y_train) y_pred = classifier.predict(x_test) print(‘nAccuracy of Prediction: %f’ % accuracy_score(x_test, y_pred)) Uscita Accuratezza della predizione: 93.3%

Conclusione

Un DBN è talvolta raccontato come una pila di macchine di Boltzmann ristrette (RBM) poste una sopra l’altra.

Creiamo Reti a Credenza Profonda (DBN) per affrontare i problemi con le reti neurali classiche in reti profonde stratificate.

Un certo numero di piccole reti neurali non supervisionate costituisce una rete di credenza profonda. Possiamo calcolare gli stati binari degli strati nascosti nella fase positiva calcolando le probabilità dei pesi e delle unità visibili.

Anche se gli strati sono collegati, la rete non ha connessioni tra le unità all’interno di un singolo strato, che è una caratteristica comune delle reti di credenza profonde.

E' necessario ricordare che la costruzione di una Deep Belief Network richiede l’addestramento di ogni strato RBM. L’algoritmo di apprendimento greedy addestra una RBM alla volta fino a quando tutte le RBM sono addestrate.

Sentitevi liberi di lasciare un commento qui sotto se avete domande o dubbi sul blog. Andate sul nostro blog per gli ultimi articoli.

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e sono utilizzati a discrezione dell’autore.

Ciao, sono Michele!

Sono molto felice di saperti qui.
Ogni giorno ti raccontiamo qualcosa di nuovo sull'AI e sulle nuove tecnologie. Seguici sui social o iscriviti alla newsletter!

Iscriviti alla newsletter!

Iscrivendoti accetti la nostra Privacy Policy

Ti va di rimanere aggiornatə?

Niente spam, niente pubblicità. Ogni tanto una mail. Tutto qui.
(Ah, ovviamente i tuoi dati non verranno mai ceduti)

Iscrivendoti accetti la nostra Privacy Policy