Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NEURONALES
CÁLCULOS EN UNA NEURONA
NETj es la suma de las salidas de las neuronas
conectadas a la entrada de la neurona j multiplicadas
por los pesos de las conexiones. - se toma como X0W0j
con X0=1 la salida de una neurona ficticia (biass)
conectada a la entrada de la neurona u y W0j = - el
peso de la conexión NETj = X0W0j+…+XNWNj
1 si Net 0 1 X1
yj f ( Net j ) 0 si Net 0 .. W1j
. Xk Wkj
k j
.. Yj
. Xn Wnj
W0j= -
n X0 =1 (biass)
I. REDES NEURONALES
MULTICAPA CON
CONEXIONES
FEEDFORWARD
1. PERCEPTRON
ROSENBLAT 1962
TOPOLOGIA: 2 CAPAS:
CAPA DE ENTRADA: N NEURONAS CON FUNCIÓN DE TRANSFERENCIA
IDENTIDAD
CAPA DE SALIDA: 1 NEURONA CON FUNCIÓN DE TRANSFERENCIA
ESCALÓN.
X1 1
.. W1
. Wk
Xk k
.. Y
. Wn
W0= -
Xn n X0 =1
PERCEPTRON
CAPA DE ENTRADA:
Entrada neta: NETi = Xi
Función de transferencia Xi Yi
identidad: Yi = NETi
Entonces: Yi = Xi
CAPA DE SALIDA:
1 X1
Entrada neta: .. W1
NET= X0W0+X1W1+…+XNWN . Xk Wk
k _
Función de transferencia .. Y
escalón: y = F(NETi) . Xn
Wn
W0= -
y = A, si NET 0 n X0 =1
y = B, si NET 0
Con A=1, B=0 o -1
EJM. FUNCIÓN OR
X1 X2 Y X1 1 W1
0 0 0B
0 1 1A W2
1 0 1A
Y
1 1 1A X2 2
W0= -
y = F(NET)
(0,1) (1,1)
y = A, si NET 0 1 1
y = B, si NET 0
El límite entre la salida 1 y 0 es
NET=0 = W0+ X1W1 +X2W2 (1) A
(ecuación de una recta)
Con W0=1, W1=2, W2=2 en (1): 0 1
X1=0, X2=-1/2 y X1=-1/2, X2=0 (0,0) (1,0)
(0,1) (1,1)
Se modifican los pesos: 1 1
W0=-1, W1=2, W2=2 en (1):
X1=0, X2=1/2 y X1=1/2, X2=0 A
-> El Perceptron SI aprende
0 1
(0,0) (1,0)
B
SEPARABILIDAD LINEAL
x2
(0,1) (1,1) Patron de entrada
A B clase B, no está en
su región correcta
A
B
B A x1
(0,0) (1,0)
X1 X2 Y
0 0 0 TRAIN
0 1 0 TRAIN
1 0 0 TRAIN
1 1 1 TRAIN
0.02 0.01 0 TEST
0.98 0.01 0 TEST
0.01 0.99 QUERY
0.99 0.98 QUERY
Algoritmo de aprendizaje del Perceptron
from random import choice
from numpy import array, dot, random, poly1d
import pylab as plt
# Función de transferencia escalón:
A= 1
B= int(input("A=1, B<0 o -1> = "))
escalon = lambda x: B if x < 0 else A
# datos para train, entradas x1, x2, x0 (x0 siempre es 1)
# salida deseada d: (array[x1, x2, x0], d)
train_data = [
(array([0,0,1]), 0),
(array([0,1,1]), 1),
(array([1,0,1]), 1),
(array([1,1,1]), 1),
]
# pesos iniciales aleatorios: w0, w1, w2
w = random.rand(3)
Algoritmo de aprendizaje del Perceptron
# lista de valores de error, inicializada
errores = []
# tasa de aprendizaje (alfa)
alfa = 0.2
# número máximo de iteraciones de aprendizaje
itmax = 100
# entrenamiento (calcula valores de los pesos)
for i in range(itmax):
# selecciona una fila de E/S de datos de train
x, d = choice(train_data)
# calcula la entrada neta net, producto escalar de w, x
net = dot(w, x)
# calcula la salida obtenida
y = escalon(net)
# calcula el error= salida deseada (d) - salida obtenida (y)
error = d - y
errores.append(error)
# actualiza pesos de las conexiones (regla de aprendizaje)
w = w + alfa * error * x
Algoritmo de aprendizaje del Perceptron
print("errores: ",errores)
# calcula y muestra las salidas para datos de train = test
for x, _ in train_data:
net = dot(x, w)
print("{}: {} -> {}".format(x[:2], net, escalon(net)))
TOPOLOGIA
NO
PESOS Etrain<emax
SI
EJEMPLOS DE
TEST
TEST
NO
Etest<emax
SI
QUERY (SIMULATION)
ENTRADA SALIDA
Ejm 2: Determinar si una PESO ESTATURA DECISION
postulante a modelo es aceptada 55 160 SI
o no, en función de su peso y 60 180 SI
estatura. 62 155 NO
Ejemplos de entrenamiento: 65 160 NO
CONSULTA: 67 160 NO
peso=61, estatura=151, d=no 65 179 SI
decisión=si 75 155 NO
64 178 SI
77 170 NO
78 160 NO
70 185 SI
20 /73
Algoritmo de aprendizaje del Perceptron
from numpy import array, dot, random
A= 1
B= int(input("A=1, B<0 o -1> = "))
n=int(input("Nº variables entrada="))
# Función de transferencia escalón:
escalon = lambda z: B if z < 0 else A
# datos para train, entradas x1, x2, ..., xn, x0 (x0 siempre es 1)
# salida deseada d: (array[x1, x2, ..., xn, x0], d)
train_data = [
(array([0.55,1.68,1]), 1),
(array([0.60,1.80,1]), 1),
(array([0.62,1.55,1]), 0),
(array([0.67,1.60,1]), 0),
(array([0.65,1.79,1]), 1),
(array([0.75,1.55,1]), 0),
(array([0.64,1.78,1]), 1),
(array([0.77,1.70,1]), 0),
(array([0.78,1.60,1]), 0),
(array([0.70,1.85,1]), 1) ]
Algoritmo de aprendizaje del Perceptron
# pesos iniciales aleatorios: w0, w1, w2, ..., wn
w = random.rand(n+1)
# lista de valores de error, inicializada
errores = []
# tasa de aprendizaje (alfa)
alfa = 0.2
# número máximo de iteraciones de aprendizaje
itmax = 50
Algoritmo de aprendizaje del Perceptron
# entrenamiento (calcula valores de los pesos)
for t in range(itmax):
nel = len(train_data)
for p in range(nel):
# selecciona una fila de E/S de datos de train
x, d = train_data[p]
# calcula la entrada neta net, producto escalar de w, x
net = dot(w, x)
# calcula la salida obtenida
y = escalon(net)
# calcula el error= salida deseada (d) - salida obtenida
(y)
error = d - y
errores.append(error)
# actualiza los pesos de las conexiones (regla de
aprendizaje)
if error !=0:
w = w + alfa * error * x
Algoritmo de aprendizaje del Perceptron
# datos de test
test_data = [
(array([0.72,1.87,1]), 1),
(array([0.65,1.60,1]), 0),
]
# calcula y muestra las salidas para datos de test
print("resultado de test:")
for x, _ in test_data:
net = dot(x, w)
print("{}: {} -> {}".format(x[:2], net, escalon(net)))
# calcula y muestra las salidas para una consulta
query_data = [
(array([0.61,1.51,1])),
(array([0.60,1.70,1])),
]
print("resultado de la consulta:")
for xc in query_data:
net = dot(xc, w)
print("{} -> {}".format(xc[:n], escalon(net)))
RECONOCIMIENTO DE PATRONES
El proceso de reconocimiento de patrones consiste
en clasificar un objeto o hecho (PATRON) en una
categoría determinada, basándose en
particularidades del objeto que son comunes a los
miembros de una misma CLASE.
Ejemplos de reconocimiento de patrones realizados
por humanos son: Reconocer a un amigo entre la
multitud, Leer un libro.
Matemáticamente, la clasificación consiste en la
partición del espacio n-dimensional definido por las
características de un objeto, en varias regiones. Cada
región corresponde a una clase.
RECONOCIMIENTO DE PATRONES
Espacio de características
X2 =peso
Kg.
100 W2
90
O O
80 O O O
W1 O O
70
x
x
60 x x
x x
50 X1 =altura