Introducción
Conozcamos ahora la Neurona Biológica. No voy a entrar en detalle sobre neurobiologia, sin embargo creo que es suficiente el contenido que sigue a continuación para entender el funcionamiento de una neuronal biológica.
Ahora veamos la neuronal artificial que es un poco semejante a la biológica. En vez de recibir señales eléctricas recibiremos números reales de entrada a una neurona o más.
•Fuentes Bibliográficas
Los pesos:
Los pesos deben de estar entre {-0.5 a 0.5}
Para este ejemplo los pesos a utilizar son:
w[-0.7 0.2]
El Bias (theta)
El valor del Bias (b) puede tomarse con un valor de un peso adicional. Generalmente se le asigna 1.
b=[0.5]
Velocidad de Aprendizaje (n)
La velocidad de aprendizaje generalmente es 1. Debe de estar entre {0.1 .. 1}
La formula para calcular el bías es:
La formula para calcular el error es:
La formula para los nuevos pesos "W" es:
p1[2 1] t=1 p2[0 -1] t=1
p3[-2 1] t=-1 p4[0 2] t=-1
W[-0.7 0.2] b[0.5]
iteración 0:
La red va a clasificar los patrones de entrenamiento según la característica de decisión mostrada en la siguiente figura, la cual depende de los valores de los pesos y ganancias iniciales.
*Como se aprecia el hiperplano no logra separar ambas clases en dos partes con los pesos iniciales y el bías actual.
¿Que pasara en la siguiente iteración?
¿Encontremos una buena salida?
¿Necesitaremos actualizar pesos y bías?
Iteración 1
Como se aprecia la red a clasificado mal el patrón. La salida no fue la deseada. Por lo tanto, tenemos que actualizar pesos:
La actualización de los pesos y el bías conllevo a tener el siguiente hiperplano que aún no separa ambas clases:
Iteración 2 y 3
La red clasificó correctamente los patrones de acuerdo a la salida esperada.
Es
claro
que
una
computadora
tiene
la capacidad de procesar y calcular
información
a velocidades
superiores
al ser
humano.
¿Por
que
no hacerlas
para
que
reconozcan
sonidos,
imágenes,
que
distingan
las
formas
de objetos?. Actualmente
todo
esto
es
posible,
la computadora
ya
no es
solo para
calcular
más
rápido
o para
guardar
información
en bases de datos. La computación
clásica
a evolucionado,
todos
estos
cambios
han
permitido la creación
de redes
neuronales
artificiales
(RNA) procesar
imágenes,
voz,
reconocer
patrones,
predecir,
clasificar,
diagnosticar
enfermedades.
Las RNA son una rama
de estudio
de la Inteligencia
Artificial (IA). Actualmente y desde
los inicios
de la computación
se vienen
realizando cálculos
y ofreciendo
resultados
deterministicos.
Una
RNA tiene la
capacidad de obtener un resultado
para
lograr
un equilibrio,
este
le permite
a una
neurona
reforzar
su
conocimiento.
En efecto,
el poder
de una
RNA esta
en su
estructura
o topología
y gracias las
distintas
salidas
“valores”
obtenidos
le permite
modificar
los pesos de las neuronas
que
componen
la red. Vemos
entonces
que
gracias a esto
se ha pasado
de hacer
un cálculo
a fortalecer
un conjunto
de neuronas
artificiales
y con esto
poder
realizar
las
capacidades
ya
mencionadas.
Entre las
ventajas
de las
RNA están
el “aprendizaje
adaptativo,
autoorganización,
generalización,
tolerancia
a fallos,
operación
en tiempo
real y fácil
inserción
dentro de la
tecnología existente”[2].
Luego de presentarles esta breve introducción veamos los antecedentes históricos, que por su puesto son muchos, pero en este caso trate de resumir lo más destacado sobre los orígenes de esta rama de la Inteligencia Artificial.
Antecedentes Históricos
En 1936, el científico Alan Turing empezó a estudiar el cerebro como una forma de ver el mundo de la computación. En 1943 fueron creadas las bases de la computación neuronal por “Warren McCulloch” neurólogo y “Walter Pitts” un matemático. Modelaron la primera red neuronal simple que funcionaba con circuitos eléctricos. Consistía en sumar las señales y estas eran multiplicadas por los pesos escogidos de forma aleatoria. La entrada es comparada por un patrón preestablecido para determinar la salida de la red neuronal. Si en la comparación, la suma de las entradas multiplicadas por los pesos es >= que el patrón preestablecido la salida de la red es uno (1), en caso contrario la salida es cero (0). De esta manera surgió la primera RNA. Posteriormente otros estudios como en 1949 de Donald Hebb, en su libro "the organizational behavior". En dicho libro se publico su famosa regla que lleva su nombre, la regla indica que "Si un elemento de procesado simple recibe una entrada de otro elemento de procesado y ambos están activos, el peso correspondiente a su conexión debería reforzarse (aumentar)". Las características de la regla poseen Asociatividad y Autoorganización. De modo que la regla de Hebb trata de asociar patrones de salida a patrones de entrada y la estructura se organiza a si misma. El siguiente dato es de 1956, por entonces se organizó en Dartmouth(EE.UU) la primera conferencia sobre Inteligencia Artificial (IA).
En 1957, Frank Rosenblatt desarrolló el “Perceptron”. La capacidad de esta RNA era de “generalizar”. Rosenblatt creía que la conectividad existente en las redes biológicas tiene un elevado porcentaje de aleatoriedad, por lo que se oponía al análisis de McCulloch y Pitts en el cual se empleaba lógica simbólica para analizar estructuras bastante idealizadas. El modelo es muy usado hoy en día para reconocer patrones. Sin embargo, presenta limitaciones, no puede resolver una función OR exclusiva ya que no se trata de una clase linealmente separable como lo comprueban Minsky y Papert en "Perceptrons: An introduction to Computational Geometry" de 1969.
La red neuronal perceptrón fue implementado por primera vez en una computadora IBM 704 en el año 1957, En el laboratorio de Aeronáutico de la Universidad de Cornell.
En 1959, Bernard Widrow y Marcial Hoff publican la teoría sobre adaptación neuronal y unos modelos inspirados en esa teoría, el Adaline (Adaptative Linear Neuron) primera red neuronal aplicada a un problema real (filtros adaptativos para eliminar ecos en las líneas telefónicas) y el Madaline (Multiple Adaline). “Kunihiko Fukushima desarrolló en 1980 el Neocognitrón, un modelo de RNA para el reconocimiento de patrones visuales. En 1982 John Hopfield presentó su trabajo (basado en la física estadística), el cual describe con claridad y rigor matemático una red la cual lleva su nombre. Esta es una variación del Asociador Lineal, pero además, mostró cómo tales redes pueden trabajar y qué pueden hacer. El otro trabajo pertenece a Teuvo Kohonen, con un modelo con capacidad de formar mapas de características de manera similar a como ocurre en el cerebro, el modelo tenía dos variantes denominadas LVQ y SOM"[2].
Conozcamos ahora la Neurona Biológica. No voy a entrar en detalle sobre neurobiologia, sin embargo creo que es suficiente el contenido que sigue a continuación para entender el funcionamiento de una neuronal biológica.
Neuronal Biológica
Gracias al descubrimiento de Santiago Ramón y Cajal en 1888 de la neurona, este ha permitido que en base a sus estudios los Srs. Warren, Pitts, Rosenblatt entre otros hallan podido crear una RNA. Con esto hoy existen modelos de neuronas artificiales. Con los estudios de Ramón y Cajal se determino que una neurona contiene tres componentes principales, el soma o cuerpo de la neurona, las dendritas y el axón.
![]() |
Figura
1: Estructura
de Neurona biológica
|
Tipos de Sipansis:
- Sinapsis Excitatorias
- Sinapsis Inhibidoras
El soma de una neurona constituye el procesador de la neurona, las dendritas son el árbol receptor de la red de señales eléctricas que cargan el soma. Este se encarga de sumar las señales de entrada y el axón es la salida de la información. Las conexiones de las neuronas son〖≈10〗^4 se hace entre el punto de contacto del axón de una célula entre una dendrita de otra célula. El contacto es llamado sinapsis. Se estima que existen ≈〖10〗^11 elementos interconectados unidireccionalmente.
El contacto de las neuronas no es físico, existen 2mm a 4mm de separación y la transmisión de la información se hace vía impulsos eléctricos en el interior de la neurona y a otras se hace de forma química gracias a unas sustancias químicas llamadas neurotransmisores. Mas en detalle.
Ahora veamos la neuronal artificial que es un poco semejante a la biológica. En vez de recibir señales eléctricas recibiremos números reales de entrada a una neurona o más.
Neuronal Artificial
Dada
la complejidad de una
neurona biológica, para las
RNA se han creado modelos simplificados que
permiten imitar
modestamente a una
neurona biológica.
En el modelo artificial se incluyen señales (entradas reales)
Psui o también denominadas Xsui ”provenientes de otras
neuronas”,
la intensidad de la sinapsis Wsui (reales)
y una función f(sigmoidal, S. hiperbolíca, limitador fuerte symétrico, lineal etc)
que define el umbral.
“Las señales Psu_i son variables continuas en lugar
de pulsos discretos como en las
neuronas biológicas. Cada
señal
de entrada es potencializada o
atenuada por el peso sináptico
o intensidad de conexión cuya función es análoga
a la función de las sinapsis de la neurona biológica. Los pesos pueden ser positivos (excitatorios), o negativos (inhibitorios), el
nodo sumatorio acumula las señales
ponderadas y las pasa a la salida a
través de una función umbral (también conocida como función de activación o transferencia)“[1].
Veamos una comparación de la estructura de una neurona biológica y artificial en las siguientes imágenes:
Figura
2: Neurona
Biológica
(izquierda)
vs
Artificial (derecha) Representar una RNA con varios parámetros no es suficiente en la figura 2. Un modelo apropiada es la figura 3.
![]() |
Figura
3: Notación
abreviada
de una
RNA
|
[1]. Aprendizaje no supervisado y el algoritmo
wake-sleep en RNA. Universidad Tecnológica de la Mixteca.
http://jupiter.utm.mx/~tesis_dig/11612.pdf
[Consulta: 2
de diciembre de
2016].
[2]. Introducción a las Redes Neuronales.
Universidad Tecnológica Nacional de
Argentina. http://www.dariolara.com/tda/tds/RNA.pdf
[Consulta: 2
de diciembre de
2016].
Red Neuronal Perceptrón - Entrenamiento
Atención en este parte desarrollare un ejemplo sobre el entrenamiento del perceptrón con una neurona, me disculpan si no esta la teoría entera del perceptrón. Sin embargo, le estoy dejando una presentación elaborada para que conozcan más detalles sobre la teoría del perceptrón.
Como sabemos el Perceptrón es una red neuronal creada por Frank Rosenblatt en 1957 en un laboratorio militar. Entre alguna de sus características esta que solo puede resolver problemas linealmente separables, veamos que no todos los problemas se puede resolver utilizando un perceptrón con una sola neuorona. Tiene limitaciones, sin embargo se puede utilizar más neuronas o capas para resolver problemas mas complejos o más grandes. Luego de las limitaciones o del perceptrón tenemos una técnica muy avanzada para entrenar redes neuronales que se llama "propagación hacia atrás" o "Backpropagation en ingles".
Atención:
Rápidamente veamos como el Perceptrón no puede resolver un problema no Linealmente separable con una neurona. Veamos el ejemplo para compuerta OR Exclusivo:
Recordemos:
Atención:
La técnicas de Backpropation requiere el uso de neuronas cuya función de activación sea continua, y por lo tanto, diferenciable. Generalmente, la función utilizada será del tipo sigmoidal <fuente>.En este ejemplo que voy a desarrollar utilizare una función no diferenciable, se utilizara la función escalonada hardlims o Limitador Fuerte Simétrico que retorna:
A continuación les presento un cuadro de las distintas funciones de activación existentes:-1 si: La salida de la red "a" es < 0 ; 1 si: La salida de la red "a" es >= 1
Rápidamente veamos como el Perceptrón no puede resolver un problema no Linealmente separable con una neurona. Veamos el ejemplo para compuerta OR Exclusivo:
![]() |
Compuerta OR Exclusiva en el espacio |
El perceptron simple es un hiperplano de dimensión n-1 capaz de separar las clases. La ecuación de dicho interplano es: w1*x1+w2*x2+θ=0
Ningún hiperplano puede separar al OR Exclusivo en un Perceptrón de las siguiente característica:
Por lo tanto es necesario utilizar mas neuronas para resolver el problema. Ahora el perceptrón no sería simple.
En el siguiente ejemplo veremos como entrenar el perceptrón simple para los siguientes patrones con sus respectivas salidas deseadas.
Patrones
Patrones
p1[2 1] t=1 p2[0 -1] p3[-2 1] t=-1 p4[0 2] t=-1
Recordar:
El Perceptrón es un tipo de red de aprendizaje supervisado, es decir necesita conocer los valores esperados para cada una de las entradas presentadas.
Cuando un patrón "p" es aplicado a la red, la salida de la red es comparada con el valor esperado t, y la salida de la red esta determinada por:
Los pesos deben de estar entre {-0.5 a 0.5}
Para este ejemplo los pesos a utilizar son:
w[-0.7 0.2]
El Bias (theta)
El valor del Bias (b) puede tomarse con un valor de un peso adicional. Generalmente se le asigna 1.
b=[0.5]
Velocidad de Aprendizaje (n)
La velocidad de aprendizaje generalmente es 1. Debe de estar entre {0.1 .. 1}
La formula para calcular el bías es:
b_nuevo = b_anterior + ne
e = error.
La formula para calcular el error es:
e = t - a
La formula para los nuevos pesos "W" es:
W_nuevo = W_Anterior + n(t-a)pDesarrollo de ejemplo
p1[2 1] t=1 p2[0 -1] t=1
p3[-2 1] t=-1 p4[0 2] t=-1
W[-0.7 0.2] b[0.5]
iteración 0:
La red va a clasificar los patrones de entrenamiento según la característica de decisión mostrada en la siguiente figura, la cual depende de los valores de los pesos y ganancias iniciales.
*Como se aprecia el hiperplano no logra separar ambas clases en dos partes con los pesos iniciales y el bías actual.
¿Que pasara en la siguiente iteración?
¿Encontremos una buena salida?
¿Necesitaremos actualizar pesos y bías?
Iteración 1
Como se aprecia la red a clasificado mal el patrón. La salida no fue la deseada. Por lo tanto, tenemos que actualizar pesos:
La red clasificó correctamente los patrones de acuerdo a la salida esperada.
Iteración 4
En la iteración 4 se obtuvo un error veamos:
Por lo tanto ya sabemos que hacer, actualizar pesos y luego nuestro bías:
En la iteración 4 se obtuvo un error veamos:
Por lo tanto ya sabemos que hacer, actualizar pesos y luego nuestro bías:
Finalmente la red aprendió a clasificar correctamente los patrones. El hiperplano final logro separar ambas clases.
-b/w1 = -0.15
-b/w2 = 0.27
Recordemos el hiperlano inicial:
![]() |
Perceptron simple en un hiperplano de dimensión n-1 imposible de separar clases con los pesos w[-0.7 0.2]
|
![]() |
Perceptron simple en un hiperplano de dimensión n-1 capaz de separar las clases con con pesos w[3.3 -1.8] y b=0.5
|
¿que tendencias tendría las redes neuronales en el futuro?
ResponderEliminarHola doc, creo que esto va a ir muy lejos, seguirán nuevos desafíos y nuevos problemas serán resueltos con redes neuronales. Si esto crece la tecnología que permite que estas se desarrollen deberán seguir el mismo ritmo. Sin embargo, la mayoría de trabajos se hacen con redes neuronales con aprendizaje supervisado. Es decir, solo redes que pueden generalizar a patrones que ya conocen sus salidas, para que una red pueda generalizar tiene que enfrentarse a patrones que nunca a visto y que devuelva una salida correcta. Espero que la tendencia de estudios en redes neuronales con aprendizaje no supervisado cresca muchísimo, y que bueno sería que este en español jeje
EliminarBuen Tema, No me quedo claro, Sobre, ¿Cómo se entrena el perceptron?
ResponderEliminarHola doc, tal como demostré el ejemplo se deben de asignar pesos aleatorios dentro de un rango permitido además del valor bías. Debes de tener tus patrones con una salida deseada para poder mandar un patrón a la red y procesarlo para obtener la salida. El problema debe de ser lineal-mente separable si no lo resuelve un perceptrón con una capa agrega más capas o más neuronas de manera piramidal. Más en profundidad
Eliminar