Está en la página 1de 126

Control con Inteligencia

Artificial
- Redes Neuronales -
Javier Silva Gallegos
Electricidad y Electrónica
Automatización Industrial
Objetivos
• Introducción.
• Neurona bilógica.
• Funciones de activación.
• Perceptrón.
Introducción
• Las redes neurales artificiales son aproximadores no lineales a la
forma en que funciona el cerebro.
• Por lo tanto no deben compararse directamente con el cerebro ni
confundir los principios que fundamentan el funcionamiento de las
redes neurales artificiales y el cerebro, ni pensar que las redes neurales
se basan únicamente en las redes biológicas ya que sólo emulan en una
parte muy simple el funcionamiento del cerebro humano.
• Además se debe considerar que las redes biológicas son generadoras
de procesos neurobiológicos en que se establecen relaciones de
complejidad muy alta, las cuales no se puede lograr con redes
monocapas ni con redes multicapas.
Introducción
• Las RNA pueden estudiarse como aproximadores universales desde el
punto de vista matemático.
• Veremos un panorama general de los fundamentos biológicos de las
redes neurales naturales, sin profundizar en este apasionante campo,
ya que el aprendizaje de un tema tan complejo como éste requiere de
muchos otros volúmenes para su estudio.
• Vamos a desarrollar una idea básica que sirve como planteamiento
primordial en el estudio de las redes neurales artificiales.
Introducción
• Una neurona biológica es una
célula especializada en
procesar información.
• Está compuesta por el cuerpo
de la célula (soma) y dos tipos
de ramificaciones: el axón y
las dendritas.
Introducción
• La neurona recibe las señales
(impulsos) de otras neuronas a
través de sus dendritas y
transmite señales generadas
por el cuerpo de la célula a
través del axón.
• El cuerpo celular de la neurona
biológica mide de entre 5 a 10
micras.
Introducción
• Las dendritas reciben
información de las neuronas
vecinas, el cuerpo celular
procesa dicha información y
emite una señal la cual es
distribuida a través del axón y
los terminales axónicos.
• Se calcula que en el cerebro
humano hay 1015 conexiones.
Introducción
• Las señales que se utilizan son de dos tipos: eléctricas y químicas.
• La señal generada por la neurona y transportada a lo largo del axón es
un impulso eléctrico, mientras que la señal que se transmite entre los
terminales axónicos de una neurona y las dendritas de la otra es de tipo
químico.
• Para establecer una similitud directa entre la actividad sináptica y la
analogía con las redes neurales artificiales podemos considerar que las
señales que llegan a la sinapsis son las entradas a la neurona; éstas son
ponderadas (atenuadas o amplificadas) a través de un parámetro
denominado peso, asociado a la sinapsis correspondiente.
Introducción
• El efecto es la suma de las entradas ponderadas. Si la suma es igual o
mayor que el umbral de la neurona, entonces la neurona se activa (da
salida).
• Esta es una situación de todo o nada; cada neurona se activa o no se
activa.
• La facilidad de transmisión de señales se altera mediante la actividad
del sistema nervioso. Las sinapsis son susceptibles a la fatiga,
deficiencia de oxígeno y la presencia de anestésicos, entre otros. Esta
habilidad de ajustar señales es un mecanismo de aprendizaje
Introducción
Sinapsis:
Introducción
Sinapsis:
Definición de RNA
• Dentro de la neurona se lleva a cabo un proceso de transmisión y
procesamiento de datos que se realiza en dos etapas: La primera es la
suma algebraica de las entradas de las sinapsis, este es el potencial
lento que alimenta a una función no lineal. La segunda etapa se
realiza con la evaluación de esta función obteniendo el valor de salida
de la neurona.
Definición de RNA
• Las RNA se definen como sistemas de mapeos no lineales cuya
estructura se basa en principios observados en los sistemas nerviosos
de humanos y animales.
• Constan de un número grande de procesadores simples ligados por
conexiones con pesos.
• Las unidades de procesamiento se denominan neuronas.
• Cada unidad recibe entradas de otros nodos y genera una salida simple
escalar que depende de la información local disponible, guardada
internamente o que llega a través de las conexiones con pesos.
Definición de RNA
Definición de RNA
• Una red neuronal se caracteriza por:
• Conjunto de unidades de procesamiento o neuronas.
• Un estado de activación para cada unidad.
• Conexiones entre las unidades, generalmente definidas por un peso que determina el
efecto de una señal de entrada en la unidad.
• Una regla de propagación, que determina la entrada efectiva de una unidad a partir de
las entradas externas.
• Una función de activación que actualiza el nuevo nivel de activación basándose en la
entrada efectiva y la activación anterior.
• Una entrada externa que corresponde a un término determinado como bias para cada
unidad.
• Un método para reunir la información, correspondiente a la regla del aprendizaje
• Un ambiente en el que el sistema va a operar, con señales de entrada e incluso señales
de error.
Definición de RNA
• La salida de una neurona viene dado por:
𝑦=𝑓 𝜔𝑘 𝑥𝑘
𝑘
Donde:
• 𝑥𝑘 : Corresponde a la señal de salida de otros nodos o entradas externas.
• 𝜔𝑘 : Corresponde a los pesos de las conexiones.
• 𝑓: Corresponde a una función no lineal simple.
• La entrada total 𝑢 de una unidad 𝑘 es la suma de los pesos de las entradas
conectadas, más un bias 𝜃:
𝑢= 𝜔𝑘 𝑥𝑘 + 𝜃
Función de Activación
• La regla que logra establecer el efecto de la entrada total u(t) en la
activación de la unidad “k” se denomina función de activación (𝐹𝑘 ).
𝑦 𝑡 + 1 = 𝐹𝑘 𝑦 𝑡 , 𝑢 𝑡
Función escalón:
• Asociada a neuronas binarias en
las cuales, cuando la suma de
las entradas es mayor o igual
que el umbral de la neurona, la
activación es 1; si es menor, la
activación es 0 (ó -1).
Función de Activación
Función Lineal y mixta:
• La función lineal o identidad responde a la expresión 𝐹𝑘 𝑢 = 𝑢. En las neuronas
con función mixta, si la suma de las señales de entrada es menor que un límite
inferior, la función se define como 0 (o -1). Si dicha suma es mayor o igual que el
límite superior, entonces la activación es 1.
Función de Activación
Función tangente hiperbólica:
• Se emplea en los casos que presentan variaciones suave de valores
positivos y negativos de la señal a clasificar.
Función de Activación
Función sigmoidal: Función Gauss:
• Es cercana a 1 ó 0
asintóticamente.
Topologías de las RNA
De acuerdo con las diferencias en la manera de realizar las conexiones
tenemos:
A. Redes de propagación hacia delante (feed-foward): el flujo de
información de las entradas a las salidas es exclusivamente hacia
delante, extendiéndose por capas múltiples de unidades, pero no hay
ninguna conexión de retroalimentación.
B. Redes recurrentes: contienen conexiones de retroalimentación, lo
que puede derivarse en un proceso de evolución hacia un estado
estable en el que no haya cambios en el estado de activación de las
neuronas..
Entrenamiento de RNA
• Entrenar una red neuronal consiste en ajustar cada uno de los pesos
de las entradas de todas las neuronas que forman parte de la red
neuronal, para que las respuestas de la capa de salida se ajusten lo más
posible a los datos que conocemos.
• Además, el aprendizaje puede dividirse en supervisado o asociativo y
no supervisado o auto-organizado. En el primer caso se introducen
entradas que corresponden a determinadas salidas, ya sea por un
agente externo o por el mismo sistema. En el segundo caso el
entrenamiento se enfoca a encontrar características estadísticas entre
agrupamientos de patrones en las entradas.
Entrenamiento de RNA
Perceptrón
• Los perceptrones de una capa pueden clasificar correctamente los
conjuntos de datos que son linealmente separables, esto es, que pueden
ser separados por un hiperplano. En dos dimensiones esto puede verse
como una línea recta que separa dos clases.
Perceptrón
• Un perceptrón convencional tiene una función de no linealidad binaria y la topología que
se muestra en la figura.

• Cada unidad calcula la suma u con pesos de las N entradas y genera una salida binaria y:
𝑁

𝑢= 𝜔𝑗 𝑥𝑗 = 𝝎𝑻 𝒙 + 𝜃
𝑗=0
−1, 𝑢≤0 −1, 𝑢≤0
𝑦= ó 𝑦=
1, 𝑢>0 0, 𝑢>0
Perceptrón
• Para el caso de la diapositiva anterior, la constante del bias es 1, por ende la
salida y valores objetivos asumidos serán ±1 ó 0
• Los pesos son actualizados por un número de reglas simples, comparando
las salidas y(𝑥) con los objetivos t(𝑥) . Los pesos son adaptados con la
ecuación:
2𝜂𝑡𝑥, 𝑠𝑖 𝑡 ≠ 𝑦
∆𝜔 =
0, 𝐸𝑛 𝑜𝑡𝑟𝑜 𝑐𝑎𝑠𝑜
Donde:
• 𝜂 es una constante positiva pequeña que controla la tasa de aprendizaje,
usualmente entre 0 y 1.
• Las redes de una capa y con función de activación sigmoidal se llaman
normalmente perceptrones.
Perceptrón
• La forma de entrenamiento se puede realizar de una manera recursiva
empleando la siguiente expresión:
∆𝜔 = 𝜔 𝑘 + 𝜂𝑥 𝑘 𝑒 𝑘
𝑑𝑜𝑛𝑑𝑒 𝑒 𝑘 = 𝑦𝑑 𝑘 − 𝑦(𝑘)
• El algoritmo de aprendizaje se define como:
1. Definir pesos iniciales con valores aleatorios.
2. Establecer los valores de entradas 𝑥1 , 𝑥2 , … , 𝑥𝑛
3. Calcular la salida de la neurona: 𝑦 = 𝑓( 𝑥𝑖 𝜔𝑖 + 𝜃)
4. Actualizar los pesos aplicando la formula superior.
5. Continuar hasta que: 𝑒 𝑘 ≤ 𝜉 (𝑡𝑜𝑙𝑒𝑟𝑎𝑛𝑐𝑖𝑎)
Redes MonoCapa
• Si se tiene una red de una sola capa, podemos representar la salida
haciendo una notación vectorial. • La salida puede ser escrita
como:
𝒂 = 𝑭(𝑾𝒙 + 𝒃)
• Donde x es el vector de
entradas, b es el vector de BIAS
y W es una matriz que contiene
los pesos, y es de la forma:
Perceptrón
Ejemplo: Obtener la tabla de verdad de la función booleana OR,
utilizando una tasa de aprendizaje 𝜂 = 1 y una función de activación
escalón. Los pesos iniciales son 𝜔0 = 1.5 𝑝𝑒𝑠𝑜 𝑑𝑒𝑙 𝑏𝑖𝑎𝑠 , 𝜔1 =
0.5, 𝜔2 = 1.5, 𝜃 = 1
X1 X2 Salida
0 0 0
0 1 1
1 0 1
1 1 1
Primera Corrida
Patrón de entrada: 00 Patrón de entrada: 01
• Entradas: 𝑥1 = 0, 𝑥2 = 0, 𝜃(𝐵𝐼𝐴𝑆) = 1 • Entradas: 𝑥1 = 0, 𝑥2 = 1, 𝜃(𝐵𝐼𝐴𝑆) = 1
• Pesos:𝜔1 = 0.5, 𝜔2 = 1.5, 𝜔0 = 1.5 • Pesos:𝜔1 = 0.5, 𝜔2 = 1.5, 𝜔0 = 0.5
• Sumatoria: 𝜔1 𝑥1 + 𝜔2 𝑥2 + 𝜔0 𝜃 = 1.5 • Sumatoria: 𝜔1 𝑥1 + 𝜔2 𝑥2 + 𝜔0 𝜃 = 2
• Función activación: 1, 𝑝𝑜𝑟𝑞𝑢𝑒 𝑥 ≥ 0 • Función activación: 1, 𝑝𝑜𝑟𝑞𝑢𝑒 𝑥 ≥ 0
• Salida Deseada: 0 • Salida Deseada: 1
• Error: 0 − 1 = −1 • Error: 1 − 1 = 0
• Pesos Modificados: • Los pesos no se modifican puesto que la
𝜔0 𝑘 + 1 = 1.5 + 1 ∙ 1 ∙ −1 = 0.5 salida es la deseada.
𝜔1 𝑘 + 1 = 0.5 + 1 ∙ 0 ∙ −1 = 0.5 • Para la entrada 10 y 11 se repite la salida y
𝜔2 𝑘 + 1 = 1.5 + 1 ∙ 0 ∙ −1 = 1.5 no hay modificación de pesos.
Segunda Corrida
Patrón de entrada: 00 Patrón de entrada: 01
• Entradas: 𝑥1 = 0, 𝑥2 = 0, 𝜃(𝐵𝐼𝐴𝑆) = 1 • Entradas: 𝑥1 = 0, 𝑥2 = 1, 𝜃(𝐵𝐼𝐴𝑆) = 1
• Pesos:𝜔1 = 0.5, 𝜔2 = 1.5, 𝜔0 = 0.5 • Pesos:𝜔1 = 0.5, 𝜔2 = 1.5, 𝜔0 = −0.5
• Sumatoria: 𝜔1 𝑥1 + 𝜔2 𝑥2 + 𝜔0 𝜃 = 0.5 • Sumatoria: 𝜔1 𝑥1 + 𝜔2 𝑥2 + 𝜔0 𝜃 = 1
• Función activación: 1, 𝑝𝑜𝑟𝑞𝑢𝑒 𝑥 ≥ 0 • Función activación: 1, 𝑝𝑜𝑟𝑞𝑢𝑒 𝑥 ≥ 0
• Salida Deseada: 0 • Salida Deseada: 1
• Error: 0 − 1 = −1 • Error: 1 − 1 = 0
• Pesos Modificados: • Los pesos no se modifican puesto que la
𝜔0 𝑘 + 1 = 0.5 + 1 ∙ 1 ∙ −1 = −0.5 salida es la deseada.
𝜔1 𝑘 + 1 = 0.5 + 1 ∙ 0 ∙ −1 = 0.5 • Para la entrada 10 y 11 se repite la salida y
𝜔2 𝑘 + 1 = 1.5 + 1 ∙ 0 ∙ −1 = 1.5 no hay modificación de pesos.
Tercera Corrida
Patrón de entrada: 00 • Con estos nuevos pesos los
• Entradas: 𝑥1 = 0, 𝑥2 = 0, 𝜃(𝐵𝐼𝐴𝑆) = 1 patrones de entrada coinciden
• Pesos:𝜔1 = 0.5, 𝜔2 = 1.5, 𝜔0 = −0.5 con las salidas, ya no se comete
• Sumatoria: 𝜔1 𝑥1 + 𝜔2 𝑥2 + 𝜔0 𝜃 = −0.5 ningún error y por lo tanto la
• Función activación: 0, 𝑝𝑜𝑟𝑞𝑢𝑒 𝑥 < 0 etapa de aprendizaje concluye.
• Salida Deseada: 0
• Error: 0 − 0 = 0
• No hay modificación de pesos porque el
error es cero!.
• La salida es igual a la deseada para
entrada 01, 10, 11
Resumen:
Perceptrón
• Un perceptrón de dos entradas puede separar un plano en dos
secciones, ya que su ecuación forma una línea recta, tal cual como
muestra la figura:
Perceptrón
• Considerando las entradas con sus respectivos pesos y un bias, y si
buscamos los valores de entrada que nos hagan la salida 0, se obtiene
la ecuación:
𝜔1 𝑥1 + 𝜔𝑤 𝑥2 + 𝜃 = 0
• Despejando resulta una ecuación donde los pesos determinan la
pendiente de la línea y el bias determina el desplazamiento vertical de
la clasificación lineal:
𝜔1 𝜃
𝑥2 = − 𝑥1 −
𝜔2 𝜔2
• A esta recta se le conoce como frontera de decisión y es ortonormal al
vector de los pesos en la red.
Perceptrón
Ejemplo: Se desea clasificiar patrones linealmente separables, se
propone un perceptrón de dos entradas para ser entrenado, con pesos
iniciales w1=-0.1, w2=-0.8 y un bias de -0.5, esto va a generar una línea
recta como la de la figura:
Perceptrón
Ejemplo: Si se entrena la red y se modifican constantemente los pesos
se puede llegar a que: w1=2.7 y w2=0.5, lo que da una curva como la de
la figura que si clasifica correctamente a los puntos.
Perceptrón
Ejemplo: Queremos construir un sistema automático que coloque las
manzanas en el depósito verde y las piñas en el depósito amarillo.
Usamos dos sensores para determinar el fruto y una cámara para
determinar el color promedio del fruto. Diseñe una red neuronal
perceptrón que realice la clasificación entre piñas y manzanas.
Considere que los sensores entregan los siguientes niveles de voltajes
para las siguientes piñas típicas:
𝑃𝑒𝑠𝑜 1.5 0.9 2.1
𝑋= , 𝑥1 = , 𝑥2 = , 𝑥3 =
𝐶𝑜𝑙𝑜𝑟 −0.3 0.05 0.2
Y para las siguientes manzanas típicas:
𝑃𝑒𝑠𝑜 0.24 0.45 0.15
𝑋= , 𝑥4 = , 𝑥5 = , 𝑥6 =
𝐶𝑜𝑙𝑜𝑟 −0.87 −0.6 −0.43
Perceptrón
• Consideremos que cuando la neurona no está activa, indica que es
piña, en caso de que se active la neurona, indica que es manzana.
• Para este ejercicio se
grafican las piñas y
manzanas, se traza una recta
que agrupe los conjuntos y
se obtiene la ecuación de la
recta:
𝑥1 + 𝑥2 − 0.5 = 0
Por lo tanto:
𝜔1 = 1, 𝜔2 = 1, 𝜃 = −0.5
Perceptrón
Ejemplo 2: un bibliotecario tiene una base de datos de 500.000 libros, necesita
clasificarlos en 4 conjuntos mediante dos criterios, peso y frecuencia de uso del
libro. Estos para decidir en qué parte de la biblioteca serán colocados. La base de
datos contiene el peso y la frecuencia de uso de cada libro. Diseñe una red neuronal
perceptrón para que automáticamente clasifique los libros. Considere que el
bibliotecario le proporciona los siguientes patrones de prueba:
Clases Pero (kg)
Frec. Uso = N° prestamos/mes
1 Ligeros y poco usados 0.7 1.5
𝑥1 = , 𝑥2 =
3 5
2 Ligeros y muy usados 2.0 0.9
𝑥3 = , 𝑥4 =
9 11
3 Pesados y poco usados 4.2 2.2
𝑥5 = , 𝑥6 =
0 1
4 Pesados y muy usados 3.6 4.5
𝑥7 = , 𝑥8 =
7 6
Clase A1 A2

Perceptrón 1
2
0
0
0
1
3 1 0
La representación de cada clase será: 4 1 1

La ecuación de la recta para


cada neurona es:
Neurona 1:
5𝑥1 − 𝑥2 − 5 = 0
Neurona 2:
2𝑥1 + 𝑥2 − 10 = 0
Por lo tanto la matriz de pesos y
de bias es:
5 −1
𝜔=
2 1
−5
𝜃=
−10
Perceptrón
• Una red lineal perceptrón sólo puede clasificar cosas que sean
separables mediante una recta.
Perceptrón
• Los siguientes conjuntos tampoco son separables mediante una red
neuronal de una sola capa, pero sí mediante una red con muchas capas.
Perceptrón
• Para realizar el algoritmo de entrenamiento en una red mediante
código debemos hacer:
Perceptrón
Ejemplo: Considere que los números
desde 0 a 9 están representados mediante
el código de 7 segmentos de un display
LED’s en cátodo común, entrene una
neurona perceptrón para que reconozca a
partir de ese mismo código:
A. Los números pares.
B. Los números mayores que 5.
C. Los números primos.
Perceptrón
• Entonces, la siguientes tablas muestran los segmentos prendidos para
cada número y la salida deseada para cada patrón de prueba.
N° a b c d e f g ta tb Tc
0 1 1 1 1 1 1 0 1 0 0
A. Los números pares.
1 0 1 1 0 0 0 0 0 0 0 B. Los números mayores que 5.
2 1 1 0 1 1 0 1 1 0 1 C. Los números primos.
3 1 1 1 1 0 0 1 0 0 1
4 0 1 1 0 0 1 1 1 0 0
5 1 0 1 1 0 1 1 0 0 1
6 1 0 1 1 1 1 1 1 1 0
7 1 1 1 0 0 0 0 0 1 1
8 1 1 1 1 1 1 1 1 1 0
9 1 1 1 1 0 1 1 0 1 0
Perceptrón
Resumen Perceptron:
• Cada neurona forma una frontera de decisión, en donde w determina la
orientación y el BIAS determina la traslación del hiperplano.
• El Perceptron no puede resolver el problema de XOR.
• El perceptrón solo puede clasificar grupos con separabilidad lineal
pero no garantiza la mejor solución.
ADALINE
• ADALINE = Adaptive Linear Network.
• Consiste en otro modelo de neurona de una sola capa creada por
Bernard Widrow y Marcian E. Hoff en 1959.
• Se basa en una topología similar a la del perceptrón, excepto porque
emplea una función de activación lineal (a diferencia del perceptrón
que simplemente utiliza el escalón y su salida siempre es 1 y 0) y
además utiliza para su entrenamiento un método de mínimos cuadrado
(conocido como LMS).
ADALINE
• Estructura similar al perceptrón, pero en ADALINE las entradas
pueden ser de forma continua, mientras que en el perceptrón son sólo
binarias.
ADALINE
LMS (Least Mean Square) :
• Los pesos son ajustados mediante la regla Widrow-Hoff para minimizar la
diferencia entre la salida y el objetivo.
• LMS se basa en el método del descenso de gradiente para minimizar la
diferencia entre la salida deseada y la actual.
• En el caso del perceptrón se requería que el problema fuera linealmente
separable, ahora, buscamos un clasificador lineal que sea óptimo en algún
sentido.
• Es por esto que este método nos ayuda a encontrar la frontera de decisión
más óptima.
• La idea es producir una secuencia de pesos 𝜔(𝑘) tal que en cada iteración la
función de costos disminuya, esto se logra con correcciones al vector en
dirección opuesta al gradiente
ADALINE
LMS (Least Mean Square) :
• Pero, ¿Qué es el gradiente
descendiente?
• Es un método que nos permite
encontrar un conjunto de parámetros
(pesos) que minimizan una función de
coste (En este caso, el error cuadrático
medio).
• El método representa la pendiente en
el punto que nos encontremos de la
función de coste, mientras mayor sea
la pendiente, más se desea bajar para
minimizar el error.
ADALINE
LMS (Least Mean Square) :
• El gradiente es una generalización de la derivada de una función en una
dimensión llevada a una función f en muchas dimensiones, se representa como un
vector de n derivadas parciales de la función f.
• El gradiente en matemática se expresa como 𝛻 se calcula como:
𝜕𝐸 𝜕𝐸 𝜕𝐸
𝛻𝐸 𝑤 = , ,…,
𝜕𝑤0 𝜕𝑤1 𝜕𝑤𝑚
• Para este método los pesos se actualizan mediante la siguiente formula:
∆𝜔 = −𝜂𝛻𝐸(𝜔)
• Notar que se usa la resta para ir en dirección opuesta al gradiente.
• La actualización de 𝜔 es proporcional al gradiente (a mayor pendiente, mayor es
el cambio).
ADALINE
LMS (Least Mean Square) :
• Además notar que en la expresión
anterior, 𝜂 controla el tamaño de la
actualización.
• La tasa de aprendizaje, por lo general
toma valores 0 < 𝜂 < 1.
• La tasa de aprendizaje me asegura
que no damos grandes saltos, ya que
si se dan saltos muy grandes será
difícil encontrar los coeficientes que
minimicen la función de costo.
ADALINE
LMS (Least Mean Square) :
• Utilizando el gradiente descendiente se corre el riesgo de caer en un
mínimo local, pero en la práctica se ha comprobado que la
probabilidad de caer en un mínimo local es muy pequeña.
ADALINE
LMS (Least Mean Square) :
• Retomando la ecuación ∆𝜔 = −𝜂𝛻𝐸(𝜔), si la evaluamos en cada
componente tenemos que:
𝜕𝐸
∆𝜔𝑖 = −𝜂
𝜕𝜔𝑖
• Luego, si evaluamos la derivada del error cuadrático medio, es decir,
1 ℎ 2
𝐸= 𝑒 , se tiene que:
2 𝑘=1
𝜕𝐸 𝜕 1 2
= ∙ 𝑑 𝑘 −𝑦 𝑘
𝜕𝜔𝑖 𝜕𝜔𝑖 2
ADALINE
LMS (Least Mean Square) :
𝜕𝐸 𝜕 1 2
= ∙ 𝑑 𝑘 −𝑦 𝑘
𝜕𝜔𝑖 𝜕𝜔𝑖 2
1 𝜕 2
= ∙ 𝑑 𝑘 −𝑦 𝑘
2 𝜕𝜔𝑖
2 𝜕
= ∙ 𝑑 𝑘 −𝑦 𝑘 𝑑 𝑘 −𝑦 𝑘
2 𝜕𝜔𝑖
𝜕
= 𝑑 𝑘 −𝑦 𝑘 𝑑 𝑘 − 𝜔𝑥(𝑘)
𝜕𝜔𝑖
= − 𝑑 𝑘 −𝑦 𝑘 ∙ 𝑥𝑖 (𝑘)
ADALINE
LMS (Least Mean Square) :
• De la expresión anterior se deduce entonces que:
∆𝜔𝑖 = 𝜂 𝑑 𝑘 − 𝑦(𝑘) ∙ 𝑥𝑖 (𝑘)

• Por lo tanto podemos decir que:


𝜔 = 𝜔 − 𝜂𝛻𝐸 𝜔 = 𝜔 + 𝜂𝑒 𝑘 𝑥𝑖 (𝑘)
• El Bias también es configurable mediante:
𝑏 = 𝑏 + 𝜂𝑒(𝑘)
Nota: normalizar los datos siempre ayuda a minimizar al algoritmo de gradiente
descendiente.
Nota: Existen muchas variaciones del algoritmo de gradiente descendiente, tales
como Adagrad, momentum, RMSprop, Adam, etc.
ADALINE
Adaline vs perceptrón:
• El perceptrón solo entrega salida binaria, en cambio adaline puede entregar
salida continua.
• Adaline utiliza función de activación lineal, mientras que el perceptrón
utiliza función de activación escalón.
• El error que se utiliza para la regla de aprendizaje es el error cuadrático y se
logra una minimización de dicho error.
• Una red Adaline puede seguir aprendiendo aún después de dar una respuesta
final correcta.
• A pesar de estas ventajas, Adaline tampoco puede resolver el problema de
or exclusivo.
ADALINE
Ejemplo: Realizar un decodificador binario a decimal con una tasa de
aprendizaje de 0.3 y pesos iniciales 𝜔1 = 0.84, 𝜔2 = 0.394, 𝜔3 =
0.783.
X1 X2 X3 DESEADO
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
ADALINE
Ejemplo: Si evaluamos para el primer patrón de entrada tenemos que:
𝑥1 = 0, 𝑥2 = 0, 𝑥3 = 1, la salida en este caso viene dada por:
𝑦 = 𝜔1 𝑥1 + 𝜔2 𝑥2 + 𝜔3 𝑥3
𝑦 = 0.84 ∙ 0 + 0.394 ∙ 0 + 0.783 ∙ 1 = 0.783
𝐸= 𝑑 𝑘 − 𝑦(𝑘) = 1 − 0.783 = 0.217

La actualización de los pesos viene dada por:


𝜔1 = 𝜔1 + 𝜂𝐸𝑥1 = 0.84
𝜔2 = 𝜔2 + 𝜂𝐸𝑥2 = 0.394
𝜔3 = 𝜔3 + 𝜂𝐸𝑥3 = 0.783 + 0.3 ∙ 0.217 ∙ 1 = 0.848
ADALINE
Ejemplo: Si evaluamos el segundo patrón tenemos que: 𝑥1 = 0, 𝑥2 = 1, 𝑥3 =
0, entonces:
𝑦 = 𝜔1 𝑥1 + 𝜔2 𝑥2 + 𝜔3 𝑥3
𝑦 = 0.84 ∙ 0 + 0.394 ∙ 1 + 0.848 ∙ 0 = 0.394
𝐸= 𝑑 𝑘 − 𝑦(𝑘) = 2 − 0.394 = 1.61

La actualización de los pesos viene dada por:


𝜔1 = 𝜔1 + 𝜂𝐸𝑥1 = 0.84
𝜔2 = 𝜔2 + 𝜂𝐸𝑥2 = 0.394 + 0.3 ∙ 1.61 ∙ 1 = 0.876
𝜔3 = 𝜔3 + 𝜂𝐸𝑥3 = 0.848
Así se continua sucesivamente…
ADALINE
Ejemplo: Los valores de los pesos en cada época serán:
%Ejemplo actualización ADALINE
Epoca w1 w2 W3 alpha = 0.3; %Tasa de aprendizaje
1 3.12 2 1.86 b = 0; %Bias
w = [0.84 0.394 0.783]; %vector de pesos iniciales
2 3.61 1.98 1.42 x = [0 0 1;0 1 0; 0 1 1; 1 0 0; 1 0 1; 1 1 0; 1 1
3 3.82 1.98 1.2 1]; %vector de entradas
d = [1 2 3 4 5 6 7]; %Vector de salidas deseadas
4 3.92 1.98 1.1 [fil col] = size(x);
5 3.96 1.99 1.02 x = x';
for epocas=1:15
6 3.99 2 1.01 for q=1:fil
7 4 2 1 y(q) = w*x(:,q);
e(q) = d(q)-y(q);
8 4 2 1 w = w + alpha*e(q)*x(:,q)';
9 4 2 1 end
w %Muestra el valor final de los pesos en cada
10 4 2 1 epoca
end
Perceptrón Multicapa
Ni el perceptrón ni la
neurona adaline pueden
resolver el problema de
xor, sin embargo,
utilizando redes en
cascada se pueden
generar un sinfín de
superficies para clasificar
cosas aunque no sean
linealmente separables.
Perceptrón Multicapa
• 1969, Minsky & Papert mostraron que el uso de varios perceptrones simples
(neuronas ocultas) puede ser una solución para problemas no lineales. Sin
embargo no dejaron en claro como se puede entrenar (ajustar los pesos ocultos).
• La idea es que al red sea capaz de aprender autolinealidades sin la intervención de
la persona, para esto se propuso utilizar capas intermedias entre la salida y la
entrada llamadas capas ocultas.
Perceptrón Multicapa
• Por muchas capas ocultas que
se le agreguen a la red, esta
nunca podrá resolver el
problema de selección no
lineal totalmente si no se
considera el uso de alguna no
linealidad en el problema.
• Para esto es que se usan
funciones de activación no
lineales tales como ReLu,
sigmoide o TanH.
Perceptrón Multicapa
• Si en todas los nodos de la red
se utilizan funciones de
activación no lineales, las capas
tienen más impacto.
• Al apilar no linealidades
podemos modelar relaciones
muy complicadas entre las
entradas y los resultados
predichos.
• En resumen, cada capa aprende
una función más compleja y de
nivel más alto de las entradas
sin procesar.
Perceptrón Multicapa
• Entonces, la funciones de activación más utilizadas son el sigmoide, el
TanH y ReLu.

1 𝑒 𝑥 − 𝑒 −𝑥 𝑒 𝑥 − 𝑒 −𝑥
𝑓 𝑥 = 𝑓 𝑥 = 𝑥 𝑓 𝑥 = 𝑥
1 + 𝑒 −𝑥 𝑒 + 𝑒 −𝑥 𝑒 + 𝑒 −𝑥
Perceptrón Multicapa
• 1986, Rumelhart & Compañía,
presentó un método para
retropropagar el error medido en la
salida hacia las neuronas ocultas.
Se denomina REGLA DELTA
GENERALIZADA.
• Esta técnica es muy empleada ya
que permite tener un método de
optimización que se encuentra al
definir el gradiente del error y
minimizarlo con respecto a los
parámetros de la red neural.
Perceptrón Multicapa
• 1986, Rumelhart & Compañía,
presentó un método para
retropropagar el error medido en la
salida hacia las neuronas ocultas.
Se denomina REGLA DELTA
GENERALIZADA.
• Esta técnica es muy empleada ya
que permite tener un método de
optimización que se encuentra al
definir el gradiente del error y
minimizarlo con respecto a los
parámetros de la red neural.
Perceptrón Multicapa
• Para enseñarle a la red neuronal es
necesario entrenar un conjunto de
datos, el cual consta de señales de
entrada y objetivos correspondientes.
• El entrenamiento es un proceso
iterativo, en cada iteración los pesos
se actualizan con el siguiente
algoritmo.
• Primero se tiene un avance hacia
adelante, calculando la salida
correspondiente de cada neurona.
Perceptrón Multicapa
• El siguiente paso del algoritmo es calcular el error. Cómo es imposible
calcular el error de las neuronas de la capa oculta, el algoritmo hace la
“retropropagación” del error de regreso a todas las neuronas, cuya
salida fue la entrada de la última neurona.
Perceptrón Multicapa
• Posteriormente el error se va propagando a las neuronas de capas
anteriores, considerando los pesos de las conexiones, según se aprecia
en la figura.
Perceptrón Multicapa
• El coeficiente 𝜂 afecta la
velocidad de aprendizaje.
• Notar que la variación de los
pesos depende de dos factores:
𝑑𝑓1
de 𝛿 y de , siendo 𝑓1 la
𝑑𝜔
función de activación del nodo
1.
• Procederemos a encontrar el
algoritmo dichos factores como
se demuestra a continuación
Perceptrón Multicapa
• En resumen la retropropagación es de la siguiente forma:
Perceptrón Multicapa
Algoritmo de Retropropagación:

• Supongamos que se tiene un sistema con M neuronas como el de la


figura, en donde la salida esta dado por:
𝑦 𝑚 = 𝑓 𝑚 (𝑤 𝑚 ∙ 𝑦 𝑚−1 + 𝑏 𝑚 )
𝑦 0 = 𝑥 (Vector de entradas)
Perceptrón Multicapa
Algoritmo de Retropropagación:
• Notar que minimizar el error cuadrático es una tarea compleja puesto
que ahora el error depende de los pesos intermedios.
• Entonces, como el método se basa en el descenso por gradiente
podemos decir que:
𝑚 𝑚
𝑑𝐸
𝑤 =𝑤 −𝜂∙
𝑑𝑤 𝑚
Donde E es el error cuadrático, o bien: 𝐸 = 𝑑 − 𝑓 2 .
𝑑𝐸
La complejidad ahora esta en calcular
𝑑𝑤 𝑚
Perceptrón Multicapa
Algoritmo de Retropropagación:
𝑑𝐸
• Notar que al igual que en el caso de ADALINE, 𝑚 corresponde a un vector que
𝑑𝑤
contiene la derivada del error respecto a todos los pesos sinápticos.
𝑑𝐸 𝑑𝐸 𝑑𝐸
= 𝑚…
𝑑𝑤 𝑚 𝑑𝑥1 𝑑𝑥𝑁𝑀
𝑑𝐸
• Utilizaremos regla de la cadena para descomponer el término de la siguiente
𝑑𝑤 𝑚
manera:
𝑑𝐸 𝑑𝐸 𝑑𝑁𝑖𝑚 𝑑𝐸 𝑚
= ∙ = ∙ 𝑥
𝑑𝑤𝑖𝑚 𝑑𝑁𝑖𝑚 𝑑𝑤𝑖𝑚 𝑑𝑁𝑖𝑚
𝑑𝑁𝑖𝑚
• Notar que si 𝑁𝑖𝑚 = 𝑥𝑚 ∙ 𝑤𝑖𝑚 , entonces: = 𝑥𝑚
𝑑𝑤𝑖𝑚
Perceptrón Multicapa
Algoritmo de Retropropagación:
𝑑𝐸
• Notar que en la expresión anterior nace un nuevo concepto 𝑚 que por ahora lo
𝑑𝑁𝑖
llamaremos sensibilidad (𝜹).
• Por lo tanto diremos que:
𝑑𝐸 𝑚 𝑚
= 𝛿 𝑖 ∙ 𝑥
𝑑𝑤𝑖𝑚
• Pero eso no es todo, notar que la entrada a una capa “M” corresponde a la salida
de la capa anterior, por ende:
𝑑𝐸 𝑚−1 𝑦 𝑚−1 𝛿 𝑚
= 𝛿 𝑚
∙ 𝑥 𝑚
= 𝛿 𝑚
∙ 𝑦 = 𝑖
𝑖 𝑖
𝑑𝑤𝑖𝑚 1 𝛿𝑖𝑚
• A partir de esto es posible deducir entonces:
𝑤 𝑚 = 𝑤 𝑚 − 𝜂𝛿𝑖𝑚 𝑦 𝑚−1
𝑏 𝑚 = 𝑏 𝑚 − 𝜂𝛿𝑖𝑚
Perceptrón Multicapa
Algoritmo de Retropropagación:
• ¿Qué es la sensibilidad?
• Haremos uso nuevamente de la regla de la cadena para poder expresar:
𝑑𝐸 𝑑𝑁 𝑚 𝑑𝐸 𝑚−1
𝑑𝑁 𝑚
𝑚
𝛿 𝑡 = = ∙ → 𝛿 = ∙ 𝛿
𝑑𝑁𝑖𝑚−1 𝑑𝑁 𝑚−1 𝑑𝑁 𝑚 𝑑𝑁 𝑚−1
𝑑𝑁𝑀
• Pero tenemos un nuevo problema, a que corresponde , entonces:
𝑑𝑁𝑀−1
𝑑𝑁 𝑚 𝑑𝑓 𝑚−1 𝑑𝑁 𝑚 𝑚−1 𝑚−1 𝑚
= ∙ = 𝐹 (𝑁 ) ∙ 𝑤
𝑑𝑁 𝑚−1 𝑑𝑁 𝑚−1 𝑑𝑓 𝑚−1
Perceptrón Multicapa
Algoritmo de Retropropagación:
• Entonces, en base a lo anterior tenemos que:
𝛿 𝑚−1 = 𝐹 𝑚−1 (𝑁 𝑚−1 ) ∙ 𝑤 𝑚 ∙ 𝛿 𝑚
• Esto quiere decir, que la sensibilidad de la penúltima capa depende de la
sensibilidad de la última capa, por ende tenemos que calcular la sensibilidad de la
última capa para poder realizar la retropropogación hacia atrás, entonces:
𝑑𝐹 𝜕𝐹 𝜕 𝑡 − 𝑦 2 𝜕𝑦𝑖
𝑀 𝑖 𝑖
𝛿 = = 𝑀 = 𝑀 = −2 𝑡𝑖 − 𝑦𝑖
𝑑𝑁 𝑀 𝜕𝑁𝑖 𝜕𝑁𝑖 𝜕𝑁𝑖𝑀
Notar que:
𝜕𝑦𝑖 𝜕𝑓 𝑀 𝑛𝑖𝑀 𝑀 (𝑛𝑀 )
= = 𝑓 𝑖
𝜕𝑁𝑖𝑀 𝜕𝑛𝑖𝑀
Perceptrón Multicapa
Algoritmo de Retropropagación:
• Por lo tanto, se puede escribir:
𝛿𝑖𝑀 = −2(𝑡𝑖 − 𝑎𝑖 )𝑓 𝑀 (𝑛𝑖𝑀 )
• Expresado en forma matricial tenemos que:
𝜹𝑀 = −2𝑭𝑀 (𝒏𝑀 )(𝒕 − 𝒚)
• El siguiente paso es propagarlo las sensibilidades hacia atrás en la red:
𝜹𝑚−1 = 𝑭𝑚−1 𝒏𝑚−1 𝑾𝑚 𝑇 𝜹𝑚
Perceptrón Multicapa
Algoritmo de Retropropagación:
• La última incógnita que nos queda es descubrir el término 𝑭, este es
igual a:
𝜕𝑭𝑴 𝑑𝑓1𝑀 𝑑𝑓𝑁𝑀 𝑑𝑓𝑖𝑀
= ,…, = 𝑑𝑖𝑎𝑔
𝜕𝑵 𝑴 𝑑𝑁 𝑀 𝑑𝑁 𝑀 𝑑𝑁𝑖𝑀
• Esto es así, porque la función de activación sólo se ve influenciada por
su salida neta, es decir, la función de activación de la neurona 1 solo se
ve influenciada por la entrada neta de la neurona 1.
Perceptrón Multicapa
Algoritmo de Retropropagación:
• Ahora la pregunta es: ¿Qué funciones de activación utilizar?
• Las funciones de activación deben ser continuas, no lineales y derivables,
puesto que de esta manera nos permiten resolver problemas con
separabilidad no lineal.
1. Sigmoide:
1
𝑓 𝑥 =
1 + 𝑒 −𝑥
𝑓′ 𝑥 = 𝑓 𝑥 ∙ 1 − 𝑓 𝑥
Notar que si todos los nodos utilizan función sigmoidal, entonces:
𝑭𝑀 𝒏𝑀 = 𝑑𝑖𝑎𝑔 1 − 𝑓𝑖𝑚 ∙ 𝑓𝑖𝑚
Perceptrón Multicapa
Algoritmo de Retropropagación:
• Ahora la pregunta es: ¿Qué funciones de activación utilizar?
• Las funciones de activación deben ser continuas, no lineales y derivables,
puesto que de esta manera nos permiten resolver problemas con
separabilidad no lineal.
2. Tangente hiperbólica:
𝑒 𝑥 − 𝑒 −𝑥
𝑓 𝑥 = 𝑥 −𝑥
𝑒 + 𝑒
𝑓 ′ 𝑥 = 1 − 𝑓 2 (𝑥)
Notar que si todos los nodos utilizan función tanH, entonces:
𝑭𝑀 𝒏𝑀 = 𝑑𝑖𝑎𝑔 1 − 𝑓𝑖𝑚 2
Perceptrón Multicapa
Inicialización Aleatoria de 𝑾 𝑚 𝑦 𝒃𝑚
Algoritmo de Retropropagación:
Desde épocas = 1 a Nepocas repetir:
• La nueva pregunta es: ¿Cómo elaboro Desde q=1 a Q repetir //Patrones de entrada
un algoritmo en base a esto? //Paso 1: Propagar hacia adelante:
• Los pesos iniciales nunca se pueden 𝒚𝑚 = 𝒇𝑚 𝑾𝑚 𝒚𝑚−1 + 𝒃
iniciar en cero por que en dicho caso el //Paso 2: Propagar hacia atrás:
algoritmo no progresa.
𝒆𝑞 = 𝒕𝑞 − 𝒚𝑀
𝑞
• El algoritmo se detiene cuando: 𝜹𝑀 = −2𝑭𝑀 𝒏𝑀 𝒆𝑞
• Gradiente sea pequeño en norma.
𝜹𝑚−1 = 𝑭𝑚−1 𝒏𝑚−1 𝒘𝑚 𝑇 𝜹𝑚
• El cambio en el error sea pequeño entre
épocas sucesivas. //Paso 3: Actualizar pesos:
• Hasta alcanzar los resultados de 𝑾𝑚 = 𝑾𝑚 − 𝜂𝜹𝑚 𝒚𝑚−1 𝑇
generalización deseado. 𝒃𝑚 = 𝒃𝑚 − 𝜂𝜹𝑚
• Hasta alcanzar un número de épocas.
Fin
Fin
Perceptrón Multicapa
Ejemplo: Calcular la actualización de los pesos con una red neuronal de tres capas,
una “capa de entrada”, una copa oculta con dos neuronas y una capa de salida con
una sola neurona. Los pesos aleatorios se pueden visualizar en la siguiente figura,
además considerar que la función de activación de las neuronas es lineal (y(x) = x,
aunque sabemos que no es lo correcto pero es para entender el algoritmo) y que se
desea que cuando las entradas sean [2,3] la salida sea [1].
Perceptrón Multicapa
• Paso 1: Avance Hacia delante. • Paso 2: Cálculo error.
1
𝐸𝑟𝑟𝑜𝑟 = 𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛 − 𝑜𝑢𝑡 2
2
1
𝐸𝑟𝑟𝑜𝑟 = 1 − 0.191 2 = 0.327
2
• Nota: Recordar que el factor ½
es agregado para simplificar la
derivada después.
Perceptrón Multicapa
Comprender:
• Al descomponer la predicción en sus elementos básicos, podemos
encontrar que los pesos son los elementos variables que afectan el
valor de la predicción. En otras palabras, si deseamos cambiar la
predicción debemos cambiar los pesos.
𝑃𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛 = 𝑜𝑢𝑡
𝑃𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛 = ℎ1 𝑤5 + ℎ2 𝑤6
𝑃𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛 = 𝑖1 𝑤1 + 𝑖2 𝑤2 𝑤5 + 𝑖1 𝑤3 + 𝑖2 𝑤4 𝑤6
• Para cambiar dichos pesos es que utilizaremos la propagación hacia
atrás, para así reducir el error.
Perceptrón Multicapa
Comprender:
• Cómo se desea minimizar la función del error se utiliza descenso
𝜕𝐸𝑟𝑟𝑜𝑟
por gradiente, en donde la
actualización de los pesos se lleva acabo por: 𝑤𝑥 = 𝑤𝑥 − 𝜂 .
𝜕𝑤𝑥
• Por ejemplo, para actualizar w6, debemos encontrar la variación del error respecto a w6, para
esto aplicamos regla de la cadena:
𝜕𝐸𝑟𝑟𝑜𝑟 𝜕𝐸𝑟𝑟𝑜𝑟 𝜕𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛
= ∙
𝜕𝑤6 𝜕𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛 𝜕𝑤6
1 2
𝜕𝐸𝑟𝑟𝑜𝑟 𝜕 𝑝𝑟𝑒𝑑 − 𝑜𝑢𝑡 𝜕 ℎ1 𝑤5 + ℎ2 𝑤6
= 2 ∙
𝜕𝑤6 𝜕𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛 𝜕𝑤6
𝜕𝐸𝑟𝑟𝑜𝑟 𝜕 𝑝𝑟𝑒𝑑 − 𝑎𝑐𝑡𝑢𝑎𝑙
= 𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛 − 𝑎𝑐𝑡𝑢𝑎𝑙 ∙ ∙ ℎ2
𝜕𝑤6 𝜕𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛
𝜕𝐸𝑟𝑟𝑜𝑟
= 𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛 − 𝑎𝑐𝑡𝑢𝑎𝑙 ∙ ℎ2
𝜕𝑤6
Perceptrón Multicapa
• Paso 3: Actualizar w6 como sigue:
𝜕𝐸𝑟𝑟𝑜𝑟
𝑤6 = 𝑤6 − 𝜂 ∙ = 𝑤6 − 𝜂 ∙ 𝑝𝑟𝑒𝑑 − 𝑎𝑐𝑡𝑢𝑎𝑙 ∙ ℎ2
𝜕𝑤6
𝜕𝐸𝑟𝑟𝑜𝑟
𝑤5 = 𝑤5 − 𝜂 ∙ = 𝑤5 − 𝜂 ∙ 𝑝𝑟𝑒𝑑 − 𝑎𝑐𝑡𝑢𝑎𝑙 ∙ ℎ1
𝜕𝑤5
• Ahora presentamos un nuevo problema, necesitamos la actualización de w1,
w2, w3, w4, lo cual se hace de manera similar a lo anterior, es decir:
𝜕𝐸𝑟𝑟𝑜𝑟
𝑤1 = 𝑤1 − 𝜂 ∙
𝜕𝑤1
Ahora la problemática se centra en encontrar la última derivada, para esto:
Perceptrón Multicapa
𝜕𝐸𝑟𝑟𝑜𝑟 𝜕𝐸𝑟𝑟𝑜𝑟 𝜕𝑝𝑟𝑒𝑑 𝜕ℎ1
= ∙ ∙
𝜕𝑤1 𝜕𝑝𝑟𝑒𝑑 𝜕ℎ1 𝜕𝑤1
1 2
𝜕𝐸𝑟𝑟𝑜𝑟 𝜕 𝑝𝑟𝑒𝑑 − 𝑜𝑢𝑡 𝜕 ℎ1 𝑤5 + ℎ2 𝑤6 𝜕 𝑖1 𝑤1 + 𝑖2 𝑤2
= 2 ∙ ∙
𝜕𝑤1 𝜕𝑝𝑟𝑒𝑑 𝜕𝑤6 𝜕𝑤1
𝜕𝐸𝑟𝑟𝑜𝑟 𝜕 𝑝𝑟𝑒𝑑 − 𝑎𝑐𝑡𝑢𝑎𝑙
= 𝑝𝑟𝑒𝑑 − 𝑎𝑐𝑡𝑢𝑎𝑙 ∙ 𝑤5 ∙ 𝑖1
𝜕𝑤1 𝜕𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛
𝜕𝐸𝑟𝑟𝑜𝑟
= 𝑝𝑟𝑒𝑑 − 𝑎𝑐𝑡𝑢𝑎𝑙 ∙ 𝑤5 𝑖1
𝜕𝑤1
• Nota: Algunas literaturas denominan como delta a: ∆= 𝑝𝑟𝑒𝑑 − 𝑎𝑐𝑡𝑢𝑎𝑙 por
eso la conocen como la regla delta.
Perceptrón Multicapa
• Lo anterior se puede replicar para w2,w3 y w4, y en resumen podemos
decir que:

