Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
El perceptrón (Perceptron en inglés) fue el primer modelo de Red Neuronal Artificial supervisada. Es la
más simple de las Redes neuronales.
Fue creada por Rosenblatt en 1958 y su éxito incial se debió a que era capaz de aprender y reconocer
patrones sencillos. Con el desarrollo del perceptrón, surge el área de las Redes Neuronales Artificiales
dentro de la Inteligencia Artificial. Sin embargo, Marvin Minskyy Seymur Papert escriben el libro
"Perceptrons", en el que se hace un análisis del Perceptrón mostrando sus flaquezas y decae el apoyo
dado a la investigación de las Redes Neuorales Artificiales durante algunas décadas.
Una función linealmente separable es aquella en donde dos diferentes secciones perfectamente
definidas, pueden ser separadas por una linea recta, un plano o un hiperplano. En el ámbito del
perceptrón a esta división se le llama frontera de decisión
el perceptrón es una red supervisada. Esto quiere decir que debe ser entrenada con un conjunto de
patrones previamente clasificados de manera que, si los clasifica incorrectamente, se pueda corregir el
error mediante una regla de aprendizaje. En general, para entrenar la red, necesitaremos un conjunto de
patrones previamente clasificados llamado muestra de entrenamiento y un conjunto de patrones
llamado muestra de control con el que se probará el poder de generalización de nuestra red. Existen
varios métodos, no sólo aplicables a Redes Neuronales sino a cualquier clasificador, para entrenar y
probar el clasificador como pueden ser el Hold Out, el de Validación Cruzada o el Leaving One out
entre otros, pero bueno, eso es harina de otro costal.
El entrenamiento concluye cuando pasa una iteración en la que clasificó correctamente todos los
patrones o bien, se alcanza un límite de iteraciones previamente definido por nosotros.
Los pesos iniciales son aleatorios y se recomienda que se encuentren en un rango de -0.5 a 0.5, que no
se repitan y que ninguno sea 0.
net = (2*0.2)+(3*0.3)+(1*0.4)
net = 1.7
Una vez calculado el net, se tiene pasar a una función de decisión que indica si el valor se le asigna a
una clase o a otra:
Como se puede ver aquí, si el valor del net es mayor que cero, entonces se le asigna al patrón la clase 1
y si es menor o igual que cero se le asigna la clase 0.
Si la clasificación fue correcta no se hace nada, pero si fue incorrecta, es decir, clasificó como 1 siendo
que el patrón pertenece a la clase 0 o viceversa, entonces hay que corregir los pesos utilizando la
siguiente regla de aprendizaje:
Pues bien, lo que dice esta fórmula, es que el nuevo vector de pesos que se usará para el siguiente
patrón se obtiene restando la salida deseada menos la salida real (obtención del error, o sea, qué tanto
se equivocó la red) y el resultado, multiplicarlo por la razón de aprendizaje. Una vez obtenido este
escalar, hay que multplicar el vector del patrón aumentado por él y después sumarle el vector de pesos
actual. En realida no está complicado, más adelante haremos una pequeña práctica para ilustrar cómo
realizar estas operaciones.
Codificación local
En la codificación local(o unaria) cada unidad de entrada o de salida representa a una de las palabras
del vocabulario del lenguaje fuente o destino, respectivamente. Para ello, una unidad está activa (toma,
por ejemplo, valor 1) y las demás inactivas (valor 0). Así, en un vocabulario de 10 palabras, dos
posibles palabras de éste, círculoy pirámide, podrían representarse como sigue: círculo 1 0 0 0 0 0 0 0 0
0 pirámide 0 1 0 0 0 0 0 0 0 0 Las principales ventajas de las codificaciones locales son su
representación explicita de los componentes del vocabulario y la facilidad de creación y comprensión
para el experimentador, así como la facilidad de manipularlos. Sus problemas son inherentes al tipo de
representación utilizada: se produce una gran ineficiencia cuando se trabaja con vocabularios grandes,
puesto que se genera un número de conexiones de la red excesivo.
Una red neuronal prealimentada (feed-forward en inglés) es una red neuronal artificial donde las
conexiones entre las unidades no forman un ciclo. Estas son diferentes de las redes neuronales
recurrentes.
La red neuronal prealimentada fue la primera y más sencillo forma de red neuronal artificial ideada. En
esta red, la información se mueve en una única dirección: adelante. De los nodos de entrada, a través de
los nodos escondidos (si los hay) hacia los nodos de salida. No hay ningún ciclo o bucle en estas redes.
Rosenblatt y otros más describieron a finales de los 50 las redes de prealimentación con varios niveles,
aunque sus trabajos de investigación se concentraron en los perceptrones de un solo nivel. Esto se
debió a la dificultad de encontrar un método razonable de actualizar los pesos entre las entradas y las
unidades ocultas; si bien es posible calcular el error en las unidades de salida, es más dificil definir la
señal de error en el caso de las unidades ocultas. Aunque existen algoritmos que en parte tratan de
resolver este problema, muchos de ellos ni son eficientes ni garantizan su convergencia en un óptimo
global.
El método de aprendizaje más popular en las redes de varios niveles se conoce como propagación
posterior o retropropagación. Fué inventada por Bryson y Ho en 1969 pero permaneció ignorada hasta
mediados de los 80.
El aprendizaje en este tipo de red se efectúa de la misma manera que en los perceptrones: se le presenta
a la red las entradas de los ejemplos, y si ésta calcula un vector de salida que coincida con el objetivo,
no hay nada que hacer. Pero si existe un error (diferencia entre la salida y la meta), los pesos se ajustan
para disminuirlo. El secreto radica en evaluar las consecuencias de un error y dividirlo entre todos los
pesos contribuyentes. En los perceptrones, la modificación de los pesos es fácil ya que sólo hay uno
entre cada entrada y la salida. Pero en las redes multinivel hay muchos pesos que conectan cada entrada
con una salida, contribuyendo cada peso en más de una salida.
Este algoritmo lo que hace es distribuir la contribución de cada uno de los pesos en la generación de la
salida. Se trata de reducir al mínimo el error.
El proceso para la capa de salida es lo mismo que en el perceptrón; sólo se cambian las entradas en éste
por el valor de activación de la unidad oculta, aj, conectada a la salida y que también se añade un
término para el gradiente de la función de activación. Si Erries el error del nodo de salida, la regla de
actualización de los pesos desde la unidad j hasta la unidad i es:
donde g' es la derivada de la función de activación. Podemos definir un nuevo término de error en el
nivel de salida como la agrupación de los dos últimos términos de la regla anterior
Para actualizar las conexiones entre las unidades de entrada y las ocultas hay que definir una cantidad
análoga al término de error de los nodos de salida, Deltai. Es aquí donde tiene lugar la propagación
posterior. El nodo oculto j es responsable de una parte del error Deltai en cada uno de los nodos de
salida con los que conecta. Por lo tanto, los valores deltai son divididos de acuerdo con la intensidad de
la conexión entre el nodo oculto y el nodo de salida y se propagan hacia atrás para proporcionar los
valores Deltaj de la capa oculta. La regla de propagación es la siguiente: