Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Redes neuronales
Una red neuronal con alimentación hacia adelante (feedforward neural network, en
inglés), es un modelo de regresión para aprendizaje supervisado a partir de atributos
numéricos. Como tal implementa una función 𝑓: ℝ𝑚 → ℝ𝑛 , cuyos argumentos 𝑥1 , … , 𝑥𝑚
son atributos numéricos.
Es habitual representar las redes neuronales como un grafo acíclico en el que los
nodos son las neuronas artificiales y las aristas conectan todas las neuronas de cada capa
con cada una de las neuronas de la capa siguiente. Suele incluirse una primera capa, de
entrada, que no calcula nada, sino que simplemente proporciona a la siguiente capa los
argumentos de la función. La última capa, de salida, es la que proporciona el resultado
de la función. El resto de capas, entre la capa de entrada y la de salida, se llaman capas
ocultas, ya que los resultados proporcionados por esas capas no son observables por un
observador externo.
1 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
𝑥1
𝑥2
𝑥3
Esta red neuronal tiene una capa de entrada con tres neuronas, dos capas ocul-
tas con cuatro y tres neuronas, respectivamente, y una capa de salida con dos neu-
ronas:
2 de 22
Universidad de Sevilla Dpto. de Ciencias de la Computación e Inteligencia Artificial
𝑚
1 si ∑𝑖=1 𝑤𝑖 𝑥𝑖 + 𝑏 > 0,
𝑎={ 𝑚
0 si ∑𝑖=1 𝑤𝑖 𝑥𝑖 + 𝑏 ≤ 0.
1 si 𝒘 T 𝒙 + 𝑏 > 0,
={
0 si 𝒘 T 𝒙 + 𝑏 ≤ 0.
= umbral(𝑧)
1 si 𝑧 > 0,
umbral(𝑧) ≝ {
0 si 𝑧 ≤ 0.
En el campo del álgebra matricial, los vectores se consideran como matrices co-
lumna. Por economía de espacio, en el documento escribimos los vectores como
T 𝑣1
𝒗 = (𝑣1 … 𝑣𝑚 ) en lugar de 𝒗 = ( 𝑣⋮ ) , donde T denota la operación de trasposición.
𝑚
De esta forma,
𝑥1 𝑚
T T T
𝒙 = (𝑥1 … 𝑥𝑚 ) 𝒘 = (𝑤1 … 𝑤𝑚 ) = (𝑤1 … 𝑤𝑚 ) ( ⋮ ) = ∑ 𝑤𝑖 𝑥𝑖
𝒘 𝒙
𝑥𝑚 𝑖=1
1 si 𝑧 > 0,
signo(𝑧) ≝ {
−1 si 𝑧 ≤ 0.
3 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
4 de 22
Universidad de Sevilla Dpto. de Ciencias de la Computación e Inteligencia Artificial
Por lo tanto, si se cumplen las condiciones del teorema se puede establecer como
condición de terminación del algoritmo de entrenamiento del perceptrón el que todos
los ejemplos se clasifiquen correctamente.
5 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
6 de 22
Universidad de Sevilla Dpto. de Ciencias de la Computación e Inteligencia Artificial
Queda patente, pues, que los perceptrones tienen una capacidad expresiva limitada,
lo que lleva a la necesidad de construir redes multicapas de perceptrones que, mediante
la combinación de más de una de esas unidades, proporcionen mayor capacidad expre-
siva.
Ejemplo: Cálculo de la función lógica XOR mediante una red multicapa de percep-
trones
1 1
0 0
−1
𝑥1 1 1
1 −1
1
𝑥2 1
7 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
Para poder concebir un algoritmo de entrenamiento para las redes neuronales, nos
interesa que un cambio pequeño en los pesos produzca un cambio pequeño en la salida
de la función implementada por la red. Esto no ocurre si la red está formada por percep-
trones. Una manera de superar este problema es cambiar la función de activación por una
función que pase del valor 0 al valor 1 de una forma más suave que la función umbral (y,
como veremos más adelante, también interesa que sea diferenciable). Se tiene entonces
lo que conocemos propiamente como neurona artificial.
Una opción habitual es usar como función de activación la función sigmoide
1
σ(𝑧) ≝
1 + e−𝑧
umbral sigmoide
1 1
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0 0
−4 −2 0 2 4 −4 −2 0 2 4
8 de 22
Universidad de Sevilla Dpto. de Ciencias de la Computación e Inteligencia Artificial
e𝑧 − e−𝑧 ′
tanh(𝑧) ≝ tanh (𝑧) = 1 − tanh(𝑧)2
e𝑧 + e−𝑧
′ 0 si 𝑧 ≤ 0,
́
rectificador(𝑧) ≝ max(0, 𝑧) rectificador (𝑧) = {
1 si 𝑧 > 0.
1 4
0.5 3
0 2
−0.5 1
−1 0
−4 −2 0 2 4 −4 −2 0 2 4
9 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
Si los argumentos cambian en una pequeña cantidad, ∆𝑣1 , … , ∆𝑣𝑛 , entonces la teo-
ría del cálculo infinitesimal nos dice que el valor de 𝐶 cambia aproximadamente
como
𝚫𝒗 = −η𝛁𝐶
El algoritmo para entrenar una neurona artificial mediante descenso por el gradiente
es, entonces, el siguiente:
10 de 22
Universidad de Sevilla Dpto. de Ciencias de la Computación e Inteligencia Artificial
Es decir,
η ∂𝐶(𝒙,𝑦)
𝑤𝑖 ← 𝑤𝑖 − ∑
|𝒟| (𝒙,𝑦)∈𝒟 𝑤𝑖
Por ejemplo, en el caso de que la función de coste considerada fuera el error cuadrá-
tico medio
1 2
MSE = ∑ (𝑦 − 𝑎𝒙 )
|𝒟| (𝒙,𝑦)∈𝒟
donde 𝒘 son los pesos, 𝑔 la función de activación y 𝑎𝒙 = 𝑔(𝒘 T 𝒙) la salida de la neurona
para 𝒙, entonces
2η
𝑤𝑖 ← 𝑤𝑖 − ∑ (𝑦 − 𝑎𝒙 )(−𝑔′ (𝒘 T 𝒙))𝑥𝑖
|𝒟| (𝒙,𝑦)∈𝒟
A la hora de aplicar el algoritmo para entrenar una neurona artificial debe tenerse en
cuenta lo siguiente:
𝑥1 𝑥2 𝑦
0 0 0
0 1 1
1 0 1
1 1 1
2η
𝑤𝑖 ← 𝑤𝑖 − ∑ (𝑎 − 𝑦)𝑎𝒙 (1 − 𝑎𝒙 )𝑥𝑖
|𝒟| (𝒙,𝑦)∈𝒟 𝒙
11 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
12 de 22
Universidad de Sevilla Dpto. de Ciencias de la Computación e Inteligencia Artificial
El algoritmo de descenso por el gradiente se usa también para entrenar las redes
neuronales genéricas. En este caso, una aplicación directa de la regla de la cadena para
calcular las derivadas parciales de la función de coste respecto a los pesos sería compu-
tacionalmente ineficiente. El algoritmo de retropropagación (backpropagation, en inglés)
calcula estas derivadas de manera eficiente, evitando repetir cálculos.
Para una mejor descripción de este algoritmo, se introducen las siguientes notaciones:
𝐿 es la cantidad de capas de la red neuronal, a las cuales numeramos de 1 a 𝐿.
𝑛𝑙 es la cantidad de neuronas en la capa 𝑙, a las cuales numeramos de 1 a 𝑛𝑙 .
𝑙
𝑤𝑗←𝑘 es el peso de la conexión entre la neurona 𝑘 en la capa 𝑙 − 1 y la neurona 𝑗 en
la capa 𝑙.
𝑧𝑗𝑙 y 𝑎𝑗𝑙 son la entrada y la salida, respectivamente, de la neurona 𝑗 en la capa 𝑙.
Consideramos que cada capa tiene una neurona 0 con 𝑎𝑙0 = 1. Entonces 𝑤j←0
𝑙
es el
sesgo de la neurona 𝑗 en la capa 𝑙.
T T
Dados dos vectores de la misma dimensión, 𝒗1 = (𝑣11 , … , 𝑣𝑛1 ) y 𝒗2 = (𝑣12 , … , 𝑣𝑛2 ) , el
T
producto de Hadamard es 𝒗1 ⊙ 𝒗2 = (𝑣11 𝑣12 , … , 𝑣𝑛1 𝑣𝑛2 ) .
Si 𝑔𝑗𝑙 es la función de activación de la neurona 𝑗 en la capa 𝑙, entonces
𝑛𝑙−1
𝑧𝑗𝑙 𝑙
= ∑ 𝑤𝑗←𝑘 𝑎𝑙−1 𝑙
𝑘 + 𝑤𝑗←0 y 𝑎𝑗𝑙 = 𝑔𝑗𝑙 (𝑧𝑗𝑙 )
𝑘=1
Es habitual que todas las neuronas en una misma capa usen la misma función de ac-
tivación 𝑔𝑙 . Podemos entonces calcular las salidas de las neuronas mediante operaciones
matriciales:
𝒛𝑙 = 𝑾 𝑙 𝒂𝑙−1 + 𝒘0𝑙 y 𝒂𝑙 = 𝑔𝑙 (𝒛𝑙 )
𝑙
𝑤1←1 … 𝑤𝑙
T 𝑙−1
donde 𝒛𝑙 = (𝑧1𝑙 , … , 𝑧𝑛𝑙 𝑙 ) es el vector de entradas de la capa 𝑙, 𝑾 𝑙 = ( … …
𝑙 𝑙
1←𝑛
… ) la
𝑤 𝑙 … 𝑤 𝑙 𝑙−1
𝑛 ←1 𝑛 ←𝑛
T T
matriz de pesos, 𝒂𝑙 = (𝑎𝑙1 , … , 𝑎𝑙𝑛𝑙 ) el vector de salidas, 𝒘0𝑙 = 𝑙
(𝑤1←0 , … , 𝑤𝑛𝑙 𝑙←0 ) el vector
13 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
de sesgos y 𝑔𝑙 la consideramos una función vectorizada (es decir, que aplicada a un vector
se aplica elemento a elemento de ese vector).
∂𝐶
El error Δ𝑗𝑙 de la neurona 𝑗 en la capa 𝑙 es Δ𝑗𝑙 ≝ 𝑙 . Aplicando convenientemente la
∂𝑧𝑗
regla de la cadena se llega a
′
𝚫𝐿 = 𝛁𝒂𝐿 𝐶 ⊙ (𝑔𝐿 ) (𝒛𝐿 )
T ′
𝚫𝑙 = ((𝑾 𝑙+1 ) 𝚫𝑙+1 ) ⊙ (𝑔𝑙 ) (𝒛𝑙 ), para 𝑙 = 2, … , 𝐿 − 1
T T
∂𝐶 ∂𝐶 ∂𝐶 ∂𝐶
donde 𝚫 = (
𝑙
,…, ) y 𝛁𝒂𝐿 𝐶 = ( ,…, ) .
∂𝑧1𝑙 ∂𝑧𝑙 𝑙 ∂𝑎𝐿
1 ∂𝑎𝐿𝐿
𝑛 𝑛
∂𝐶
De nuevo aplicando la regla de la cadena se llega a 𝑙 𝑘 Δ𝑗 . Es decir, la compo-
= 𝑎𝑙−1 𝑙
∂𝑤𝑗←𝑘
nente de 𝛁𝐶 correspondiente al peso de una conexión entre dos neuronas es el producto
de la salida de la neurona de partida por el error de la neurona de llegada, lo que gráfi-
camente se puede representar como
∂𝐶
=
∂𝑤
𝑎desde × Δhasta
Actualizar los pesos promediando el gradiente de 𝐶 sobre todos los ejemplos de en-
trenamiento es costoso. El método del descenso estocástico por el gradiente (stochastic
gradient descent, en inglés) aproxima el promedio a partir de un pequeño minilote (mi-
nibatch, en inglés) de ejemplos de entrenamiento elegidos aleatoriamente (es decir, un
14 de 22
Universidad de Sevilla Dpto. de Ciencias de la Computación e Inteligencia Artificial
Nótese que, puesto que se compara la salida de la red con la respuesta correcta
y ambas son una tupla de 𝑛 valores, deben agregarse los errores cometidos
por cada neurona de salida. En este caso se ha elegido realizar esa agregación
mediante una media aritmética, aunque otra opción que se suele utilizar es
sumar esos errores individuales.
• El gradiente de la función de coste respecto de la salida de la red y el vector
de errores en la capa de salida son, entonces,
2 𝐿
𝛁𝒂𝐿 𝐶 = (𝒂 − 𝒚)
𝑛
2 𝐿
𝚫𝐿 = 𝛁𝒂𝐿 𝐶 ⊙ 𝟏 = (𝒂 − 𝒚)
𝑛
Para una tarea de clasificación binaria:
• Las dos posibles clases se codifican con 0 y 1.
• Se considera una capa de salida con 𝑛𝐿 = 1 neurona artificial.
• Se establece como función de activación 𝑔𝐿 para la capa de salida la función
sigmoide. La salida de la red es, por lo tanto, 𝑎𝐿 = 𝑔𝐿 (𝑧 𝐿 ) = σ(𝑾 𝐿 𝒂𝐿−1 + 𝑤0𝐿 ) y
la tarea se resuelve prefijando un umbral 𝑢 y proporcionando la clase 1 si 𝑎𝐿
supera ese umbral y 0 en caso contrario.
• Se considera como función de coste la entropía cruzada binaria:
−𝑦 loge (𝑎𝐿 ) − (1 − 𝑦) loge (1 − 𝑎𝐿 )
• El gradiente de la función de coste respecto de la salida de la red y el error en
la capa de salida son, entonces,
𝑦 1−𝑦 𝑎𝐿 − 𝑦
∇𝑎𝐿 𝐶 = − + =
𝑎𝐿 1 − 𝑎𝐿 𝑎𝐿 (1 − 𝑎𝐿 )
Δ𝐿 = ∇𝑎𝐿 𝐶 × 𝑎𝐿 × (1 − 𝑎𝐿 ) = 𝑎𝐿 − 𝑦
15 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
16 de 22
Universidad de Sevilla Dpto. de Ciencias de la Computación e Inteligencia Artificial
de todas las neuronas de esa capa: 𝑎𝐿1 = 𝑔(𝑧1𝐿 , … , 𝑧𝑛𝐿 )1 , … , 𝑎𝐿𝑛 = 𝑔(𝑧1𝐿 , … , 𝑧𝑛𝐿 )𝑛 . La
expresión, por tanto, no se puede simplificar.
Ejemplo: Aplicación del descenso estocástico por el gradiente durante una época
y la red neuronal
𝑥1
𝑥2
Veamos cómo se entrenaría la red neuronal durante una época mediante el mé-
todo del descenso estocástico por el gradiente asumiendo que los ejemplos del
17 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
Minilote 𝐵1 :
−0.73
• Ejemplo 𝐸2 : 𝒙 = ( ),𝑦 = 0
−1.38
−0.73
𝒂1 = 𝒙 = ( )
−1.38
2.1903 2.1903
𝒛2 = 𝑾 2 𝒂1 + 𝒘02 ≅ ( ) 𝒂2 = rectificador(𝒛2 ) ≅ ( )
0.8656 0.8656
0.2282 0.2282
𝒛3 = 𝑾 3 𝒂2 + 𝒘03 ≅ ( ) 𝒂3 = rectificador(𝒛3 ) ≅ ( )
0.3919 0.3919
𝒛4 = 𝑾 4 𝒂3 + 𝒘04 ≅ (0.5089) 𝒂4 = σ(𝒛4 ) ≅ (0.6245)
𝚫4 = 𝒂4 − 𝑦 = (0.6245)
T ′ 0.5683
𝚫3 = ((𝑾 4 ) Δ4 ) ⊙ rectificador (𝒛3 ) ≅ ( )
−0.5558
T ′ 0.3648
𝚫2 = ((𝑾 3 ) 𝚫3 ) ⊙ rectificador (𝒛2 ) ≅ ( )
−1.3228
18 de 22
Universidad de Sevilla Dpto. de Ciencias de la Computación e Inteligencia Artificial
−0.64
• Ejemplo 𝐸3 : 𝒙 = ( ),𝑦 = 1
0.88
−0.64
𝒂1 = 𝒙 = ( )
0.88
0.4576 0.4576
𝒛2 = 𝑾 2 𝒂1 + 𝒘02 ≅ ( ) 𝒂2 = rectificador(𝒛2 ) ≅ ( )
1.3764 1.3764
−1.9459 0
𝒛3 = 𝑾 3 𝒂2 + 𝒘03 ≅ ( ) 𝒂3 = rectificador(𝒛3 ) ≅ ( )
0.5520 0.5520
𝒛4 = 𝑾 4 𝒂3 + 𝒘04 ≅ (0.1854) 𝒂4 = σ(𝒛4 ) ≅ (0.5462)
𝚫4 = 𝒂4 − 𝑦 = (−0.4538)
T ′ 0
𝚫3 = ((𝑾 4 ) Δ4 ) ⊙ rectificador (𝒛3 ) ≅ ( )
0.4039
T ′ 0.0364
𝚫2 = ((𝑾 3 ) 𝚫3 ) ⊙ rectificador (𝒛2 ) ≅ ( )
0.2262
19 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
Minilote 𝐵2 :
0.78
• Ejemplo 𝐸1 : 𝒙 = ( ),𝑦 = 0
−0.67
0.78
𝒂1 = 𝒙 = ( )
−0.67
0.6286 0.6286
𝒛2 = 𝑾 2 𝒂1 + 𝒘02 ≅ ( ) 𝒂2 = rectificador(𝒛2 ) ≅ ( )
0.9685 0.9685
−1.1864 0
𝒛3 = 𝑾 3 𝒂2 + 𝒘03 ≅ ( ) 𝒂3 = rectificador(𝒛3 ) ≅ ( )
0.3454 0.3454
𝒛4 = 𝑾 4 𝒂3 + 𝒘04 ≅ (0.3340) 𝒂4 = σ(𝒛4 ) ≅ (0.5827)
𝚫4 = 𝒂4 − 𝑦 = (0.5827)
T ′ 0
𝚫3 = ((𝑾 4 ) Δ4 ) ⊙ rectificador (𝒛3 ) ≅ ( )
−0.5188
T ′ −0.0735
𝚫2 = ((𝑾 3 ) 𝚫3 ) ⊙ rectificador (𝒛2 ) ≅ ( )
−0.2886
20 de 22
Universidad de Sevilla Dpto. de Ciencias de la Computación e Inteligencia Artificial
−0.80
• Ejemplo 𝐸4 : 𝒙 = ( ),𝑦 = 1
0.48
−0.80
𝒂1 = 𝒙 = ( )
0.48
0.8404 0.8404
𝒛2 = 𝑾 2 𝒂1 + 𝒘02 ≅ ( ) 𝒂2 = rectificador(𝒛2 ) ≅ ( )
1.3394 1.3394
−1.7143 0
𝒛3 = 𝑾 3 𝒂2 + 𝒘03 ≅ ( ) 𝒂3 = rectificador(𝒛3 ) ≅ ( )
0.5817 0.5817
𝒛4 = 𝑾 4 𝒂3 + 𝒘04 ≅ (0.1236) 𝒂4 = σ(𝒛4 ) ≅ (0.5309)
𝚫4 = 𝒂4 − 𝑦 = (−0.4691)
T ′ 0
𝚫3 = ((𝑾 4 ) Δ4 ) ⊙ rectificador (𝒛3 ) ≅ ( )
0.4177
T ′ 0.0591
𝚫2 = ((𝑾 3 ) 𝚫3 ) ⊙ rectificador (𝒛2 ) ≅ ( )
0.2324
21 de 22
Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
22 de 22