Introducción a Las Redes Neuronales
-
Upload
rondlmn-sngt -
Category
Documents
-
view
223 -
download
0
description
Transcript of Introducción a Las Redes Neuronales
Introducción a las Redes Neuronales – El perceptrón- (Video)
Las Redes de Neuronas o Redes Neuronales (en la inteligencia artificial) son
un paradigma de aprendizaje y procesamiento automático, inspirado en la forma en
que funciona el sistema nervioso de los animales. Se trata de un sistema de
interconexiones de neuronas que colaboran entre si para producir una salida.
Como bien sabemos la inteligencia artificial, pretende imitar la inteligencia
natural, por tanto en este caso las redes neuronales pretenden imitar la
“arquitectura” cerebral (neuronas+conexiones) que dan inteligencia a las
personas. Es cierto que el termino inteligencia es bastante ambiguo, pero en este
caso en el que hablamos de redes neuronales, consideraremos inteligencia a aquellas
personas que sabiendo de un cierto tema, sean capaces de dar una respuesta a una
problematicada dada (calculo, clasificación, etc); por ejemplo a poco que sepamos de
animales, las personas somos capaces clasificar a un animal (dada una foto) en
mamífero, ave, reptil, etc. es decir; que de alguna forma hemos aprendido la
diferencia que hay entre esos animales y sabemos clasificarlos. Esto es un ejemplo de
lo que puede hacer una red neuronal artificial bien entrenada (o enseñada), en la que
dada una foto de un animal, sea capaz de clasificarlo. Evidentemente esta red
neuronal podrá fallar de la misma forma que los humanos fallamos, pero la idea es
que una red neuronal bien entrenada sea capaz de predecir de la misma forma que
las personas.
Otra de las preguntas que nos puede surgir es como aprenden las redes de
neuronas; pues bien, lo hacen de la misma forma que los humanos. Existen dos tipos
de aprendizaje que son los llamados aprendizaje supervisado y no supervisado.
Los nombres son bastante descriptivos, por tanto sabemos que el aprendizaje
supervisado lo obtenemos cuando es enseñado por un profesor, maestro, etc. y el no
supervisado cuando se aprende por uno mismo.
En esta entrada vamos a explicar la arquitectura de una neurona artificial y la
forma en la que se conectan entre ellas. También explicaremos el perceptrón y los
conceptos del mismo para elegir en la medida de lo
posible la mejor arquitectura de nuestra red
neuronal. Todo ello estará englobado en el
aprendizaje supervisado ya que el perceptrón es una
arquitectura neuronal que necesita ser entrenada o
enseñada.
Haciendo una gran abstracción del cerebro
humano, decimos que el cerebro esta compuesto
por un conjunto de neuronas conectadas entre sí. El
cerebro humano tiene entorno a 1011 neuronas y
unas 1014 conexiones. Cada neurona esta conectada
a otras 1K-200K neuronas, por lo tanto no es de
extrañar el elevado número de conexiones que hay.
A modo de cultura general y para ver posteriormente
la estructura de una neurona artificial, mostramos
una imagen de una neurona cerebral humana y de
como se conectan las neuronas entre si:
Cierto es que estas imágenes no nos proporcionan mucha información desde el punto de vista de la IA, pero si es interesante ver el significado de las conexiones y saber que es lo que hace cada neurona por separado. Con esta abstracción, podemos considerar que una red neuronal esta formada por un número de elementos simples que son las neuronas y que cada una de estas neuronas, realiza un operación muy sencillas (resuelve una sencilla función matemática en función del valor de sus entradas) cuyo resultado será trasmitida a la siguiente neurona como entrada de la misma (de ahí las conexiones). Dicho esto pasamos a mostrar una imagen de una neurona artificial:
Como vemos una neurona artificial tiene ‘n’ entradas (e1,…,en) que tendrán un determinado valor numérico. También tiene lo que se denomina una “conexión a masa” (b0) que es un valor constante para
cada neurona; y cada entrada tiene un peso que se denota como ‘Wi’.Con los valores de las entradas y de los pesos se calcula un valor que en la imagen se ha llamado entrada, (aunque se le suele denominar “neta”) que es el sumatorio de cada una de las entradas por su peso. Una vez que se tiene ese valor “Entrada”, se aplica una determinada función de salida, que es conocida como función de activación y que suelen ser alguna de las que mostramos a continuación:
La función identidad también se le suele llamar función lineal y para la función
escalón los rangos pueden variar en función de lo que se defina. Vistas las funciones
de activación y la arquitectura, es bastante intuitivo ver que la salida de una neurona
artificial se puede conectar como entrada de otra neurona y así construir una red
neuronal que se conoce como perceptrón, que como poco tendrá una neurona de
entrada conectada a otra neurona de salida.
A continuación vamos a ver un ejemplo de una red neuronal que nos dirá la
solución a las puertas lógicas de la AND, la OR y la XOR y ver la arquitectura que
necesitamos en función de las necesidades que tengamos.
Puerta AND
La puerta AND es aquella que devuelve un ‘0’ si alguna de sus entradas es ‘0’
y devuelve un ‘1’ si sus dos entradas son ‘1’. Lo que va ha hacer nuestra red neuronal
va a ser dividir en dos planos las soluciones (ver siguiente imagen). Lo que “caiga” en
un lado del plano dará como salida un ‘0’ y lo que caiga al otro lado
dará como salida un ‘1’.
Como vemos en la imagen, lo que queda por arriba de la linea
verde dará como salida un ‘1’ y lo que queda por debajo de la linea
verde dará como salida un ‘0’. Y ahora bien sabiendo que tenemos
que trazar una linea “discriminante” para definir dos planos, ¿Cuantas
neuronas necesitará nuestro perceptrón para resolver este
problema?. Pues bien con dos neuronas de entrada y una neurona de salida será
suficiente para resolver este problema ya que una neurona será capaz de diferenciar
los dos planos. En la siguiente imagen vemos los pesos que debe de tener la neurona
de salida para resolver la puesta AND:
En esta imagen no se han dibujado las neuronas de entrada, ya que estas lo
único que harían, seria dar como salida el mismo
valor que la entrada, poniendo todos sus pesos a
uno y con una conexión a masa igual a ‘0’ (b0=0).
Podemos hacer la prueba para ver que el
resultado es correcto:
e1=0; e2=1; entrada = (0·1)+(1·1)+(1·(-1,5)) =
1-1,5 = -0,5 -> F(-0,5) = 0; porque -0,5<0;
e1=1; e2=1; entrada = (1·1)+(1·1)+(1·(-1,5)) =
1+1-1,5 = 0,5 -> F(0,5) = 1; porque 0,5>0;
Puerta OR
Con la puerta OR nos pasa lo mismo que con la puerta AND, que solo
necesitamos “tirar una linea” para diferenciar las salidas, por tanto la arquitectura será
la misma que la AND pero con pesos distintos:
e1=0; e2=0; entrada = (0·0)+(0·0)+(1·(-0,5)) = -0,5 -> F(-0,5) = 0; porque -
0,5<0;
e1=1; e2=0; entrada = (1·1)+(0·1)+(1·(-0,5)) = 1+0-0,5 = 0,5 -> F(0,5) =
1; porque 0,5>0;
Puerta XOR
Un ejemplo algo más complejo es el de la puerta XOR ya que necesita dos
hiperplanos para diferenciar las salidas:
Esto significa que con una sola neurona no vamos a poder encontrar solución
al problema, por tanto al haber dos hiperplanos vamos a necesitar un perceptrón con
dos neuronas en la capa oculta; por tanto la arquitectura de este perceptrón será de
dos neuronas en la capa de entrada, dos neuronas en la capa oculta y una neurona
en la capa de salida. Al fin y al cabo solo hay que ver cuantas neuronas
necesitaremos en la capa oculta ya que el número de neuronas en la capa de entrada
y de salida, vienen determinadas por el número de entradas y de salidas que tenga
nuestro problema. A continuación mostramos la red neuronal que resuelve el
problema de la XOR:
En esta arquitectura, podemos ver que las neuronas de entrada van a tener
como salida el mismo valor que su entrada al ser su función de activación una función
lineal. A continuación hacemos un seguimiento de como se obtienen las salidas en
función de sus entradas:
e1=0; e2=0;
entrada Neurona3 = (e1·w11)+(e2·w21)+(b30·w30) = (0·1)+(0·1)+(1·(-0,5)) = -0,5 -> F3(-0,5) = 0;
entrada Neurona4 = (e1·w12)+(e2·w22)+(b40·w40) = (0·1)+(0·1)+(1·(-1,5)) = -1,5 -> F4(-1,5) = 0;
Salida-> entrada Neurona5 = (F3·w31)+(F4·w41)+(b05·W05) = (0·1)+(0·(-1))+(1·(-0,5)) = -0,5 -> F5(-0,5)=0
e1=0; e2=1;
entrada Neurona3 = (e1·w11)+(e2·w21)+(b30·w30) = (0·1)+(1·1)+(1·(-0,5)) = 0,5 -> F3(0,5) = 1;
entrada Neurona4 = (e1·w12)+(e2·w22)+(b40·w40) = (0·1)+(1·1)+(1·(-1,5)) = -0,5 -> F4(0,5) = 0;
Salida-> entrada Neurona5 = (F3·w31)+(F4·w41)+(b05·W05) = (1·1)+(0·(-1))+(1·(-0,5)) = 0,5 -> F5(0,5)=1
e1=1; e2=0;
entrada Neurona3 = (e1·w11)+(e2·w21)+(b30·w30) = (1·1)+(0·1)+(1·(-0,5)) = 0,5 -> F3(0,5) = 1;
entrada Neurona4 = (e1·w12)+(e2·w22)+(b40·w40) = (1·1)+(0·1)+(1·(-1,5)) = -0,5 -> F4(-0,5) = 0;
Salida-> entrada Neurona5 = (F3·w31)+(F4·w41)+(b05·W05) = (1·1)+(0·(-1))+(1·(-0,5)) = 0,5 -> F5(0,5)=1
e1=1; e2=1;
entrada Neurona3 = (e1·w11)+(e2·w21)+(b30·w30) = (1·1)+(1·1)+(1·(-0,5)) = 1,5 -> F3(1,5) = 1;
entrada Neurona4 = (e1·w12)+(e2·w22)+(b40·w40) = (1·1)+(1·1)+(1·(-1,5)) = 0,5 -> F4(0,5) = 1;
Salida-> entrada Neurona5 = (F3·w31)+(F4·w41)+(b05·W05) = (1·1)+(1·(-1))+(1·(-0,5)) = -0,5 -> F5(-0,5)=0
De esta forma vemos como resolver un problema utilizando un perceptrón con
una capa oculta y como se resuelven este tipo de problemas utilizando redes
neuronales. Este último ejemplo, es un ejemplo muy sencillo pero muy didáctico y
visto esto podemos decir que para aprendernos la puerta XOR solo necesitamos 5 de
nuestras 1011 neuronas del cerebros así que nos sobran otras muchas para otras
cosas.
A continuación se va a mostrar una herramienta llamada Neuroph Studio que
permite trabajar con redes neuronales de forma muy sencilla. Se va a mostrar este
mismo ejemplo de la XOR (utilizando otra función de activación) para que se vea
como se entrenan las redes neuronales. Esta herramienta permite hacer cosas mucho
más complejas que una red neuronal para resolver el problema de la XOR, pero con
este ejemplo podeis ir cogiendo soltura para futuros trabajos: