Aprendizaje Automático ML

En 1.949 Donald Hebb, en “The Organization of Behavior”, afirma que las conexiones sinápticas se fortalecen cuando dos o más neuronas se activan de forma contigua en el tiempo y en el espacio. Fue el primero en explicar los procesos del aprendizaje desde un punto de vista neurosicológico, desarrollando una regla de cómo el aprendizaje se producía. Esto desencadenó las bases para los algoritmos de aprendizaje de las RNA, el ML (Machine Learning).

Donald Hebb
Hebb

 

Desde un punto de vista computacional diríamos: “Se dice que un programa de computadora aprende de una experiencia E con respecto de algún tipo de tarea T y rendimiento R, si su desempeño en tareas T, medido por R, mejora la experiencia E”. El aprendizaje es nuestro medio para alcanzar la capacidad de realizar la tarea.

 

Tarea.

Una tarea T se describe en términos de cómo el sistema debe procesar un caso. Un caso es una colección de características que se han medido cuantitativamente a partir de algún objeto o evento que queremos que procese el sistema. Podemos representar un caso como un vector x ∈ Rn, donde cada entrada xi del vector es otra característica, estas podrían ser los valores de los píxeles de una imagen.

Algunas de las tareas más comunes son:

  • Clasificación
  • Clasificación con entrada incompleta
  • Eliminación de ruido
  • Regresión
  • Síntesis y muestreo
  • Traducción
  • Transcripción

Rendimiento. Para evaluar las capacidades de un algoritmo debemos diseñar una medida cuantitativa de su rendimiento. Por lo general esta medida R es específica de la tarea T.  Para tareas como la clasificación, la clasificación con entrada incompleta y la transcripción, la medida es la exactitud del modelo. La exactitud es solo la proporción de casos para los que el modelo produce el resultado correcto, sin embargo para otras tareas debemos usar una métrica diferente y el enfoque más común es obtener la probabilidad promedio que el modelo asigna a algún caso.

Por lo general, nos interesa saber qué tan bien funciona el algoritmo con datos que no ha visto antes, ya que esto determina qué tan bien funcionará cuando se despliegue en el mundo real. Por lo tanto, evaluamos estas medidas de rendimiento utilizando un conjunto de datos estándar, se verán más abajo en Herramientas de apoyo, que son independientes de los datos utilizados en el entrenamiento previo.

 

Experiencia. En función del tipo de experiencia que tiene el algoritmo durante el aprendizaje, este se denomina aprendizaje supervisado y no supervisado. Los no supervisados tratan el conjunto de datos con sus características y estructura, luego aprenden las propiedades útiles de esa estructura. Los supervisados pueden tratar el mismo conjunto de datos pero cada elemento debe estar asociado a una etiqueta, la etiqueta es fundamental para su aprendizaje. La etiqueta puede ser un número, varios, una secuencia de palabras, etc.

 

 

Clasificación de los tipos de aprendizaje.

A continuación veremos la clasificación de los distintos tipos de aprendizaje automático en función de la Experiencia. Antes debemos tener encuenta que los tipos de aprendizaje se basan en métodos y algoritmos que algunas veces se solapan y combinan induciendo cierto nivel de confusión, esto es debido a que algunos de ellos han sido diseñados para integrarse en distintos tipos de aprendizaje.

 

Aprendizaje Automático supervisado ML (Machine Learning)

Aprendizaje supervisado. A este tipo al algoritmo se le proporciona un juego de datos etiquetados de entrada y salida correcta, y ajusta sus pesos tratando de obtener el mínimo error comparado con la salida proporcionada. Todo el proceso es dependiente de un tutor humano, controla el aprendizaje y modifica los pesos en el supuesto de error en la salida. Este aprendizaje tiene tres formas de llevarse a cabo:

 

  • Por corrección de error. Consiste en ajustar los pesos de las conexiones de la red en función de la diferencia entre los valores deseados y los obtenidos a la salida según el error cometido. Los algoritmos más conocidos son el aplicado en el aprendizaje del Perceptron, LMS Error (Least Mean Squared Error) y el de retrocesión/retro-propagación o LMS multicapa.
  • Por refuerzo. La información proporcionada es mínima, limitándose a indicar si la respuesta de la red es correcta o incorrecta. En este caso el tutor indica mediante una señal de refuerzo si la salida obtenida se ajusta a la deseada.
  • Estocástico. Consiste en realizar cambios aleatorios en los valores de los pesos y evaluar su efecto a partir del objetivo deseado.

El entrenamiento se produce tratando el juego de datos etiquetados, en ciclos o iteraciones. Cada ciclo comienza cuando se procesa el primer patrón de la muestra y termina cuando se trata el último patrón de la misma. En cada ciclo se presentan de uno en uno los patrones, si los clasifica bien continúa con el siguiente, en caso contrario, se corrigen los pesos mediante la regla de aprendizaje y se sigue con el siguiente patrón utilizando los nuevos pesos. El entrenamiento finaliza cuando encuentra un ciclo donde se clasificaron correctamente todos los patrones o se alcanza el límite de iteraciones definido.

 

 

Aprendizaje Automático No supervisado ML (Machine Learning)

 

 

Aprendizaje no supervisado. En este entrenamiento se suministran al algoritmo únicamente los estímulos (variables de entrada sin etiquetar) y él trata de auto ajustar los pesos basándose en las reglas de aprendizaje suministradas. No requieren tutor para ajustar los pesos.  Este aprendizaje tiene dos formas de llevarse a cabo:

 

  • Aprendizaje Hebb. Cuando dos neuronas toman el mismo estado simultáneamente el peso de la conexión entre ambas se incrementa.
  • Aprendizaje competitivo. Clasifica los datos de entrada modificando los pesos asociados a patrones o ajustándolos para reconocer nuevos patrones.

El proceso de aprendizaje ha terminado cuando los valores de los pesos permanecen estables reiteradamente. Esto se ve de la siguiente forma:

Peso nuevo = Peso actual + Ajuste

de forma matemática sería

wij(t+1) = wij(t) + ∆wij(t)

dónde: t es el ciclo de aprendizaje,  wij(t+1)  = peso nuevo,   wij(t)  = peso actual y  ∆wij(t) =Ajuste.

 

Se utilizan principalmente en la detección de patrones y modelos descriptivos. Los algoritmos intentan utilizar técnicas en la entrada para deducir y encontrar reglas, detectar patrones y así tratar de resumir y agrupar los datos que ayudan a obtener información significativa.

 

 

 

 

 

 

 

Aprendizaje por refuerzo. RL (Reinforcement Learning). Podríamos llamarle el tercer modelo, su implantación ha sido efectiva pero algunos le consideran un subproducto de los dos aprendizajes anteriores, creemos que no. Su objetivo es aprender cómo asociar situaciones a acciones para maximizar una señal de recompensa.

En este caso el modelo se expone a un entorno de entrenamiento para tomar decisiones específicas utilizando el método de prueba y error. Se basa en el proceso de decisión de Markov (MDP).

 

Al algoritmo de aprendizaje se le llama agente (algoritmo, robot, personaje de videojuego, etc.), este está constantemente aprendiendo hasta que explora la gama completa de estados posibles en su entorno. El modelo del agente se basa en la sicología conductista que decide cómo y qué acciones se tomarán en un entorno para maximizar la recompensa, es decir, aprende de la experiencia.

 

Una vez que el agente ha aprendido a resolver una tarea, el conocimiento adquirido sólo es aplicable a esa tarea, para reutilizar ese conocimiento y emplearlo en otra tarea similar, surge la idea de transferencia de conocimiento denominada “aprendizaje por transferencia” (Transfer Learning, TL).

 

Este modelo RL se está utilizando en elementos mecánicos como brazos o manos robóticas, juegos de mesa (Ajedrez, BlackJack, Backgammon,…).

 

Algoritmos (RL)

Comentario
Actor-Critic D Usa valores de estado pero no puede manejar espacios de acción continuos. Lo exponen D. V. Prokhorov y D. C. Wunsch en 1.997.
Acla Actor-Critic Learning Autómat. Similar a Actor-Critic y mejora el rendimiento que Q-learning o Sarsa. Propuesto por Hado van Hasselt y Marco A. Wiering en 2.007.
Cacla C “Continuous Actor-Critic Learning Automaton-Actor de Crítica Continua de Crítica Automática”. Es una versión continua de Acla y también tiene mejor rendimiento que Q-learning o Sarsa. Propuesto por Hado van Hasselt y Marco A. Wiering en 2.007-2.009.
DDPG D Deep Deterministic Policy Gradient, Gradiente de política determinista profunda. Mejora el trabajo de DQN.
DQN Deep Q Network. Estima el valor de los estados invisibles que faltan en el agente de Q-learning. Propuesto por Christopher.J. Watkins y Peter Dayan en 1.992
MAXQ D Es un algoritmo de aprendizaje jerárquico basado en descomponer MDP en una jerarquía más pequeña. Propuesto por Thomas G. Dietterich en 1.999
PEGASUS C “Policy Evaluation of Goodness And Search Using Scenarios” Es un método para la búsqueda de políticas propuesto por Andre Y. Ng  y Michael Jordan en 2.000
PILCO C “Probabilistic inference and learning for control”. Lo desarrollan Marc Peter Deisenroth y Carl Edward Rasmussen en 2.011
Q-Learning D Algoritmo  basado en la ecuación de Bellman. Es uno de los más conocidos y también de los más antiguos. Propuesto por Watkins en 1.989
QV-learning D Es una extensión de Actor-Critic, Q-Learning y SARSA. Mejora en:
  • El uso de valores de estado disminuye la varianza.
  • El uso de valores de estado a menudo acelera el aprendizaje.
  • Los valores de estado son extensibles a los rastros de elegibilidad.

Propuesto por Marco A. Wiering en 2.005.

R-MAX D La visión del algoritmo es “optimismo frente a incertidumbre”. El algoritmo reemplaza las transiciones desconocidas con transiciones en estado absorbente. Un estado absorbente es aquel que proporciona al agente la recompensa máxima para cualquier estado siguiente. Propuesto por Ronen I. Brafman y  Moshe Tennenholtz en 2.002
R-MAXQ D Hierarchical Model-Based Reinforcement Learning: R-MAX + MAXQ. Integra métodos de descomposición jerárquica, de aprendizaje por recompensa y SMDP . Propuesto por Nicholas K. Jong y Peter Stonen en 2.008
SARSA D Inicialmente denominado “Q-Learning conexionista modificado” (MCQ-L) despues pasó a State-Action-Reward-State-Action.  Es semejante a Q-Learning. Propuesto por G. A. Rummery y M. Niranjan en 1.994
Expected-Sarsa D Es una variación de Sarsa, la primera mención se produce en un ejercicio en el libro de Richard S. Sutton y Andrew G. Barto “Reinforcement Learning: An Introduction” en 1.998. Respecto a SARSA cambia en:
  • No tiene que saber la siguiente acción para actualizar su valor.
  • Tiene una varianza menor con el mismo sesgo.
SMC C Sequential Monte Carlo, se basa en Actor-Critic. Fue propuesto por Alessandro Lazaric, Marcello Restelli y Andrea Bonarini en 2.007
TRPO C Trust Region Policy Optimization, Optimización de la política de la región de confianza. Es un algoritmo con muy buen rendimiento, pero el cálculo y la implementación son complicados. Propuesto por John Schulman,Sergey Levine,Philipp Moritz,Michael Jordan y Pieter Abbeel en 2.015.
D: Estados y Acciones Discretas   C: Estados y Acciones Continuas

 

Aprendizaje semi supervisado. Es un modelo mixto que conjuga funcionalidades del aprendizaje supervisado y no supervisado. Utilizan sólo un pequeño porcentaje de datos etiquetados.

 

Aprendizaje profundo. En el contexto del aprendizaje profundo, generalmente queremos aprender toda la distribución de probabilidad que generó un conjunto de datos, ya sea explícitamente, como en la estimación de la densidad, o implícitamente, para tareas como síntesis o eliminación de ruido.

 

Herramientas

Aprendizaje profundo

Comentario
Bi-CNN-MI Para identificación de paráfrasis (PI).
Caffe Entorno de trabajo de código abierto para redes neuronales, incluidas CNN y DNN.
DEEPNET Red  feed-forward, máquina Boltzmann restringida, aprendizaje profundo, autoencoders apilados algoritmos BP, RBM, DBN
H2o Librería para aprendizaje profundo, K-Means, PCA, …
Keras Entorno de trabajo (Librería Python) especializado en aprendizaje profundo sobre TensorFlow, Theano y otros.
NNET Red feed-forward con una sola capa oculta
PyTorch Entorno de trabajo en Python que permite utilizar bibliotecas de terceros.
RNN Herramienta que implementa redes neuronales recurrentes y aprendizaje profundo
RSNNS Interfaz para el simulador de red neuronal de Stuttgart (SNNS).
Torch Entorno de trabajo con soporte para algoritmos de aprendizaje automático. Se ejecuta primero en GPU y también en CPU, en este caso se recomienda utilizar la biblioteca INTEL MKL o OpenBLAS para ejecutarse más rápido.

 

 

 

