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

Aprendizaje supervisado para clasificadores

Fernando P.    01/09/2017

Temas:  Fundamentos

En artículos anteriores se ha visto la definición básica de clasificador y se ha visto la necesidad real de poder construir clasificadores lo suficientemente complejos como para que puedan aprender a generalizar y la necesidad de tener que construirlos sin la existencia de un modelo a priori que los respalde.

En este artículo vamos a explorar una idea que se denomina aprendizaje supervisado y que, hoy en día, resulta clave desde el punto de vista práctico para construir clasificadores muy complejos, sin modelo a priori, que deban aprender a generalizar.

Descripción del problema
Repitiendo los pasos que vimos cuando tratamos la definición básica de clasificador, vamos a partir de lo siguiente:

Un conjunto X que representa todos los casos que queremos clasificar

Un conjunto C que representa las clases que queremos asignar a los elementos de X

Una aplicación fc : XC que constituye el clasificador que buscamos

Aplicación que define clasificador En general, el conjunto X va a ser muy grande y no tenemos posibilidad de conocer todos sus elementos. El conjunto C será finito y, en principio, vamos a conocer todos sus elementos (las clases que podemos llegar a asignar), pero podría suceder que fuera necesario ampliarlo por haber subestimado lo que tenemos en el conjunto X

En estas condiciones, nuestro problema consiste en definir lo mejor posible la aplicación fc de forma que cometa la menor cantidad posible de errores clasificando los casos de X

Cosas que vamos a asumir
Para facilitar la resolución del problema vamos a asumir tres cosas:

En general, el número de parámetros s será finito y de una magnitud acorde a la complejidad del problema. Para problemas sencillos s será pequeño (pongamos que es menor de 1000) y para problemas complejos será mucho más grande, del orden de millones.

El número de casos que conocemos en el conjunto de entrenamiento Ex también tendrá un tamaño acorde a la complejidad del problema y es importante que tengamos un número de casos r significativamente mayor que el número s de parámetros en la aplicación fc

Por último, es muy importante que el conjunto de entrenamiento Ex contenga casos que sean representativos de lo que pensamos que es X. Es decir, que al menos contenga casos en todas las clases posibles. En general, cuanto más grande y/o más representativo sea Ex sobre X mayor precisión obtendremos a la hora de definir fc

Aprendizaje supervisado para el clasificador
Aprendizaje supervisado en clasificador Básicamente, vamos a describir un algoritmo que nos permite buscar un conjunto de parámetros para el clasificador que consiga que éste clasifique bien todos los casos del conjunto de entrenamiento.

Necesitamos elegir un número real entre 0 y 1 que denominaremos p y que nos resultará de utilidad para hacer que el algoritmo de entrenamiento no se concentre demasiado en determinados casos de entrada.

El proceso de aprendizaje supervisado es un algoritmo iterativo sobre todos los casos del conjunto de entrenamiento Ex y viene a ser algo como esto:

  1. Creamos vacío un subconjunto UEx
  2. Elegimos al azar un conjunto de parámetros H={h1, h2 ... hs} para fc y denotaremos como fcH a la versión específica de nuestro clasificador que resulta de utilizar los parámetros en H
  3. Elegimos al azar un miembro del conjunto de entrenamiento Ex que no esté en U. Sea  exj  (1 ≤ jr)  el miembro elegido. Añadimos  exj  al conjunto U
  4. Si el conjunto U tiene más miembros que el valor  pr , quitamos de U el miembro más antiguo
  5. A partir de fcH calculamos f* = (fcH(exj) - cej)2
  6. Si f* = 0 el clasificador funciona bien sobre  exj  y debemos considerar si el clasificador funciona lo suficientemente bien ya para todos los miembros del conjunto de entrenamiento. En caso afirmativo detenemos el proceso, en caso contrario vamos de nuevo al paso 3
  7. Considerando que podemos variar H, tomamos f* : RsR como una función sobre el espacio de parámetros y buscamos la menor modificación posible de los parámetros que consiga que f* = 0. Sea H* el nuevo conjunto de parámetros modificados
  8. Hacemos H=H* y vamos al paso 3 de nuevo

Notas sobre el algoritmo de aprendizaje supervisado
Básicamente, lo que hacemos es comenzar con una versión más o menos aleatoria del clasificador y le vamos presentando de forma aleatoria casos del conjunto de prueba. Con cada uno de esos casos de prueba evaluamos el clasificador resultante de los parámetros que tenemos y, si es necesario, ajustamos esos parámetros la menor cantidad posible para conseguir que el clasificador funcione bien con ese caso.

El algoritmo se denomina como aprendizaje supervisado porque, de alguna forma, vamos enseñando al clasificador a clasificar bien cada caso de entrada y le obligamos a rectificar si lo hace mal en algún momento.

A base de iterar una y otra vez sobre el conjunto de casos de prueba, vamos a obligar al clasificador a tener un conjunto de parámetros que consiga que el clasificador funcione bien con todos los casos del conjunto de entrenamiento. En algunos pasos del proceso, la modificación de los pesos mejorará la clasificación de unos casos y empeorará la de otros, pero lo importante es el largo plazo.

Si el número de casos en el conjunto de entrenamiento es muy superior al de parámetros del clasificador, el algoritmo localizará un conjunto de parámetros que configuren un clasificador que estará obligado a generalizar, no habrá tantos parámetros como para poder memorizar todos los casos del conjunto de entrenamiento.

Se trata de un algoritmo general, el paso clave, que consiste en la modificación de los parámetros, depende de cada problema y de la estructura que hayamos escogido para la aplicación que va a definir nuestro clasificador. En el algoritmo sólo vamos variando los parámetros de los que depende esa aplicación, que debe tener una estructura general fijada acorde al tipo de problema concreto.

En general, si disponemos de un conjunto de entrenamiento bien escogido y la estructura general de la aplicación que queremos usar como clasificador es la adecuada, un algoritmo de este tipo nos puede localizar el conjunto óptimo de parámetros que hará que nuestro clasificador funcione bien con el conjunto de entrenamiento. Como hemos obligado al clasificador a tener que generalizar, debería funcionar razonablemente bien sobre el conjunto total de casos de entrada.

Un tipo de aplicación muy usada como clasificador y que se entrena usando aprendizaje supervisado son las redes neuronales artificiales, que son aplicaciones definidas de una forma muy concreta, que resultan muy flexibles y que tienen un número enorme de parámetros.

Existen más detalles y refinamientos sobre esta idea general, que serán objeto de nuevos artículos.


El aprendizaje supervisado es una idea general muy potente que puede aplicarse en gran cantidad de técnicas en Inteligencia Artificial, el caso de clasificadores visto aquí es el más general y puede extrapolarse fácilmente a otro tipo de problemas.


Para saber más:

Página de la Wikipedia en la que trata sobre el concepto general de aprendizaje supervisado, de forma un poco más genérica sobre lo visto aquí.

El aprendizaje supervisado es una forma de aprendizaje automático o machine learning, que engloba otros mecanismos de aprendizaje por la vía de la generalización.

Las redes neuronales artificiales son una forma de definir familias de aplicaciones muy flexibles, con un gran número de parámetros que pueden entrenarse con relativa facilidad usando aprendizaje supervisado.



 

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