Revolución IA

La Inteligencia Artificial está llamada a protagonizar la próxima Revolución tecnológica

Inicio Sobre Revolucionia Temas Para saber más Contacto

Entrenamiento de perceptrones

Fernando P.    11/10/2017

Temas:  Fundamentos

Los perceptrones son las redes neuronales artificiales (RNA) más sencillas y las primeras que se describieron. Ya hemos tratado sobre este tipo de RNA.

Una de las principales ventajas de los perceptrones es que son sencillos de entrenar y siempre se les puede entrenar en problemas de clasificación que sean capaces de representar.

Perceptrones de una o varias neuronas
Hemos visto que es posible agrupar varias neuronas artificiales para construir perceptrones de varias neuronas que proporcionan salidas en el espacio  m, m>1

Pero el entrenamiento de estos perceptrones compuestos equivale a entrenar cada Perceptrón simple por separado. Así que, por simplicidad, vamos a considerar perceptrones de una única neurona artificial.

Aprendizaje supervisado
El entrenamiento de los perceptrones es equivalente al entrenamiento de clasificadores con aprendizaje supervisado.
Entrenamiento de Perceptrón
Un Perceptrón no es más que una forma de construir clasificadores, con sus características intrínsecas. Una de estas características es que deben entrenarse usando aprendizaje supervisado.

En este sentido, el algoritmo general para entrenamiento supervisado de clasificadores que ya describimos en su día, es perfectamente aplicable a los perceptrones y es la base de cualquier algoritmo para entrenar perceptrones.

Algoritmo general para entrenar perceptrones
Supongamos que tenemos un Perceptrón  P. Lo vamos a describir en la forma siguiente, que es análoga a la descripción general que ya hicimos de un Perceptrón:

Sea  f : n→{0,1}  la función que define  P

Sea  Xn  el conjunto de casos de entrada dado

Sea  ExX  el conjunto de  r  casos de entrenamiento dado

Sea  A = ( ai )  i=1…n+1  el vector columna que define los pesos para la entrada a  P

Y, por último, sea  t : →{0,1}  la función de activación, que devuelve  0  ó  1  según sea negativo o no negativo el argumento, respectivamente

Para cada caso de entrada  xEx  construimos el vector de entrada aumentado  x+n+1  que resulta de añadir una coordenada adicional en la posición  n+1, con valor  1, al vector  x

En estas condiciones, la salida de  P  vendrá dada por  t(x+A) ∈ {0,1}

El algoritmo general para entrenar nuestro Perceptrón quedaría así:

  1. Inicializar  A  a valores aleatorios
  2. Crear un conjunto  UEx  inicialmente vacío
  3. Crear un conjunto  WEx  inicialmente vacío
  4. Elegir un valor  0 < p < 1 
  5. Elegir al azar un elemento  xEx 
  6. Si  xU  volvemos al paso 5
  7. Añadimos  x  al conjunto  U. Si  U  tiene más de  pr  elementos, eliminamos el que lleva ahí más tiempo
  8. Calculamos  t(x+A) ∈ {0,1}. Si el resultado es el correcto para  x  vamos al paso 10
  9. Modificamos los valores  ai  i=1…n+1  en una forma que haga que el resultado calculado en el paso 8 pueda ser correcto para  x. Ir de nuevo al paso 8
  10. Añadimos  x  al conjunto  W
  11. Si  W = Ex  ir al paso 13
  12. Volver al paso 5
  13. Final del entrenamiento

Esquema para entrenamiento de Perceptrón El algoritmo dado es bastante detallado, pero su esquema general es muy simple y puede apreciarse bien en la ilustración adjunta.

La clave del algoritmo es cómo se deber realizar la modificación de los pesos en el paso 9 cuando un caso de entrada no clasifica bien. Esta parte no se ha incluido en el algoritmo porque no hay una única forma de definir este prcoeso, que es esencial para la eficiencia del algoritmo. A continuación vamos a ver la forma más extendida de hacerlo.

La Regla Delta
El paso 9 del algoritmo general se puede ejecutar usando el procedimiento que se describe a continuación, que se denomina habitualmente Regla Delta

Sea  x+  un caso (aumentado) para clasificar

Sea  T ∈ {0,1}  el valor esperado para  x+  que debe devolver  P  y sea  A ∈ {0,1}  el valor actual

Sea  δ = T - A ∈ {0,1,-1}

Si  δ = 0, P  clasifica bien  x+  y no es necesario modificar los pesos

Sea  η  un valor real que denominaremos velocidad de aprendizaje

Sea ahora  Δi = η ⋅ δ ⋅ xi+  i=1…n+1

En estas condiciones, el valor de los pesos se actualiza como: âi = ai + Δi

Donde  âi  es el nuevo valor del peso  i

La Regla Delta va modificando poco a poco los pesos del Perceptrón para adaptarlos al caso actual a clasificar. La cantidad que suma a cada peso depende del signo de la coordenada correspondiente al caso de entrada, para que todos los productos de coordenadas contribuyan por igual a mejorar en la dirección deseada.

Una implementación del algoritmo de entrenamiento usando la Regla Delta puede verse en el ejemplo de clasificador para datos de clientes que ya vimos. Nótese que este ejemplo es intencionadamente simple y se ha omitido la extensión de los casos de entrada a dimensión  n+1, dado que estos datos de entrada pueden separarse linealmente con un hiperplano que pasa por el origen de coordenadas.

Problemas con el entrenamiento de perceptrones
La elección de la velocidad de aprendizaje es importante porque define lo grandes que van a ser los cambios de los pesos en cada modificación de estos. Un valor grande acelerará el proceso, pero puede que no sea capaz de conseguir la resolución suficiente para que el algoritmo pueda terminar. Un valor pequeño generará un proceso lento pero nos aseguraremos la convergencia del proceso.

En general, la elección de la velocidad de aprendizaje depende de cada problema y no hay reglas fijas, conviene probar con valores pequeños e ir aumentando si el proceso es lento, sin llegar a valores que generen problemas de convergencia.

Si los datos a clasificar son linealmente separables, un Perceptrón podrá ser entrenado para separarlos usando el algoritmo aquí descrito. Pero no se puede decir mucho de su convergencia, sabemos que el algoritmo converge, pero no se puede garantizar en cuanto tiempo lo hará.

Para finalizar, el orden de elección de los casos de entrenamiento para ir presentándoselos al Perceptrón es importante, pero tampoco se tienen reglas fijas sobre como hacerlo. El algoritmo descrito implementa un mecanismo simple a través del conjunto  U  para evitar que se repita demasiado algún caso, que es una situación obvia a evitar.



El algoritmo de entrenamiento de perceptrones basado en la Regla Delta es una herramienta muy potente para entrenar este tipo de RNA. Técnicas más elaboradas para entrenar RNA más complejas parten de este algoritmo como idea básica.



Para saber más:

Página de la Wikipedia que trata sobre los perceptrones, con alguna idea adicional sobre lo expuesto aquí.



 

Inicio Powered by NetBSD
 
HTML5
 
En general, todo el contenido de este sitio web es original, salvo referencias o enlaces a otros sitios web y citas o reproducciones expresamente presentadas como tales.

No está permitida la reproducción ni la copia del contenido de este sitio web sin el permiso expreso de la propiedad del mismo.

Este sitio web no utiliza cookies ni ningún otro mecanismo para almacenar información en los navegadores de los visitantes ni para realizar seguimiento de los mismos.

2017,2018 Revolucionia.net
Sobre Revolucionia
Temas
Para saber más
Contacto