• Las ecuaciones anteriores se pueden reescribir en forma matricial


como:
Perceptrón Multicapa
• Para este caso:
∆= 𝑝𝑟𝑒𝑑 − 𝑎𝑐𝑡𝑢𝑎𝑙 = 0.191 − 1 = −0.809
• Luego, considerando un 𝜂 = 0.05 se procede con el cálculo de los
nuevos pesos de la forma:
Perceptrón Multicapa
• Una vez realizado esto se
repite el algoritmo, es decir,
se avanza hacia adelante para
calcular el error.
• Notar que ahora la predicción
es de 0.26, lo que esta mas
cerca de la salida real que la
predicción anterior de 0.191.
• Se puede repetir el proceso
hasta que el error sea cercano
o igual a cero.
Perceptrón Multicapa
• Visualmente se tiene que:
Perceptrón Multicapa
Ejemplo 2: Se tiene la siguiente RN, calcular la actualización de los
pesos utilizando el algoritmo de BackPropagation considerando que
todas las neuronas tienen una función de activación sigmoidal y 𝜂 = 0.5
Perceptrón Multicapa
• Paso 1 (Paso hacia adelante): Calcular la salida de cada neurona,
para esto calculamos la entrada neta total de la neurona ℎ1 :
𝑁𝑒𝑡𝑎ℎ1 = 𝑤1 𝑖1 + 𝑤2 𝑖2 + 𝑏1 ∙ 1
𝑁𝑒𝑡𝑎ℎ1 = 0.3775
• Luego calculamos la salida de la neurona ℎ1 utilizando la función de
activación sigmoidal para 𝑁𝑒𝑡𝑎ℎ1 :
1
𝑜𝑢𝑡ℎ1 = −𝑛𝑒𝑡𝑎ℎ1 = 0.593269992
1 + 𝑒1
• Se puede repetir el proceso para la salida de la neurona ℎ2 :
𝑜𝑢𝑡ℎ2 = 0.596884378
Perceptrón Multicapa
• Paso 2: Calcular los valores para la capa de salida, es decir, calcular la
salida para las neurona 𝑜1 𝑦 𝑜2 :
𝑁𝑒𝑡𝑎𝑜1 = 𝑤5 ∙ 𝑜𝑢𝑡ℎ1 + 𝑤6 ∙ 𝑜𝑢𝑡ℎ2 + 𝑏2 ∙ 1
𝑁𝑒𝑡𝑎𝑜1 = 1.105905967
• Luego evaluamos en la función de activación:
1
𝑂𝑢𝑡𝑜1 = −𝑛𝑒𝑡𝑜1 = 0.75136507
1 + 𝑒𝑜1
• Repetimos el procedimiento para la neurona 𝑜2 :
𝑂𝑢𝑡𝑜2 = 0.772928465
Perceptrón Multicapa
• Paso 3: Cálculo de errores. Primero calcularemos el error cuadrático medio
de cada salida deseada y luego calcularemos un error total que
corresponderá a la suma de los errores de cada neurona.
1
𝐸𝑟𝑟𝑜𝑟 = 𝑡𝑎𝑟𝑔𝑒𝑡 − 𝑜𝑢𝑡𝑝𝑢𝑡 2
2
1 1
𝐸𝑜1 = 𝑡𝑎𝑟𝑔𝑒𝑡 − 𝑂𝑢𝑡𝑜1 = 0.01 − 0.75136507 2
2 2
𝐸𝑜1 = 0.274811083
• Se repite el procedimiento para la neurona o2:
𝐸𝑜2 = 0.023560026
• El error total es la suma de ambos, es decir:
𝐸𝑡𝑜𝑡𝑎𝑙 = 𝐸𝑜1 + 𝐸𝑜2 = 0.298371109
Perceptrón Multicapa
• Paso 4: Algoritmo de retropropagación: El objetivo de este
algoritmo es actualizar cada uno de los pesos en la red para que hagan
que la salida real esté más cerca de la salida objetivo, minimizando el
error para cada neurona de salida y de la red en conjunto.
• Considere que queremos saber cuánto afecta un cambio en w5 en el
error total, para esto hacemos el gradiente del error respecto a w5 y
luego aplicamos regla de la cadena, es decir:
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝑜𝑢𝑡1 𝜕𝑛𝑒𝑡𝑜1
= ∙ ∙
𝜕𝑤5 𝜕𝑜𝑢𝑡𝑜1 𝜕𝑛𝑒𝑡𝑜1 𝜕𝑤5
Perceptrón Multicapa
• Visualmente, lo que se esta haciendo al considerar la regla de la
cadena es:
Perceptrón Multicapa
• Entonces, luego se necesita descubrir cada pieza de esta ecuación:
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝑜𝑢𝑡1 𝜕𝑛𝑒𝑡𝑜1
= ∙ ∙
𝜕𝑤5 𝜕𝑜𝑢𝑡𝑜1 𝜕𝑛𝑒𝑡𝑜1 𝜕𝑤5
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝑜𝑢𝑡1
• Nota: En algunas bibliografías a la variación de ∙ , es
𝜕𝑜𝑢𝑡𝑜1 𝜕𝑛𝑒𝑡𝑜1
𝜕𝐸𝑡𝑜𝑡𝑎𝑙
decir, se le conoce como sensiblidad (𝛿𝑜1 ).
𝜕𝑛𝑒𝑡𝑜1
• Procederemos de ambas formas, primero calculando el cambio neto
del error total respecto a la salida de o1 y luego calculando la
sensibilidad (de ambas formas se llega al mismo resultado).
Perceptrón Multicapa
• Encontrar el cambio del error • Ahora, encontrar el cambio
total respecto a 𝑂𝑢𝑡𝑜1 : 𝑂𝑢𝑡𝑜1 respecto a la salida
1 1
𝐸𝑡𝑜𝑡𝑎𝑙 = 𝑡𝑜1 − 𝑜𝑢𝑡𝑜1 + 𝑡𝑜2 − 𝑜𝑢𝑡𝑜2 2
2 Netao1, para esto recordar que la
2 2
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 salida 𝑜𝑢𝑡𝑜1 viene dada por:
= −(𝑡𝑜1 − 𝑜𝑢𝑡𝑜1 ) 1
𝜕𝑜𝑢𝑡𝑜1 𝑜𝑢𝑡𝑜1 =
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 1 + 𝑒 −𝑛𝑒𝑡𝑜1
= 0.74136507 𝜕𝑜𝑢𝑡𝑜1
𝜕𝑜𝑢𝑡𝑜1 ∴ = 𝑜𝑢𝑡𝑜1 (1 − 𝑜𝑢𝑡𝑜1 )
𝜕𝑛𝑒𝑡𝑜1
𝜕𝑜𝑢𝑡𝑜1
= 0.186815602
𝜕𝑛𝑒𝑡𝑜1
Perceptrón Multicapa
• Ahora sólo falta encontrar como cambia la salida 𝑛𝑒𝑡𝑎𝑜1 respecto a
𝜕𝑛𝑒𝑡𝑎𝑜1
𝑤5 , es decir: , para esto recordar primero que:
𝜕𝑤5
𝑛𝑒𝑡𝑎𝑜1 = 𝑤5 ∙ 𝑜𝑢𝑡ℎ1 + 𝑤6 ∙ 𝑜𝑢𝑡ℎ2 + 𝑏2 ∙ 1
𝜕𝑛𝑒𝑡𝑎𝑜1
∴ = 𝑜𝑢𝑡ℎ1 = 0.593269992
𝜕𝑤5
• Juntando todas las expresiones se tiene que:
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝑜𝑢𝑡1 𝜕𝑛𝑒𝑡𝑜1
= ∙ ∙
𝜕𝑤5 𝜕𝑜𝑢𝑡𝑜1 𝜕𝑛𝑒𝑡𝑜1 𝜕𝑤5
𝜕𝐸𝑡𝑜𝑡𝑎𝑙
= 0.7413 ∙ 0.1868 ∙ 0.5932 = 0.082167041
𝜕𝑤5
Perceptrón Multicapa
Resumen: En la literatura es posible encontrar todo esto combinado, es
decir:
𝜕𝐸𝑡𝑜𝑡𝑎𝑙
= − 𝑡𝑎𝑟𝑔𝑒𝑡𝑜1 − 𝑜𝑢𝑡𝑜1 ∙ 𝑜𝑢𝑡𝑜1 ∙ 1 − 𝑜𝑢𝑡𝑜1 ∙ 𝑜𝑢𝑡ℎ1
𝜕𝑤5
Nota: Al momento de la deducción del algoritmo nosotros utilizamos la
sensibilidad, la cual es básicamente:
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝑜𝑢𝑡1 𝜕𝐸𝑡𝑜𝑡𝑎𝑙
𝛿𝑜1 = ∙ =
𝜕𝑜𝑢𝑡𝑜1 𝜕𝑛𝑒𝑡𝑜1 𝜕𝑛𝑒𝑡𝑜1
𝜕𝐸𝑡𝑜𝑡𝑎𝑙
De esta forma se tiene que: = 𝛿𝑜1 ∙ 𝑜𝑢𝑡ℎ1 , lo que a veces también
𝜕𝑤5
𝜕𝐸𝑡𝑜𝑡𝑎𝑙
se ve escrito como = −𝛿𝑜1 ∙ 𝑜𝑢𝑡ℎ1 , simplemente notación
𝜕𝑤5
Perceptrón Multicapa
• Para disminuir el error, restamos este valor al peso actual, multiplicando por
la tasa de aprendizaje, es decir:
∗ 𝜕𝐸𝑟𝑟𝑜𝑟𝑡𝑜𝑡𝑎𝑙
𝑤5 = 𝑤5 − 𝜂 ∙
𝜕𝑤5
𝑤5∗ = 0.4 − 0.5 ∙ 0.082167041 = 0.35891648
• Se repite el mismo proceso para w6, w7 y w8, entonces:
𝑤6∗ = 0.408666186
𝑤7∗ = 0.511301270
𝑤8∗ = 0.561370121
• Nota: Las actualizaciones de los pesos se actualizan una vez estén
calculados todos los nuevos pesos, para continuar el algoritmo ∗
se

utilizan
los pesos originales (𝑤5 , 𝑤6 , 𝑒𝑡𝑐) no los pesos actualizados (𝑤5 , 𝑤6 , 𝑒𝑡𝑐).
Perceptrón Multicapa
• A continuación continuaremos con
los pesos de la capa oculta, es decir,
actualizar w1, w2, w3 y w4. Lo que
se necesita descubrir ahora es:

𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝑜𝑢𝑡ℎ1 𝜕𝑛𝑒𝑡ℎ1


= ∙ ∙
𝜕𝑤1 𝜕𝑜𝑢𝑡ℎ1 𝜕𝑛𝑒𝑡ℎ1 𝜕𝑤1

1 2 3
Perceptrón Multicapa
Calculo de derivada (1):
• El proceso a seguir es similar al usado para la capa de salida, pero con
una pequeña variación para tener en cuenta el hecho de que la salida
de cada neurona de la capa oculta contribuye a la salida (y, por lo
tanto, al error) de las neuronas de salida múltiple.
• Notar que 𝑜𝑢𝑡ℎ1 afecta tanto a 𝑜𝑢𝑡𝑜1 como a 𝑜𝑢𝑡𝑜2 , por lo tanto
𝜕𝐸𝑡𝑜𝑡𝑎𝑙
debe tener en cuenta su efecto en las dos neuronas de salida,
𝜕𝑜𝑢𝑡ℎ1
por lo tanto:
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝐸𝑜1 𝜕𝐸𝑜2
= +
𝜕𝑜𝑢𝑡ℎ1 𝜕𝑜𝑢𝑡ℎ1 𝜕𝑜𝑢𝑡ℎ1
Perceptrón Multicapa
Calculo de derivada (1):
𝜕𝐸𝑜1
• Para continuar debemos entoncesencontrar , para esto:
𝜕𝑜𝑢𝑡ℎ1
𝜕𝐸𝑜1 𝜕𝐸𝑜1 𝜕𝑛𝑒𝑡𝑜1
= ∙
𝜕𝑜𝑢𝑡ℎ1 𝜕𝑛𝑒𝑡𝑜1 𝜕𝑜𝑢𝑡ℎ1
• Pero, la primera derivada ya la encontramos anteriormente:
𝜕𝐸𝑜1 𝜕𝐸𝑜1 𝜕𝑜𝑢𝑡𝑜1
= ∙ = 0.7413 ∙ 0.1868 = 0.1384
𝜕𝑛𝑒𝑡𝑜1 𝜕𝑜𝑢𝑡𝑜1 𝜕𝑛𝑒𝑡𝑜1
• Además:
𝜕𝑛𝑒𝑡𝑜1
= 𝑤5 = 0.4
𝜕𝑜𝑢𝑡ℎ1
Perceptrón Multicapa
Calculo de derivada (1):
• Entonces todo junto es:
𝜕𝐸𝑜1 𝜕𝐸𝑜1 𝜕𝑛𝑒𝑡𝑜1
= ∙ = 0.1384 ∙ 0.4 = 0.055399425
𝜕𝑜𝑢𝑡ℎ1 𝜕𝑛𝑒𝑡𝑜1 𝜕𝑜𝑢𝑡ℎ1
𝜕𝐸𝑜2
• De manera similar a lo anterior calculamos :
𝜕𝑜𝑢𝑡ℎ1
𝜕𝐸𝑜2
= −0.019049119
𝜕𝑜𝑢𝑡ℎ1
• Por lo tanto, la suma es:
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝐸𝑜1 𝜕𝐸𝑜2
= + = 0.0553 + −0.01904 = 0.036350306
𝜕𝑜𝑢𝑡ℎ1 𝜕𝑜𝑢𝑡ℎ1 𝜕𝑜𝑢𝑡ℎ1
Perceptrón Multicapa
Calculo de derivada (2):
𝜕𝑜𝑢𝑡ℎ1
• Ahora tenemos que averiguar ,
para esto notar que:
𝜕𝑛𝑒𝑡ℎ1
1
𝑜𝑢𝑡ℎ1 =
1 + 𝑒 −𝑛𝑒𝑡ℎ1
𝜕𝑜𝑢𝑡ℎ1
∴ = 𝑜𝑢𝑡ℎ1 ∙ 1 − 𝑜𝑢𝑡ℎ1 = 0.2413007
𝜕𝑛𝑒𝑡ℎ1
Calculo de derivada (3):
𝜕𝑛𝑒𝑡ℎ1
= 𝑖1 = 0.05
𝜕𝑤1
Perceptrón Multicapa
• Juntando todo:
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕𝑜𝑢𝑡ℎ1 𝜕𝑛𝑒𝑡ℎ1
= ∙ ∙
𝜕𝑤1 𝜕𝑜𝑢𝑡ℎ1 𝜕𝑛𝑒𝑡ℎ1 𝜕𝑤1
𝜕𝐸𝑡𝑜𝑡𝑎𝑙
= 0.03635 ∙ 0.2413 ∙ 0.05 = 0.0004
𝜕𝑤1
• Con este resultado es posible actualizar w1 como sigue:

