lab
Neural Network
Italiano

Cos'è la rete neurale?

Panoramica

In breve, la rete neurale è una funzione: dati di input, risultato di output.

Funzione

Prendiamo come esempio il riconoscimento dell'immagine di cifre scritte a mano MNIST per definire il modulo della funzione corrispondente:

  • Tipo di attività: Classificazione delle immagini
  • Input: un'immagine contiene 28 x 28=784 pixel e ogni pixel è rappresentato da un numero reale
  • Uscita: 0-9
  • Descrizione attività: identifica il numero univoco dall'immagine
  • Definizione funzione
y=f(x1,x2,...,x784)xiR,i=1,...,784y{0,1,...,9}\begin{aligned} y &= f(x_1, x_2, ..., x_{784}) \\ &x_i \in \mathbb R, i = 1, ..., 784 \\ &y \in \{0, 1, ..., 9\} \end{aligned}

Questa è un'applicazione entry-level di Neural Network. L'input è un'immagine in scala di grigi a bassa risoluzione (28 x 28), corrispondente a una funzione con 784 variabili di input. Se si tratta di un'immagine a colori megapixel, le variabili di input corrispondenti raggiungeranno i 3 milioni.


Si può vedere che la rete neurale viene utilizzata per risolvere alcuni problemi complessi e anche le funzioni corrispondenti sono complesse. La realizzazione dell'algoritmo consiste nel costruire la funzione corrispondente.


Come costruire una funzione così complicata? Possiamo iniziare con semplici funzioni. L'esempio più semplice e di maggior successo sono i circuiti digitali.

Circuiti digitali

I circuiti digitali sono le pietre miliari dei computer e hanno costruito il nostro enorme mondo digitale. Ma il suo nucleo è composto da porte logiche AND, OR e NOT.


Cos'è una porta logica? In realtà è una funzione. E sono le funzioni più semplici.

Porta logicaespressioneforma funzione
AND cancelloxyx \land yz=(x,y)z = \land(x, y)
OR cancelloxyx \lor yz=(x,y)z = \lor(x, y)
NOT cancello¬x\lnot xy=¬(x)y = \lnot(x)
  • Tipo variabile: tutte le variabili booleane, solo 2 valori: {T,F}\{T, F\}, molto più semplici dei numeri naturali (N\mathbb N) e dei numeri reali (R\mathbb R).
  • Numero di variabili: funzione unaria o binaria, che è anche la forma più semplice di funzione
  • Rappresentazione della funzione: usa la tabella di verità per la descrizione. Perché non usare le immagini? Poiché è una funzione discreta, ci sono alcuni punti isolati sull'immagine, che non sono molto attraenti.

NOT cancello

xx¬x\lnot x
TTFF
FFTT

NOT immagine gate (usa 0 per FF e 1 per TT)

AND cancello、OR cancello

xxyyxyx \land yxyx \lor y
TTTTTTTT
TTFFFFTT
FFTTFFTT
FFFFFFFF

AND immagine porta

OR immagine porta

Porta logica combinata

Combina semplici porte logiche per ottenere funzioni più potenti.


Costruisci una nuova funzione binaria:

  • XOR: xy=(x¬y)(¬xy)x \oplus y = (x \land \lnot y) \lor (\lnot x \land y)
  • XNOR: xy=(xy)(¬x¬y)x \odot y = (x \land y) \lor (\lnot x \land \lnot y)

Costruisci una funzione multivariata:

  • Operazione AND a 3 bit: f(x,y,z)=xyzf(x, y, z) = x \land y \land z
  • sommatore a 8 bit: f(x1,...,x8,y1,...,y8)f(x_1, ..., x_8, y_1, ..., y_8)
    • È una funzione a 16 elementi contenente 16 variabili booleane
  • sommatore a 32 bit: f(x1,...,x32,y1,...,y32)f(x*1, ..., x*{32}, y*1, ..., y*{32})
    • È una funzione a 64 elementi contenente 64 variabili booleane
    • Può anche essere considerato come una funzione binaria di interi a 32 bit: f(x,y)x,yInt32f(x, y) \quad x, y \in \text{Int32}