Herramientas Generalistas ML  Autor Comentario
GloVe Jeffrey Pennington, Richard Socher y Christopher D. Manning. Es un algoritmo de aprendizaje no supervisado para obtener representaciones de vectores para palabras.
LIBLINEAR R.E. Fan, K.W. Chang, C.J. Hsieh, X.R. Wang, y C.J. Lin. Library for Large Linear Classification
MDP Pietro Berkes, Tiziano Zito, Zbigniew Jędrzejewski-Szmek, Rike-Benjamin Schuppner, Niko Wilbert y otros Modular toolkit for Data Processing. Es una colección de algoritmos, en Python, de aprendizaje supervisado ​​y no supervisado ​​y otras unidades de proceso de datos que se pueden combinar en secuencias y arquitecturas de red feed-forward más complejas. Es de código libre para Windows, MacOSX y Linux.
mlpy Davide Albanese , Roberto Visintainer , Stefano Merler , Samantha Riccadonna , Giuseppe Jurman , Cesare Furlanello Machine Learning Python, como su nombre indica está escrita en y es de libre disposición. En regresión utiliza: Mínimos cuadrados, Regresión de Ridge, SVR, etc. En Clasificación: Análisis discriminante lineal (LDA), perceptrón básico, red elástica, regresión logística, máquinas de vectores de apoyo (Kernel) (SVM), etc.
PyBrain Tom Schaul, Justin Bayer, Daan Wierstra, Sun Yi, Martin Felder, Frank Sehnke, Thomas Rückstieß, Jürgen Schmidhuber Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network Library. Es una librería de código abierto, en lenguaje Python, con algoritmos para redes neuronales, aprendizaje de refuerzo, aprendizaje no supervisado, etc. Su objetivo central es la investigación
PyMVPA Michael Hanke, Yaroslav O. Halchenko, Nikolaas N. Oosterhof, entre otros. Multi Variate Pattern Análisis en Python. Es un paquete destinado a facilitar el análisis de aprendizaje estadístico de grandes conjuntos de datos.
scikit-learn David Cournapeau, Fabian Pedregosa, Gael Varoquaux, Alexandre Gramfort, Vincent Michel y otros Es una librería de código abierto, en lenguaje Python que además de utilizarse para aprendizaje automático se usa en minería y análisis de datos. Sus móduos se especializan en SVM, Clasificación, regresión, agrupación, reducción de la dimensionalidad (PCA,ICA, …) y otros muchos más. Está creada con NumPy, SciPy y matplotlib.
TENSORFLOW Desarrollo comunitario Biblioteca de software libre con APIs que permiten la ejecución en CPU, GPU o TPU.
Theano Desarrollo comunitario Biblioteca de software libre en Python.

 

 

 

Herramientas de apoyo.

Dentro de los mecanismos de aprendizaje debemos incluir, como elemento muy importante, las distintas bases de datos (dataset) que soportan la prueba y entrenamiento inicial. Para hacernos una idea, cuando Garry Kasparov perdió en segunda ronda, 1.997, contra un computador, éste tenía 700.000 partidas almacenadas. No es sólo la cantidad de información, sino la selección priorizada del conjunto de datos que podría permitir una aceleración en el entrenamiento y por tanto en el aprendizaje.

Ronald Fisher
Fisher

 

Uno de los dataset más antiguos es el conjunto de datos “Iris”, publicado por Ronald Fisher en 1.936, una de las especies que más conocemos son los lirios. Es una colección de mediciones de diferentes partes de 150 plantas y cada una de ellas corresponde a un caso y las características de cada caso son las medidas de cada parte de la planta.

 

La forma común de describir bases de datos (dataset) es con una matriz. La matriz contiene por cada fila un caso/ejemplo diferente y cada columna una característica, también diferente. Para construir la matriz, cada caso/ejemplo debe ser un vector y cada vector debería tener el mismo tamaño. Como en la mayoría de las situaciones no es posible encontrar datos homogéneos, en vez de describir el conjunto de datos como una matriz con m filas, lo describiremos como un conjunto que contiene m elementos: {x (1), x (2),. . . , x (m)}. Esta notación no implica que dos vectores x (i) y x (j) tengan el mismo tamaño.

 

 

Algunas bases, de las cientos que existen de libre posición son:

 

  • COCO. Para el reconocimiento de imágenes y detección de objetos, puntos clave de personas, segmentación de elementos y generación de leyendas. Este paquete proporciona las API para Matlab, Python y Lua que permiten cargar, analizar y visualizar las anotaciones. ± 25 GB de datos comprimidos.

COCO. Para el reconocimiento de imágenes

 

  • MNIST (Mixed National Insitute of Standards and Technology database),  para el reconocimiento de números escritos a mano. Las imágenes fueron originalmente seleccionadas y experimentadas por Chris Burges y Corinna Cortés, obtuvieron un conjunto de entrenamiento de 60.000 ejemplos y otro de prueba de 10.000. Representan un conjunto de dígitos (del 0 al 9) manuscritos, guardados como imágenes en escala de grises con resolución de 28×28 pixeles y etiquetas que indican el valor numérico de las imágenes.

MNIST. Para el reconocimiento de números escritos a mano

 

 

 

 

 

 

 

  • Open Images. El conjunto de datos contiene  9.011.219 imágenes, otro de validación de 41.260 y un conjunto de prueba de 125.436 imágenes. 50 GB de datos comprimidos.
    Open Images Para el reconocimiento de objetos

 

 

 

 

 

 

 

 

 

  • CIFAR.  Es una colección de imágenes etiquetadas y recopiladas por Alex Krizhevsky, Vinod Nair y Geoffrey Hinton. Se utilizan para entrenar algoritmos de aprendizaje para visión artificial

. CIFAR

2 thoughts on “Aprendizaje Automático ML

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *