Algoritmos inteligentes

La computación "tradicional" ayuda a resolver problemas intelectualmente difíciles para los seres humanos, pero que resultan casi sencillos para una computadora. ¿Qué sucede con los problemas como reconocer objetos de la vida diaria, saber cuándo frenar mientras conducimos, escuchar palabras o reconocer las caras de las personas en una fotografía? Para los seres humanos estos problemas son fáciles, intuitivos y se sienten automáticos. Estos son el tipo de problemas que busca solucionar la Inteligencia Artificial (IA).

Algoritmos de aprendizaje

Los primeros proyectos de IA se realizaron en ambientes que no requerían que la computadora tuviera mucho conocimiento del mundo. Para solucionar un problema, los programadores optaban por escribir el código manualmente (hard code) describiendo con un lenguaje formal el conocimiento necesario. Esto es conocido como Enfoque por base de conocimientos, la computadora puede "razonar" con base en este conocimiento a través de reglas lógicas definidas por el supervisor (programador).

Estos proyectos no tuvieron grandes éxitos, desarrollar reglas precisas sobre el mundo es una tarea compleja. En este enfoque un programa hace uso de flujos inmensamente largos usando sentencias lógicas "si pasa esto, haz esto (if then)", haciendo que los sistemas se vuelvan complejos, impredecibles y difíciles de mantener. Estas dificultades sugieren que los sistemas deben obtener su propio conocimiento, y se logra reconociendo patrones en los datos. Este enfoque es conocido como Machine Learning.

El uso de Machine Learning permite a las computadoras solucionar problemas que involucren conocimientos del mundo real para tomar decisiones que parecen subjetivas. Los algoritmos de Machine Learning aprenden con base en un conjunto de datos significativos para resolver tareas en específico. Por ejemplo, para reconocer si un mail es spam o legítimo, el algoritmo podría tener un conjunto de ejemplos o representaciones de mails legítimos y mails con spam que servirán de entrenamiento, y usando un algoritmo simple como Naive Bayes se calcula la probabilidad de que un mail contenga spam.

Un algoritmo de Machine Learning es un algoritmo que puede aprender. Se considera que un programa aprende cuando el rendimiento para solucionar una tarea mejora gracias a un conjunto de experiencias. Pensándolo como una analogía al aprender a caminar: La tarea es caminar, el rendimiento inicia siendo bajo pues caemos al suelo, conforme ganamos experiencia, el rendimiento empieza a mejorar e indica que estamos aprendiendo.

El aprendizaje es el medio para resolver un problema. Si la tarea es que un robot camine, el programador podría solucionarlo definiendo manualmente todas y cada una de las reglas para caminar, tarea prácticamente imposible, o puede programarlo para que aprenda.

Deep learning

El rendimiento de un algoritmo de Machine Learning depende mucho de la representación de los datos de entrenamiento que se le dan. Muchos problemas como el mencionado sobre los mails de spam se pueden resolver diseñando con suficientes datos, estructurándolos de manera correcta e ingresándolos a un algoritmo simple de Machine Learning. Sin embargo, para detectar objetos en los pixeles de una fotografía, el problema se vuelve más complicado por todas las variables que puede haber en una foto como luz, reflejos, sombras, tiempo del día, obstrucciones, etc.  Un algoritmo simple podría detectar los objetos, el problema es la cantidad de datos que se necesita para entrenarlo; diseñar, separar y obtener estos datos puede llegar a tomar hasta décadas.

Para que los datos le sirvan al algoritmo se busca separar los factores de variación que explican los datos observados. Estos factores pueden ser conceptos, cantidades, fuerzas físicas o ideas en la mente humana que le dan un sentido o explicación a los datos observados. Por ejemplo: al analizar una grabación de audio, los factores de variación pueden ser la edad, el género, el acento y las palabras que se hablan. El mundo es complejo y contiene factores de variación que afectan a los datos observados, para que un sistema se comporte de manera inteligente se deben identificar, entender e ignorar los factores que no sean relevantes para el problema. Muchos de estos factores sólo pueden ser identificados con inteligencia muy sofisticada, casi humana.

El modelo Deep learning resuelve este problema y lo hace a través de representaciones construidas a partir de otras más simples, es decir, para que una computadora logre comportarse de manera inteligente, debe entender el mundo a través de conceptos. Ya que el mundo real está lleno de conceptos abstractos, la idea del Deep learning es intentar construir esos conceptos a partir de otros menos abstractos y más simples. El ejemplo por excelencia de este modelo es el Perceptron Multicapa (MLP). El MLP es una función matemática compuesta por otras funciones más simples donde cada función está creando una representación de la salida anterior.

Deep Learning es un enfoque de Machine Learning que comenzó inspirado en el funcionamiento del cerebro humano, y ha mejorado con el uso de estadística y matemáticas aplicadas. A pesar de ser una idea de la década de 1940, su popularidad y utilidad ha incrementado recientemente gracias al poder de cómputo, la enorme cantidad de datos que se han generado y la investigación de nuevas técnicas. La IA está revolucionando el mundo, las aplicaciones de Deep Learning se han utilizado exitosamente en diferentes campos de la ciencia y se espera que siga expandiéndose para lograr lo que parecería imposible.

Fernando Sánchez
Fernando Sánchez

Fernando Sánchez

Lead Backend Developer

Me dedico a aprender, a desarrollar software y a jugar videojuegos. Ingeniero por convicción y no por circunstancia.

__

"Honor your mistakes as a hidden intention - Brian Eno"