Redes Neuronales

Anuncio
Redes Neuronales
Las redes neuronales son modelos computacionales que buscan imitar el funcionamiento de las neuronas biológicas.
Se usan principalmente para el reconocimiento de patrones complejos.
Para construir una red neuronal, es necesario hacerla pasar por un proceso de
aprendizaje.
Jorge Baier Aranda, PUC
24
Redes Neuronales Artificialies (RNAs)
Una red neuronal es un grafo dirigido construido a partir de elementos computacionales básicos. Una red neuronal codifica funciones numéricas.
La función representada depende de parámetros de la red (especificados como
etiquetas en el grafo), y de la arquitectura de la misma (forma dada a las
interconexiones).
Los elementos computacionales básicos de una red son:
• Suma un nodo suma recibe un conjunto de entradas numéricas. Cada entrada
puede provenir de otros nodos o del medio.
x0
..
.
Σ
Pn
i=0 xi
xn
Jorge Baier Aranda, PUC
25
• Multiplicación
w
x
wx
• Umbral (threshold units)
x
Jorge Baier Aranda, PUC
cd
1 si x > 0
0 en otro caso
26
¿Cuándo Utilizar RNAs?
Problemas de aprendizaje altamente multidimensional (valores discretos o reales)
Función a aprender (función objetivo) real o discreta (puede ser vectorial).
Datos con ruido.
Función a aprender con forma desconocida.
El resultado (la función objetivo encontrada) no requiere de ser analizada.
Jorge Baier Aranda, PUC
27
Una Neurona
El modelo de neurona de McCulloch-Pitts (1943) o perceptrón es:
x0 = 1
x1
w1
w0
..
.
Σ
xn
cd
wn
Esta neurona elemental es conocida como una unidad de umbral lineal (linear
threshold unit o ltu) y representa una familia de funciones parametrizada por los
pesos w1, w2, . . . , wn, en particular, la función de salida será:
(
Pn
1 Si
i=0 wi xi > 0
f (x) =
0 en otro caso
Jorge Baier Aranda, PUC
28
En notación vectorial:
(
1 Si w · x > 0,
f (x) =
0 en otro caso.
La función de salida se conoce también como función de activación.
Jorge Baier Aranda, PUC
29
Funciones no Lineales
Además de la función umbral que hemos visto recién, se utilizan funciones
continuas, las más utilizadas son:
Gaussiana:
1
− 2σ
f (x) = e
Pn
i=1 (xi −ci )
2
Activación Gaussiana
1.00
0.90
0.80
0.70
0.60
1.00
0.5
2
0.50
0.40
0.30
0.20
0.10
0.00
-5 -4.5 -4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5
Jorge Baier Aranda, PUC
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
30
Donde σ y c1, . . . , cn son constantes. La respuesta de esta función depende de la
distancia entre x y c.
Sigmoidal: Se utiliza como una alternativa no lineal a la función umbral (cd).
f (x) =
1
1+
e−
Pn
i=1 wi xi
Activación Sigmoidal
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-5
-4.5
-4
-3.5
-3
-2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
Esta función también se conoce como función logı́stica. Una razón importante
para preferir esta función a la función umbral , es que 1/(1 + e−x) es continua y
diferenciable.
Jorge Baier Aranda, PUC
31
Tangente Hiperbólica: Similar a la función logı́stica, pero tiene como rango a
[−1, 1]. La expresión es la siguiente.
1 − e−x
.
−x
1+e
Jorge Baier Aranda, PUC
32
Redes Neuronales
Una red neuronal se construye en base a neuronas como la de McCulloch-Pitts.
Si N1, . . . , N3 son neuronas de dos entradas, entonces una red puede ser como:
x1
N1
N4
x2
N6
N2
N5
x3
N3
Toda red neuronal determina una familia de funciones de salida. Una configuración
de pesos determina a una función individual de la familia.
Jorge Baier Aranda, PUC
33
Estructura de una Red Neuronal
Existen muchos tipos de redes neuronales.
Las redes neuronales más utilizadas de tipo feed-forward , que son grafos dirigidos
acı́clicos.
En el resto de nuestra exposición trabajaremos con redes que están ordenadas en
capas. En una red de este tipo, cada neurona está conectada sólo con neuronas
de la siguiente capa.
Jorge Baier Aranda, PUC
34
Aprendizaje en Redes Neuronales
Para lograr que una red neuronal pueda representar una función es necesario
someterla a un proceso de aprendizaje.
Debemos estar conscientes que por el sólo hecho de elegir una cierta estructura
para la red estamos incurriendo en un sesgo inductivo.
Si queremos aprender una función f (x) podemos usar una red neuronal de alguna
arquitectura y pesos que hay que definir.
Jorge Baier Aranda, PUC
35
Limitaciones de los Perceptrones
Los perceptrones sólo pueden aprender conceptos linealmente separables.
Un concepto es linealmente separable si existe un hiperplano capaz de separar
todos los puntos que el concepto clasifica como 1 de los que clasifica como 0.
Por ejemplo, un perceptrón no puede aprender el XOR.
Jorge Baier Aranda, PUC
36
Regla de Aprendizaje del Perceptrón
Veremos el caso particular de la neurona de McCulloch-Pitts:
La red se inicializa con valores aleatorios para los pesos wi. Si se está procesando
un ejemplo de entrenamiento con salida correcta d y la red entrega salida y, el
peso wi de la entrada xi se ajusta de acuerdo a la regla:
wi ← wi + η(d − y)xi.
η es una constante positiva llamada constante de aprendizaje.
La regla de aprendizaje se aplica iterativamente a cada uno de los ejemplos. Cada
vez que se procesa un ejemplo, se ajustan los pesos.
Si todos los ejemplos se clasifican correctamente, se detiene el proceso. En otro
caso, se vuelve al punto anterior.
Jorge Baier Aranda, PUC
37
Error Cuadrático Medio
El problema de aprendizaje en una red neuronal es un problema de búsqueda.
El espacio queda definido por:
• La arquitectura de la red.
• El espacio de valores de los parámetros de la red (pesos).
Dada la arquitectura de la red, buscaremos una hipótesis que maximice el
rendimiento (minimice el error, con respecto a los ejemplos). Ası́, si T es un
conjunto de n ejemplos, con hxi, dii ∈ T para i = 1 . . . n, el rendimiento es:
n
1X
P =−
(f (xi) − di)2.
n i=1
donde f (xi) corresponde a la salida de la red para el i−ésimo ejemplo (considerando una unidad con una sola salida).
La medida anterior considera el error mirando todos los ejemplos, por lo cual es
apropiada para métodos de aprendizaje batch.
Jorge Baier Aranda, PUC
38
La regla Delta de entrenamiento
La regla delta de entrenamiento está basada en un análisis matemático de la
función de salida de los perceptrones.
Está basada en el método del gradiente.
Una de sus ventajas es que funciona con cualquier función de activación diferenciable.
Deduciremos uns regla de actualización de pesos para hacer aprender a un
perceptrón sin umbral (ADALINE). Es decir, una unidad lineal con:
o(x) = w · x
Si D = {hx0, d0i, . . . , hxn, dni} es el conjunto de entrenamiento, consideremos
la función de error como:
n
1X
E(w) =
(dk − o(xk))2
2
k=1
Jorge Baier Aranda, PUC
39
El Gradiente
∂E ∂E
∂E
,
,...,
,
∂w0 ∂w1
∂wm
donde m es la dimensión de los ejemplos.
∇E(w) =
Ahora:
n
∂ 1X
∂E
2
=
(dk − o(xk))
∂wi
∂wi 2 k=1
n
1X ∂
2
=
(dk − o(xk))
2 k=1 ∂wi
n
X
∂
=
(dk − ok )
(dk − o(xk))
∂w
i
k=1
n
X
∂
=
(dk − ok )
(dk − w · xk)
∂w
i
k=1
n
X
=
(dk − ok )(−xk,i),
k=1
Jorge Baier Aranda, PUC
40
donde xk,i es la i-ésima componente de xk.
Como el gradiente da la dirección de mayor crecimiento, los pesos se pueden
actualizar con la regla:
w ← w − η∇E(w).
o bien:
wi ← wi + η
n
X
(dk − ok )(−xk,i).
k=1
Jorge Baier Aranda, PUC
41
Algoritmo de descenso por el gradiente
Descenso-Gradiente(ejemplos,η).
Cada ejemplo es un par hx, di y η es la tasa de aprendizaje.
Inicializar los pesos wi en un valor pequeño aleatorio.
Repita hasta que converja:
• Inicialice ∆wi en cero.
• Para cada hx, di en ejemplos:
◦ Calcule la salida o de la unidad.
◦ Para cada peso wi:
∆wi ← ∆wi + η(d − o)xi.
• Para cada wi:
wi ← wi + ∆wi.
Jorge Baier Aranda, PUC
42
Unidad de Umbral Sigmoidal
En redes más complejas, se utilizan con frecuencia unidades con funciones de
activiación no lineales. Una de las más populares son las unidades sigmoidales.
x0 = 1
x1
w1
w0
..
.
σ (net)
S
xn
wn
Donde:
net = w · x
y
Jorge Baier Aranda, PUC
1
o = σ(net) =
1 + e−net
43
Una caracterı́stica útil de la función logı́stica es que:
dσ(x)
= σ(x)(1 − σ(x)).
dx
Jorge Baier Aranda, PUC
44
Gradiente del error en Unidades Sigmoidales
Consideremos la medida de error E definida previamente y calculemos:
n
∂ 1X
∂E
2
=
(dk − ok )
∂wi
∂wi 2 k=1
n
1X ∂
2
=
(dk − ok )
2 k=1 ∂wi
n
X
∂
=
(dk − ok )
(dk − ok )
∂w
i
k=1
n
X
∂ok
=
(dk − ok ) −
∂wi
k=1
Jorge Baier Aranda, PUC
45
Pero,
∂ok
∂σ(netk ) ∂σ(netk ) ∂netk
=
=
∂wi
∂wi
∂netk ∂wi
= ok (1 − ok )xk,i
donde xk,i es la i-ésima componente de xk.
Finalmente:
n
X
∂E
=−
(dk − ok )ok (1 − ok )xk,i
∂wi
k=1
Jorge Baier Aranda, PUC
46
Redes Multicapa
Veremos cómo entrenar redes de dos capas y extenderemos el resultado al caso
general.
Una red de dos capas se ve de la siguiente manera:
z0 = 1
x0 = 1
1
x1
..
.
xi
..
.
zj
(1)
wji
z1
j
1
y1
d1
yk
dk
yK
dK
(2)
wkj
k
yk
K
yK
xn
zJ
J
Donde y1, . . . , yL son las salidas de la red y d1, . . . , dL son los datos usados para
entrenar.
Jorge Baier Aranda, PUC
47
Si consideramos el error cuadrático de todas las salidas,
K
1X
(dm − ym)2
E(x) =
2 m=1
obtenemos la regla de actualización para los pesos de la última capa:
∂E
(2)
∆wkj = −η
(2)
∂wkj
= η(dk − yk )f 0(netk )zj ,
donde k = 1, . . . , K y j = 1, . . . , J y netk =
de activación.
PJ
l=0 wkl zl
y donde f es la función
(1)
Para obtener la regla de actualización de pesos de wji es necesario aplicar la
regla de la cadena, obteniéndose lo siguiente:
"
(1)
∆wji = ρh
K
X
#
(2)
(dk − yk )f 0(netk )wkj
f 0(netj )xi
k=1
Jorge Baier Aranda, PUC
48
Error Backpropagation
Backpropagation(ejemplos, η , nin , nout , nhidden )
Caso particular de una red con una capa escondida, con conexiones completas hacia adelante y
unidades sigmoidales.
Inicializar todos los pesos en valores aleatorios pequeños.
Repita hasta que haya convergencia:
Para cada ejemplo:
1. Procese el ejemplo a través de la red y calcule la salida.
2. Para cada unidad k de salida:
δk ← yk (1 − yk )(tk − yk )
3.
Para cada unidad escondida h
δh ← yh(1 − yh)
X
wkhδk
k∈salidas
4.
Actualizar los pesos wj,i:
wji ← wji + ηδj xj,i
Jorge Baier Aranda, PUC
49
Comentarios al Algoritmo
El ciclo principal del algoritmo se repite miles de veces. La condición de término
puede cambiarse:
Número fijo de iteraciones.
Terminar cuando el error en los ejemplos caiga bajo un valor prefijado.
Terminar cuando el error en un conjunto de validación obedezca un criterio, etc.
Jorge Baier Aranda, PUC
50
¿Qué podemos representar?
Funciones booleanas: Cualquier función booleana es representable por una red
con una capa escondida. El número de nodos en la capa escondida puede crecer
exponencialmente en el número de entradas.
Funciones continuas: Cualquier función continua acotada puede representarse
con una red con una capa escondida de unidades sigmoidales y una capa de salida
de unidades lineales (sin umbral).
Funciones Arbitrarias: Cualquier función puede aproximarse con una red con
dos capas escondidas de unidades sigmoidales y una capa de salida de unidades
lineales (sin umbral).
Jorge Baier Aranda, PUC
51
Descargar