In questo video esamineremo la regressione lineare multipla in più dimensioni e come costruire questi modelli utilizzando PyTorch.
Linear è forse la funzione più utilizzata in PyTorch ed è la chiave per costruire reti neurali.
In questo video esamineremo: Regressione lineare in dimensioni multiple Il problema della previsione,
rispetto a PyTorch esaminerà la classe lineare e come costruire moduli personalizzati utilizzando NN.modules.
In regressione lineare multipla abbiamo più variabili predittori, in questo esempio abbiamo 4 variabili predittori, quindi:
Abbiamo il bias, w1: coefficiente o il peso __1_
w2: coefficiente o il peso __2_ e così via.
In generale peso e polarizzazione sono parametri del nostro modello che otteniamo attraverso l'allenamento.
La tabella contiene diversi campioni delle variabili predittive __1_ e __2_.
La posizione di ciascun punto è posizionata sul piano 2D, colore codificato di conseguenza
Ogni campione delle variabili predittive __1_ e __2_ sarà mappato su un nuovo valore __.
I nuovi valori di __ (y-hat) sono mappati nella direzione verticale, con altezza proporzionale al valore assunto da y-hat.
Possiamo esprimere l'operazione come una trasformazione lineare, x è un 1 da D tensore o vettore
ed è talvolta indicato come una caratteristica, w è un D per 1 tensore o vettore di parametri
y-hat è la variabile dipendente. Utilizzando prodotto punto possiamo esprimere l'equazione in termini di operazioni vettoriali.
Si consideri il seguente esempio con la polarizzazione uguale a uno. Eseguiamo il prodotto punto di x e w.
Questo moltiplica il primo componente di x e w. Aggiungiamo quindi il prodotto del secondo componente di w e x.
Aggiungiamo quindi la polarizzazione, il risultato è 9.
La proprietà più importante è la forma. Il numero di colonne di x,
Deve essere lo stesso del numero di righe di w, aggiungiamo quindi b
Eseguiamo l'operazione prodotto punto, quindi aggiungere b, il risultato è y-hat.
Useremo la rappresentazione cromatica per aiutarci a capire il rapporto tra la forma e i parametri.
Il seguente grafico diretto è anche utile per capire prodotto punto.
I nodi rappresentano le feature e gli spigoli rappresentano i parametri.
Questi grafici saranno usati in seguito per aiutarci a capire le reti neurali. In questo caso abbiamo 2 dimensioni.
Possiamo estenderlo a D. dimensioni arbitrarie.
Possiamo eseguire regressione lineare su più campioni di tensori o vettori, in questo caso abbiamo 4 campioni, ogni campione ha 4 colonne.
Questo è l'output di un oggetto caricatore treno con 4 campioni
Abbiamo il tensore o Matrix rappresentato con una X maiuscola. Il primo campione corrisponde alla prima riga della matrice.
Il secondo campione corrisponde alla seconda riga nella matrice e così via.
Possiamo usare i colori per rappresentare i diversi campioni.
Per più campioni, l'equazione di regressione è una trasformazione lineare.
y e b sono vettori o tensori di riga, una riga per ogni campione. Usiamo la rappresentazione cromatica del prodotto dot per avere un'idea migliore di cosa sta succedendo.
Nell' immagine seguente ogni campione nella matrice X è rappresentato da un colore diverso,
essenzialmente una tonalità diversa di verde o blu. Il parametro è arancione.
Si noti che y-hat è grassetto in quanto è un vettore o un tensore multidimensionale.
Per il primo campione eseguiamo prodotto punto con la prima riga della matrice e il parametro.
Quindi aggiungiamo il termine di bias, otteniamo quindi la previsione per il primo campione.
Per il secondo campione prendiamo il prodotto punto del vettore parametro, quindi aggiungiamo il termine di polarizzazione.
Otteniamo quindi la previsione per il secondo campione. Ripetiamo il processo per il terzo e il quarto campione,
prendendo il prodotto punto e aggiungendo il termine di polarizzazione, ogni campione produce una nuova previsione
In sintesi, il numero di colonne di X e il numero di pesi deve essere lo stesso anche in questo caso.
Anche se c'è solo un bias, aggiungiamo il termine di polarizzazione a ciascun prodotto punto usando un vettore in verde.
E ci sono tante previsioni come campioni o colonne in X.
Usiamo la classe lineare utile per eseguire la regressione lineare in più dimensioni.
Importiamo lineare dal pacchetto nn. I pesi e i bias sono inizializzati in modo casuale,
per ottenere gli stessi risultati ogni volta che eseguiamo il codice, usiamo il seme casuale.
Impareremo come si ottengono i parametri nella prossima sezione.
Creeremo un oggetto modello utilizzando il costruttore lineare, il parametro «in — feature»
è la dimensione di ogni campione di input o il numero di colonne, «fuori feature» è la dimensione di ogni campione di output,
si crea essenzialmente una funzione lineare. Il lineare produce la seguente funzione. Usiamo il seguente diagramma per rappresentare la forma
Il parametro «in feature» rappresenta il numero di colonne di x, e il numero di pesi modello,
«Fuori feature» è la dimensione degli output in questo caso uno.
I parametri del metodo, questo ci dà i parametri del modello; il primo è la pendenza,
il secondo il bias, dobbiamo applicare l'elenco delle funzioni Python per ottenere un output poiché il metodo viene valutato pigramente.
Possiamo vedere i pesi lineari e la polarizzazione. Nel laboratorio è anche possibile utilizzare il metodo «stato dict».
Siamo in grado di creare un tensore di ingresso, questo è un vettore di riga o tensore con due colonne.
Applichiamo l'oggetto lineare, il risultato è un tensore 1x1 corrispondente alla previsione.
Possiamo applicare la regressione lineare a più campioni, creiamo un tensore in cui ogni riga è un campione diverso.
Come prima usiamo colori diversi per rappresentare i diversi campioni
Applichiamo l'oggetto modello, dato che abbiamo tre ingressi, l'output è di tre righe.
L' output effettivo è un tensore con tre righe e una colonna, corrispondente ai seguenti colori.
In PyTorch è consuetudine creare un modulo personalizzato, nel contesto della regressione si comporterà quasi identico all'oggetto lineare.
Questo può sembrare un po 'ridondante, ma questo sarà richiesto in seguito quando si costruiscono reti neurali.
I moduli personalizzati sono classi; queste classi sono la sottoclasse o figli del pacchetto «NN.Modules».
In questo caso, chiamiamo il nostro modulo personalizzato LR. Rendiamo la Classe un figlio di «NN.Modules».
Di conseguenza, eredita tutti i metodi e gli attributi.
Nel costruttore di oggetti l'argomento è la dimensione dell'input e dell'output, rispettivamente x e y.
Chiamiamo il «super» nel costruttore, questo ci permette di creare oggetti dal pacchetto nn.Module all'interno dell'oggetto, senza inizializzarlo esplicitamente.
Ora possiamo creare un oggetto di tipo lineare, gli argomenti sono impostati tramite il costruttore oggetto
Assegniamo a self.linear possiamo ora chiamare l'oggetto di tipo lineare in qualsiasi punto della classe.
Usiamo la funzione in avanti per produrre una previsione. Non dovremo chiamare esplicitamente il metodo forward,
basta usare parentesi come si comporta come il metodo di chiamata in Python
Creiamo il nostro modulo personalizzato o classe. Questo si comporta come l'oggetto lineare, i parametri «in-features» sono due e «out-features» è uno.
Questo oggetto si comporta come lineare, possiamo fare una previsione per un campione.
Oppure possiamo fare previsioni per più campioni.