La inteligencia artificial (IA) está cada vez más presente en nuestras vidas. Sin embargo, la IA significa cosas diferentes para diferentes personas. Para algunos, la IA se trata de formas de vida artificial que pueden superar la inteligencia humana, mientras que para otros casi cualquier tecnología de procesamiento de datos puede llamarse IA.
Algunos ejemplos del uso de IA en diferentes campos son:
Definir la Inteligencia Artificial no es nada fácil. Incluso los investigadores de IA no tienen una definición exacta. Más bien, el campo se redefine constantemente cuando algunos temas se clasifican como no IA y surgen nuevos temas.
Hace cincuenta años, por ejemplo, se consideraba que los métodos automáticos de búsqueda y planificación pertenecían al dominio de la IA. Hoy en día, estos métodos se enseñan a todos los estudiantes de informática. De manera similar, ciertos métodos para procesar información incierta se están entendiendo tan bien que es probable que se pasen de la IA a las estadísticas o la probabilidad muy pronto.
Un intento de definición sería enumerar las propiedades que son características de la IA:
Al pensar en inteligencia artificial, la mayoría de nosotros tiene en mente una IA con capacidades mentales humanas, un programa que nos supera con un largo margen, o una persona sintética capaz de imitarnos e incluso combatirnos.
Los tres casos mencionados son ejemplos de inteligencia artificial fuerte (IAF): inteligencia artificial igual o superior a la capacidad humana promedio. De momento, todos estos casos quedan dentro de la ciencia ficción.
A día de hoy, no hemos conseguido programar una IA fuerte. Todo nuestro desarrollo y avance científico ha cristalizado en una forma de inteligencia que, aunque puede superar algunas capacidades humanas y va a tener un enorme impacto en nuestra economía, solo puede orientarse a un objetivo.
Es la llamada inteligencia artificial débil (IAD).
«Débil» no significa que no tenga valor. La IAD nos es de gran ayuda a la hora de detectar una metástasis, por ejemplo. También nos echa una mano cuando tratamos de extraer valor de un gran conjunto de datos o cuando necesitamos coordinar una flota en una ciudad, clave para la movilidad autónoma.
Lo cierto es que la inteligencia artificial débil ya se encuentra a nuestro alrededor y la damos multitud de usos.
Para diferenciar IAD de IAF, Huawei ha elaborado la siguiente infografia para clasificar sus respectivas características:
Hoy en día, el machine learning se utiliza en multitud de aplicaciones que utilizamos cada día, como un sistema de recomendaciones, traducción automática de textos, reconocimiento de voz…
Dentro de los tipos de machine learning, uno de lo más populares hoy en día (y que es en parte responsable del auge de la IA) son las redes neuronales (Neural Nets) y el aprendizaje profundo (Deep Learning).
En el aprendizaje supervisado, el conjunto de entrenamiento incluye las soluciones deseadas, denominadas “etiquetas”.
Por el contrario, en el aprendizaje no supervisado los datos de entrenamiento no incluyen las soluciones (no están etiquetados). El modelo es capaz de aprender de forma totalmente autónoma.
Las dos tareas típicas del aprendizaje supervisado son la regresión y la clasificación. En las tareas de regresión el algoritmo intenta predecir un valor numérico “objetivo” si se da un conjunto de características, denominados “predictores”.
En los problemas de clasificación, el modelo intenta clasificar las nuevas instancias según sus características. En este caso, la etiqueta de los datos de entrenamiento será la clase a la que pertenece cada instancia.
Puesto que etiquetar datos suele llevar mucho tiempo y supone un gasto importante, a menudo tendremos un montón de instancias sin etiquetar y unas pocas etiquetadas. Algunos algoritmos pueden ocuparse de datos que están etiquetados en parte. Esto se llama aprendizaje semisupervisado.
El aprendizaje por refuerzo es algo totalmente diferente. En este caso, la máquina aprende recibiendo “recompensas” (o “castigos”) según las acciones que tome.
En el aprendizaje por lotes el sistema no puede aprender de forma gradual; tiene que entrenarse usando todos los datos disponibles en ese momento. Una vez se entrena el modelo se lanza a producción, y si entran nuevos datos tenemos que volver a entrenar al modelo con todos los datos disponibles (los nuevos y los viejos). Esto se llama aprendizaje offline.
Uno de los problemas con este tipo de aprendizaje es que entrenar un modelo completo puede tardar varias horas, con lo que normalmente se hace cada 24 horas o cada semana. Si necesitamos actualizar el sistema con datos que cambian con rapidez, necesitamos otras soluciones.
En el aprendizaje online el sistema es capaz de aprender de forma gradual, ya sea con datos individuales o en grupos pequeños de datos llamados minilotes.
También se pueden utilizar este tipo de sistemas cuando el volumen de datos para entrenar es enorme. El algoritmo carga parte de los datos, ejecuta un paso de entrenamiento con esos datos y repite el proceso hasta que ha procesado todos los datos.
Un parámetro importante en este tipo de sistemas es la tasa de aprendizaje: la rapidez con la que debe adaptarse el sistema a los datos cambiantes. Si la tasa de aprendizaje es muy alta, el sistema se adaptará con rapidez a los datos nuevos, pero también tenderá a olvidar rápido los datos antiguos (por ejemplo, en un filtro de spam no nos interesa que el sistema olvide los tipos de spam que ya ha aprendido). Por el contrario, con una tasa de aprendizaje muy baja, el sistema aprenderá más despacio, pero será menos sensible al ruido de los datos nuevos.
En el aprendizaje basado en instancias, el sistema aprende los ejemplos de memoria y, después, generaliza a nuevos casos utilizando una medida de similitud para compararlos con los ejemplos aprendidos.
Otra forma de generalizar es crear un modelo a partir de un conjunto de ejemplos y, después, utilizarlo para hacer predicciones. Esto se denomina aprendizaje basado en modelos.
Ejemplos de problemas con los datos:
Ejemplo de problemas con los algoritmos:
Normalmente, se dividen los datos en tres conjuntos:
Las redes neuronales son un modelo de machine learning inspirado en el funcionamiento de las redes neuronales de los organismos vivos: un conjunto de neuronas conectadas entre sí y que trabajan en conjunto.
En las redes neuronales de los organismos vivos la unidad básica es la neurona. Se compone de un cuerpo celular que contiene el núcleo, muchas extensiones de conexión llamadas dentritas, y una extensión muy larga denominada axón.
El equivalente a las neuronas en las redes neuronales artificiales es el perceptrón.
Su tarea es hacer una suma ponderada de las entradas (asignándole un peso a cada una de ellas) más una entrada adicional con valor constante igual a 1 (con su peso correspondiente) llamada bias.
La salida del perceptrón es lineal, con lo que se le aplica una función (llamada función de activación) para añadir no linealidad al resultado.
El aprendizaje profundo (deep learning) es un caso particular de red neuronal. Se trata de conectar varias capas de neuronas entre sí (cada una de las cuales puede tener diferente número de neuronas).
La primera capa se llama capa de entrada, y tendrá tantas neuronas como entradas tenga nuestro algoritmo (por ejemplo, si queremos predecir el precio de una casa en función de la ciudad, barrio y metros cuadrados, nuestra red tendrá 3 entradas). Del mismo modo, la última capa recibe el nombre de capa de salida, y tendrá tantas neuronas como salidas tenga nuesto modelo (en el caso anterior, una salida: la predicción del precio).
Las capas intermedias se denominan capas ocultas, y estarán conectadas entre sí, de forma que las salidas de la capa k serán las entradas de la capa k-1. Cada de una de estas capas ocultas puede estar formado por un número diferente de neuronas.
Durante el proceso de entrenamiento de una red neuronal, ésta va ajustando los pesos de cada una de las neuronas para ir minimizando el error de la red. El algoritmo utilizado es el de backpropagation: se calcula el error de la salida y se propaga ese error hacia las capas anteriores para ir ajustando sus pesos.
Existen muchos tipos de redes neuronales. A continuación veremos algunas de las más utilizadas.
Se utilizan principalmente para el tratamiento de imágenes. Las primeras capas se encargan de reconocer formas sencillas (líneas, curvas..) y las siguientes se van especializando hasta poder reconocer características más complejas (ojos, ruedas, caras…).
Se trata de redes neuronales a las que se agrega un estado de memoria a las neuronas. En una red neuronal tradicional, el modelo produce la salida multiplicando la entrada con el peso y la función de activación. Con un RNN, esta salida se envía de nuevo a sí mismo durante un determinado periodo de tiempo.
Este tipo de redes se suelen utilizar para el tratamiento de textos (para dar sentido a una frase, debemos conocer la posición de las palabras anteriores).
Los modelos generativos utilizan dos redes neuronales profundas que compiten entre ellas: el generador y el discriminador.
Se suelen utilizar para crear imágenes realistas desde cero (también pueden generar otro tipo de datos, como música).
Por ejemplo, el generador se encarga de crear caras lo más realistas posibles, mientras que la tarea del discriminador será decir si una cara es auténtica o falsa. Al rechazar las primeras imágenes, el generador irá mejorando la creación de caras y será capaz de crear imágenes que engañen al discriminador.
Ejercicio 1
Define con tus propias palabras el machine learning
Ejercicio 2
¿Qué es un conjunto de entrenamiento etiquetado y en qué tipo de machine learning se utiliza?
Ejercicio 3
¿Cuáles son las dos tareas supervisadas más comunes?
Ejercicio 4
¿Qué tipo de algoritmo de machine learning utilizarías para permitir a un robot caminar por varios terrenos desconocidos?
Ejercicio 5
¿Qué tipo de algoritmo de machine learning utilizarías para segmentar a tus clientes en múltiples grupos?
Ejercicio 6
¿Definirías el problema de detección de spam como un problema de aprendizaje supervisado o no supervisado?
Ejercicio 7
¿Porqué es útil separar los datos en entrenamiento y prueba?
Ejercicio 8
¿Para qué se utiliza la función de activación de un perceptrón?
Ejercicio 9
Tenemos un conjunto de datos de personas con los campos edad, sexo, peso, altura y el índice de masa corporal. Si queremos entrenar una red neuronal para hacer una predicción de este último parámetro (índice de masa temporal) en función del resto, ¿cuántas neuronas tendrá nuestra red neuronal en la capa de entrada?
Ejercicio 10
¿Cuántas neuronas tendrá la capa de salida de la red anterior?
Ejercicio 11
¿Cuántas neuronas hacen falta en la capa de salida para clasificar mails entre correo no deseado y correo deseado?
Ejercicio 12
¿Qué tipo de red neuronal utilizarías para crear un traductor de texto?