Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
El campo de la inteligencia artificial (IA) ha experimentado un crecimiento explosivo en las últimas décadas, transformando a fondo numerosos aspectos de nuestra sociedad y tecnología. Desde los sistemas de recomendación en plataformas de entretenimiento hasta los vehículos autónomos y la medicina asistida por IA, los avances en este campo han revolucionado la forma en que interactuamos con la tecnología y abordamos los desafíos del mundo moderno. Inteligencia artificial. Investigaciones, aplicaciones y avances es un libro que proporciona una visión integral de los últimos desarrollos en IA, desde sus fundamentos teóricos hasta sus aplicaciones prácticas y las tendencias emergentes en este campo.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 342
Veröffentlichungsjahr: 2025
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Dedicado a los lectores,cuya curiosidad y pasión por el conocimiento hacen que la escritura cobre vida.
En primer lugar, quiero expresar mi más sincero agradecimiento a mi familia, cuyo apoyo incondicional ha sido una fuente constante de inspiración y fuerza en cada etapa de este proyecto. Su paciencia y comprensión me han permitido dedicarme con total compromiso a esta obra, y sin ellos, este logro no habría sido posible.
Agradezco también al equipo de trabajo editorial, cuyo profesionalismo, dedicación y esfuerzo han dado forma y claridad a las ideas que aquí se presentan. Su colaboración y paciencia han sido esenciales para plasmar este libro de manera accesible y rigurosa, y han contribuido a mejorar cada detalle de esta publicación.
A todos, gracias por formar parte de este recorrido en la creación de «Inteligencia Artificial. Investigaciones, aplicaciones y avances». Su apoyo y dedicación han sido fundamentales, y este logro es tanto vuestro como mío.
José Manuel Ortega es ingeniero de software y se centra en las nuevas tecnologías, el código abierto, la seguridad y las pruebas de software. Desde el principio, su objetivo profesional ha sido especializarse en Python y en proyectos de testing de seguridad. En los últimos años ha profundizado en el desarrollo de seguridad, especialmente en pentesting con Python. En la actualidad, trabaja como ingeniero probador de seguridad de aplicaciones en entornos web y móviles. Ha impartido clases a nivel universitario y ha colaborado con el Colegio Profesional de Ingenieros en Informática. También ha sido ponente en diversas conferencias. Le entusiasma aprender sobre nuevas tecnologías y le encanta compartir sus conocimientos con la comunidad.
Prólogo
1. Introducción a la inteligencia artificial (IA)
Aprendizaje automático (machine learning)
Aprendizaje profundo (deep learning)
Diferencias entre inteligencia artificial, deep learning y machine learning
Importancia del deep learning en la actualidad
Capas ocultas en aprendizaje profundo
Limitaciones del deep learning
2. Introducción a las redes neuronales
Historia y evolución de las redes neuronales
Contexto histórico
Redes neuronales artificiales en deep learning
Aplicaciones de las redes neuronales
Ventajas del deep learning
Importancia de las redes neuronales en la inteligencia artificial
Componentes de una red neuronal
Algoritmos más utilizados para implementar redes neuronales
Las funciones de coste de las redes neuronales
Clasificación de las redes neuronales
Perceptrón simple
Perceptrón multicapa (MLP)
3. Redes neuronales recurrentes (RNN)
Introducción
Arquitectura de una RNN
Casos de uso y aplicaciones de redes neuronales recurrentes
Arquitecturas RNN especializadas
Long Short-Term Memory (LSTM)
Gated Recurrent Unit (GRU)
4. Redes neuronales convolucionales (CNN)
Introducción a las CNN
Origen de las redes neuronales convolucionales
Arquitectura de las redes neuronales convolucionales
Tipos de arquitecturas CNN
Redes convolucionales bidimensionales (2D CNN)
Ventajas de las redes convolucionales
5. Transfer learning y modelos preentrenados
Introducción al transfer learning
Deep learning vs. transfer learning
Técnicas de transfer learning
Modelos preentrenados de transfer learning
Librerías de modelos preentrenados
6. Redes neuronales generativas adversarias o antagónicas (GAN)
Introducción a las redes GAN
Generación de imágenes en redes GAN
Características de las redes GAN
Ventajas y desventajas de usar una red GAN
Aplicaciones de las redes GAN
Herramientas de IA para la creación y manipulación de imágenes
El futuro de las redes adversarias generativas
7. Inteligencia Artificial Generativa
Introducción
Definición de IA generativa
Historia y evolución de la IA hasta llegar a la IA generativa
El paso de la IA tradicional a la IA generativa
Modelos de lenguaje de gran escala (LLM)
Llama 2
Phi-2
Gemini
Algoritmia relevante en el ámbito de la IA generativa
8. Procesamiento de lenguaje natural (PLN)
Introducción al procesamiento de lenguaje natural
La evolución del procesamiento del lenguaje natural
Modelos de lenguaje
Aprendizaje profundo en el procesamiento de lenguaje natural
Ejemplos de aplicaciones con OpenAI
9. Transformers
El origen de los Transformers
Versatilidad de los Transformers en PLN
Arquitectura de un Transformer
Estructura encoder-decoder y tipos de Transformers
Mecanismo de atención en la arquitectura de los Transformers
Casos de uso de Transformers
Transformers en el procesamiento del lenguaje natural
Vision Transformer (ViT)
Líneas de investigación abiertas con Transformers
10. Autoencoders
Introducción
Casos de uso de autoencoders
Arquitectura de los autoencoders
Fundamentos de los autoencoders
Tipos de autoencoders
Tipos de aplicaciones con autoencoders
Créditos
La inteligencia artificial (IA) se ha convertido en una de las áreas de investigación más apasionantes y transformadoras de los últimos años. Desde sus primeras concepciones hasta los avances actuales, la IA ha evolucionado de ser un conjunto de teorías y algoritmos experimentales a una fuerza impulsora en múltiples disciplinas. En este libro, exploramos la IA desde distintas perspectivas: las investigaciones teóricas, las aplicaciones prácticas y los avances que están definiendo el futuro de esta tecnología.
El principal objetivo del libro es ofrecer al lector una visión completa y accesible, que le permita comprender no sólo los principios técnicos y científicos que hay detrás de la IA, sino también las implicaciones y desafíos que plantea en diversos ámbitos.
Cada capítulo de esta obra profundiza en un aspecto particular de la IA, abordando los logros y dificultades que los investigadores y profesionales enfrentan en su desarrollo e implementación. Analizamos casos concretos en los que la IA ha revolucionado procesos, y mostramos tanto sus fortalezas como sus limitaciones. Asimismo, exploramos los avances más recientes y los horizontes que se vislumbran, como el aprendizaje profundo, el procesamiento del lenguaje natural, y la inteligencia artificial generativa.
Este libro es una invitación a sumergirse en el fascinante mundo de la inteligencia artificial, donde la ciencia y la imaginación se encuentran, para construir un futuro casi infinito de posibilidades y desafíos.
La inteligencia artificial (IA) es una rama de la informática que se centra en construir máquinas ingeniosas capaces de realizar tareas que requieren inteligencia humana. A partir de los años cuarenta, cuando se inició el desarrollo del ordenador digital, se pudo probar que estos podían realizar tareas muy complejas tras programarlos adecuadamente. Por ejemplo, pueden descubrir pruebas de teoremas matemáticos o jugar al ajedrez. Aun así, todavía no hay ordenadores capaces de actuar como un ser humano. Por lo tanto, el objetivo final de la inteligencia artificial es crear programas que permitan a los ordenadores aprender y solucionar problemas con la misma flexibilidad que los humanos.
Dentro del campo de la inteligencia artificial se encuentran el machine learning, y, dentro de este, el deep learning. Gracias a estos dos subconjuntos, los sistemas de IA están empezando a cumplir sus propósitos y han conseguido cambiar, paradójicamente, muchos sectores de la industria tecnológica.
La gran evolución que está teniendo la IA, y que se estima que seguirá teniendo, hace que siempre sea interesante explorar estas técnicas como solución a todo tipo de problemas físicos y matemáticos. Además, la IA ha demostrado ser la mejor alternativa para la resolución de problemas que implican el procesamiento de señales, tales como el reconocimiento de imágenes y el procesamiento del lenguaje natural.
El aprendizaje automático (machine learning) es la ciencia que logra que un ordenador actúe sin que esté explícitamente programado. En los últimos años, las técnicas de machine learning se han implementado en los motores de búsqueda de Internet, en los filtros de correo electrónico para clasificar el spam, en los sitios web para hacer recomendaciones personalizadas, en el software bancario para detectar transacciones inusuales y en muchas otras aplicaciones en nuestros teléfonos, como el reconocimiento de voz. Ha propiciado una búsqueda más efectiva de páginas web y ha mejorado la comprensión del genoma humano.
Básicamente, el machine learning emplea algoritmos para analizar datos, aprender de ellos y, finalmente, poder realizar una predicción o sugerencia sobre algo. El proceso de aprendizaje empieza con observaciones, datos, experiencias y/o instrucciones que se analizan para encontrar patrones y, así, poder tomar mejores decisiones sobre el futuro basadas en los ejemplos que se ofrecen. La finalidad es permitir que los ordenadores aprendan automáticamente sin la ayuda del ser humano ni ninguna asistencia y que se ajusten con las acciones pertinentes.
El machine learning también se puede definir como un proceso en el que, a partir de un conjunto de datos (dataset) formado por unos datos entrenados y teniendo una respuesta clara, a partir de un algoritmo, es posible obtener un modelo estadístico basado en ese conjunto de datos.
Aunque no seas experto en este tipo de tecnologías, es importante entender a rasgos generales cómo funciona el proceso general del aprendizaje automático, que se divide en las siguientes etapas:
▶Obtención de datos: cualquiera que sea el algoritmo de ML que se vaya a utilizar, es necesario disponer de un gran número de datos para entrenar a nuestro modelo. La mayoría de los datos provienen de diversas fuentes.
▶Preprocesamiento: muchos de los datos recolectados son categóricos, por lo que es necesario realizar un preprocesamiento y transformar esos datos en numéricos, ya que los algoritmos de ML trabajan solo con datos numéricos.
▶Extracción de características: se identifican los elementos que deben extraerse y someterse a análisis.
▶Selección de características se identifican los atributos necesarios para entrenar el modelo de ML.
▶Entrenamiento: se entrena el modelo en base al algoritmo seleccionado de ML. En esta etapa se utiliza una parte de los datos para entrenar el modelo y otra parte para evaluar su funcionamiento.
▶Testing: es considerada por muchos expertos la etapa más importante, ya que, teniendo el modelo entrenado, se debe validarlo. Para ello, los datos separados en la etapa anterior, datos de validación, son utilizados para ejecutar el modelo de ML y evaluar si el modelo ofrece los resultados esperados.
▶Análisis de resultados: en esta etapa se analizan los resultados y las métricas obtenidas y se ajustan los parámetros para obtener mejores resultados en caso de ser necesario.
Un sistema informático de aprendizaje automático se basa en experiencias y evidencias en forma de datos, para comprender por sí mismo patrones o comportamientos. De este modo, puede elaborar predicciones de escenarios o iniciar operaciones que son la solución para una tarea específica.
A partir de un gran número de ejemplos de una situación, se puede elaborar un modelo para deducir y generalizar un comportamiento ya observado, y a partir de este, realizar predicciones para casos totalmente nuevos. Por ejemplo, se puede considerar la predicción del valor de unas acciones en el futuro, según su comportamiento en periodos previos. A grandes rasgos, existen tres tipos principales de aprendizaje automático:
▶Aprendizaje supervisado: este tipo de aprendizaje se basa en lo que se conoce como información de entrenamiento. Se entrena al sistema proporcionándole una cantidad determinada de datos que se definen con detalle mediante etiquetas. Por ejemplo, se le proporcionan a la computadora fotos de perros y gatos con etiquetas que los definen como tales. Una vez que se le ha proporcionado la cantidad suficiente de estos datos, se pueden introducir otros nuevos sin necesidad de etiquetas, basados en patrones distintos que se han ido registrando durante el entrenamiento. Este sistema se conoce como clasificación. Existen otros métodos como el de regresión que consiste en predecir un valor continuo, utilizando parámetros distintos que, combinados al introducir nuevos datos, permite predecir un resultado determinado.
▶Aprendizaje no supervisado: en este tipo de aprendizaje no se usan valores verdaderos o etiquetas. Estos sistemas tienen como finalidad la comprensión y la abstracción de patrones de información de manera directa. Uno de los algoritmos más conocidos es el de clustering, que permite realizar agrupaciones por similaridad en los datos. Es un método de entrenamiento más parecido al modo en que los humanos procesan la información.
▶Aprendizaje por refuerzo: en la técnica de aprendizaje mediante refuerzo, los sistemas aprenden a partir de la experiencia. El enfoque impulsado por el entorno se puede utilizar cuando el comportamiento debe reaccionar de alguna manera ante un entorno cambiante. Por ejemplo, se puede observar el comportamiento de un coche autónomo. Cuando el vehículo toma una decisión errónea, es penalizado, dentro de un sistema de registro de valores. Mediante dicho sistema de premios y castigos, el vehículo desarrolla una forma más efectiva de realizar sus tareas. Esta técnica se basa en el método heurístico de prueba y error, y en el uso de funciones de premio que optimizan el comportamiento del sistema. Es uno de los métodos más interesantes de aprendizaje para los sistemas de inteligencia artificial, ya que no requiere de la introducción de gran cantidad de información.
En el nivel más general, los métodos de aprendizaje automático supervisados adoptan un enfoque bayesiano para el descubrimiento del conocimiento, utilizando probabilidades de eventos observados previamente para inferir las probabilidades de nuevos eventos. Los métodos no supervisados dibujan abstracciones de conjuntos de datos no etiquetados y los aplican a datos nuevos. Ambas familias de métodos se pueden aplicar a problemas de clasificación (asignación de observaciones a categorías) o regresión (predicción de propiedades numéricas de una observación).
En el aprendizaje supervisado, los algoritmos trabajan con datos «etiquetados» (labeled data), intentando encontrar una función que, dadas las variables de entrada (input data), les asigne la etiqueta de salida adecuada. El algoritmo se entrena con un «histórico» de datos y así «aprende» a asignar la etiqueta de salida adecuada a un nuevo valor, es decir, predice el valor de salida.
Por ejemplo, un detector de spam, analiza el histórico de mensajes, y ve qué función se puede representar, según los parámetros de entrada que se definan (el remitente, si el destinatario es individual o parte de una lista, si el asunto contiene determinados términos, etc.), la asignación de la etiqueta «spam» o «no es spam». Una vez definida esta función, al introducir un nuevo mensaje no etiquetado, el algoritmo es capaz de asignarle la etiqueta correcta.
El aprendizaje supervisado suele utilizarse para problemas de clasificación, como la identificación de dígitos, diagnósticos, o la detección de fraude de identidad. También se usa en problemas de regresión, como predicciones meteorológicas, de expectativa de vida, de crecimiento, etc. Estos dos tipos principales de aprendizaje supervisado, clasificación y regresión, se distinguen por el tipo de variable objetivo. En los casos de clasificación, esta es de tipo categórico, mientras que, en los casos de regresión, la variable objetivo es de tipo numérico. Algunos de los algoritmos más frecuentes en aprendizaje supervisado son:
▶Árboles de decisión.
▶Clasificación de Naïve Bayes.
▶Regresión por mínimos cuadrados.
▶Regresión Logística.
▶Support Vector Machines (SVM).
▶Métodos “Ensemble” (Conjuntos de clasificadores).
El aprendizaje no supervisado permite el entrenamiento de la IA con datos no etiquetados mediante el uso de algoritmos especiales que permiten que la IA aprenda por sí misma en lugar de ser alimentada por los datos de un humano.
Los métodos de aprendizaje no supervisado están diseñados para resumir las características clave de los datos y formar grupos naturales de patrones de entrada dada una función de costo particular.
Este tipo de aprendizaje suele usarse en problemas de agrupación (clustering), clasificación y perfilado (profiling).
Los algoritmos más habituales en aprendizaje no supervisado son:
▶Algoritmos de clustering.
▶Análisis de componentes principales (Principal Component Analysis).
▶Descomposición en valores singulares (Singular Value Decomposition).
▶Análisis de componentes independientes (Independent Component Analysis).
El aprendizaje profundo es un subcampo del aprendizaje automático que se centra en los algoritmos basados en la estructura y la función del cerebro, conocidos como redes neuronales artificiales. En esta práctica, se emplean configuraciones lógicas que se asemejan en gran medida a la estructura de un sistema nervioso central. A partir de unos objetivos específicos, se tienen unas capas de unidades de proceso, neuronas artificiales, que se dedican a detectar determinadas características.
El deep learning, aunque es un campo conocido desde hace bastantes años, no ha comenzado a adquirir una enorme relevancia hasta esta última década, donde ha logrado resultados importantes en problemas de percepción como el reconocimiento de voz o la clasificación de imágenes, que hasta ahora habían sido muy complicados de resolver por las máquinas. Existen varios factores que han impulsado claramente el desarrollo reciente de este campo, entre los que destacan los avances en el hardware, en los conjuntos de datos y en los propios algoritmos.
El hardware y los datos eran el principal cuello de botella para los investigadores hace un par de décadas. Al ser un campo de gran carga práctica, orientado a la ingeniería, las demostraciones a menudo se realizan empíricamente más que teóricamente, por lo que solo es posible avanzar cuando se dispone de los recursos apropiados para poder probar las ideas.
En la actualidad, gracias al incremento de la potencia de los ordenadores y a la existencia de una cantidad abismal de datos derivada del mundo de Internet, es posible entrenar redes neuronales mucho mayores en menos tiempo y probar nuevas ideas o recuperar otras que no habían podido llevarse a la práctica.
Paralelamente, también se han realizado grandes mejoras en los algoritmos de entrenamiento, lo que ha convertido al deep learning, en particular, y al machine learning, en general, en los campos más populares y exitosos dentro de la inteligencia artificial.
Concebidas originalmente en la década de 1950, las redes neuronales recibieron mucha atención en la década de 1980 gracias a su potencial para producir «máquinas inteligentes» que podían «pensar» y resolver problemas como los humanos. A finales de esa década, sin embargo, el entusiasmo por esta tecnología emergente comenzó a disminuir.
Las computadoras de la época simplemente no eran lo suficientemente potentes como para manejar las cargas de procesamiento requeridas para resolver los problemas más complejos e interesantes. Los investigadores también tuvieron dificultades para obtener los conjuntos de datos masivos necesarios para entrenar adecuadamente los modelos de redes neuronales. En consecuencia, muchos investigadores centraron su atención en los enfoques de aprendizaje automático que eran más económicos desde las perspectivas del conjunto de los datos y del procesamiento.
El renovado interés por las redes neuronales surgió en 2005 y 2006 gracias a los esfuerzos de los investigadores de inteligencia artificial Geoff Hinton, Yoshua Bengio, Yann Lecun y Jurgen Schmidhuber, entre otros, quienes demostraron que las redes neuronales no solo eran prácticas, sino también capaces de resolver problemas complejos, como el reconocimiento de voz y la categorización de imágenes, con una precisión mucho mayor que los métodos existentes. Las unidades de procesamiento de gráficos (GPU), como las incorporadas en las consolas de juegos, ahora podrían proporcionar la potencia de cómputo necesaria para ejecutar algoritmos de redes neuronales de manera eficiente y asequible.
Con el uso del deep learning apareció un tipo de aprendizaje representativo de los datos en el que se prioriza el aprendizaje por capas (layers) sucesivas de representaciones cada vez más significativas. La palabra «profundo» (deep) tiene una importancia semántica que se refiere a esta imagen de capas sucesivas, de forma que cuantas más capas haya más profundo es el aprendizaje y, por lo tanto, el modelo. También es importante resaltar que, a diferencia de otros algoritmos de aprendizaje, el deep learning mejora sus resultados cuanto mayor es la red neuronal y más datos tiene.
En estos algoritmos se crean sistemas en los que la salida de las neuronas está unida a otras neuronas, dando lugar a una red neuronal estructurada en capas. La primera de estas capas es la capa de entrada y corresponde al conjunto de neuronas que reciben los datos por primera vez. A continuación, se encuentran las capas ocultas que pueden ser una o más capas, sin existir un máximo de capas ocultas que pueda haber en la red, y por último, la capa de salida, que está formada por las neuronas que dan el resultado de la red.
Figura 1.1. Modelo de aprendizaje profundo.
El número de capas presentes en un determinado modelo es lo que se conoce como profundidad del mismo. Actualmente, un modelo de deep learning puede contar con decenas o incluso centenas de capas de representaciones, todas ellas aprendidas de forma automática a partir de los datos de entrenamiento que se le proporcionan al modelo.
Esto marca las diferencias con otros enfoques del machine learning, donde habitualmente solo existen una o dos capas de representación de los datos. Las representaciones por capas en el deep learning se aprenden normalmente a través de las famosas redes neuronales artificiales (ANN). Se trata de estructuras que cuentan con una serie de capas apiladas unas sobre otras, cuya inspiración proviene del campo de la neurociencia y el estudio del cerebro. No obstante, cabe destacar que, aunque algunos de los conceptos de dichos campos hayan tenido cierta influencia en el desarrollo del deep learning, no existen evidencias de que el cerebro lleve a cabo su aprendizaje de la misma forma que estos modelos desarrollados hoy en día.
En la siguiente figura se puede observar la apariencia típica de un modelo de deep learning. Se trata de un modelo de red neuronal con varias capas que transforma una imagen de un dígito con el objetivo de reconocer de qué dígito se trata.
Figura 1.2. Red neuronal profunda para clasificación de dígitos.
Esta red, transforma internamente la imagen del dígito en diferentes representaciones, cada una más diferente de la original y más significativa para llevar a cabo la tarea en cuestión. Una red de este tipo puede verse como un proceso de múltiples etapas en el que la información pasa por diferentes filtros que la van haciendo cada vez más útil para conseguir el resultado esperado.
Una vez que conozcamos los conceptos básicos de este campo, podremos profundizar en cómo un modelo de deep learning aprende estas representaciones sucesivas de los datos.
La transformación que lleva a cabo una capa sobre sus datos de entrada queda parametrizada por los pesos de la capa, que son básicamente un conjunto de números configurados en matrices o vectores. Por tanto, el proceso de aprendizaje consiste en encontrar el conjunto de valores para los pesos de las diferentes capas de la red, de tal forma que los datos de entrenamiento sean correctamente mapeados a la salida correspondiente.
Para ello, es necesario medir las diferencias entre la salida actual y la salida esperada, de lo cual se encarga la función de pérdida (también llamada función objetivo) de la red. Esta función compara las dos salidas y calcula un índice, llamado score, que ofrece un indicador de cómo de bien ha actuado la red ante una muestra específica.
El score obtenido se usa como señal de realimentación para ajustar los pesos adecuadamente, en una dirección en la que se produzca una disminución del mismo para la muestra en cuestión (matemáticamente, esta dirección se corresponde con el gradiente de la función de pérdida con respecto a los parámetros de la red). Esta es la labor del optimizador, la cual se lleva a cabo implementando el algoritmo de backpropagation, que es fundamental en el deep learning.
Básicamente, el funcionamiento del algoritmo de backpropagation es el siguiente. En primer lugar, los pesos de las diferentes capas de la red se inicializan aleatoriamente, por lo que las transformaciones que implementa cada una también lo son. Para una muestra de entrenamiento determinada, el algoritmo realiza la predicción paso hacia delante (forward pass) y calcula el score mediante la función de pérdida.
Figura 1.3. Representaciones profundas aprendidas por un modelo de clasificación de dígitos.
Evidentemente, para esta primera fase, el score obtenido es alto, ya que al haber sido los pesos inicializados aleatoriamente la salida actual está lejos de la que debería ser obtenida. Una vez hecho esto, el algoritmo recorre las capas en orden inverso, calcula la influencia que cada uno de los pesos ha tenido en el error final (recorrido inverso o reverse pass) y los ajusta proporcionalmente en la dirección adecuada (gradiente descendente o gradient descent step). Este bucle se repite para cada muestra de entrenamiento y, tras un número suficiente de repeticiones, da como resultado valores de pesos que minimizan el score. Cuando este proceso finaliza, se dice que la red está entrenada.
A diferencia de otros algoritmos, por ejemplo, las redes neuronales pueden tener desde miles hasta millones de parámetros para definir un modelo. Por ejemplo, las redes neuronales totalmente conectadas, también conocidas como redes neuronales densas o perceptrones multicapa, son un tipo de arquitectura de red neuronal artificial en la que cada neurona de una capa está conectada a todas las neuronas de la capa siguiente.
Como hemos comentado, el componente básico de los modelos de deep learning son las neuronas o perceptrones que reciben unos datos de entrada (a0, a1, …, an), unos pesos o importancias (w0, w1, …, wn) para cada entrada de la propia neurona y un sesgo o bias (b) que indica la cantidad que deben aumentar los pesos para que la salida de la neurona sea útil y se obtenga una salida. A grandes rasgos, una red neuronal se compone de las siguientes capas:
▶Capa de entrada: la primera capa de la red es la capa de entrada, que contiene nodos que representan las características de entrada.
▶Capas ocultas: entre la capa de entrada y la capa de salida, puede haber una o más capas ocultas. Estas capas contienen nodos (neuronas) que realizan operaciones de transformación mediante funciones de activación.
▶Capa de salida: la última capa de la red es la capa de salida, que produce los resultados finales de la red. El número de nodos en esta capa depende del tipo de problema a resolver.
En una red totalmente conectada, la salida de cada nodo de una capa dada está conectada a las entradas de cada nodo de la siguiente capa. Este también es un ejemplo de una red neuronal en el que la información pasa directamente de una capa a la siguiente sin retroceder, hasta que llega a la capa de salida, donde se asigna una decisión de clasificación.
Las redes neuronales totalmente conectadas han sentado las bases de muchos avances en el campo del aprendizaje profundo, pero también pueden sufrir de sobreajuste en conjuntos de datos pequeños o tener problemas de generalización en ciertos escenarios. Por ello, se han desarrollado arquitecturas más complejas, como las redes neuronales convolucionales (CNN) y las redes neuronales recurrentes (RNN), para abordar desafíos específicos en diferentes tipos de datos.
Los nodos de la capa de entrada son pasivos, lo que significa que reciben valores de atributos para una muestra particular y posteriormente se pasan a todos los nodos de la primera capa oculta para su procesamiento. En consecuencia, la capa de entrada debe contener un nodo para cada entidad en el conjunto de muestras. Si categorizamos imágenes con una resolución de 64 píxeles x 64 píxeles, por ejemplo, podríamos configurar una capa de entrada con 4096 nodos de entrada, uno para cada píxel. Al resolver un problema de procesamiento del lenguaje, las características relevantes suelen incluir el número de palabras únicas en la muestra que estamos analizando y la frecuencia con la que aparece cada palabra.
Las capas ocultas están compuestas de nodos como el de la siguiente imagen, que realizan el trabajo pesado del procesamiento de aprendizaje profundo.
Figura 1.4. Modelo de red neuronal con capa oculta.
Cada entrada en cada nodo de las capas ocultas se inicializa con diferentes valores de peso, que se optimizan gradualmente hasta alcanzar el nivel deseado de precisión. Los analistas pueden establecer estos pesos iniciales al azar, usar funciones para aumentar los valores iniciales apropiados o establecerlos en función de su experiencia previa con problemas y conjuntos de datos similares.
El procesamiento se realiza de la siguiente manera: todos los valores de atributo de la primera muestra se reciben en las entradas de los nodos x1-xm. Cada valor de atributo se multiplica por un valor de peso correspondiente. Por ejemplo, el atributo de la entrada x1 se multiplica por el peso w1, el atributo de la entrada x2 se multiplica por el peso w2, etc. Si la magnitud del valor del peso es mayor que uno, entonces la contribución de esa característica a la eventual decisión de clasificación aumentará gradualmente. Si la magnitud es menor que uno, su contribución se reducirá en consecuencia. Este proceso es similar a la forma en que se utilizan los pesos de regresión en la regresión logística. Sin embargo, en el caso de las redes neuronales, es el procesamiento agregado en todas las capas ocultas lo que finalmente determina la decisión de clasificación, no el procesamiento dentro de una sola capa oculta.
La función de activación realiza el cálculo particular especificado para esa capa. Los analistas pueden elegir entre un amplio conjunto de funciones de activación basadas en la naturaleza del escenario del problema y en la secuencia de cálculos necesarios para producir una solución.
El resultado de esta función de activación es un valor numérico que refleja los efectos agregados del procesamiento de ese nodo. Cada uno de estos valores representa una proporción diferente de pesos y combinaciones de atributos de características. Al procesar todas estas combinaciones y pasar los resultados a capas ocultas adicionales, las redes neuronales pueden determinar, paso a paso, qué combinación de características y pesos predecirá con mayor precisión la asignación de clase de una muestra.
Cada nodo de la capa oculta #2 recibe los valores de salida de todos los nodos de la capa oculta #1. Una vez más, cada uno de estos valores se multiplica por un valor de peso particular, los productos se suman y luego los resultados se someten a una función de activación para producir una nueva salida para la siguiente capa, donde se repite el proceso el cual continúa hasta que se hayan procesado todas las capas ocultas y los resultados de esos cálculos lleguen a la capa de salida.
La capa de salida es la capa final en la red neuronal. Si estamos ante un problema de clasificación, la capa de salida incorporará un nodo para cada asignación de clase posible. Al igual que los nodos de las capas ocultas, los nodos de la capa de salida también pueden incorporar funciones de activación. Por ejemplo, se puede aplicar una función de activación logit o softmax para convertir la decisión de clasificación en una puntuación de probabilidad.
El nodo con el puntaje más alto determinará qué etiqueta de clase asignar. Después de cada ciclo de entrenamiento, una función de pérdida compara la decisión de clasificación con las etiquetas de clase para determinar cómo se deben modificar los pesos en todas las capas ocultas para producir un resultado más preciso. Este proceso se repite tantas veces como sea necesario antes de que un conjunto de modelos candidatos pueda pasar a las fases de validación y prueba.
Como se comentó anteriormente, los valores de las características de una muestra solo son visibles para los nodos en la capa de entrada y la primera capa oculta. Todas las capas posteriores solo pueden «ver» los valores de salida combinados de los nodos de la capa anterior y, por lo tanto, «observar» las muestras en conjunto a niveles crecientes de abstracción. Esto es similar en concepto a cómo nuestros cerebros perciben e interpretan la información sensorial.
En el caso de la visión, por ejemplo, el papel de la capa de entrada lo desempeña la retina, que envía señales eléctricas a la corteza visual en función de la intensidad de la energía luminosa que recibe de una «muestra» de fotones. Allí, varias «capas ocultas» aplican diferentes tipos de «funciones de activación» visuales. Por ejemplo, una capa puede realizar el procesamiento de bordes, otra puede consolidar los bordes en formas y una tercera puede asociar esa forma con una categoría, como «cara».
Las redes neuronales permiten realizar este tipo de procesamiento de una manera extremadamente granular, pasando de señales de bajo nivel a decisiones complejas a través de una secuencia ordenada de cálculos jerárquicos de varias capas.
En el ámbito de la inteligencia artificial, surgió hace unos años la ciencia del machine learning, en la que los ordenadores aprenden y mejoran automáticamente a partir de la experiencia. El interés ha ido aumentando con la aparición del deep learning que es un tipo de aprendizaje que trabaja a partir de redes neuronales artificiales.
Las diferencias principales entre la inteligencia artificial, el machine learning y el deep learning radican en su alcance y enfoque. Mientras que la inteligencia artificial abarca un mayor número de campos dentro de la ciencia computacional, como el cloud computing y el internet de las cosas, el machine learning y deep learning se encargan más de los modelos que permiten que las máquinas aprendan, como indican sus nombres.
De todas formas, diferenciar cada una de las ramas de la IA puede llegar a ser bastante difícil. Es por eso que aquí explicaremos de forma sencilla qué es y en qué se especializan estas tres tecnologías:
▶Inteligencia artificial: es el campo que estudia cómo crear programas informáticos con la habilidad de razonar como los humanos para resolver problemas de forma creativa e inteligente. La IA permite que los sistemas tecnológicos perciban su entorno, se relacionen con él, resuelvan problemas y actúen con un fin específico.
▶Machine learning: es la aplicación de la IA dedicada a la creación de algoritmos que le permiten a los sistemas aprender sin necesidad de ser programados. El flujo de trabajo de esta herramienta empieza con la extracción manual de las características relevantes para crear un modelo que pueda categorizar o procesar esa información.
▶Deep learning: es un subconjunto del machine learning enfocado a la creación de redes neuronales artificiales, que son sistemas que imitan al cerebro humano, se adaptan y aprenden a partir de grandes cantidades de datos. A diferencia del machine learning, esta herramienta extrae las características directamente de las bases de datos sin recibirlas manualmente.
Supongamos que se quiere resolver un problema de clasificación entre coches y no coches. Si se aborda este problema mediante el machine learning clásico, el científico de datos debería determinar primero las características o features que permiten diferenciar un coche de lo que no es un coche (por ejemplo, si tiene ruedas, el tamaño, si tiene o no ventanas, etc.).
Cuando se emplea aprendizaje profundo, no será necesario pasar por el paso de determinar las características por las cuales se clasificará el coche. En este caso, lo que se debe encontrar es una forma de codificar las muestras de forma completa para que puedan ser admitidas por una red neuronal. Para la clasificación de coches, por ejemplo, se podría codificar una imagen de un coche como un vector de píxeles, y pasar esa representación del coche a una red neuronal con múltiples capas, de forma que la red descubra internamente en qué detalles del coche debe fijarse a la hora de clasificarlo.
Figura 1.5. Diferencias entre machine learning clásico y deep learning.
El adjetivo «profundo» viene dado por el uso de numerosas capas en la red. La necesidad de realizar una tarea extra con respecto al machine learning clásico implica que los modelos necesiten un mayor tamaño (más capas en el caso de las redes) y un mayor número de ejemplos para poder obtener buenos resultados.
Sin embargo, la práctica ha demostrado que este tipo de modelos obtienen un mejor rendimiento aprovechando volúmenes de datos muy grandes. Este hecho, sumado al acceso a cantidades masivas de datos provenientes de Internet y de las redes sociales, ha permitido que el aprendizaje profundo haya revolucionado los estándares del estado del arte en infinidad de aplicaciones, entre las que destacan el procesamiento del lenguaje natural, la visión por ordenador y el análisis de redes sociales.
Otra de las diferencias entre el machine learning y el deep learning es que el machine learning necesita de humanos que le enseñen, mientras que el deep learning es más autónomo. El proceso de aprendizaje automático comienza con un objeto (que puede ser tan diverso como un dato financiero o las características de un coche), sobre el que un humano introduce sus características en el sistema de machine learning para que, la próxima vez que el sistema se encuentre dicho objeto, lo reconozca.
En el caso del deep learning, el sistema aprende de los datos brutos y puede aumentar su precisión si se le proporcionan más datos. Es decir, cuantos más estímulos reciba del objetivo, mejor será su predicción. Por tanto, la diferencia radica en el nivel de implicación humana.
De esta forma, para enseñar a un sistema de machine learning, hay que decirle cuáles son las características principales para reconocer el objeto. Sin embargo, en el caso del deep learning, no es necesario describir las características del objeto al sistema, sino que se le alimenta con datos (imágenes en el caso de reconocimiento de objetos) para que aprenda por sí solo. Debido a esta diferencia, los sistemas que usan deep learning normalmente necesitan hacer uso de una GPU (unidad de procesamiento gráfico) y una gran capacidad de almacenamiento.
En la actualidad, el deep learning cuenta con una gran importancia gracias a su capacidad de trabajar de forma autónoma sin necesidad de que un humano gestione las tareas. Entre los usos actuales del aprendizaje profundo destacan los siguientes:
▶Visión por ordenador: la visión artificial se utiliza principalmente en vehículos autónomos, drones y procesos biométricos. Aprovecha el deep learning para identificar y clasificar imágenes mediante categorías y etiquetas predefinidas.
▶Procesamiento de lenguaje natural: el deep learning se emplea en el procesamiento del lenguaje natural para interpretar las entradas de lenguaje humano en formato textual o verbal. El análisis de sentimientos, la traducción o el reconocimiento de voz, son algunas de las aplicaciones que tiene.
▶Automatización: una gran opción para automatizar todo tipo de tareas.
▶Modelos predictivos: el deep learning potencia los motores de recomendación. Esto lo consigue gracias a algoritmos que construyen modelos predictivos basados en los datos recopilados de los usuarios de las distintas aplicaciones.
En la actualidad, grandes empresas tecnológicas como Facebook, Apple y Google recopilan y analizan una gran cantidad de datos a diario y están mostrando un gran interés en proyectos relacionados con el aprendizaje profundo, lo que reduce el tiempo y los costes de desarrollo de esta tecnología.
Actualmente, uno de los campos de investigación en ciberseguridad, es la implementación de inteligencia artificial para la detección y respuesta a amenazas. De este modo, se podría ganar en eficiencia y rapidez, y así hacer frente al creciente número de incidentes de seguridad existentes en la actualidad. A corto plazo, las tendencias en inteligencia artificial para la ciberseguridad consisten en:
▶Sistemas de predicción y prevención para aprovechar el potencial de Big Data e interpretar un alto volumen de información procedente del tráfico de una red determinada.
▶Soluciones de inteligencia artificial aplicadas a la seguridad en IoT (Internet of Things), con la finalidad de evitar la propagación de ataques de malware en las distintas redes.
▶Soluciones de aprendizaje automático para generar sistemas de ciberseguridad flexibles y adaptados a todo tipo de dispositivos y herramientas que sean capaces de identificar y adaptarse a los cambios del malware inteligente, etc.
El número de capas ocultas es uno de los hiperparámetros que se deben determinar a la hora de construir una red neuronal.
Aunque una red neuronal con una única capa oculta pueda resolver problemas muy complejos, se ha demostrado que las redes neuronales profundas son mucho más eficientes, ya que pueden modelar funciones complejas usando exponencialmente menos neuronas que las redes con un reducido número de capas, lo que las hace mucho más rápidas de entrenar.
Adicionalmente, el uso de deep learning no solo permite que la red converja más rápido a una buena solución, sino que también mejora la capacidad para generalizar frente a nuevos datasets o conjuntos de datos. Además, otra de las ventajas que tienen este tipo de arquitecturas es que permiten reutilizar partes de otras redes preentrenadas que se encuentren a la vanguardia y que desarrollen una tarea similar. De esta manera, el entrenamiento de la red será más rápido y necesitará una menor cantidad de datos.
No obstante, desarrollar este tipo de modelos entraña algunas complicaciones. En primer lugar, diseñar una red neuronal es una tarea complicada, debido a la gran variedad de valores de los hiperparámetros que hay que seleccionar. A la hora de crear la arquitectura de la red, una buena táctica puede ser comenzar con una arquitectura de tamaño reducido (con pocas capas ocultas y pocas neuronas) e ir aumentando el número de capas, produciendo mejores resultados siempre y cuando no se produzca sobreentrenamiento (overfitting). Otra forma de abordar el problema del diseño de la red consiste en crear una red de un gran tamaño y evitar que produzca sobreajuste mediante alguna técnica de regularización.
Otros problemas de las redes profundas aparecen en el entrenamiento, como el desvanecimiento del gradiente, los largos tiempos de entrenamiento, o el problema del sobreajuste, los cuales se desarrollan en los siguientes apartados.
El algoritmo de backpropagation que se emplea para entrenar la red funciona propagando el gradiente del error de la capa de salida hacia la de entrada. Durante esta propagación, los gradientes pueden hacerse cada vez más pequeños debido al gran número de capas, lo que provoca que los pesos de las capas más bajas apenas se modifiquen y, por tanto, el entrenamiento no nos permita obtener una buena solución. A este problema se le denomina desvanecimiento del gradiente, aunque también puede ocurrir lo contrario, es decir, que los gradientes se hagan cada vez más grandes, a lo que se denomina explosión del gradiente. Por tanto, en las redes neuronales profundas se deben tratar estos gradientes inestables para evitar que las capas aprendan o modifiquen sus parámetros con velocidades distintas entre ellas.
Para evitar que el problema del desvanecimiento de los gradientes no aparezca en todo el entrenamiento, se utiliza la técnica Batch Normalization, que consiste en normalizar las entradas de cada capa y, a continuación, escalar el resultado, con el objetivo de que la entrada de las unidades de activación en todas las capas siga una distribución normal estándar. Para realizar la normalización, se calcula la media y la desviación típica de un lote (training batch). Al realizar el escalado, se añaden dos nuevos parámetros que se aprenden durante el entrenamiento de la misma manera que lo hacen los pesos. Con esta técnica se consigue mejorar la estabilidad de la red neuronal e incrementar la velocidad de entrenamiento, al poder usar tasas de aprendizaje (learning rates) mayores.