𝜕𝐸𝑡𝑜𝑡𝑎𝑙
𝑤1 = 𝑤1 − 𝜂
𝜕𝑤1
𝑤1∗ = 0.15 − 0.5 ∙ 0.0004 = 0.149780716
Perceptrón Multicapa
• Es posible repetir el proceso para los demás pesos, la actualización es:
𝑤2∗ = 0.19956143
𝑤3∗ = 0.24975114
𝑤4∗ = 0.29950229
• Finalmente se actualizaron todos los pesos. Recordar que el error en
un principio fue de 0.298371109. Después de esta primera ronda de
retropropagación el error total se ha reducido a 0.291027924.
• Puede que no parezca mucho, pero después de repetir el proceso 100,
1000 ó 10000 épocas el error cae en picada a 0.000035, en este punto
las entradas de 0.05 y 0.1 las dos neuronas generan 0.015912196 (vs
0.01 objetivo) y 0.98 (vs 0.99 objetivo).
Perceptrón Multicapa
Ejemplo 3: Se tiene la siguiente RN,
calcular la actualización de los pesos
utilizando el algoritmo de
BackPropagation en MATLAB
considerando que todas las neuronas
tienen una función de activación
sigmoidal y 𝜂 = 0.5
Perceptrón Multicapa
Ejemplo 4: Entrenar una red neuronal multicapa para resolver el
problema de XOR.
X Y OUT
0 0 0
0 1 1
1 0 1
1 1 0

TAREA
Aquel estudiante que sea capaz de graficar la
frontera de decisión tendrá +5 décimas para la
prueba correspondiente a la unidad.
Perceptrón Multicapa
Ejemplo 5: Entrenar una red neuronal multicapa para calsificar los
patrones de ejemplo contenidos en el archivo “clasificacion100.mat”.
Perceptrón Multicapa
Ejemplo 6: Construir en MATLAB 2.5

una red MLP (Multi-Layer


Perceptron) con 2 capas ocultas que 2

permita aproximar la siguiente 1.5

función.

Objetivos
1
Nota: En la capa de salida se debe
utilizar una función de activación 0.5

lineal. 0

-0.5
0 1 2 3 4 5 6
Patrones de Entrada
Perceptrón Multicapa
Ejercicio: Realizar un código en 1.5

MATLAB que permita aproximar la 1

función de la figura utilizando 3


capas ocultas y una neurona de 0.5

Objetivos
salida. 0

-0.5

Archivo descargable aquí.


-1

-1.5
10 12 14 16 18 20 22 24 26 28 30
Patrones Entrada
Perceptrón Multicapa
Consideraciones del algoritmo:
• Se suele usar también un término conocido como momentum (inercia)
en el ajuste de pesos, que acelera la convergencia del algoritmo, esto
consiste en tener en consideración el peso de la iteración n para la
actualización del peso en la iteración n+1.
𝜕𝐸
∆𝑤 𝑛 = −𝜂 + 𝛼∆𝑤 𝑡 − 1 , 0≤𝛼<1
𝜕𝑤
• Esto tiene los siguientes efectos:
• Suaviza los cambios en los pesos filtrando variaciones de alta frecuencia.
• Ayuda a apresurar la convergencia.
• Ayuda a escapar de mínimos locales.
Perceptrón Multicapa
Consideraciones del algoritmo:
• N° de capas y neuronas: No hay procedimientos claros para decidir
el mejor número de capas y/o neuronas en la RNA. Hay publicaciones
sobre cotas mínimas y máximas, generalmente para problemas de
clasificación en función del número de ejemplos de entrenamiento,
pero en la práctica casi nunca funcionan.
• Cualquier función continua puede ser aproximada con una sola capa oculta.
• Empíricamente, mas capas es mejor (aunque ralentiza el algoritmo).
• Más capas hacen más fácil el aprendizaje, pero hacen mas lento procesar una
época.
• La corteza cerebral tiene entre 50 – 100 capas.
Perceptrón Multicapa
Consideraciones del algoritmo:
• Conjunto de entrenamiento: Si se pretende un buen aprendizaje del
dominio del problema, el conjunto de entrenamiento debe cubrir todo el
espectro posible.
• Preparación de los datos: En general, los datos no se utilizan directamente
en la forma en que se obtienen o los proporciona el problema. Casi siempre
hay que hacer un pre-procesamiento, para adaptar los datos reales al modelo
usado. Por ejemplo, las salidas hay que normalizarlas en [0,1] si se usa
activación sigmoide, porque sino, el error nunca podrá reducirse de forma
satisfactoria. También es habitual normalizar las entradas, aún cuando no
sea necesario. Obviamente, habrá un post-procesamiento de resultados, para
hacerlos válidos en la realidad del problema.
Perceptrón Multicapa
Consideraciones del algoritmo:
• Velocidad de convergencia: El algoritmo de BP es lento y se han
propuesto muchas modificaciones y variantes para mejorar la
velocidad del entrenamiento.
• Mínimos locales: El método del gradiente descendente a veces queda
“atrapado” en un mínimo local, del que no puede salir, y por tanto el
aprendizaje no se hace bien.
Perceptrón Multicapa
Consideraciones del algoritmo:
• Sobreentrenamiento: Es el problema
de que se aprende muy bien los
ejemplos de entrenamiento, pero cuando
se usa la RNA entrenada, con muestras
que no ha aprendido, no es capaz de dar
buenas respuestas.
Perceptrón Multicapa
Consideraciones del algoritmo:
• Saturación: Se puede producir cuando las salidas esperadas en cada
neurona de salida son 0 o 1. Al pretender acercar las salidas de la Red
a estos valores, nos ponemos en zonas donde la función de activación
tiene tangente de pendiente casi cero y entonces no se produce apenas
modificación de los pesos y por tanto del error.
• La forma de resolverlo es cambiar los valores de salidas esperadas a
0.1 y 0.9 . Esto puede requerir adaptación de los datos reales. También
se produce si los pesos se hacen muy grandes, por que los resultados
de la Red ya no varían.
Perceptrón Multicapa
Resumen del algoritmo:
• El algoritmo tiene los siguientes pasos:
1. Propagar hacia adelante.
2. Calculo sensibilidad capa final y propagar hacia atrás.
3. Actualización pesos y Bias
• Los pesos se actualizan con la siguiente formula:
𝑚 𝑚
𝜕𝐸 𝑚 − 𝜂𝛿 𝑚 𝑎 𝑚−1 𝑇
𝑤 =𝑤 −𝜂 = 𝑤
𝜕𝑤 𝑚
• Cuando se tienen muchas capas ocultas y/o más de una capa de salida, la
sensibilidad de las capas intermedias se determina por:
𝑁𝑛𝑒𝑢−𝑜𝑐𝑢𝑙

𝛿𝑖𝑗 = 𝑓′(𝑛𝑖 ) 𝛿𝑖𝑘 𝑤𝑘𝑗


𝑘

También podría gustarte