lab
Neural Network
Français

Qu'est-ce que le réseau de neurones

Aperçu

En bref, le réseau de neurones est une fonction: données d'entrée, résultat de sortie.

Fonction

Prenons l'exemple de la reconnaissance d'images de chiffres manuscrits MNIST pour définir la forme de fonction correspondante:

  • Type de tâche: Classification des images
  • Entrée: Une image contient 28 x 28=784 pixels, et chaque pixel est représenté par un nombre réel
  • Sortie: 0-9
  • Description de la tâche: Identifiez le numéro unique à partir de l'image
  • Définition de la fonction
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}

Il s'agit d'une application d'entrée de gamme de Neural Network. L'entrée est une image en niveaux de gris basse résolution (28 x 28), correspondant à une fonction avec 784 variables d'entrée. S'il s'agit d'une image couleur mégapixel, les variables d'entrée correspondantes atteindront 3 millions.


On peut voir que le réseau de neurones est utilisé pour résoudre certains problèmes complexes, et les fonctions correspondantes sont également complexes. La réalisation de l'algorithme consiste à construire la fonction correspondante.


Comment construire une fonction aussi compliquée ? Nous pouvons commencer avec des fonctions simples. L'exemple le plus simple et le plus réussi est celui des circuits numériques.

Circuits numériques

Les circuits numériques sont les pierres angulaires des ordinateurs et ont construit notre immense monde numérique. Mais son noyau est composé de portes logiques AND, OR et NOT.


Qu'est-ce qu'une porte logique ? C'est en fait une fonction. Et ce sont les fonctions les plus simples.

Porte logiqueexpressionforme de fonction
AND portailxyx \land yz=(x,y)z = \land(x, y)
OR portailxyx \lor yz=(x,y)z = \lor(x, y)
NOT portail¬x\lnot xy=¬(x)y = \lnot(x)
  • Type de variable: Toutes les variables booléennes, seulement 2 valeurs: {T,F}\{T, F\}, beaucoup plus simple que les nombres naturels (N\mathbb N) et les nombres réels (R\mathbb R).
  • Nombre de variables: fonction unaire ou binaire, qui est aussi la forme de fonction la plus simple
  • Représentation de fonction: utiliser la table de vérité pour la description. Pourquoi ne pas utiliser des images ? Comme il s'agit d'une fonction discrète, il y a des points isolés sur l'image, ce qui n'est pas très attractif.

NOT porte

xx¬x\lnot x
TTFF
FFTT

NOT porte image (utilisez 0 pour FF et 1 pour TT)

AND porte、OR porte

xxyyxyx \land yxyx \lor y
TTTTTTTT
TTFFFFTT
FFTTFFTT
FFFFFFFF

AND image de porte

OR image de porte

Porte logique de combinaison

Combinez des portes logiques simples pour obtenir des fonctions plus puissantes.


Construisez une nouvelle fonction binaire:

  • 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)

Construire une fonction multivariée:

  • Opération AND 3 bits: f(x,y,z)=xyzf(x, y, z) = x \land y \land z
  • Additionneur 8 bits: f(x1,...,x8,y1,...,y8)f(x_1, ..., x_8, y_1, ..., y_8)
    • C'est une fonction à 16 éléments contenant 16 variables booléennes
  • Additionneur 32 bits: f(x1,...,x32,y1,...,y32)f(x*1, ..., x*{32}, y*1, ..., y*{32})
    • C'est une fonction à 64 éléments contenant 64 variables booléennes
    • Elle peut aussi être considérée comme une fonction binaire d'entiers 32 bits: f(x,y)x,yInt32f(x, y) \quad x, y \in \text{Int32}

Résumer

En combinant des fonctions de portes logiques simples, de nouvelles fonctions logiques peuvent être construites. Y compris les opérations telles que l'addition, la soustraction, la multiplication et la division d'entiers 32 bits, et les opérations de types à virgule flottante simple précision 32 bits, etc.

Langage de programmation

Regardons à nouveau les langages de programmation. Prenez Python comme exemple, regardez les éléments en Python.

Opérateur

NomSymboleFonction
Opérateurs logiquesand or notFonctions logiques binaires et unaires
Opérateurs arithmétiques+, -, *, /, %, **, //Fonctions binaires
Opérateurs de comparaison==, !=, >, <, >=, <=Fonctions binaires
...

En prenant l'opérateur d'addition de nombre à virgule flottante (+) comme exemple, l'image de la fonction est la suivante:

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

Les fonctions

Vous pouvez définir vos propres fonctions en Python:

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

Une nouvelle fonction est définie ici. Il utilise "+, -, *, max" et d'autres fonctions pour construire la nouvelle fonction. Le mode de construction passe aussi par la composition de fonctions.

Résumer

Les fonctions sont partout dans les langages de programmation. En combinant des fonctions de base, de nouvelles fonctions peuvent être construites et de nouveaux algorithmes peuvent être obtenus.

Réseau neuronal

Le réseau de neurones est également fonction. Comme les circuits numériques et les langages de programmation, il est également composé de fonctions simples. Les unités de base des circuits numériques sont des fonctions logiques telles que AND, OR et NOT. Les unités de base des langages de programmation sont des fonctions telles que divers opérateurs, tandis que l'unité de base des réseaux de neurones sont les neurones.

Neurone

Alors, qu'est-ce qu'un neurone ? Un neurone biologique est une cellule avec des dendrites d'entrée et des axones de sortie. Et le neurone sur le réseau de neurones est un neurone artificiel, c'est aussi une fonction, plus précisément, c'est une sorte de fonction.


Le nombre d'entrées de neurones peut être modifié, ce qui signifie qu'il représente une fonction d'élément nn f(x1,...,xn)f(x_1, ..., x_n), et nn peut être différent pour différents neurones.

Réseau neuronal

Les neurones se combinent pour former un réseau de neurones. Comme indiqué ci-dessous:

Le réseau de neurones contient trois neurones (ne comptez pas les neurones d'entrée):

  • 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 fonction représentée par le réseau de neurones est:

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))

Résumer

  1. Le cœur des circuits numériques (matériel) est la fonction, et ses fonctions de base sont les fonctions de porte logique AND OR NOT;
  2. Le noyau des langages de programmation (logiciels) est la fonction, et ses fonctions de base sont diverses fonctions d'opérateur et fonctions intégrées (fournies par le matériel ou composées);
  3. Le cœur des réseaux de neurones est aussi la fonction, et ses fonctions de base sont les neurones ;
  4. De nouvelles fonctions peuvent être construites par la composition de fonctions simples. Les réseaux de neurones sont des fonctions construites à partir de fonctions neuronales par le biais d'opérations de composition de fonctions.

Question

Quelle est exactement la fonction représentée par un neurone ?

Il ne suffit pas de savoir qu'il s'agit d'une fonction d'élément nn. Les unités de base AND, OR et NOT des portes dans les circuits numériques énumèrent toutes la table de vérité et dessinent la figure, mais qu'en est-il du neurone ?