Está en la página 1de 5

DEFINICIÓN PERCEPTRON

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.

DEFINICIÓN FUNCIÓN LINEALMENTE SEPARABLE

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

Aprendizaje de funciones linealmente separables

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 se da en iteraciones; una iteración comienza cuando se le presenta el primer patrón


de la muestra de entrenamiento y finaliza cuando se le muestra el último patrón de la muestra de
entrenamiento. En cada iteración, se presentan uno por uno los patrones de la muestra de entrenamiento
a la red y, si lo clasifica bien, se prosigue con el siguiente patrón pero si lo clasifica mal, se corrigen los
pesos mediante la regla de aprendizaje y se sigue con el siguiente patrón utilizando los nuevos pesos.

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.

Ahora bien, en el nodo de la capa de salida es donde se lleva a cabo el procesamiento de la


información. Como sabemos, cada nodo, incluyendo el bias, está conectado con el nodo de la capa de
salida y su conexión está ponderada con un peso. Lo primero que debe hacer el nodo de la capa de
salida al recibir es calcular la entrada neta:
Este net es la suma de las multiplicaciones del valor de salida de los nodos de entrada por su
correspondiente peso. Por ejemplo, si tuvieramos un patrón de dos características más el valor de salida
del bias que es 1: p1 = [2,3,1] y tuvieramos un vector de pesos w=[0.2,0.3,0.4], el net sería

net = (2*0.2)+(3*0.3)+(1*0.4)

net = 0.4 + 0.9 + 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:

- w(n+1) es el vector de pesos que se usará para el siguiente patrón.


- w(n) es el vector de pesos actual.
- η es un escalar llamado razón de aprendizaje, el cual es un valor positivo entre cero y uno y se fija de antemano
por uno.
- t(n) es la salida esperada, o sea, si el patrón fue clasificado previamente como de la clase 0, t(n) sería 0.
- d(n) es la salida dada por la Red, o sea, el 0 o 1 con el que clasificó al patrón.
- z(n) es el vector del patrón aumentado, es decir, el vector del patrón con el elemento 1 del bias.

Como se puede ver, w y z son vectores mientras que η t y d son escalares.

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.

2.1.2. Codificación distribuida

La codificación distribuidasupone que cada palabra se representa mediante un patrón de activación


distribuido en toda o parte de la entrada y/o salida de la red. Esto significa que cada unidad puede
intervenir en la representación de más de una palabra. Cuando todas las unidades forman parte de la
representación de cada elemento, hablamos de una codificación holográfica. Siguiendo con el ejemplo
anterior, una posible codificación holográfica adoptando cuatro unidades de representación, en las que
cada una de las cuatro unidades toma un valor real entre 0 y 1, podría ser: círculo 0,1 0,1 0,1 0,1
pirámide 0,2 0,2 0,2 0,2 Hay dos tipos principales de codificación distribuida: la codificación
distribuida simbólica, en la que cada unidad activada corresponderá a una microcaracterística (siempre
de mayor nivel de abstracción que el conjunto de conceptos que queremos codificar) que representa
una categoría sintáctica o semántica; y la codificación distribuida subsimbólica, en la que cada entrada
no es sintáctica o semánticamente interpretable. Continuando con el ejemplo anterior, una codificación
distribuida subsimbólica podría ser: círculo 1 1 1 0 0 0 0 pirámide 0 1 1 0 1 0 0 En una codificación
simbólica, cada unidad tendría un significado y tomaría un valor según la palabra descrita posea o no
esa característica, en cuyo caso se podrían utilizar simplemente valores binarios (1 ó 0) o, según el
grado en que la posea, valores reales entre 0 y 1, por ejemplo. Una posible codificación simbólica
binaria para el ejemplo anterior, en la que la primera unidad representa la categoría gramatical
“nombre” y la segunda unidad el “género”, sería: círculo 1 1 0 0 0 0 0 pirámide 1 0 0 0 0 0 0 Existe
todavía otra forma de ver las codificaciones distribuidas: se denomina representación “tosca”(o, en
inglés, “coarse representation”) a una codificación en la que cada palabra se representa por varias
unidades consecutivas o agrupadas, que pueden adoptar valores binarios o reales. En el siguiente
ejemplo la agrupación de unidades se realiza según la función sintáctica de cada una de estas palabras
en la frase: círculo 1 1 1 0 0 0 0 pirámide 0 1 1 0 0 0 0 está 0 0 0 0 0 1 1 tocan 0 0 0 0 1 0 1Las
principales ventajas de las representaciones distribuidas son: • Pueden representar aspectos relevantes
de los objetos (sus propiedades o características). • Permiten que objetos similares puedan tener
representaciones similares (aspecto interesante para el traductor que vamos a utilizar). • Hacen un uso
(más) efectivo de los recursos de representación (unidades). • Pueden estar distribuidas en un espacio
continuo de vectores. Sus desventajas se presentan a la hora de decidir qué tipo de representación será
más adecuado y cuando hay que representar asociaciones variables (por ejemplo, una palabra que
puede tener varias acepciones). Por otro lado, los traductores que utilizan este tipo de codificación
suelen necesitar mayor tiempo de entrenamiento.
RED NEURONAL PREALIMENTADA

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.

Redes de prealimentación con varios niveles

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.

Aprendizaje por propagación posterior

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.

Modificación de los pesos para el nivel de salida

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:

wji = wji + ß . aj . Erri . g'(enti)

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

Deltai = Erri . g'(enti)


Modificación de los pesos entre las entradas y el nivel oculto

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:

Deltaj = g'(entj). Sum(wji . Deltai)

La regla de actualización de pesos es parecida a la regla de actualización de salida:

wkj = wkj + ß . aj . Ik . Deltaj