Contenidos
¿Qué es el aprendizaje automático? 6
Machine learning: familias y sabores 9
Aprendiendo a comunicarse: procesamiento de lenguaje natural 17
Del concepto al mercado: el pipeline de trabajo en una viñeta 23
Aplicaciones y ejemplos 28
Ética y responsabilidad 32
Para aprender más: libros, cursos y plataformas 34
Introducción
al machine learning
3
INTRODUCCIÓN AL MACHINE LEARNING
Introducción
El aprendizaje automático es uno de los campos tecnológicos que están
revolucionando nuestra sociedad. Sin embargo, esta familia de técnicas y
algoritmos surgieron antes de lo que se pueda pensar.
Antes de nada, conviene aclarar que hay mucho abuso—intencionado o
accidental—con la terminología. En muchos casos se habla de lo mismo bajo
paraguas tan distintos como «inteligencia artificial», «aprendizaje automático»
o «machine learning».
En cualquier caso, el origen de este campo se sitúa aproximadamente a mitad
del siglo XX, de mano de pioneros como Alan Turing. A lo largo de los ’50, Arthur
Samuel presentó uno de los primeros programas capaces de alguna forma
de aprendizaje, además de popularizar el término machine learning, y poco
después Frank Rosenblatt introdujo las redes neuronales artificiales con su
Perceptron 1.
Por muchas razones, incluyendo un exceso de optimismo comunicativo, el
campo sufrió un relativo estancamiento, que podemos conocer como el primer
«invierno» del aprendizaje automático 2. El optimismo regresó con fuerza en la
década de los ’80, que vio avances teóricos fundamentales, como el algoritmo
de back-propagation. Sin embargo, el impacto de las aplicaciones no estuvo a
la altura de las promesas, por lo que el ciclo volvió a un duro invierno. A principios
del siglo xxi la situación cambiaría para siempre. En parte aprovechando los
avances de hardware como son las unidades de procesamiento GPU, los
algoritmos de machine learning comenzaron a asentarse con fuerza en la
industria.
Deep learning, reinforcement learning, redes generativas… un diverso grupo de
algoritmos nos ha sorprendido con avances que una vez parecieron imposibles.
Se dice que inteligencia artificial es todo aquello que la inteligencia artificial
aún no ha conseguido realizar. La idea es que, tan pronto como se supera un
monumental reto, nuestra comprensión sobre la inteligencia artificial y sobre
los retos a los que la aplicamos da un gran salto, y trivializamos los avances
pasados.
1
Rosenblatt, Frank (1957). “The Perceptron—a perceiving and recognizing automaton”.
Report 85-460-1. Cornell Aeronautical Laboratory.
2
https://en.wikipedia.org/wiki/AI_winter
4
Así, el ajedrez fue durante décadas el ejemplo paradigmático de una prueba
de inteligencia artificial. Es imposible dominar un juego tan complejo a nivel
profesional sin hablar de verdadera inteligencia artificial—o eso se decía.
Luego llegó la derrota de Kasparov ante Deep Blue en 1996 y nuestra mirada
se puso en Go, el siguiente hito inalcanzable—el ajedrez, resulta, no necesitaba
«verdarera inteligencia», después de todo. Hasta que AlphaGo venció al
maestro Lee Sedol en 2016, como recoge el fantástico documental de igual
nombre (AlphaGo, 2017).
Hoy los algoritmos de machine learning están detrás de las acciones más
cotidianas de nuestras vidas. Google y demás buscadores, aplicaciones de
mapas en nuestros teléfonos, traductores, sistemas de conducción semi-
automática o incluso el termostato del salón. Y explican en gran parte de
muchas de las mayores fortunas (Apple, Amazon, Google), que han utilizado
las nuevas tecnologías para ganar una influencia y riqueza que rivaliza—y
supera—a naciones enteras.
Esta breve guía es una introducción a los fundamentos del aprendizaje
automático, con un énfasis práctico para que cualquiera pueda usarlo en sus
proyectos y negocios, incluyendo cursos y sugerencias de software para hacer
más fácil tu comienzo en este apasionante mundo.
Siga leyendo, pase a una sección o marque esta publicación para más
adelante:
1. ¿Qué es el aprendizaje automático?
2. Machine learning: familias y sabores
3. Aprendiendo a comunicarse: procesamiento de lenguaje natu-ral
4. Del concepto al mercado: el pipeline de trabajo en una viñeta
5. Aplicaciones y ejemplos
6. Ética y responsabilidad
7. Para aprender más: libros, cursos y plataformas
Siga leyendo, pase a una sección o marque esta publicación para más
adelante:
5
¿Qué es el
aprendizaje
automático?
6
INTRODUCCIÓN AL MACHINE LEARNING
¿Qué es el aprendizaje
automático?
Aunque ya hemos indicado que los términos se usan de forma indistinta
en la práctica, inteligencia artificial y machine learning no son lo mismo.
Inteligencia artificial es un amplísimo campo que se inspira en sistemas
inteligentes naturales para mejorar nuestro conocimiento sobre el diseño y
funcionamiento de algoritmos y dispositivos. Incluye, por tanto, campos como
la robótica e incluso alcanza aplicaciones artísticas.
Dentro de la inteligencia artificial encontramos el machine learning, que se
centra en la ejecución de tareas sin una guía completa de instrucciones. Los
modelos se construyen identificando patrones en los datos, que se utilizan para
hacer predicciones. Detrás de descripciones tan rimbombantes encontramos
que los ejemplos más básicos son algo muy cercano, como puede ser un
ajuste lineal a un conjunto de datos que utilizamos para predecir un valor
desconocido: estamos utilizando un patrón para predecir algo no observado.
Xkcd en «Linear Regression» nos muestra los riesgos de aplicar
modelos sin reflexionar sobre los resultados.
7
Por supuesto, machine learning también es un gran campo en sí mismo, e
incluye conceptos fundamentales como deep learning, de los que hablaremos
más adelante.
¿Cuál es la motivación práctica para todo esto? Incluso las tareas
aparentemente más sencillas, como clasificar imágenes de dígitos, resultan
abrumadoras para un sistema de reglas. Tratar de considerar todas las
excepciones se vuelve una tarea imposible, lo que se traduce en algoritmos
muy complejos, difíciles de mantener y no demasiado efectivos. En lugar de
eso, resulta mucho más atractivo utilizar un sencillo algoritmo diseñado para
que busque él mismo los patrones que le resulten más útiles en la tarea lo que,
en las condiciones correctas, produce asombrosos resultados que superan a
humanos expertos.
8
Machine
Learning:
familias y sabores
9
INTRODUCCIÓN AL MACHINE LEARNING
Machine learning:
familias y sabores
Si preguntas a un experto, la taxonomía de los algoritmos de machine learning
es algo muy sofisticado. Sin embargo, podemos distinguir dos familias
fundamentales muy válidas para esta introducción: aprendizaje supervisado
frente a aprendizaje no supervisado.
Aprendizaje supervisado, a partir de ejemplos etiquetados
(izquierda) frente a aprendizaje no supervisado.
Aprendizaje supervisado
Hablamos de aprendizaje supervisado cuando contamos con un conjunto
de datos etiquetado para entrenar nuestros modelos. ¿Qué significa esto?
Por ejemplo, si queremos entrenar un clasificador de imágenes que distinga
perros y gatos, primero buscaremos un dataset de fotografías de perros y
gatos donde la clase que corresponde a cada imagen es ya conocida. Estos
datos son los que alimentan al modelo, que utilizará los patrones de estos
datos para clasificar imágenes desconocidas.
En el mundo empresarial dominan los proyectos de aprendizaje supervisado,
que a su vez se dividen en dos categorías fundamentales.
10
Clasificación
En un problema de clasificación debemos asignar categorías a un ejemplo
desconocido. Ya hemos visto un ejemplo sencillo—de explicar—que consiste
en distinguir fotografías de perros y gatos. Una aplicación real es identificar
imágenes no apropiadas en redes sociales, o clasificar tomates según su
estado de maduración.
Por supuesto, no siempre las categorías son únicas y excluyentes. Si
imaginamos un clasificador de textos según su temática, es perfectamente
posible encontrar un documento que trate de deportes y de medio ambiente
simultáneamente.
Los clasificadores son una de las aplicaciones con más potencial empresarial,
ya que son tareas repetitivas que consumen gran cantidad de recursos y en
las que los algoritmos suelen alcanzar un grado elevado de competencia.
Árbol de decisión para clasificación de supervivientes del Titanic
según su sexo (Male?), edad (Age) y número de hermanos
(Sibsp).
11
Regresión
En este caso el objetivo es predecir un valor numérico, en lugar de una
categoría. Un ejemplo real podría ser encontrar el centro de la cara de una
persona en una fotografía (ya que la posición de este punto viene dada por
dos números).
En la práctica encontramos que muchas veces podemos transformar
problemas de una categoría a otra según convenga. Por ejemplo, en lugar
de predecir un número continuo entre 0 y 10, puede ser conveniente clasificar
nuestros datos en grupos (0–1, 1–2, etc.) y construir un clasificador.
Detección de objetos es un problema habitual que incluye
clasificación (determinación del tipo de objeto) así como
regresión (la posición del objeto). Fuente: Wikipedia.
Aprendizaje no supervisado
No siempre tenemos la suerte de tener datos clasificados por un humano, o
incluso donde exista una ground truth, es decir, una única respuesta válida
y objetiva a una pregunta. Pero no por ello carecemos de herramientas de
trabajo.
Este campo suele incluir técnicas orientadas a la exploración de nuestros datos
y la generación de nuevo conocimiento. Sin duda la aplicación más común es
clustering, o agrupación, que consiste en agrupar nuestros datos en familias
que compartan distintas características.
12
Los ejemplos más sencillos que suelen verse en guías e introducciones,
tienen una respuesta casi insultantemente evidente. Pero eso no debe
hacernos subestimar el gran valor de estos algoritmos, que muchas veces
son sencillamente imprescindibles para acercarnos siquiera a los dataset
más complejos—y más reales. Si los datos de nuestros clientes contienen
200 campos independientes, puede resultar imposible buscar criterios de
agrupación significativos, dejándonos llevar en la práctica por nuestras ideas
preconcebidas. Por ello, aplicar técnicas de agrupación a este tipo de datos
puede desvelarnos estructuras subyacentes inesperadas en nuestros datos, y
de ahí que se hable de generación de conocimiento y exploración.
Hdbscan es un potente algoritmo de clusterización. Fuente:
https://github.com/scikit-learn-contrib/hdbscan
13
Aprendizaje semi-supervisado y transferencia de
aprendizaje
Cualquier científico de datos se ha enfrentado múltiples veces a problemas
muy similares. Por ejemplo, un cliente puede necesitar clasificar documentos
según un análisis de sentimiento (positivo, negativo, neutro), mientras que
otro cliente necesita clasificación de artículos según temática deportiva, y un
tercero necesita clasificar documentos según su tipología (contratos, nóminas,
informes). Todos estos encargos son variaciones sobre un mismo tema: ¿tiene
sentido repetir todo el trabajo desde cero en cada situación?
Aunque esta pregunta tiene una aplastante lógica comercial, la necesidad
surgió antes en el mundo académico. Y la realidad es que no sólo se puede
ahorrar tiempo y dinero, sino que es posible conseguir mejores resultados
«reciclando» modelos. Y, puestos a reciclar… ¿podemos hacer uso de fuentes
de datos externas al problema?
Aprendizaje por transferencia, transferencia de aprendizaje o transfer learning
es uno de los avances más significativos en los últimos años en machine
learning. Tuvo su origen en las competiciones de computer vision, y la idea es
sencilla: imaginemos que nuestro problema es clasificar dos categorías de
imagen para las que nuestro dataset es pobre. El procedimiento será primero
entrenar un clasificador general utilizando otro dataset diferente, más amplio
y conocido. Partiendo de este modelo, adaptamos los parámetros al nuevo
problema, pero sin partir de cero. La intuición nos dice que muchos patrones
necesarios para clasificar cualquier tipo de imágenes serán comunes
(detección de líneas, círculos, gradientes de color).
Esta técnica supuso una revolución en computer vision, y sólo muy
recientemente—a partir de 2018—llegó al procesamiento de texto, como
comentaremos más adelante. En términos más tangibles, la transferencia
de aprendizaje pone en tus manos los modelos más avanzados del mercado,
antes sólo al acceso de gigantes tecnológicos.
Visualización de los patrones aprendidos por un modelo de clasificación de imagen. Las
imágenes más a la izquierda corresponden a capas más iniciales (los patrones crecen en
complejidad en capas más profundas). Estos patrones pueden ser útiles para clasificar
nuevas categorías de imágenes, justificando intuitivamente el aprendizaje por transferencia.
Fuente: https://distill.pub/2017/feature-visualization/ (lectura recomendada).
14
Aprendizaje por refuerzo
El aprendizaje por refuerzo o reinforcement learning es otro paradigma de
machine learning, y se centra en el desarrollo de modelos de toma de decisión
que deben ser capaces de maximizar una recompensa a lo largo del tiempo.
Generalmente estos sistemas comienzan conociendo poco de su entorno, con
el que se familiarizan mediante un proceso exhaustivo de «prueba y error».
El entrenamiento del modelo equilibrará la pura exploración—decisiones
inesperadas, potencialmente equivocadas que exponen al modelo a
situaciones desconocidas—y la optimización de las decisiones en base a las
experiencias conocidas.
El aprendizaje por refuerzo es particularmente útil en entornos ricos en
información de recompensa. Por ejemplo, el videojuego Pac-Man aumenta
la puntuación cada vez que se «come» un punto, teniendo además muy bien
definida la condición de derrota. En 2013, DeepMind presentó un excelente
trabajo 3 donde conseguían superar un gran conjunto de juegos de Atari
mediante técnicas de aprendizaje por refuerzo y deep learning.
Sin embargo, en entornos—tal vez más realistas—donde las recompensas están
más espaciadas en el tiempo, estos algoritmos tienen más problemas. Por
ejemplo, el juego Montezuma’s Revenge se convirtió en una bestia negra del
aprendizaje por refuerzo, e hicieron falta técnicas inspiradas en la curiosidad 4
para poder finalmente dominarlo.
Redes neuronales y aprendizaje profundo
Existe una gran variedad de familias de algoritmos, como las máquinas
de vectores de soporte, los árboles de decisión, modelos bayesianos y un
larguísimo etcétera. Entre todas ellas destacan las redes neuronales artificiales
y el aprendizaje profundo o deep learning, tan de actualidad y responsables
de muchos de los últimos avances.
En realidad, las redes neuronales artificiales son un concepto ya antiguo y
sorprendentemente accesible. Una red neuronal no es más que un elemento
de software que recibe una lista de valores numéricos sobre los que aplica
una sencilla función matemática (típicamente: copiar la suma de lo recibido
o devolver cero si el resultado es negativo) y pasa este resultado a otras
neuronas con las que se conecta. No es necesaria mayor sofisticación. Como
en todos los sistemas complejos, la riqueza surge de la interacción entre
múltiples elementos simples.
3
https://deepmind.com/research/publications/playing-atari-deep-reinforcement-
earning
4
https://eng.uber.com/go-explore/
15
Como hemos mencionado, estas redes son ya antiguas, pero hubo que esperar
hasta el algoritmo de back-propagation y las GPU para que su entrenamiento
fuera realmente eficiente.
Típicamente las redes neuronales se organizan en capas, y hablamos de
aprendizaje profundo cuando tenemos más de un par de dichas capas de
neuronas (un modelo actual puede llegar a cientos de capas).
El procedimiento de entrenamiento es tan simple como intuitivo: se parte de
un ejemplo conocido (es decir, dados unos valores numéricos de entrada
conocemos los valores numéricos de salida esperados) y se compara, dado
el modelo actual, los valores de salida reales con los esperados. A partir de
aquí se realizan pequeños ajustes en los parámetros del modelo para que los
valores reales y esperados sean un poco más similares. No vamos a entrar en
detalle—abajo tienes mejores fuentes para ello—pero basta decir que el único
misterio consiste en realizar estos ajustes de forma ordenada, desde el final
al principio (de ahí back-propagation) y aplicando derivadas (tarea de la que
afortunadamente se encarga el software en nuestro nombre).
16
Aprendiendo a
comunicarse:
procesamiento de lenguaje
natural
17
INTRODUCCIÓN AL MACHINE LEARNING
Aprendiendo a
comunicarse:
procesamiento del
lenguaje natural
«Lenguaje natural» hace referencia al lenguaje humano—en contraste, por
ejemplo, con el lenguaje informático que encontramos en programación.
El lenguaje está en el corazón del pensamiento mismo, por lo que no sorprende
que ya filósofos como Descartes o Wittgenstein se dedicaran a reflexionar
sobre el lenguaje y la relación entre idiomas.
Con la llegada de la computadora, surgió un interés inmediato en crear
modelos que permitieran la comunicación entre ordenadores y humanos. Así,
por ejemplo, Chomsky realizó trabajos sobre gramáticas que tuvieron gran
influencia en el campo.
Pero el campo sufrió el mismo exceso de entusiasmo que tanto daño hizo
en machine learning. Por ejemplo, en 1954 investigadores de la universidad
de Georgetown predijeron que la traducción automática sería un problema
resuelto ¡en cuestión de tres años! Esto se tradujo en una crisis de expectativas
y un freno drástico en la inversión.
Durante décadas el campo estuvo dominado por complejos modelos
«expertos» basados en reglas y gramáticas o, al contrario, por sencillos
modelos estadísticos. Tal vez el mejor ejemplo de esto último sea la familia
de algoritmos bag of words. La idea clave de estos algoritmos es describir
un texto como la colección (desordenada) de las palabras que lo componen,
típicamente eliminando las palabras más y menos comunes.
Por supuesto, esta forma de traducir un texto a lenguaje matemático es
muy simplista, por lo que el potencial de la técnica es limitado. No obstante,
incluso a día de hoy siguen siendo algoritmos capaces de ofrecer resultados
interesantes en muchas circunstancias.
18
Lógicamente hubo intentos de aplicar al mundo del lenguaje las novedosas
técnicas de redes neuronales artificiales y deep learning ya a finales del siglo
XX. Pero todas estas técnicas estaban limitadas por un problema fundamental:
¿cómo debe traducirse un texto a lenguaje máquina?
Vectores de palabra
Traducir una fotografía a lenguaje informático es sencillo. Basta con dividir la
imagen en pequeñas regiones (píxeles) y traducir la intensidad lumínica (en
cada canal de color) por un número. Hacer algo similar con el lenguaje no es
tan sencillo. En primer lugar, ¿cuál es el píxel del lenguaje? ¿Es cada palabra
esa unidad fundamental? ¿O hay que describir el texto letra por letra? Ambas
opciones son, en realidad, viables, así como aproximaciones intermedias más
habituales en los últimos algoritmos.
La idea más sencilla es codificar el texto utilizando un vocabulario. Contamos
las palabras por decenas de miles, y las letras por decenas. Para visualizar esto,
pensemos en el ADN, que se puede describir como un texto escrito por cuatro
letras (A, C, G, T) que forman palabras (grupos de tres letras). «Vectorizar» estas
letras es, por tanto, sencillo. Por ejemplo, en vez de A, podemos escribir (1, 0, 0,
0), en vez de C (0, 1, 0, 0), en vez de G (0, 0, 1, 0) y en vez de T (0, 0, 0, 1).
Podríamos hacer lo mismo, pero en este caso traduciendo «palabras»
genéticas, que simbolizan aminoácidos (que forman las proteínas). Ya que
existen 20 aminoácidos fundamentales, podríamos utilizar un vocabulario de
longitud 21 (con un espacio extra para palabras especiales). Así, si nuestro
primer aminoácido es alanina, y se escribe GCA, podríamos traducir esa
secuencia como (1, 0, 0, …, 0).
Y esta idea se puede ampliar hasta vocabularios de decenas de miles de
palabras. Las limitaciones de la idea son evidentes. Por un lado, manejar
vectores de cuatro elementos es razonable. Trabajar con vectores de 60.000
elementos, un poco menos.
Además, supongamos que nuestro vocabulario lo componen las palabras
{pera, manzana, balón, barco}. La distancia matemática entre «pera» (1, 0, 0, 0)
y «manzana» (0, 1, 0, 0) es la misma que entre «pera» y «barco» (0, 0, 0, 1), ya que
estos vectores son iguales en dos posiciones y se diferencian en una unidad
en otras dos. No importa el orden.
La idea revolucionaria (cuyo germen, una vez más, se encuentra a mediados de
siglo XX), consiste en utilizar vectores «densos» para describir una palabra. Así,
cada posición de un vector ya no se corresponde a un índice de diccionario.
Podemos pensar que cada posición nos describe una cualidad de la palabra.
Por ejemplo, la primera posición podría ser la relación de la palabra con los
19
alimentos, la segunda su «redondez» y la tercera su relación con medios de
transporte.
Así, «manzana» podría ser (0.9, 0.7, 0.1). Esto permite que, de forma simultánea,
«manzana» sea similar a «pera» (0.9, 0.5, 0.0), aunque también un poco similar
a «balón» (0.2, 0.9, 0.2) y muy diferente a «barco» (0.0, 0.2, 0.8).
De forma crucial, los vectores de palabra (llamados también word embeddings)
nos abren la puerta a reutilizar conocimiento, ya que los vectores que son
útiles para vectorizar mis textos pueden ser útiles a otras personas, incluso
trabajando sobre distintos corpus documentales. Los word embeddings son
uno de los avances fundamentales en la historia del procesamiento de lenguaje
natural, y el germen del aprendizaje por transferencia en este campo 5 6.
Aprendizaje por transferencia en NLP
Como vimos en la historia del machine learning, aprendizaje por transferencia
es un avance clave mediante el que se consigue extrapolar conocimiento
entre distintos dataset, lo cual hace posible trabajar con grandes modelos y
pocos recursos.
El aprendizaje por transferencia nació en el contexto del análisis de imagen,
donde resulta casi natural tratar de reutilizar un clasificador de imagen en otro
contexto. Pero no siempre resulta fácil identificar una tarea subsidiaria (un
clasificador de imagen genérico) de la cual partir para la tarea objetivo. Esto
demostró ser particularmente complicado en el campo del lenguaje natural.
La primera aproximación al concepto de transferencia lo encontramos en los
word embeddings, ya que, como se explica en el apartado previo, se trata de
un trabajo reutilizable en distintos problemas. De hecho, los word embeddings
fueron uno de los avances clave en NLP.
En 2018 se produjo un avance fundamental 7, que consiguió aplicar los conceptos
de transferencia de aprendizaje completa—aplicada a la arquitectura neuronal
completa—al campo de NLP. Este trabajo propone entrenar, en primer lugar, un
modelo de lenguaje, a partir del cual se completa el modelo de clasificación
de texto (o el modelo apropiado para la tarea de texto correspondiente). Un
5
https://www.tensorflow.org/tutorials/text/word_embeddings
6
https://ruder.io/word-embeddings-1/
7
https://nlp.fast.ai/classification/2018/05/15/introducing-ulmfit.html
20
modelo de lenguaje no es más que un modelo capaz de predecir la palabra
correspondiente en un contexto dado. Por ejemplo, esto es lo que utilizan
nuestros teléfonos móviles para ayudarnos a predecir la siguiente palabra en
un mensaje.
Los avances que ocurrieron a continuación fueron espectaculares, pudiéndose
hablar de un nuevo estadio de madurez en procesamiento de lenguaje natural,
que sentó las bases para las arquitecturas de vanguardia que veremos a
continuación.
Bert, transformers y el futuro multilingüe
Como hemos visto, con seguir aplicar aprendizaje por transferencia a NLP
de forma eficaz fue un salto cualitativo en el campo. Tan solo unos meses
más tarde Google presentó Bert, 8 su propia estrategia de aprendizaje por
transferencia, aplicando las novedosas y mastodónticas arquitecturas
basadas en transformers.
¿Qué significa esto en la práctica? Las nuevas arquitecturas suponen un
salto respecto a modelos basados en análisis estadístico y gramáticas. Por
primera vez somos capaces de acercarnos al contexto lingüístico. Tal es la
importancia de este avance, que Google lanzó una importante actualización
de su algoritmo de búsqueda basado en esta tecnología, ¡apenas unos meses
después de desarrollarla! Explican que, por fin, esto les permite distinguir entre
búsquedas como:
Cómo conseguir visado de Brasil a EEUU
Cómo conseguir visado de EEUU a Brasil
El aprendizaje por transferencia tiene un efecto democratizador esencial. El
entrenamiento completo de una arquitectura de última generación puede
costar entre cientos de miles y millones de euros. Obviamente esto no es
sostenible, ni para grandes empresas ni mucho menos para pequeñas
empresas y particulares. Pero el aprendizaje por transferencia nos permitirá
reutilizar redes entrenadas por terceros, siendo tan solo necesario refinarlas
para nuestro caso particular.
8
https://arxiv.org/abs/1810.04805
21
Como vemos, el campo de procesamiento de lenguaje natural está muy
vivo. Desde la revolución de 2018 los avances se están produciendo de
manera vertiginosa. Mientras unos exploran los límites de los modelos más
descomunales (GPT-3), otros prefieren llevar al siguiente nivel modelos
minimalistas (QRNN, distillation), sin olvidarnos de los trabajos fundamentales
hacia modelos multilingües, que permitan explotar los avances académicos a
las distintas lenguas del mundo.
En FoqumRead seguimos de cerca este excitante y abrumador panorama de
avances tecnológicos para poner a tu disposición los últimos avances con las
máximas garantías de eficacia, simplicidad y seguridad.
22
Del concepto
al mercado:
el pipeline de trabajo en una
viñeta
23
INTRODUCCIÓN AL MACHINE LEARNING
Del concepto al
mercado: el pipeline
de trabajo en una
viñeta
El desarrollo típico de software tecnológico suele involucrar el diseño de
complejos diagramas lógicos que se traducen más tarde en código basado
en condiciones y eventos controlados por el programador.
Pero si recordamos nuestra definición de machine learning, vamos a tratar con
algoritmos con instrucciones incompletas, que deben ser capaces de extraer
patrones de los datos de forma autónoma. Por tanto, el pipeline de trabajo es
muy diferente.
En esta pequeña sección veremos un brevísimo resumen de este proceso,
que nos lleva desde la concepción del problema al desarrollo de una interfaz
para el usuario. También veremos cómo FoqumRead abstrae la mayor parte
de este proceso para hacerlo asequible para todo el mundo en tan sólo unos
clicks, de forma que el usuario final se ocupe tan sólo de las tareas en las que
es el verdadero experto.
Un proyecto de machine learning comienza con la definición del problema, la
identificación de los objetivos, etc. En este paso la experiencia tiene un mayor
peso, y ayudará a pre-seleccionar algoritmos y arquitecturas apropiados a
cada caso.
Una vez definido un marco de trabajo se debe proceder a la recolección de
datos. Este es un punto de una importancia mayúscula, y muchas veces es
el gran olvidado y responsable de resultados insatisfactorios. La recolección
de datos debe estar guiada por las características del problema, que
determinarán el formato de los datos, la cantidad necesaria estimada, etc.
¡No olvides que en muchas circunstancias puedes complementar tus datos
con dataset externos!
24
La recolección de datos viene seguida de su preprocesado y limpieza. Estas
tareas también pueden tener un gran impacto en los resultados, e incluyen la
identificación de datos problemáticos, la estandarización de distintas fuentes
de datos, la adaptación del formato, etc. Por ejemplo, podemos pensar en
un problema de imagen, donde nuestras fuentes pueden ofrecer distintos
formatos (.png, .jpg, .tiff, .pdf, etc.), distintas resoluciones, distintos aspectos
(cuadradas, horizontales, panorámicas…) y donde las imágenes pueden incluir
imágenes no aptas por derechos, marcas de agua, errores de descarga, etc.
La limpieza y homogenización de datos es importante. En este
caso, sólo queremos cuadrados, pero todos con un mismo
tamaño y tipo de borde.
Antes de continuar, es importante analizar los datos disponibles. ¿Tenemos
una representación suficiente de todas las categorías de interés? ¿Hay
sesgos importantes? Hablaremos de esto más adelante pero, por ejemplo, si
vamos a trabajar con personas, es importante pensar si tenemos una buena
representación de géneros y razas, o podremos encontrarnos problemas no
intencionados más adelante.
Tradicionalmente se dividen los datos en tres conjuntos: entrenamiento,
validación y test. Los datos de entrenamiento sirven para ajustar los parámetros
del modelo. Los datos de validación nos permiten hacer un seguimiento del
entrenamiento para poder optimizar los parámetros del propio proceso de
entrenamiento. Por ejemplo, en deep learning hay que definir parámetros
como batch size, learning rate, dropout, etc.
25
El conjunto de test se reserva para una evaluación final del modelo sobre datos
nunca vistos, ni directamente durante el entrenamiento, ni indirectamente
durante el testeo con el conjunto de validación. Por tanto, esta evaluación nos
dará una idea más real y menos sesgada del rendimiento de nuestro modelo.
En muchos casos (pensemos en clasificación de documentos con categorías
múltiples) no es trivial crear unos buenos conjuntos con nuestros datos, de
forma que todos tengan una representación equilibrada de todos los casos.
FoqumRead cuenta con algoritmos propios para automatizar también este
paso.
Con los conjuntos de datos listos se procede a entrenar, proceso que
depende del tipo de algoritmo seleccionado. Este proceso suele tener varios
parámetros de ajuste. Por ejemplo, en entrenamiento iterativo (como deep
learning) podemos determinar la duración del entrenamiento. Este proceso se
optimiza con el fin de limitar el famoso overfitting. Overfitting, o «sobreajuste»
ocurre cuando nuestro modelo comienza a identificar patrones anecdóticos
exclusivos de los datos de entrenamiento, que sin embargo suponen un
obstáculo para generalizar los resultados a ejemplos nuevos. Por ejemplo,
nuestro modelo de clasificación de animales puede descubrir un complejo
patrón de reglas utilizando los colores del fondo de la imagen que le permite
identificar perfectamente los ejemplos de gatos en los datos de entrenamiento.
Esto no sólo es inútil, sino que será contraproducente en el futuro.
No debe olvidarse la importancia de revisar (visualmente a ser
posible) los resultados de nuestro modelo en cada momento,
con énfasis en los errores (de clasificación, etc.).
26
Una vez creado y testado nuestro modelo, aún nos falta el paso más relevante,
que es llevarlo a producción. El modelo pasará a funcionar en modo de
inferencia, que consiste en predecir información (categorías, por ejemplo)
dada nueva información. El paso a producción puede ser complejo, y es casi
un proyecto en sí mismo. Incluye la definición del problema (¿cómo queremos
que el cliente se relacione con nuestro algoritmo?) y objetivos, diseño de una
arquitectura informática apropiada, etc. Normalmente un equipo diferente se
encarga de esta parte.
Todo esto es muy complejo, y hacen falta distintos expertos para poder
llevarlo a cabo. ¿Cómo puede ayudarte FoqumRead a hacerlo por ti mismo?
Imaginemos que necesitamos clasificar documentos según su temática.
En primer lugar, FoqumRead nos pedirá seleccionar las temáticas objetivo.
Después, tendremos que subir un conjunto de datos de entrenamiento
(sin preocuparnos de dividirlo en subconjuntos). Si no contamos con datos
previamente clasificados, FoqumRead cuenta con un asistente de etiquetado
para facilitar este proceso. Una vez concluido este paso, FoqumRead se
encarga de todo. Determinará la arquitectura neuronal adecuada, establecerá
los hiperparámetros de entrenamiento por nosotros y creará la arquitectura
de producción necesaria.
Por tanto, el cliente sólo debe ocuparse de pensar el problema que quiere
solucionar, así como reunir sus datos y definir fuentes de datos externas de
interés (por ejemplo, si el modelo se aplicará sobre un feed de Twitter).
Es decir, tú te encargas de lo que es importante para ti,
de nada más.
27
Aplicaciones
y ejemplos
28
INTRODUCCIÓN AL MACHINE LEARNING
Aplicaciones
y ejemplos
Es una realidad ya irreversible que el machine learning ha llegado para
quedarse y, en muchos casos, adaptarse a estas tecnologías es una obligación
que determina el futuro de las empresas.
No, los nuevos algoritmos no van a hacer prescindibles a los humanos. Somos
más necesarios que nunca. Al tiempo que se automatizan tareas surgen nuevas
necesidades y oportunidades. Muchas de las aplicaciones más interesantes
de la inteligencia artificial están orientadas a asistirnos en nuestro trabajo, no
a reemplazarlo.
Sin embargo, los algoritmos serán sin duda una herramienta fundamental para
optimizar los recursos humanos, que actualmente se desperdician en tareas
de alto coste y bajo valor como la clasificación de documentos o la extracción
de información. Pensemos en un grupo de trabajadores ante la tarea de crear
un resumen ejecutivo de 10.000 documentos, donde deban anotar el nombre de
los participantes en el documento en cuestión, además de la fecha, tipología
del documento. Una tarea cara y vacía. Gracias al machine learning podemos
dedicar una fracción de los trabajadores a supervisar el proceso automático,
aprovechando el resto para labores más creativas y que aporten mayor valor
a la compañía y a sus clientes.
Estos algoritmos también nos pueden ayudar a poner datos infrautilizados en
valor. Así, la digitalización y procesado inteligente de bases de datos históricas
es una oportunidad común.
El rango de aplicaciones del machine learning puede resultar sorprendente
y abrumador, y es esencial para entender las empresas más exitosas de la
actualidad. Por ejemplo, la visión por computador es esencial en los algoritmos
de conducción asistida de Tesla, pero también es clave en cadenas de
alimentación (para distinguir, por ejemplo, productos maduros o dañados). La
clasificación de imágenes se ha aplicado a campos tan dispares y exigentes
como la astrofísica o la medicina.
Los procesos industriales modernos hacen un uso intensivo de machine learning.
Desde la optimización de rutas y recursos a la monitorización inteligente de
maquinaria de precisión para realizar mantenimiento predictivo—minimizando
costes de reparación y la inactividad en fábrica.
29
Amazon sería irreconocible sin su servicio de sugerencia de productos de
interés, ubicuo en la venta online. Sistemas similares determinan nuestro
ocio, por ejemplo, a través de la pre-selección de contenido en Netflix y otros
servicios de streaming.
La detección de fraude es una necesidad casi universal en el mundo digital, y
una prioridad de primer orden para la banca online e intermediarios de venta.
También es universal el deseo de adelantarse a los clientes insatisfechos que
acaban abandonando un servicio (churn prediction).
Y todo esto sin hablar de los servicios de búsqueda online, mapas y sistemas
de guiado, traductores, asistentes de voz, etc. Nos hayamos dado cuenta o no,
vivimos en un mundo tecnológico dominado por algoritmos.
Veamos ahora algunos casos de uso típicos en el contexto del procesamiento
de lenguaje natural.
Clasificación de texto: análisis de sentimiento,
temática y spam bots
La clasificación de texto es, sin duda, una de las necesidades más habituales
de los clientes empresariales en machine learning. Sin embargo, no siempre
resulta intuitivo darnos cuenta de qué necesidades encajan en esta categoría.
Un caso común es el análisis de sentimiento y su impacto en la imagen de
marca. Análisis de sentimiento no es más que asignar un sentimiento (positivo,
negativo y neutro típicamente) a un texto. Por ejemplo, podemos clasificar
una serie de tuits en los que se menciona una marca, clasificándolos según
estas categorías. Esto puede ser el fundamento de un interesante sistema
de monitorización de mercado, donde se identifiquen tendencias y donde se
pueda evaluar el impacto de operaciones de marketing e imagen.
La clasificación temática es tan común como variada. Podemos necesitar
clasificar artículos periodísticos según sección, o tal vez necesitemos clasificar
documentos hospitalarios según distingas categorías clínicas.
Finalmente, los clasificadores de texto pueden ser una herramienta
fundamental para apoyarnos en la escalabilidad de nuestros servicios. Por
ejemplo, es ya sabido que cualquier comunidad online (ya a través de chats,
comentarios, críticas, etc.) va a generar una ingente cantidad de contenido no
deseado. Nos enfrentamos a bots de publicidad, así como a trolls que generan
increíbles cantidades de contenido tóxico que asfixian a los elementos
honestos de la comunidad. Por si esto fuera poco, nos podemos enfrentar
incluso a responsabilidades legales si no disponemos de las herramientas
30
de moderación adecuadas. Un clasificador de texto puede ser una excelente
herramienta de primer nivel ante un reto semejante, generando alertas para
revisión especializada y tomando medidas preventivas ante los casos más
negativos.
Entidades nombradas: palabras clave
Otra de las tareas clásicas en procesamiento de texto es la identificación
de entidades. Por ejemplo, podemos estar interesados en localizar todas
las fechas de un documento, así como todos los nombres de empresas o
cantidades numéricas.
Esta idea se puede generalizar a nuevos conceptos. Por ejemplo, en el mundo
médico podemos crear un algoritmo que identifique todas las menciones a
patologías en un documento.
Similitud documental
Cualquier persona con un corpus documental amplio se ha visto en la necesidad
de encontrar documentos relacionados con una secuencia de términos, con
un párrafo o con otro documento. Esto se conoce como similitud documental
y es una necesidad absoluta en campos como el derecho, donde la búsqueda
de sentencias relevantes es una tarea constante y crítica.
Reconocimiento óptico de caracteres
Muchos casos de uso reales parten de una necesidad común: la digitalización
de documentos físicos. Esto es lo que se conoce como reconocimiento óptico
de caracteres, u OCR, por sus siglas en inglés.
La digitalización de documentos es una medida esencial para traducir un
coste (almacenamiento de documentos de baja accesibilidad) en un valor.
Resumización y mucho más
La lista completa continúa, encontrando respuesta para todas las necesidades.
Por ejemplo, tenemos casos de uso más descriptivos, como la identificación de
conceptos clave (otro complemento idóneo para nuestro hipotético sistema
de monitorización de mercado). También tenemos usos más en el límite
de la tecnología, como pueden ser la resumización de texto, la generación
automática de contenido, el parafraseo de texto, etc. Sin duda, un campo
apasionante en continuo crecimiento.
31
Ética y
responsabilidad
32
INTRODUCCIÓN AL MACHINE LEARNING
Ética y responsabilidad
Ninguna guía actual sobre machine learning puede estar completa sin unas palabras
sobre ética y responsabilidad.
Como hemos visto, los algoritmos definen el mundo moderno, para bien o para mal, y
de forma ya irreversible. Como toda tecnología, su impacto puede ser tanto positivo
como negativo, por tanto, es nuestra responsabilidad ser conscientes de los riesgos y
abusos del machine learning.
Ésta es una conversación importante, que suele desviarse hacia cuestiones
sensacionalistas, como la futura revolución de las máquinas (sobre la que han
comentado personas de la talla de Stephen Hawkins9) o el dichoso trolley (ya sabes,
ese famoso coche que puede elegir entre matar un perro superdotado o girar o
acabar con la vida de una viejecita de 102 años).
En realidad, deberíamos estar hablando de cuestiones como privacidad10,
representación y transparencia. Por ejemplo, son notables los abusos que se han
producido con tecnologías de reconocimiento facial. Desde su abuso por la policía
en EEUU (donde, por ejemplo, utilizaron imágenes de famosos como sustituto a
descripciones de sospechosos11) a represión racial en China12.
También debemos estar alerta frente al oportunismo y las pseudociencias. Aquí se
pueden enmarcar muchas iniciativas más o menos bienintencionadas para atajar
la pandemia de Covid-19, o algoritmos de que prometen resolver la selección de
personal mediante el análisis de breves fragmentos de vídeo13. No hace falta decir que
esta es una promesa imposible y que acaba discriminando a los grupos habituales.
Un aspecto que el usuario de algoritmos debe tener en cuenta es el hecho de que
los algoritmos reproducen los sesgos de los datos que le ofrezcamos. Que nuestro
algoritmo no tenga sesgos, y que nosotros tampoco los tengamos no sirve de nada
si los sesgos se infiltran en nuestros datos, algo más difícil de evitar de lo que parece.
Un ejemplo ya famoso es el servicio de reconocimiento de imagen de Amazon, con
métricas formidables para hombres blancos… y desastrosas cuando se aplica a
mujeres negras14. Sin duda, un reflejo de un dataset de entrenamiento mal construido—
como vemos, un resultado racista no implica necesariamente una motivación racista,
por lo que todos debemos estar en guardia ante este problema.
9
https://www.bbc.com/news/technology-30290540
10
https://bit.ly/32syob6
11
https://www.nbcnews.com/news/us-news/nypd-used-celebrity-doppelg-ngers-fudge-
facial-recognition-results-researchers-n1006411
12
https://bit.ly/32yRRqD
13
https://wapo.st/2Q7a9fR
14
https://www.bbc.com/news/technology-47117299
33
Para aprender
más:
libros, cursos y plataformas
34
INTRODUCCIÓN AL MACHINE LEARNING
Para aprender más:
libros, cursos y
plataformas
Convertirse en un verdadero experto de machine learning es algo que está al
alcance de todo el mundo… siempre que tengas bastante tiempo disponible,
altas dosis de pasión por el tema y cierta soltura con los ordenadores. Por
supuesto, no todo el mundo encaja en ese perfil, ni es necesario que todas las
personas interesadas en saber más sean completos expertos. Herramientas
como FoqumRead pretenden poner el potencial del machine learning al
alcance de todos.
A continuación compartimos una pequeña lista de recursos interesantes para
trabajar con machine learning, desde manuales a cursos online.
Python
Python es el lenguaje de programación por excelencia en data science. Se
caracteriza por ser un lenguaje flexible e intuitivo, que combina la facilidad de
lenguajes de más alto nivel con la eficiencia de sus librerías que implementan
operaciones críticas en lenguajes de más bajo nivel.
Recursos para aprender Python hay muchos, desde Coursera 15 a Kaggle (ver
Kaggle más adelante).
Pandas
Numpy es una de las librerías de Python más extendidas para operaciones
numéricas, y constituye a su vez la base de Pandas, la librería más utilizada
para trabajar con datos estructurados—tablas de datos con columnas
nombradas, etc.
15
https://www.coursera.org/learn/python?specialization=python
35
Existen muchos recursos para aprender Pandas, como pueden ser el curso que
ofrecen Kaggle 16 o Codecademy 17.
Scikit-Learn
Scikit-Learn 18 (a veces sklearn) es una librería de Python para trabajo con
distintos algoritmos de machine learning. Su uso está muy extendido, y su
interfaz hace que el uso de distintas variantes algorítmicas sea muy consistente.
PyTorch
Tensorflow y PyTorch son los dos marcos de trabajo fundamentales en el
área de deep learning. Ambos incluyen funcionalidades esenciales para
el aprendizaje profundo, como son el cálculo de gradientes, su integración
con optimizadores, etc. PyTorch es una propuesta más cercana al lenguaje
Python, y se caracteriza por una gran flexibilidad, permitiendo el desarrollo de
algoritmos y arquitecturas personalizados con relativa facilidad. Sin embargo,
las últimas actualizaciones hacen de ambos opciones válidas y muy atractivas.
Su página oficial cuenta con diversos tutoriales 19.
Fastai
Fastai 20 incluye los últimos avances académicos en una plataforma
de desarrollo centrada en la facilidad de uso y que, desde sus últimas
actualizaciones, también facilita las modificaciones del algoritmo a cualquier
nivel de profundidad.
El equipo de Fastai ha realizado también importantes contribuciones al campo,
siendo la más significativa su labor pionera en la implantación del aprendizaje
por transferencia en NLP. [cita]
Además, Fastai cuenta con un popular curso de introducción a deep learning
(utilizando PyTorch), revisado al completo anualmente (en 2020 se ha publicado
su cuarta versión). Su perspectiva única fomenta que el estudiante sea capaz
de producir algoritmos de alto nivel desde la primera clase.
16
https://www.kaggle.com/learn/pandas
17
https://www.codecademy.com/learn/data-processing-pandas
18
https://scikit-learn.org/stable/tutorial/index.html
19
https://pytorch.org/tutorials/
20
https://www.fast.ai/
36
Kaggle
Kaggle es un recurso muy valioso para enfrentarse a problemas reales de
machine learning. En esencia, se trata de un foro donde se pueden publicar
competiciones. Los interesantes premios en metálico han hecho que sea un
entorno altamente activo y competitivo, pero al mismo tiempo es un recurso
esencial para principiantes, ya que los datos de las competiciones pasadas
siguen disponibles, al igual que las listas de las puntuaciones conseguidas por
los distintos participantes, e incluso pistas sobre los algoritmos que utilizaron.
Por si esto fuera poco, Kaggle cuenta con un amplio conjunto de cursos 21, que
incluyen Python, machine learning (dos niveles), Pandas, SQL (dos niveles) y
bastante más.
Andrew NG
Andrew NG tiene uno de esos currículums que dan vértigo. Profesor adjunto en
Stanford, ha sido cofundador de Coursera y Google Brain, entre otros logros
impresionantes. Sus cursos en Coursera 22 son muy populares, y cuenta con
varias opciones adecuadas para diferentes perfiles.
21
https://www.kaggle.com/learn/overview
22
https://www.coursera.org/instructor/andrewng
37
Empieza a usar Foqum Read
El mejor software
de Machine Learning
Sin Programación, ni Conocimientos Técnicos
Regístrate gratis
39