Redes neuronales artificiales
El autor explica el modo en que se desarrollan sistemas que permiten procesar y gestionar una gran cantidad de datos, así como sus complejidades y riesgos.
| Por Ramiro Germán Rodríguez Colmeiro |
Las redes neuronales artificiales (RNA) son un tema omnipresente en la inteligencia artificial. Si bien se inspira en el funcionamiento del cerebro humano, aún hay una gran distancia entre ambos.
En este artículo se explora su funcionamiento y la evolución de la técnica, desde las simples neuronas artificiales hasta los modelos profundos utilizados en la actualidad. Se abordará con especial énfasis los modelos profundos y generativos, como los modelos de lenguaje, y se comentará sobre su naturaleza, limitaciones y riesgos.
Redes neuronales artificiales
El concepto detrás de las RNA fue desarrollado en el siglo pasado, en la década de 1950, inspirado (libremente) en el funcionamiento del cerebro.
En general, lo que se pretende con estas RNA es que dado una serie de entradas Xn se obtenga una salida Y. Por ejemplo, si el conjunto de entradas X representa los píxeles de una imagen, Y podría ser una variable de decisión que indique si la imagen contiene panda. Tal como se haría con un humano, las RNA son entrenadas para responder de la manera deseada, en nuestro ejemplo, sería mostrarle un conjunto de imágenes, algunas que contengan el objetivo (un panda) y otras que no e ir indicando a la RNA cuando su salida debe ser positiva. Este aprendizaje se grabará en las activaciones de la RNA generando una representación interna de que es un panda. Ahora bien, la técnica dista de este concepto.
Las neuronas artificiales de las RNA convencionales se denominan perceptrones y simulan el comportamiento de una neurona biológica.
Figura 1. Neurona artificial o perceptrón
Como se observa en la figura 1, los perceptrones son sencillos, cuentan con una serie de entradas (X1 a Xn) las cuales actúan como dendritas artificiales y a su vez asignan un peso dado a cada entrada (pesos W1 a Wn). Las neuronas también cuentan con una entrada de valor fijo (b) que sirve como un ajuste general. Todas estas entradas son sumadas y procesadas por una función de salida (g) que en general es alineal e intenta representar las activaciones de las neuronas biológicas. Matemáticamente se expresa como:
Estas neuronas artificiales son capaces de adaptarse modulando la importancia que les asignan a sus entradas, cambiando el valor de los pesos W1 a Wn.
Como una neurona biológica, el perceptrón es limitado y su utilidad se revela al interconectar varias neuronas, buscando lograr una suerte de sinapsis artificial. A lo largo del siglo XX los esfuerzos se centraron en cómo organizar grupos de neuronas artificiales y cómo lograr que la RNA aprenda a resolver problemas. Este modelado básico fue desarrollado en el año 1965 y conceptualmente ha cambiado poco. La forma más simple de interconectar perceptrones es “hacia adelante”: la salida de un perceptrón se conecta a la entrada de otro. Esta estructura crea una red neuronal artificial de tipo feedforward.
Figura 2. Red neuronal artificial compuesta de múltiples capas de perceptrones
Esta estructura es más compleja, ya no solo hay N parámetros sino que ahora tenemos N parámetros por cada neurona, siendo la expresión matemática resultante:
Vemos que la construcción de la salida sigue siendo modular, pero la cantidad de pesos W es mucho más grande.
Si bien la forma de cómo se conectan las neuronas es importante, esta es fija y la forma en que las RNA “aprenden” es por medio de la modificación de sus pesos W. Entonces podemos simplificar la notación la red por una simple función Y = f(X, W), que nos dice que la RNA es una función que produce una salida Y dada una entrada X y un conjunto de pesos W. La complejidad está en encontrar los pesos que resulten en el comportamiento deseado.
Al inicio del entrenamiento, los pesos se crean de manera aleatoria y por lo tanto el comportamiento inicial de la red es errático. Con ayuda de una métrica o función objetivo, el proceso de entrenamiento modifica los pesos para ajustarse al comportamiento deseado. La forma de estas funciones objetivo va a depender de la tarea a realizar.
Implementar este entrenamiento, como manejar matemáticamente los miles o millones de pesos W, es un problema complejo, tanto que recién en 1986 se descubre un algoritmo capaz de entrenar redes neuronales de más de tres capas, denominado backpropagation (Rumelhart et al, 1986).
Este método numérico utiliza el error de entrenamiento para ir imputando responsabilidad a los distintos pesos W y modificándolos para reducir error. Matemáticamente, el algoritmo permite conocer el gradiente de la función de la red neuronal sobre cada peso W, dado una par de entradas X y salidas Y, luego de aplicar una función objetivo L(Y,X,W).
Entonces, volviendo a nuestro ejemplo, para entrenar la red solo necesitaremos imágenes de pandas (set de X) con su correspondiente anotación de si la imagen es o no un panda (set de Y asociado) y luego aplicar el algoritmo de backpropagation sobre cada imagen de nuestro conjunto, actualizando los pesos W hasta que el error sea bajo.
Hasta ahora comentamos el funcionamiento de una red básica, la pregunta que nos hacemos es: ¿por qué no escuchamos de la aplicación de estas técnicas hasta hace solo unos años?
La respuesta es la capacidad de cómputo y datos existentes en ese momento. Con las restricciones tecnológicas de esa época, no era posible entrenar modelos con muchos parámetros ya que el costo computacional era prohibitivo y los datos disponibles eran muy pocos. Esto llevó a que la técnica cayera en desuso durante la década de 1990 y 2000, en favor de métodos más efectivos dadas las limitaciones.
Para profundizar en este tema se refiere al lector al capítulo 6 de Duda, R.O., & Hart, P.E. (2006). Pattern classification. John Wiley & Sons.
El aprendizaje profundo o deep learning
En el año 2012, un grupo de investigadores logra una mejora sustancial en un problema de reconocimiento de caracteres utilizando RNA (Krizhevsky et al, 2012). Allí se demostró que con el avance tecnológico las redes neuronales ya podían ser entrenadas en mucha mayor profundidad, de manera estable y con más conexiones. Poco cambió en la técnica de entrenamiento, el cambio se dio en la evolución de la capacidad de procesamiento. Este hito dio inicio al actual auge de las redes neuronales artificiales, específicamente marcó el inicio del aprendizaje profundo.
La primera ola del aprendizaje profundo se dio por las llamadas redes convolucionales y su aplicación sobre tareas de visión. Estas redes, conocidas desde 1988 e inspiradas en la corteza visual del cerebro, proponen una construcción jerárquica de las distintas capas de la RNA, logrando que la información espacial sea procesada con mayor efectividad. En ellas la entrada se descompone en mapas más pequeños que responden a características aprendidas (colores, formas, texturas), que representan la entrada con menos elementos. Luego de pasar por varias capas de estos filtros, la entrada tiene una dimensión mucho menor y es posible procesarla por una red tipo feedforward.
Esta técnica había sido imposible de implementar debido al costo computacional que conllevaba el entrenamiento, pero para la década de 2010 los procesadores gráficos o GPUs ya estaban altamente desarrollados y permitían acelerar drásticamente los algoritmos utilizados en el entrenamiento.
Las aplicaciones de esta técnica dieron nacimiento a muchas aplicaciones prácticas como por ejemplo:
– Reconocimiento de caracteres (Tesseract).
– Segmentación de imágenes y videos (MaskRCNN).
– Asistencia en diagnóstico por imágenes (implementaciones mayormente cerradas).
El siguiente paso en las RNA se dio con la creación del “transformador”, mejor conocido por su nombre en inglés transformer (Vaswani et al, 2017). A diferencia de las redes convolucionales, estas trabajan con datos secuenciales como frases, código o música. Los transformers se especializan en comprender secuencias y generar secuencias. Las secuencias de salida se crean otorgándole un valor de importancia (o atención) a cada uno de los elementos que componen la secuencia de entrada. Para ello los transformers utilizan un peso que conecta y compara cada uno de los elementos de la secuencia de entrada con todos los otros. Por ejemplo, si la secuencia es una frase como “La camioneta es roja, ¿de qué color es el vehículo?”, el transformer, entrenado para comprender sintaxis en español, asignará a cada palabra una relación con otra, en este ejemplo la combinación de “roja-color” tendrá asignada una mayor importancia que la relación “camioneta-qué”. El transformer evalúa todas las entradas a la red contra las otras entradas, les asigna un valor y propaga el resultado hacia la siguiente capa.
En un modelo basado en transformers, toda esta operación compone un solo bloque de procesamiento, así como en una red convolucional se componían los distintos filtros. Es fácil de imaginar que la cantidad de pesos que hay que ajustar para este tipo de redes aumenta rápidamente con la cantidad de elementos de la secuencia de entrada, por este motivo los modelos más conocidos de este tipo de red, como el ChatGPT, poseen decenas o cientos de miles de millones de parámetros.
El uso de estas transformers comprenden la última generación de aplicaciones, entre ellas están:
– Modelos de lenguaje / “chatbots”, como ChatGPT, Gemini o Perplexity – Generación de partituras, como Musenet.
– Análisis de texto, con modelos basados en BERT (Devlin et al, 2018) – Análisis de secuencias de ADN (modelos cerrados).
Para profundizar en los tópicos de aprendizaje profundo, se recomienda el libro de LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436-444.
Redes generativas
Hasta ahora hablamos de las RNA desde el punto de vista de su construcción o topología, pero otro aspecto importante a analizar es el tipo de objetivo o uso que se les intenta dar. Originalmente las RNA fueron aplicadas para tareas de reconocimiento o para aproximar señales u otras funciones matemáticas. Todas estas tareas tenían un objetivo concreto o una “verdad absoluta” para poder entrenarlas. Sin embargo, en los últimos años se han desarrollado redes cuya salida pretende generar contenido novedoso, es decir que no formaba parte del conjunto de datos de entrenamiento ni tampoco es el resultado de una interpolación entre los ejemplos vistos por la red. A este nuevo conjunto de redes se las llama redes generativas y son las responsables de lo que se denomina el contenido “sintético” de la internet actual.
Estas RNA son entrenadas para copiar la distribución estadística de su conjunto de entrenamiento. Es decir, la entrada ya no es importante, lo importante es solo que la salida sea imposible de diferenciar de un conjunto de datos dado. Para ejemplificar, si disponemos de muchas imágenes de pandas, el objetivo de la red ahora sería que dada una entrada aleatoria, la salida sea una imagen de un panda. En estos casos lo que la RNA intenta capturar en sus pesos es una representación condensada del espacio muestral (imágenes de pandas) y al ser excitada por una entrada aleatoria, proyectar esa entrada hacia el espacio muestral (convertir una serie de números aleatorios en una imagen de un panda). En general, para poder entrenar este tipo de redes se necesitan grandes cantidades de datos que representen fielmente la variabilidad de la distribución objetivo. En nuestro ejemplo, así como nosotros podemos imaginar muchas especies de pandas y las distintas posiciones que pueden tomar en una fotografía, esa misma variabilidad debe estar representada en el conjunto de datos, por lo que deben ser muy extensos.
Los métodos de entrenamiento de estas redes son particularmente interesantes. Como el objetivo en este caso es tratar de conseguir una salida que pertenezca a una distribución dada, se puede pensar en utilizar funciones matemáticas que evalúen si una muestra pertenece a la distribución objetivo; sin embargo, la distribución objetivo también es desconocida y solo conocemos de ella lo que nuestro conjunto de datos describe. Para poder superar esta dificultad, un trabajo de 2017 propuso una técnica que dio origen a las primeras aplicaciones generativas, la generación de rostros humanos superrealistas. Este trabajo propuso que en lugar de una función matemática como objetivo, se utilice una segunda red neuronal que tome el rol de “crítico” de la primera red. Esta combinación de “generador” y “crítico” se entrena de manera conjunta y de manera adversaria, de ahí el nombre de la técnica: “redes generativas adversarias” (Goodfellow et al, 2017). Es interesante destacar que aquí el entrenamiento es autoguiado, tal como un humano puede aprender a dibujar y corregirse mirando la imagen que quiere reproducir hasta estar satisfecho con su calidad, la red generadora aprende a generar un ejemplo y la red “crítico” aprende a detectar los errores y sirve de guía para refinar la generación.
Entonces, estas redes generativas, en general, no necesitan de métricas particulares, ni de conjuntos de datos anotados, solamente capacidad de procesamiento computacional y grandes cantidades de datos, ambas cosas que existen en abundancia en la actualidad. La implementación de esta tecnología resultó en muchas aplicaciones que se hicieron conocidas por su sorprendente calidad, entre las más conocidas podemos mencionar:
– Generadores de rostros humanos: creados como pruebas de concepto, por ejemplo “This person does not exists”.
– Creación de videos realistas con contenido imposible, como por ejemplo Carrie Fisher actuando en Star Wars episodio 9.
Modelos de lenguaje
Una importante excepción a la forma de entrenar los modelos generativos que mencionamos anteriormente son los modelos de lenguaje. Si bien estos son modelos generativos, los mismos no son entrenados de manera adversaria.
Los modelos de lenguaje cuentan con un entrenamiento por partes.
Primero se entrenan sin requerir supervisión y utilizando grandes cantidades de texto. Este entrenamiento es el más grande por el que pasan. Lo que se entrena aquí es la capacidad del modelo de predecir la siguiente palabra de un texto, es decir, a aprender de memoria. Por ejemplo, se le presenta una oración arbitraria, como “El cielo es azul” y se entrena al modelo para que refuerce las probabilidades de dicha sucesión de palabras, así el modelo incorpora información gramatical (el adjetivo va después del verbo) y conceptual (la palabra “cielo” está relacionada con el color azul). Los modelos entrenados solo hasta este punto son los llamados modelos fundacionales.
Segundo, los modelos son entrenados para respetar estructuras como preguntas-respuestas. Este es un entrenamiento convencional, con datos anotados y curados por humanos, donde se espera que la red neuronal pase de ser un simple completador de datos a ser un modelo más útil, el cual pueda ser accionado. Por ejemplo, el modelo recibe la pregunta “¿De qué color es el cielo?” y la respuesta esperada será “Azul”. Tercero, y último, el modelo es entrenado por un mecanismo de refuerzo, donde se ajusta su “actitud” para que su generación se ajuste a las preferencias humanas. Esta etapa requiere muchos datos, curados y anotados o integración directa de humanos que provean apreciaciones. Aquí el modelo recibe una instrucción y genera una serie de respuestas, luego las ordena por cómo cree que un humano lo haría (de más a menos deseable) y se compara con una anotación humana. El mecanismo de aprendizaje por refuerzo va sesgando las respuestas del modelo para que reflejen dichas preferencias. Este tipo de entrenamiento se ve ocasionalmente cuando utilizamos algunos servicios de asistentes virtuales, en el cual el asistente nos provee con más de una respuesta y nosotros debemos elegir la más adecuada o cuando el asistente nos solicita darle una calificación a la respuesta del modelo, estos datos son devueltos al algoritmo de aprendizaje por refuerzo que premia al modelo si la devolución es positiva (reforzando su comportamiento). Al final del entrenamiento el modelo de lenguaje adopta un sesgo que es aceptable para los usuarios y finaliza el entrenamiento.
Como vemos, si bien los modelos de lenguaje son modelos generativos, su entrenamiento es mucho más delicado que otras aplicaciones. Su dificultad se centra en los últimos dos pasos, los cuales moldean el crudo comportamiento que emerge de un entrenamiento no guiado y es aquí donde los puntos más controvertidos del entrenamiento se debaten, como cuál es el grado de censura o corrección de sesgos existentes en los datos (discriminación, toxicidad) que es necesario implementar.
Limitaciones de estos modelos
Finalmente es importante destacar cuáles son las limitaciones de las RNA, ya que esto nos ayuda a comprender mejor en dónde pueden resultarnos de ayuda y en dónde debemos limitarlas.
Las RNA son entrenadas utilizando grandes conjuntos de datos, y la calidad de dichos conjuntos es fundamental para su correcto funcionamiento ya que la misma va a incorporar cualquier característica que se represente en él.
Los efectos de los conjuntos de datos de mala calidad pueden ir desde que la red simplemente no pueda ser entrenada o hasta incluir sesgos inesperados. Los casos más famosos de esto último son quizás los modelos de lenguaje fundacionales, que en su mayoría fueron entrenados con datos obtenidos de internet, sin ningún tipo de filtrado inicial. Estos modelos aprendieron, además de la estructura del lenguaje, todos los sesgos existentes en la cultura humana y al momento de ponerlos en uso, muchos de estos sesgos pueden ser observados. La corrección de estos sesgos de manera efectiva es un problema abierto. Si bien es posible minimizar el impacto de este problema usando datos curados, sin embargo, el sesgo es inherente a los curadores.
Otro importante problema de las RNA es que los procesos por los cuales llegan a una conclusión no son observables. Esto quiere decir que cuando una RNA clasifica una imagen como “retrato de un panda” no podemos saber qué fue lo que realmente originó esta salida. Si intentamos analizar el proceso interno para llegar a una respuesta no vamos a observar características “explicables”; volviendo al ejemplo, un humano puede decirnos que una imagen representa un panda porque contiene animal, con determinada forma, ojos, posición, etc. Una RNA no nos daría esa explicación, ya que puede estar basando su respuesta en relaciones espurias de la imagen. Esta falta de explicabilidad hace que los modelos sean susceptibles de ser engañados de una manera que resulta imperceptible (o ilógica) para un humano; a estos ataques se los denomina “ataques adversarios”. Un ejemplo de este tipo de ataques es la existencia de imágenes que son claramente reconocibles por un humano o RNA, que al modificar levemente los píxeles hacen que la red neuronal se confunda, cuando para un humano la misma no ha cambiado:
Figura 3.
A la izquierda una imagen de un panda clasificada correctamente por una RNA,
a la cual se le suma un nivel de ruido (imagen central) y luego la RNA
reconoce la imagen resultante (a la derecha) como un primate.
Imagen de Goodfellow, I.J., Shlens, J., & Szegedy, C. (2014). Explaining and harnessing adversarial examples.
arXiv preprint arXiv:1412.6572.
Estos problemas hacen que las RNA no sean una solución que se deba adoptar de manera ciega, especialmente cuando las aplicaciones se encuentran dentro de una cadena de decisión. Antes de incluir RNA en procesos críticos, es de suma importancia asegurar que las mismas han sido auditadas de manera correcta y que su espacio de inferencia sea restringido a zonas conocidas.
Aplicaciones actuales y riesgos
Actualmente nos encontramos en pleno auge de las aplicaciones con RNA, específicamente en el auge de los modelos del tipo generativo. Las grandes cantidades de datos disponibles en la actualidad y el gran poder de cómputo que está a disposición de la mayoría de las personas plantean un escenario fértil para el crecimiento.
En los últimos años (o meses), la cantidad de aplicaciones que se han desarrollado para ayudarnos es imponente, hoy en día contamos con asistentes que nos ayudan a tomar notas y hacer resúmenes de reuniones virtuales, a traducir en el acto una conversación, a crear imágenes de alta calidad, nos sugieren funciones al programar y frases al escribir, etc. Este tipo de aplicaciones que buscan optimizar al humano, manteniéndolo en el centro de la toma de decisiones, aumentan nuestra productividad de manera impresionante. Sin embargo este mismo contexto ha llevado a que se proponga la utilización de estos modelos en lugares que pueden resultar de alta sensibilidad, como la gobernanza automatizada, perfilado de personas (tanto para aplicaciones laborales como financieras), aplicaciones militares, escritura automática de artículos, etc., quitando en algunos casos al humano del proceso de toma de decisiones.
Las RNA tienen un gran potencial para ayudarnos en el día a día, pero nunca debe perderse de vista de dónde provienen y los riesgos que las mismas traen asociados cuando no se las tienen en cuenta.
Autorxs
Ramiro Germán Rodríguez Colmeiro:
Licenciado y doctor en Ingeniería, especializado en análisis de señales e imágenes (Universidad Tecnológica Nacional) y en optimización de sistemas complejos (Université de Troyes, Francia). Docente investigador de la Facultad Regional Buenos Aires de la UTN.