Ricapitolare

Combinando semplici funzioni di porta logica, è possibile costruire nuove funzioni logiche. Comprese operazioni come addizione, sottrazione, moltiplicazione e divisione di numeri interi a 32 bit e operazioni di tipi a virgola mobile a precisione singola a 32 bit, ecc.

Linguaggio di programmazione

Diamo un'occhiata di nuovo ai linguaggi di programmazione. Prendi Python come esempio, guarda gli elementi in Python.

Operatore

NomeSimboloFunzione
Operatori logiciand or notFunzioni logiche binarie e unarie
Operatori aritmetici+, -, *, /, %, **, //Funzioni binarie
Operatori di confronto==, !=, >, <, >=, <=Funzioni binarie
...

Prendendo come esempio l'operatore di addizione di numeri in virgola mobile (+), l'immagine della funzione è la seguente:

f(x,y)=x+yf(x, y) = x + y

Funzioni

Puoi definire le tue funzioni in Python:

def f(x, y): return max(0, 2*x + 3*y - 3)

Qui viene definita una nuova funzione. Usa "+, -, *, max" e altre funzioni per costruire la nuova funzione. Il metodo di costruzione passa anche attraverso la composizione delle funzioni.

Ricapitolare

Le funzioni sono ovunque nei linguaggi di programmazione. Combinando le funzioni di base, si possono costruire nuove funzioni e si possono ottenere nuovi algoritmi.

Rete neurale

La rete neurale è anche funzione. Come i circuiti digitali e i linguaggi di programmazione, è composto anche da semplici funzioni. Le unità di base dei circuiti digitali sono funzioni logiche come AND, OR e NOT. Le unità di base nei linguaggi di programmazione sono funzioni come vari operatori, mentre l'unità di base delle reti neurali sono i neuroni.

Neurone

Allora cos'è un neurone? Un neurone biologico è una cellula con dendriti di input e assoni di output. E il neurone sulla rete neurale è un neurone artificiale, è anche una funzione, più precisamente, è una specie di funzione.


Il numero di input dei neuroni può essere modificato, il che significa che rappresenta una funzione dell'elemento nn f(x1,...,xn)f(x_1, ..., x_n) e nn può essere diverso per diversi neuroni.

Rete neurale

I neuroni si combinano tra loro per formare una rete neurale. Come mostrato di seguito:

La rete neurale contiene tre neuroni (non contare i neuroni di input):

  • f1(x1,...,xn)f_1(x_1, ..., x_n)
  • f2(x1,...,xn)f_2(x_1, ..., x_n)
  • f3(x1,x2)f_3(x_1, x_2)

La funzione rappresentata dalla rete neurale è:

f(x1,...,xn)=f3(f1(x1,...,xn),f2(x1,...,xn))f(x_1, ..., x_n) = f_3(f_1(x_1, ..., x_n), f_2(x_1, ..., x_n))

Ricapitolare

  1. Il nucleo dei circuiti digitali (hardware) è la funzione e le sue funzioni di base sono le funzioni della porta logica AND OR NOT;
  2. Il nucleo dei linguaggi di programmazione (software) è la funzione e le sue funzioni di base sono varie funzioni dell'operatore e funzioni integrate (fornite dall'hardware o composte);
  3. Il nucleo delle reti neurali è anche la funzione e le sue funzioni di base sono i neuroni;
  4. Nuove funzioni possono essere costruite attraverso la composizione di semplici funzioni. Le reti neurali sono funzioni costruite da funzioni neuronali attraverso operazioni di composizione di funzioni.

Domanda

Qual è esattamente la funzione rappresentata da un neurone?

Il solo sapere che si tratta di una funzione di elemento nn non è sufficiente. Le unità di base AND, OR e NOT nei circuiti digitali elencano tutte la tabella della verità e disegnano la figura, ma per quanto riguarda il neurone?