Introducción a Las Redes Neuronales

11
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.

description

Describe lo que son las redes neuronales con respecto al peceptron

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: