lab
Neural Network
Español

¿Qué es la red neuronal?

Visión general

En resumen, la red neuronal es una función: datos de entrada, resultado de salida.

Función

Tomemos reconocimiento de imágenes de dígitos manuscritos de MNIST como ejemplo para definir la forma de función correspondiente:

  • Tipo de tarea: clasificación de imágenes
  • Entrada: una imagen contiene 28 x 28 = 784 píxeles, y cada píxel está representado por un número real
  • Salida: 0-9
  • Descripción de la tarea: identifica el número único de la imagen
  • Definición de función
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}

Esta es una aplicación de nivel de entrada de Neural Network. La entrada es una imagen en escala de grises de baja resolución (28 x 28), correspondiente a una función con 784 variables de entrada. Si se trata de una imagen en color de megapíxeles, las variables de entrada correspondientes alcanzarán los 3 millones.


Se puede ver que la red neuronal se usa para resolver algunos problemas complejos, y las funciones correspondientes también son complejas. La realización del algoritmo consiste en construir la función correspondiente.


¿Cómo construir una función tan complicada? Podemos comenzar con funciones simples. El ejemplo más simple y exitoso son los circuitos digitales.

Circuitos digitales

Los circuitos digitales son la piedra angular de las computadoras y han construido nuestro enorme mundo digital. Pero su núcleo se compone de puertas lógicas AND, OR y NOT.


¿Qué es una puerta lógica? De hecho, es una función. Y son las funciones más simples.

Puerta lógicaexpresiónforma de función
AND puertaxyx \land yz=(x,y)z = \land(x, y)
Puerta ORxyx \lor yz=(x,y)z = \lor(x, y)
NOT puerta¬x\lnot xy=¬(x)y = \lnot(x)
  • Tipo de variable: Todas las variables booleanas, solo 2 valores: {T,F}\{T, F\}, mucho más simple que los números naturales (N\mathbb N) y los números reales (R\mathbb R).
  • Número de variables: función unaria o binaria, que también es la forma más simple de función
  • Representación de funciones: use la tabla de verdad para la descripción. ¿Por qué no utilizar imágenes? Por ser una función discreta, hay algunos puntos aislados en la imagen, lo que no resulta muy atractivo.

NOT puerta

xx¬x\lnot x
TTFF
FFTT

NOT imagen de puerta (use 0 paraFFy 1 paraTT)

AND puerta 、 OR puerta

xxyyxyx \land yxyx \lor y
TTTTTTTT
TTFFFFTT
FFTTFFTT
FFFFFFFF

AND imagen de puerta

OR imagen de puerta

Puerta lógica combinada

Combine puertas lógicas simples para obtener funciones más potentes.


Construya una nueva función 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)

Construya una función multivariante:

  • Operación AND de 3 bits: f(x,y,z)=xyzf(x, y, z) = x \land y \land z
  • Sumador de 8 bits: f(x1,...,x8,y1,...,y8)f(x_1, ..., x_8, y_1, ..., y_8)
    • Es una función de 16 elementos que contiene 16 variables booleanas
  • Sumador de 32 bits: f(x1,...,x32,y1,...,y32)f(x*1, ..., x*{32}, y*1, ..., y*{32})
    • Es una función de 64 elementos que contiene 64 variables booleanas
    • También se puede considerar como una función binaria de enteros de 32 bits: f(x,y)x,yInt32f(x, y) \quad x, y \in \text{Int32}

Resumir

Combinando funciones de compuerta lógica simples, se pueden construir nuevas funciones lógicas. Incluyendo operaciones como suma, resta, multiplicación y división de enteros de 32 bits y operaciones de tipos de coma flotante de precisión simple de 32 bits, etc.

Lenguaje de programación

Veamos nuevamente los lenguajes de programación. Tome Python como ejemplo, observe los elementos en Python.

Operador

NombreSímboloFunción
Operadores lógicosand or notFunciones lógicas binarias y unarias
Operadores aritméticos+, -, *, /,%, **, //Funciones binarias
Operadores de comparación==,! =,>, <,>=, <=Funciones binarias
...

Tomando el operador de suma de números de punto flotante (+) como ejemplo, la imagen de la función es la siguiente:

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

Funciones

Puede definir sus propias funciones en Python:

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

Aquí se define una nueva función. Utiliza "+, -, *, max" y otras funciones para construir la nueva función. El método de construcción también es a través de la composición de funciones.

Resumir

Las funciones están en todas partes en los lenguajes de programación. Combinando funciones básicas, se pueden construir nuevas funciones y se pueden obtener nuevos algoritmos.

Red neuronal

La red neuronal también funciona. Al igual que los circuitos digitales y los lenguajes de programación, también se compone de funciones simples. Las unidades básicas de los circuitos digitales son funciones lógicas como Y, O y NO. Las unidades básicas en los lenguajes de programación son funciones como varios operadores, mientras que la unidad básica de las redes neuronales son las neuronas.

Neurona

Entonces, ¿qué es una neurona? Una neurona biológica es una célula con dendritas de entrada y axones de salida. Y la neurona de la red neuronal es una neurona artificial, también es una función, más precisamente, es una especie de función.


El número de entradas de neuronas se puede cambiar, lo que significa que representa una función de elemento nn f(x1,...,xn)f(x_1, ..., x_n), y nn puede ser diferente para diferentes neuronas.

Red neuronal

Las neuronas se combinan entre sí para formar una red neuronal. Como se muestra abajo:

La red neuronal contiene tres neuronas (no cuente las neuronas de entrada):

  • 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 función representada por la red neuronal es:

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

Resumir

  1. El núcleo de los circuitos digitales (hardware) es la función, y sus funciones básicas son las funciones de puerta lógica Y O NO;
  2. El núcleo de los lenguajes de programación (software) es la función, y sus funciones básicas son varias funciones de operador y funciones integradas (proporcionadas por hardware o compuestas);
  3. El núcleo de las redes neuronales también es la función, y sus funciones básicas son las neuronas;
  4. Se pueden construir nuevas funciones mediante la composición de funciones simples. Las redes neuronales son funciones construidas a partir de funciones neuronales mediante operaciones de composición de funciones.

Pregunta

¿Cuál es exactamente la función representada por una neurona?

El simple hecho de saber que es una función de elemento nn no es suficiente. Las unidades básicas Y, O y NO puertas en circuitos digitales enumeran la tabla de verdad y dibujan la figura, pero ¿qué pasa con la neurona?