Tres. Máquinas que aprenden a la analítica de datos

Escrito por  Sábado, 11 Abril 2015 11:42

La idea de construir máquinas capaces de aprender de manera autónoma es un viejo anhelo de los investigadores de la inteligencia artificial. 

 

Introducción

En el evento considerado como el nacimiento de la inteligencia artificial moderna, la conferencia realizada en 1956, en Dartmouth College [4], los fundadores del área conjeturaban que “todo aspecto del aprendizaje o cualquier característica de la inteligencia pueden ser descritos de una manera suficientemente precisa, de tal forma que una máquina pueda simularlo”. Esta ambiciosa declaración reflejaba el optimismo que se vivía en aquel tiempo, respecto a la capacidad creciente de la computación digital, pero también reflejaba el desconocimiento y subestimación de la titánica tarea que representa construir una verdadera 'inteligencia artificial'. Hoy en día los objetivos de la inteligencia artificial son menos ambiciosos y consecuentes con las capacidades reales de la tecnología actual. El foco actual, más que emular la inteligencia humana, es la solución de problemas concretos. A pesar de esto las áreas de investigación de la inteligencia artificial siguen siendo básicamente las mismas que se plantearon en sus inicios [8]: razonamiento, representación del conocimiento, planeación, percepción, procesamiento del lenguaje natural y aprendizaje. De todas estas áreas, la habilidad de aprender a partir de datos y experiencia ha mostrado un rol central.

 

El aprendizaje computacional (o machine learning en inglés) estudia los sistemas artificiales que son capaces de aprender a partir de datos [1]. Esto incluye una gran variedad de sistemas, desde los de visión por computador hasta sistemas para detectar correo no deseado (spam). En todos los casos, un sistema que aprende debe ser capaz de generalizar;  es decir, encontrar patrones y regularidades en los datos que le permitan desempeñarse bien en datos que no ha observado previamente. Esta habilidad para generalizar y encontrar patrones en datos, es precisamente la que se explota en los sistemas analíticos actuales.

 

Los términos “data analytics” y “data science” han cobrado gran popularidad en los años recientes; sin embargo, los conceptos subyacentes no son nuevos. La extracción de información y conocimiento a partir de datos es el principal objetivo de la minería de datos; área que se popularizó durante la década de los noventa. Los antecedentes van mucho más atrás, pues tanto la minería de datos como el “data analytics” se fundamentan en métodos estadísticos y de aprendizaje computacional desarrollados y perfeccionados durante décadas.

 

El aprendizaje computacional

De acuerdo con Wikipedia [10] “El aprendizaje es el proceso a través del cual se adquieren o modifican habilidades, destrezas, conocimientos, conductas o valores como resultado del estudio, la experiencia, la instrucción, el razonamiento y la observación”. Desde un punto de vista de procesamiento de información, el aprendizaje se puede ver como un proceso que recibe como insumo datos/información y produce cambios en el comportamiento del agente, en particular en su comportamiento 'inteligente' (conocimiento y habilidad para resolver problemas).

 

Considere un robot que trata de aprender a determinar si una cierta región en su campo de visión es segura o no, en el primer caso puede avanzar hacia ella y en el segundo debe evadirla. La estrategia de aprendizaje computacional para abordar este problema es recolectar ejemplos de regiones seguras y no seguras (un conjunto de entrenamiento) y a partir de estos 'aprender' una función que cuando se le presente una nueva región pueda clasificarla en forma correcta, de manera que el robot pueda tomar la decisión correcta de avanzar o no. Cada ejemplo de entrenamiento está representado por una serie de valores (llamados atributos o características) los cuales dependen del problema particular. En el caso del robot, los atributos se pueden calcular a partir de los dispositivos de percepción con que éste cuenta, por ejemplo, una cámara de video, o un láser capaz de medir la distancia a diferentes puntos en el campo de visión. Los datos de entrenamiento han sido recolectados a partir de navegaciones reales del robot y distribuidos en las dos clases por un agente externo, por ejemplo un humano, quien determina si una región particular es segura o no.

 

Como lo indicamos anteriormente, estos datos de entrenamiento son el insumo para que el robot aprenda un modelo de clasificación (también llamado función discriminante o función de predicción) que recibe como entrada datos de percepción, el vector de atributos, y produce como salida una de las dos clases: región segura o región insegura.

 

La motivación para encontrar esta función de predicción puede venir de otro tipo de problema. Por ejemplo, los atributos de un caso pueden ser características de un potencial comprador a quien se le envía publicidad de un producto y la clase indica si la persona finalmente compra o no el producto. El modelo de predicción inducida a partir de los datos de entrenamiento, puede ser usado para predecir si un nuevo potencial comprador va a adquirir o no el producto. Otro ejemplo, es la detección de correo no deseado, llamado comúnmente spam. En este caso, los atributos corresponden a características de un correo electrónico (frecuencias de ciertas palabras, longitud del correo, dominio del remitente, etc.) y la clase a la clasificación como spam o no-spam. La función de predicción permite clasificar nuevos correos entrantes de manera que los no deseados se envíen a una carpeta especial.

 

La Figura 2 muestra el proceso de entrenamiento y aplicación de modelo de clasificación aprendido. El ejemplo que se utiliza como ilustración es la construcción de un modelo para clasificar dígitos manuscritos. La entrada al algoritmo de entrenamiento es un conjunto de dígitos representados por los pixeles junto con la respectiva clase (0,1, 2, etc.). El algoritmo de entrenamiento genera un modelo de clasificación (por ejemplo una red neuronal), el cual se evalúa sobre los ejemplos de entrada (generalmente diferentes a los usados para entrenamiento). Este proceso se puede iterar múltiples veces cambiando los parámetros del algoritmo de entrenamiento hasta obtener un modelo de clasificación con un desempeño aceptable. Este modelo es posteriormente usado para predecir la clase de nuevos ejemplos de entrada.

Figura 1. Proceso de entrenamiento y predicción de un modelo de clasificación de dígitos manuscritos.

 

 

La actividad fundamental del proceso de aprendizaje es el algoritmo de entrenamiento, el cual debe ser capaz de encontrar un buen modelo de clasificación a partir de los datos. La estrategia para encontrar una buena función de predicción es cuantificar qué tan bien la función clasifica las etiquetas de los ejemplos de entrenamiento. Esto se logra con una función de pérdida, la cual cuantifica el error que la función de clasificación produce cuando se aplica a un conjunto de datos de entrenamiento. El proceso de aprendizaje consiste entonces en encontrar una función de clasificación que minimice la función de pérdida, lo cual se aborda generalmente usando métodos de optimización [1].

 

Problemas de aprendizaje

El ejemplo que se presentó anteriormente ilustra un tipo particular de problema de aprendizaje, una tarea de clasificación, la cual pertenece a la categoría más general de aprendizaje supervisado. Hay diferentes tipos de problemas de aprendizaje que están fundamentalmente determinados por la información disponible para el entrenamiento y la forma como ésta es provista al algoritmo de aprendizaje.

 

En un problema de aprendizaje supervisado se asume que algunos de los atributos en los datos de entrenamiento dependen funcionalmente de los valores de otros atributos. En el caso de un problema de clasificación la variable o atributo dependiente es la clase, la cual corresponde a un atributo que toma un valor discreto. Si el atributo a predecir es continuo se habla de un problema de regresión.

 

En un problema de aprendizaje no supervisado no se consideran atributos a ser predecidos en función de otros atributos. Es decir, los ejemplos de entrenamiento no están etiquetados. En este caso, el algoritmo de aprendizaje no cuenta con supervisión que le permita saber si una cierta predicción es correcta o no. De hecho, en este contexto no tiene mucho sentido hablar de predecir, pues no hay un atributo particular a ser predecido. A pesar de esto es posible encontrar patrones en los datos y ésta es efectivamente la tarea de un algoritmo de aprendizaje no supervisado. Hay diversas tareas de aprendizaje no supervisado, las dos principales son agrupamiento y estimación de la densidad.

 

En el aprendizaje supervisado y no supervisado se asume que los datos de entrenamiento están disponibles antes del proceso de aprendizaje y que, después de aprender el modelo, este se aplica sin modificación a todos los nuevos ejemplos de prueba. Un escenario más realista es uno en el cual el agente aprende continuamente con las percepciones que recibe del medio y adapta sus acciones de manera acorde. A este tipo de aprendizaje se le denomina aprendizaje por refuerzo, cuyo objetivo es encontrar una política, una función de decisión usada por el agente para tomar decisiones en cada momento, que le permita maximizar la utilidad (premios menos castigos) a largo plazo. Esta función la aprende el agente de manera progresiva a través de la interacción con el ambiente, cada premio encontrado constituye un refuerzo positivo y cada castigo un refuerzo negativo. Los refuerzos le permiten al agente modificar su función de decisión consecuentemente.

 

Métodos de aprendizaje

Existe una gran variedad de métodos que reflejan las diversas áreas de conocimiento que fundamentan el aprendizaje computacional y las diversas aplicaciones que tiene [1]. Algunos de los primeros métodos tenían una clara inspiración biológica como, por ejemplo, el perceptrón, propuesto por Frank Rosenblatt en 1957 [6], un modelo para el reconocimiento de imágenes inspirado en el funcionamiento del cerebro, que más tarde daría origen a las redes neuronales. Sin embargo, en el aprendizaje computacional moderno confluyen métodos provenientes de áreas tales como la estadística, el modelamiento probabilístico, el reconocimiento de patrones y la minería de datos, entre otros [1]. Algunos de los métodos más representativos incluyen: árboles de decisión, modelos gráficos, máquinas de vectores de soporte, regresión logística, clasificación de vecino más cercano, inducción de reglas de asociación, agrupamiento por k-medias y modelos ocultos de Markov.

 

Las redes neuronales son uno de los métodos más populares de aprendizaje computacional [8]. La Figura 2 muestra una red neuronal para el reconocimiento de dígitos. Los nodos representan neuronas artificiales, las cuales intercambian información a través de conexiones indicadas como arcos en la figura. La neurona artificial es una súper simplificación de una neurona biológica, su valor de salida (generalmente un valor entre 0 y 1) es calculado a partir de los valores de entrada ponderados por el peso de la conexión, este valor es comparado con un umbral que si se excede genera una salida cercana a 1, en otro caso genera una salida cercana a 0. El poder de las redes neuronales proviene de la combinación de un gran número de neuronas artificiales organizadas en múltiples capas.

 

En la red neuronal mostrada en la figura, las neuronas de entrada (a la derecha) reciben sus valores de los pixeles de la imagen de entrada, estas neuronas se conectan con las neuronas en la capa intermedias, y éstas, a su vez, con las neuronas en la capa de salida (a la izquierda). La capa de salida tiene tantas neuronas como clases hay en el problema (en el ejemplo serían 10 neuronas, una por cada dígito posible). Un valor alto en la i-ésima neurona de salida indica que el resultado de clasificación corresponde a la clase i. El comportamiento de una red neuronal está determinado por su organización (o topología) y por los pesos asociados a las conexiones. La organización de la red neuronal generalmente se define a priori. El algoritmo de entrenamiento se encarga de buscar valores para los pesos que minimicen la función de pérdida asociada con el error que la red neuronal comete al predecir las clases de los ejemplos de entrenamiento.

 

Figura 2. Ejemplo de una red neuronal para reconocer dígitos manuscritos.

 

Las redes neuronales fueron uno de los primeros métodos de aprendizaje computacional propuestos. Sin embargo, estos primeros modelos tenían bastantes restricciones, pues los algoritmos eficientes de entrenamiento existentes en esta época sólo podían manejar redes muy simples (sin capas de neuronas intermedias) las cuales sólo podían resolver problemas muy sencillos. Esto ocasionó que cayeran en desuso durante varios años. En la década de los ochenta, se propuso un nuevo algoritmo de entrenamiento, el de retropropagación, el cual permitía entrenar redes multicapa. Esto produjo un renacer de las redes neuronales, con múltiples casos de éxito en su aplicación a diferentes problemas que iban desde la visión por computador hasta la predicción de series de tiempo financieras. Igualmente, se generó un renovado interés de la comunidad científica, que redundó en un gran número de publicaciones, conferencias y revistas especializadas.  Durante los noventa, aparecieron nuevos algoritmos de aprendizaje computacional con una fundamentación matemática más sólida, tales como los métodos de kernel, con las máquinas de soporte vectorial como su técnica más representativa, que mostraron un mejor desempeño en muchas tareas. Esto generó una nueva reducción del interés por las redes neuronales. Sin embargo, en los últimos años ha habido un interés renovado en redes neuronales gracias al surgimiento de los llamados modelos de aprendizaje profundo (deep learning en Inglés) [2] los cuales han permitido tener resultados sin precedentes en visión por computador y reconocimiento del habla entre otros.

 

Aplicaciones y perspectivas

Durante muchos años el aprendizaje computacional estuvo confinado a los laboratorios de investigación y muchas de sus aplicaciones no pasaban de ser aplicaciones de juguete que no escalaban bien para ser usadas en escenarios reales. Los primeros casos de éxito se dieron en la década de los noventa en dominios de aplicación restringidos como la detección de fraudes en tarjetas de crédito y la predicción de series de tiempo. Sin embargo, en los últimos diez años ha habido una explosión en las aplicaciones del aprendizaje computacional en diferentes problemas que van desde las aplicaciones científicas, hasta productos de consumo masivo como las cámaras fotográficas o las consolas de juego [5].

 

En algunas áreas de investigación, la introducción de métodos de aprendizaje computacional ha revolucionado el área, cambiando la forma de abordar los problemas y mejorando el desempeño, en algunas ocasiones de manera dramática, cuando se compara con los métodos tradicionales. Un ejemplo es la traducción automática, un problema que se ha estudiado durante años usando métodos de lingüística computacional que codificaban el conocimiento de la estructura gramatical de las lenguas a traducir en reglas. En el 2006 Google ganó una competencia en la cual se evaluaban sistemas automáticas de traducción de inglés, árabe y chino. El método usado por Google se basaba en el aprendizaje de modelos estadísticos de lenguaje a partir de grandes corpus de datos [3], algo que hasta ese momento se consideraba imposible. Los sistemas actuales de traducción automática, incluido por supuesto el de Google, se basan en este enfoque.

 

Algunos ejemplos de problemas donde el enfoque de aprendizaje computacional es el más efectivo actualmente, y por lo tanto el enfoque dominante, incluyen:

 

  • Detección de fraudes y anomalías.
  • Problemas de visión por computador, como la detección eficiente de objetos (por ejemplo la detección de caras en cámaras fotográficas) y la interpretación de escenas.
  • Detección de correo no deseado (spam).
  • Tareas de procesamiento del lenguaje natural, como el análisis de sentimientos o el minado de opiniones.
  • Sistemas de recomendación automática, como los usados por Netflix y Amazon.
  • Reconocimiento de la voz, como el utilizado en los sistemas de comando por voz en los teléfonos inteligentes.
  • Seguimiento de gestos y movimientos en tiempo real, como en las interfaces de las consolas de juegos tales como el Kinect para el Xbox.

 

El aprendizaje computacional está en el centro de la revolución generada por el creciente volumen de datos, fenómeno al que se le ha dado el nombre de 'Big Data'. Los métodos de aprendizaje supervisado y no supervisado permiten extraer información y conocimiento en forma de patrones, modelos predictivos y descriptivos, automáticamente inducidos a partir de los datos. Uno de los grandes retos que enfrentan los investigadores en aprendizaje computacional es el diseño de algoritmos que puedan escalar de manera eficiente a manejar conjuntos en el orden de millones, o más, de datos. Esto requiere, tanto el diseño de algoritmos de aprendizaje más eficientes, como el uso de estrategias de paralelización y ejecución distribuida, explotando recursos tales como clusters y procesamiento basado en GPU.

 

En un estudio de prospectiva patrocinado por IEEE [5], el aprendizaje computacional ha sido identificado como una de las tecnologías innovadoras que pueden liderar el cambio de la industria de la computación en los siguientes años. Pero aún, más allá de esta distinción, el aprendizaje computacional juega un papel fundamental en el éxito de otras tecnologías identificadas en el mismo estudio. En algunos casos, el aprendizaje computacional proveerá los métodos básicos que permitan abordar los retos particulares de algunas tecnologías, como la visión por computador, la biología computacional, las  interfaces de usuario naturales o el big analytics. En otros casos, los métodos  de aprendizaje computacional permitirán analizar y aprovechar los inmensos volúmenes de datos generados por tecnologías, tales como los cursos abiertos masivos en línea,  el internet de las cosas o la bioinformática.

 

A pesar del gran avance y los éxitos alcanzados por el aprendizaje computacional en sus más de sesenta años de historia, todavía no es claro si algún día podremos construir sistemas capaces de aprender y comportarse inteligentemente de la misma forma o mejor que nosotros. Lo que es cierto es que el aprendizaje computacional juega un papel fundamental en muchas de las tecnologías que impulsan los cambios acelerados que está sufriendo nuestra forma de vivir.

 

Referencias

[1] Alpaydin, Ethem. Introduction to machine learning, 2da Ed, MIT press, 2014.

 

[2] Arel, Itamar, Derek C Rose, and Thomas P Karnowski. "Deep machine learning-a new frontier in artificial intelligence research [research frontier]." Computational Intelligence Magazine, IEEE,  vol 5, n. 4 (2010): 13-18.

 

[3] Brants, Thorsten et al. "Large language models in machine translation." In Proceedings of the Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning 2007.

 

[4] Buchanan, Bruce G. "A (very) brief history of artificial intelligence." AI Magazine vol 26, n. 4 (2005).

 

[5] Milojičić, Dejan et al. "IEEE Computer Society 2022 Report." Joint Seminar on Computer Science and Applied Mathematics,  2013.

 

[6] ‑Rosenblatt, Frank. "The perceptron: a probabilistic model for information storage and organization in the brain." Psychological review vol 65, n 6, (1958).

 

[7] Rumelhart, David E, Geoffrey E Hinton, and Ronald J Williams. "Learning representations by back-propagating errors.", capítulo en Cognitive modeling, (1988).

 

[8] Russell, Stuart, Peter Norvig, “Artificial Intelligence: A modern approach", 3ra Ed, Prentice-Hall, Egnlewood Cliffs, (1995).

 

[9] Shawe-Taylor, John, and Nello Cristianini. Kernel methods for pattern analysis. Cambridge university press, 2004.

[10] “Aprendizaje - Wikipedia, la enciclopedia libre." , accedido el 11 Feb 2015, http://es.wikipedia.org/wiki/Aprendizaje

 

Fabio A. González O.Profesor Asociado del Departamento de Ingeniería de Sistemas e Industrial de la Universidad Nacional de Colombia, sede Bogotá. Es ingeniero de Sistemas y Magíster en Matemáticas de la Universidad Nacional de Colombia, MSc y PhD en Ciencias de la Computación de la University of Memphis, EE.UU.  Lidera el grupo de investigación MindLab. Su trabajo de investigación se enfoca en los fundamentos de aprendizaje de máquina y recuperación de información y su aplicación al análisis de imágenes, visión por computador y minería de datos.

Leido 2880 veces Modificado por ultima vez Lunes, 13 Abril 2015 21:31

Ingrese su comentario

Por favor confirme que ingreso la informacion requerida. Codigo HTML no esta permitido

EDICIÓN 134

EDICIÓN EN CIRCULACIÓN (135)

Patrocinadores Edición 134

  

Patrocinadores Edición 136

  

 

 

 

Actividades Académicas

 

Sobre ACIS

La Asociación Colombiana de Ingenieros de Sistemas es una organización sin ánimo de lucro que agrupa a más de 1500 profesionales en el área de sistemas. ACIS nació en 1975 agrupando entonces a un número pequeño de profesionales en sistemas. Más información