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).
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 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 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:
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:
|
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.
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.
- 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.
- 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.
- 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
.
Excelente trabajo, le diré a mi profe (doctorando) que lea esta página y lo explique bien.
Gracias.