Desentrañando las redes neuronales para la inteligencia artificial
Los ordenadores toman montones de decisiones que nos ayudan en nuestra vida. Desde las recomendaciones de programas de televisión hasta las indicaciones de una aplicación de navegación, la mayoría de los aspectos de nuestra vida moderna están influidos por los cálculos de las máquinas. El Machine learning (aprendizaje automático en español) es una poderosa herramienta para tomar datos del mundo real y luego reconocer patrones, hacer predicciones y sacar conclusiones.
El aprendizaje requiere un cerebro, y el equivalente informático se llama red neuronal. Pero, ¿cómo funcionan los "cerebros" de los ordenadores? Y si estas máquinas pueden "aprender", ¿quién se encarga de enseñarles?
La Dra. Yasaman Bahri es investigadora científica en Google Brain, donde ha trabajado duro para entender los procesos de entrenamiento de las redes neuronales. Se puede considerar a la Dra. Bahri como la entrenadora personal de las máquinas: su trabajo consiste en entender cómo funciona el aprendizaje de las máquinas y descubrir formas de entrenarlas de forma más eficiente.
Índice:
¿Qué es Machine Learning?
¿Por qué se llama red neuronal?
Encontrando funciones
Distribuciones gaussianas: la vida en la curva de Bell
Redes neuronales al rescate
El poder y el rompecabezas del Deep Learning
¿Qué es Machine Learning?
Para entender cómo aprenden las máquinas, podemos empezar pensando en cómo aprenden los humanos. Cuando todos aprendimos a escribir números en la guardería, probablemente empezamos imitando la letra de los adultos. Con el tiempo, aprendimos a reconocer cada dígito, incluso si los dígitos escritos a mano parecían ligeramente diferentes cada vez. Al igual que los humanos aprenden a escribir, podemos pedir a los ordenadores que escriban o reconozcan los dígitos escritos a mano. Para el ordenador, un dígito es una imagen, que se parece a una cuadrícula bidimensional llena de píxeles que se unen para representar un único número. Todos estos píxeles individuales tienen sus propios valores, por lo que la imagen de un "7" o un "3" se compone realmente de un montón de números, organizados en una cuadrícula. El objetivo del ordenador es tomar esa cuadrícula de píxeles y aprender a reconocer los dígitos escritos a mano que contienen las imágenes. Si el ordenador puede lograr este objetivo sin instrucciones "paso a paso", entonces lo llamamos machine learning.
¿Por qué se le llama red neuronal?
A medida que los humanos aprendemos, la estructura física de nuestro cerebro cambia. Nuestros cerebros están llenos de células nerviosas, o neuronas, que pueden difundir información a otras neuronas formando nuevas conexiones, o axones. El aprendizaje también puede fortalecer las conexiones existentes entre estas neuronas, reforzando los caminos que ya existen.
Inspirada en el cerebro orgánico, una de las formas en que las máquinas pueden aprender es también con una colección de "neuronas" artificiales, llamada red neuronal. Una red neuronal es un conjunto de nodos que almacenan información. Puede difundir esa información reforzando o debilitando sus conexiones con los nodos vecinos. Esos nodos actúan como neuronas artificiales, que se unen para formar una red neuronal compleja.
Entremos en los detalles de cómo funciona una red neuronal. Nuestro objetivo es enseñar a una máquina a reconocer dígitos escritos a mano. Para ello es necesario introducir una imagen de los dígitos en el ordenador. El ordenador genera una predicción – un dígito (0-9) que el ordenador cree que está escrito en la imagen de entrada. Esto significa que podemos decir que la red neuronal es una función que toma imágenes como entradas y genera dígitos como salidas.
Encontrando funciones
Así que podemos considerar que una red neuronal es una función. Pero, ¿cómo debería ser esa función para hacer algo tan complicado como tomar una cuadrícula de píxeles y devolver un único número exacto? Para averiguarlo, solemos dejar que la red neuronal aprenda la función a partir de los propios datos: ¡por eso el proceso se llama "machine learning" (aprendizaje automático)!
Este proceso de aprendizaje de una función a partir de los datos y su utilización para hacer predicciones es muy importante para casi todas las disciplinas científicas. Por eso, conseguir que los ordenadores aprendan funciones por nosotros puede cambiar poderosamente la forma en que los científicos llevan a cabo sus investigaciones. Las funciones son tan poderosas porque si podemos encontrar un patrón fuerte en el pasado (entrada), probablemente podamos hacer una predicción fiable sobre el futuro (salida).
El proceso de ajuste de datos no es algo exclusivo del aprendizaje automático. Hay montones de veces en las que se mira una colección de puntos y se quiere averiguar la línea o forma aproximada que se ajusta a esos datos. Lo primero que intentan muchos científicos cuando quieren aprender una función a partir de los datos es la regresión lineal. Básicamente, esto significa que nuestra primera suposición de un patrón es que todos nuestros datos se ajustan a una línea.
Imagina que has plantado algunas tomateras en tu jardín a principios de verano. Has medido su altura cada semana durante todo el verano y luego has representado su altura en función del tiempo transcurrido desde la plantación. Estos datos están representados por los puntos azules del gráfico siguiente. Vamos a suponer que estos datos se ajustan a una recta, lo que significa que las tomateras crecieron a un ritmo constante durante todo el verano. La ecuación de una recta tiene la forma
y = w₀ + w₁x ,
donde y son los datos de salida y x son los de entrada. Puede que hayas visto antes la ecuación de una recta escrita de forma un poco diferente (puede que la conozcas como y = b+mx o y = b+ax ), pero recuerda que w₀ y w₁ son sólo constantes que describen la pendiente y la intersección con el origen de nuestra recta. Tratar de encontrar la recta que mejor se ajuste a nuestros puntos de datos se reduce a encontrar los mejores valores para w₀ y w₁.
Por suerte, nuestros datos se parecen a una línea, así que podemos encontrar estos valores con bastante facilidad. Para ello, definimos un error. Definiremos este error como la distancia entre nuestra predicción y el valor real, pero lo elevaremos al cuadrado para que el valor sea siempre positivo. Esto da una ecuación para el error como
(y_real - y_pred) ²
donde y_real es el dato de salida real (medido en un experimento), e y_pred es la salida predicha (a partir de la inserción de la entrada real x en w₀ + w₁x , usando nuestra suposición para w₀ y w₁).
Si predijéramos correctamente todos los valores de y, el error sería exactamente 0. Pero será imposible predecir exactamente todos los valores de forma correcta, ya que todas las tomateras tienen alturas ligeramente diferentes a lo largo del verano. En cambio, podemos encontrar los mejores valores para w₀ y w₁ minimizando el error global.
La regresión lineal funciona muy bien si los datos subyacentes son realmente lineales. Por desgracia, a menudo no es así – la naturaleza es maravillosamente desordenada y complicada. Como ejemplo de datos no lineales, supongamos que tienes una pizzería. Quieres asegurarte de que hay suficientes pizzeros programados para las horas de mayor afluencia, pero no necesitas tantos pizzeros para las partes lentas del día. Basándote en las ventas de las semanas anteriores, te gustaría encontrar el patrón de las horas más ocupadas de cada día. Los datos se parecen al conjunto de datos siguiente.
Nuestras ventas de pizza tienen dos picos en momentos diferentes, que representan el momento en que los clientes quieren más pizza. Podemos suponer con bastante seguridad que el primer pico del día es la hora del almuerzo, y el segundo pico es la hora de la cena. Esto tiene sentido: los seres humanos suelen comer pizza en torno a las horas de las comidas, con algunas variaciones en las que algunas personas quieren comer un poco antes y otras quieren comer un poco después. Pero, ¿hay alguna forma más matemática de describir los datos?
Podríamos suponer que cada pico está generado por una distribución gaussiana, que tiene la forma
y_pred = exp( -(x - a) ²/ b )
donde exp significa la función exponencial y a y b son constantes que cambian la forma del pico. Es bastante fácil describir dos picos uno al lado del otro: ¡sólo es la suma de dos gaussianas! Resulta que las distribuciones gaussianas describen muchos fenómenos naturales, así que es una buena suposición. En este caso, resulta que describe bastante bien nuestros datos de venta de pizzas. Pero si hubiéramos adivinado una función diferente, como nuestra línea recta de antes, nuestras predicciones no habrían coincidido en absoluto con los datos.
Distribuciones gaussianas: La vida en la curva de Bell
La distribución de Gauss también se conoce como "distribución normal" o "curva de campana" porque su forma se parece un poco a la de una campana. Esta forma aparece en las estadísticas de muchos fenómenos naturales. Por ejemplo, una muestra aleatoria de la altura de las personas empieza a adoptar la forma de una curva de campana a medida que aumenta el número de muestras. Otro ejemplo es el juego de feria en el que se lanzan pelotas a través de una pared de clavijas (llamada quincunx o tablero de Galton). La pelota rebota a través de las clavijas y aterriza en un recipiente situado debajo. Si se dejan caer suficientes bolas, su distribución en los recipientes se parecerá a una curva de campana. La distribución normal aparece en toda la biología, la economía y la mecánica cuántica. También gobierna el lanzamiento de monedas o de dados, y el ruido en las señales de sonido o de luz. Es difícil encontrar algo que no pueda ser descrito por la curva de campana.
La razón por la que esta distribución es tan común reside en un teorema de la estadística: el teorema central del límite. No profundizaremos aquí en el teorema del límite central, pero básicamente afirma que si tomas suficientes muestras aleatorias de un sistema, independientemente de los detalles del mismo, esas muestras aleatorias formarán una distribución normal. ¡Este es un hecho estadístico muy extraño y genial!
Redes neuronales al rescate
En nuestro ejemplo de la venta de pizzas, tuvimos que adivinar que los datos podían modelarse como la suma de dos gaussianos. Pero, ¿y si no tuviéramos ni idea de qué función se ajustaría a nuestros datos? Aquí es donde una red neuronal resulta útil. Las redes neuronales no asumen una forma específica para la función: permiten representar muchas funciones muy complicadas. A medida que la red neuronal aprende a representar mejor los datos (dándole muchos datos), puede averiguar cómo debería ser la función automáticamente. Al igual que cuando aprendes los números, cuantos más tipos de letra y estilos leas para el número 0, mejor podrás reconocerlo como un cero.
Las redes neuronales siguen siendo máquinas de entrada-salida, igual que una recta o una gaussiana, sólo que parecen más complicadas. Como hemos dicho antes, están formadas por nodos y conexiones entre nodos. En la imagen de abajo, los nodos son las burbujas grises, y las conexiones son las líneas negras entre ellos. Las conexiones entre los nodos son equivalentes a w0 y w1 de nuestro ejemplo de regresión lineal. Pero ahora puede haber muchas, muchas conexiones, representadas por muchas variables, y para obtener la salida tenemos que sumar todas las contribuciones de los diferentes nodos y conexiones: w₁₁x₁ + w₂₁x₂+ w₃₁x₃+...
Hasta ahora, todo lo que hemos hablado es fundamentalmente lo mismo que la regresión lineal, sólo que con más conexiones y más entradas. Pero para representar funciones más complicadas que las líneas rectas, tenemos que añadir un elemento más a la mezcla: una "función de activación".
La función de activación toma la suma de todas las entradas y conexiones y realiza una pequeña cantidad de procesamiento utilizando una función más complicada. Por ejemplo, si la función de activación es una función seno, nuestras salidas después de la primera capa serían como
y_pred = sin(w₁₁x₁ + w₂₁x₂+ w₃₁x₃+...)
Así que un nodo toma las entradas (x’s) y conexiones (w’s) y produce una salida intermedia ( f(w₁₁x₁ + w₂₁x₂+b₁+b₂) en la burbuja gris). Los valores de los nodos de la última capa son las salidas predichas, y_pred. El paso final es determinar todas las variables correctas que describen las conexiones, al igual que encontramos la pendiente y el intercepto correctos en el ejemplo de regresión lineal. Lo hacemos minimizando el error, (y_real - y_pred) ².
En el ejemplo anterior, tenemos muy pocas variables que tenemos que encontrar, ya que nuestra red neuronal es muy simple. Nuestra red tiene una sola capa con sólo dos nodos por capa; en otras palabras, tenemos una red con profundidad l=1 y anchura d=2. Podemos construir una red más grande para representar funciones más complicadas añadiendo más nodos y capas. Por ejemplo, una red con profundidad l=2 y ancho d=3 tendría el aspecto de la figura siguiente. Ahora los nodos de la segunda capa ( l=2 ) tomarán las salidas de la capa anterior ( l=1 ) y harán la misma operación de nodos que acabamos de describir.
El poder y el rompecabezas del Deep Learning
A medida que aumentamos la anchura o la profundidad de nuestra red, podemos ajustar funciones más complicadas. El aprendizaje profundo es un subconjunto de métodos de aprendizaje automático que utiliza grandes redes neuronales. Funciona muy bien en algunos problemas desafiantes del mundo real. Por ejemplo, un ordenador artificialmente inteligente llamado AlphaGo Zero (que se compone en parte de redes neuronales) ¡puede vencer a un jugador de ajedrez profesional de talla mundial!
Lo más interesante (y también lo más loco) de las redes neuronales profundas es que nadie sabe realmente por qué funcionan tan bien. Modelan funciones realmente complicadas, pero ¿cómo saber o entender cómo será la función final en general? Esa es una de las cosas que la Dra. Yasaman Bahri está tratando de averiguar.
La Dra. Bahri es una física, y cuando se enfrentan a un problema muy complicado como las redes neuronales, los físicos suelen tratar de idear una versión mucho más sencilla del mismo problema. Esperan que, aprendiendo del problema más sencillo, puedan aprender lecciones que también se apliquen al problema más complicado. Esto es exactamente lo que hizo la Dra. Bahri al abordar las redes neuronales.
Utilizando sus conocimientos de física, abordó el problema del aprendizaje profundo desde un ángulo diferente. En lugar de pensar en una red neuronal real, consideró una red neuronal especial que es infinitamente amplia. Esto significa que cada capa de la red está formada por neuronas interminables que se eternizan. Esto parece más complicado, pero a veces, cuando se aleja uno de sistemas como éste, sorprendentemente, ¡las cosas se vuelven mucho más sencillas!
¿Recuerdas que hablamos brevemente de cómo surge la "curva de campana" en los datos si tenemos un número suficientemente grande de muestras aleatorias? Resulta que cuando tenemos un número infinito de neuronas en una capa, la salida de la capa está relacionada con la misma curva de campana. Utilizando las propiedades de esta distribución, podemos hacer conjeturas educadas sobre la función final de la red neuronal basándonos en los datos. Este sistema de conjeturas se denomina proceso gaussiano. Es un modelo estadístico que estima la probabilidad de cada y_pred para cada x. Por ejemplo, en la figura siguiente, dados los cinco puntos de datos, podríamos dibujar un montón de curvas rojas que se ajustaran a este conjunto de datos. Pero con la red especial infinitamente amplia, sabemos qué funciones es más probable que prediga la red (la región roja sombreada en el ejemplo de abajo). Mirando las cosas de esta manera, la Dra. Bahri ha podido avanzar en la comprensión del rompecabezas de cómo las redes neuronales profundas tienen tanto éxito.
Queremos entender cómo se entrena una red neuronal porque nos ayudará a interpretar mejor los resultados aprendidos. Esto es crucial a medida que se vierte más y más poder computacional en nuestra vida cotidiana — desde la aprobación de solicitudes de tarjetas de crédito, hasta la selección de solicitudes de empleo, pasando por cómo se entregan tus paquetes y la compra. Un impacto tan grande en la vida de los seres humanos requiere una cuidadosa toma de decisiones. Si nos limitamos a utilizar estos métodos de aprendizaje automático sin entender realmente qué significan los resultados o cómo los hemos obtenido, es posible que las máquinas cometan los mismos errores (o peores) que los humanos cada día. Es especialmente importante tener en cuenta cómo los prejuicios y la discriminación pueden trasladarse al código que escribimos, o de lo contrario la inteligencia artificial corre el riesgo de profundizar las brechas sociales, económicas y raciales que ya existen en nuestra sociedad humana. Con el trabajo de la Dra. Bahri, es de esperar que pronto desentrañemos el rompecabezas del deep learning, pero este gran poder vendrá acompañado de una gran responsabilidad.
Escrito por Yanting Teng y Madelyn Leembruggen
Editado por Ella King y Lindsey Oberhelman
Ilustraciones por Lindsey Oberhelman
Traducción por Salvador Rosauro-Alcaraz
Principales fuentes y lectura adicional:
What is a Neural Network? | STEM for kids por Technovation
But what is a neural network? Chapter 1, Deep learning por 3Blue1Brown
Are You Unwittingly Helping to Train Google’s AI Models? por Rugare Maruzani
Neural Networks por IBM Cloud Education
Yasaman Bhari web personal
Los ordenadores están aprendiendo sobre ti... ¡Te toca aprender a ti sobre ellos!
Interacciona (20-30 minutos): ¿Puede un ordenador aprender a leer tu letra? Pon a prueba la capacidad de lectura de una red neuronal preentrenada proporcionándole números con tu propia letra.
Explora (30-45 minutos): Juega con una red neuronal. Elige un conjunto de datos de entrenamiento, controla los datos de entrada, añade o elimina capas y neuronas, ¡y observa cómo todo esto afecta a la predicción de resultados!.
Comments