Please enable JavaScript.
Coggle requires JavaScript to display documents.
SISTEMAS COGNITIVOS ARTIFICIALES - Coggle Diagram
SISTEMAS COGNITIVOS ARTIFICIALES
Tema 1. Introducción al aprendizaje profundo
1.1. Introducción y objetivos
1.2. Introducción al aprendizaje profundo
En el aprendizaje automático, los sistemas de inteligencia artificial obtienen su propio conocimiento mediante la extracción de patrones a partir de la experiencia, dada por datos.
El aprendizaje profundo pretende conseguir que los ordenadores sean capaces de construir automáticamente conceptos complejos a partir de conceptos sencillos.
Una red neuronal es básicamente una función matemática definida por nodos en capas donde cada nodo es una función más simple que depende de los nodos de la capa anterior
1.3. Historia y casos de éxito del aprendizaje profundo
La neurona de McCulloch-Pitts (originaria de 1943)
el perceptrón (1958)
ADALINE, Adaptive Linear Element (1960),
Años 80: conexionismo. Backpropagation
Años 90: Las redes neuronales secuenciales LSTM, support vector machines,
2006: Geoffrey Hinton, Yoshua Bengio y Yann LeCun
Factores del éxito del deep learning
El aumento de la cantidad disponible de datos
la mejora de la capacidad de cómputo
Casos de éxito del deep learning
visión por computador. Convolutional Neural Network
reconocimiento de habla (speech recognition)
aprendizaje por refuerzo (reinforcement learning)
el procesamiento del lenguaje natural (natural language processing)
1.4. Repaso de redes neuronales e inspiración biológica
Neurona, single unit
Una serie de pesos o weights
Una función de activación (𝜎𝜎): sigmoide
Una serie de inputs
bias permiten a una neurona modelar un valor constante e independiente de los inputs que influye en la salida de la misma.
Redes neuronales
Una red neuronal, también llamada multilayer perceptron (MLP), es un conjunto de neuronas simples situadas en capas.
La primera capa, la input layer, es la capa que recoge los datos a tratar.
La última capa, output layer, representa la salida de la red.
Finalmente, las capas interiores se denominan hidden layers.
Inspiración biológica
Tema 2. Entrenamiento de redes neuronales
2.1. Introducción y objetivos
entrenar una red neuronal a partir del problema de optimización de minimizar dicha función
algoritmo de gradient descent y la versión utilizada en la práctica, stochastic gradient descent
función de coste
algoritmo de backpropagation
2.2. Funciones de coste
MNIST es un dataset de imágenes con números escritos a mano del 1 al 10, siendo el objetivo detectarlos automáticamente
elemento matemático que nos permite cuantificar el error en las redes neuronales
El entrenamiento de una red neuronal es un problema complejo de optimización matemática a partir de la función de coste
2.3. Entrenamiento con gradient descent
learning rate:
refleja en cierta manera la velocidad a la que gradient descent funcionará
en la práctica las redes neuronales no se entrenan calculando el gradiente completo, sino una estimación del mismo obtenida con una muestra aleatoria de training examples
Stochastic Gradient Descent
El entrenamiento ocurre batch a batch. Primero, se elige una muestra aleatoria de 𝑚𝑚 ejemplos, se calculan los gradientes y se actualizan los parámetros.
Cuando esto ha ocurrido, decimos que se ha completado una training epoch.
Este proceso se repite hasta agotar todos los training examples del dataset.
En ese momento, se vuelve a empezar con una nueva epoch y así sucesivamente hasta que el entrenamiento esté completo.
2.4. Backpropagation
introducido originalmente en los años 70, pero cuya importancia fue puesta en valor en un famoso trabajo de David Rumelhart y Geoffrey Hinton en 1986, Learning representations by back-propagatin errors.
Este algoritmo ha sido clave en el desarrollo del deep learning, permitiendo la explosión del campo al aportar una forma efectiva de entrenar redes neuronales.
Regla de la cadena
El concepto básico sobre el que se asienta el algoritmo de backpropagation es el de la regla de la cadena
backward pass.
recursivamente la regla de la cadena hacia atrás en lo que se conoce como backward pass
forward pass
primer paso en el que vamos calculando los valores hacia adelante es lo que se conoce como forward pass.
Algunos patrones de Backpropagation
Suma: la suma simplemente coge el gradiente de su salida y lo envía para atrás a todos sus inputs.
Producto: para un input se multiplica el valor del otro input por el valor del gradiente de salida.
Max: el mayor valor del input se lleva todo el valor del gradiente de salida, mientras que el menor input se queda gradiente 0.
Algoritmo de backpropagation: recapitulando
Forward pass: aplicar el valor de 𝑥𝑥 a la red neuronal y guardar todos los valores intermedios de salida de cada operación o neurona.
Backward pass: una vez obtenido el valor final de salida, calcular el valor de la función de coste. La función de coste, que tiene que ser una función diferenciable, también tiene un input y unos gradientes respecto a ese input. De manera recursiva, propagar el gradiente hacia atrás mediante el uso de la regla de la cadena y calcular los gradientes de cada parámetro.
Al terminar el backward pass, tendremos calculados los valores de los gradientes de cada parámetro de la red neuronal. Con esto, es posible aplicar stochastic gradient descent.
Tema 3. Frameworks de aprendizaje profundo
3.1. Introducción y objetivos
Tensorflow
Keras
Framework de aprendizaje profundo
3.2. Frameworks de aprendizaje profundo
una librería o conjunto de librerías de programación que facilita el desarrollo e implementación eficiente de redes neuronales o de algoritmos de machine learning en general.
ventajas
Simplifica el desarrollo de grafos de computación de gran tamaño
Calcula de manera automática los gradientes
Facilita la ejecución y entrenamiento en GPU y entornos distribuidos.
Optimiza el entrenamiento y ejecución de los algoritmos
3.3. TensorFlow. Grafos de computación
Un tensor, la abstracción básica en TF, es básicamente un array n-dimensional.
Un grafo de computación es una representación de una serie de operaciones matemáticas
TensorFlow funciona mediante la construcción de un grafo de computación y el uso de una sesión que ejecuta las operaciones en el grafo
Ventajas de los grafos de computación
La ejecución se divide en trozos
Facilita enormemente la ejecución distribuida
Optimización de los cálculos a realizar
3.4. Otros frameworks
Theano
El framework Theano fue el primero en introducir los grafos de computación
Torch y PyTorch
grafos de computación dinámica
Caffe y Caffe2
CNTK y MXNET
3.5. Keras
Keras es una de estas librerías de alto nivel, probablemente la primera y más utilizada de ellas
Keras dispone de dos estilos de API: secuencial, más sencillo y directo, y funcional, más versátil, permitiendo arquitecturas más complicadas
Es una librería de alto nivel que define una interfaz limpia y sencilla para el entrenamiento de redes neuronales
Las distintas capas se van añadiendo una detrás de otra y el modelo se compila con un optimizador.
Tema 4. Aspectos prácticos en el entrenamiento de redes neuronales profundas
4.1. Introducción y objetivos
Las trabas al aprendizaje que aparecen en ciertas unidades de activación, en las formas de inicializar los parámetros de la red y en el algoritmo básico SGD.
Cómo otras alternativas facilitan el entrenamiento de las redes neuronales profundas.
Qué es el concepto de overfitting y cómo las técnicas de regularización ayudan a combatirlo.
4.2. Unidades de activación
Tanh
La tangente hiperbólica, 𝑡an ℎ(𝑥), presenta una forma bastante similar a sigmoid: de nuevo saturando por los lados, pero esta vez entre los valores -1 y 1. La gran ventaja respecto a sigmoid es que la salida está centrada alrededor de 0
ReLU
La unidad ReLU tiene salida 0 para valores menores que 0 y la función identidad para valores mayores que 0
Ventajas
No satura en el régimen positivo
Computacionalmente muy eficiente
Acelera la convergencia de Stochastic Gradient Descent
problemas
Como pasaba con sigmoid, la salida no está centrada en 0
Las ReLU son una unidad frágil y pueden «morir» durante el entrenamiento
Sigmoid
La unidad se caracteriza por convertir cualquier número real en un número entre 0 y 1, haciendo que valores positivos grandes sean prácticamente 1, mientras que valores negativos grandes tienden a 0
Desventajas
Las unidades sigmoid saturadas «matan» los gradientes
La salida no está centrada en 0
Implica el cálculo de una función exponencial 𝒆𝒙.
Leaky ReLU
La Leaky ReLU es una variante de la ReLU que intenta solucionar el problema de las ReLU «muertas»
Maxout
Maxout es otra unidad propuesta para solucionar el problema de las ReLU que mueren durante el entrenamiento
4.3. Inicialización de parámetros
Error: inicializar todo a 0
Mejor: inicialización aleatoria
Xavier initialization y He initialization
Inicialización de los biases
Es muy común inicializarlos simplemente a 0.
4.4. Batch normalization
Normalmente, la operación de batch normalization se ejecuta antes de la aplicación de la función de activación
Ventajas
Mejora el flujo de gradientes por la red durante el aprendizaje, aumentando por tanto la velocidad de convergencia.
Permite learning rates mayores.
Reduce la dependencia en la inicialización de parámetros que tiene el proceso de entrenamiento.
Puede interpretarse como una forma de regularización.
4.5. Optimización avanzada
Problemas de SGD
SGD + Momentum
Nesterov Momentum
AdaGrad
Si el valor del gradiente es grande, estamos haciendo que el avance en esa coordenada sea reducido.
Si es más pequeño, hacemos que el avance sea amplificado.
RMSProp y Adam
Learning rate decay
Step decay: reducir, por ejemplo a la mitad, la learning rate cada cierto número de epochs.
Exponential decay: donde la learning rate sigue un decrecimiento como el de una función exponencial.
4.6. Regularización
Regularización L2
Regularización L1
Las técnicas de regularización (regularization) intentan solucionar el problema de overfitting
Max norm regularization
Dropout
Los gradientes transmitidos hacia atrás son 0 en estas neuronas, ya que la función de salida de la neurona es constante y vale 0.
Early stopping
Puede utilizarse en conjunción con otras técnicas.
No impone explícitamente restricciones a la capacidad de representación del modelo. Simplemente marca un punto donde se deja de entrenar.
Tema 5. Convolutional Neural Networks (CNN)
5.1. Introducción y objetivos
5.2. Introducción a las CNN
Las redes neuronales convolucionales surgieron en el contexto de la visión por computador
Ejemplos de uso de redes convolucionales en la actualidad
Imágenes similares
Detección de objetos
La clasificación de imágenes
Segmentación
CNN son una de las tecnologías clave para los self-driving cars o coches sin conductor.
5.3. Convolution layers
Las CNN utilizan distintos tipos de capas o layers. La capa más importante, y la que da nombre a la red, es la capa convolucional.
Stride y zero-padding
Stride
indica cuánto se desplaza el filtro a través de la imagen
zero-padding
El zero-padding consiste en añadir ceros a los lados para que las dimensiones cuadren.
Capas Max pooling
La idea es reducir (downsample) las representaciones obtenidas
Las capas max pooling actúan de manera independiente sobre cada nivel de profundidad del volumen de entrada y reducen su tamaño mediante la aplicación de máximos
La forma más común de utilizar max pooling es mediante filtros de tamaño 2x2 y stride 2
Fully connected layers
Muchas CNN llevan varias fully connected layers como últimas capas para obtener las representaciones finales después de las capas de convolutions + pooling.
5.4. Arquitecturas CNN para problemas de visión por computador
ILSVRC (ImageNet Large Scale Visual Recognition Challenge)
AlexNet
VGGNet
VGG16
VGG19
5.5. Data augmentation
Consiste en realizar transformaciones o pequeñas perturbaciones aleatorias de la imagen de manera que obtenemos nuevas imágenes con las que entrenar, pero utilizando la misma clase o label
imagen simétrica
el contraste y el brillo
pequeñas partes recortadas de la imagen
El proceso de obtener más training data mediante data augmentation puede también verse como una forma de regularización
ImageDataGenerator. de Keras
5.6. Transfer Learning
transferencia de lo aprendido con grandes datasets a problemas relativamente similares
la efectividad del transfer learning puede verse comprometida si el problema a tratar es muy distinto del problema con el que se entrenó la red original.
Tema 6. Word Vectors
6.1. Introducción y objetivos
6.2. Representaciones del lenguaje
La representación de una palabra mediante un vector denso se conoce como representación distribuida
Representaciones discretas del lenguaje
bag-of-words. En bag-of-words no nos interesa el orden de las palabras, solo su aparición o no en el texto
6.3. Word2Vec
La salida del algoritmo Word2vec son los Word vectors
Definiremos el contexto de una palabra como el conjunto de palabras que aparecen cerca de ella, dentro de un rango de tamaño determinado por nosotros, que definiremos como window o ventana
fue presentado en 2013 (Mikolov, Chen, Corrado y Dean, 2013).
Funciona de la siguiente manera:
Se recorre cada posición t en el texto, obteniendo una palabra central o y un contexto de palabras c.
Utilizando las similitudes de los vectores calculados hasta el momento, se obtiene la probabilidad de c dado o.
Se ajustan los vectores para maximizar esta probabilidad.
La idea es maximizar esta verosimilitud o likelihood
Similitud entre palabras (word similarity)
una forma de obtener una medida de similitud es calcular su producto escalar.
Función softmax
aplicar gradient descent o SGD para obtener los valores de nuestros parámetros u y v
Negative sampling
una técnica en la que se toman las palabras que aparecen juntas en el contexto y se eligen al azar un pequeño número de palabras que no
Calculando los word vectors
Esta convierte cualquier serie de números en una distribución de probabilidad (haciendo que los valores de la distribución sumen 1).
Skip-grams y CBOW models
Skip-grams
La idea es predecir las palabras del contexto a partir de la palabra central.
Continuous Bag of Words (CBOW):
la idea aquí es predecir la palabra central a partir de una «bag» de palabras contexto.
Resultados
El objetivo es ver de manera estadística qué palabras aparecen normalmente juntas o en contextos similares para extraer ese concepto de similitud.
Tema 7. Recurrent Neural Networks (RNN)
7.1. Introducción y objetivos
7.2. Recurrent Neural Networks
son un tipo de red neuronal que es capaz de trabajar con información secuencial
Las redes neuronales recurrentes tienen un estado interno llamado hiden state que funciona como una memoria
Tanto el input como el output de las redes neuronales recurrentes son secuencias de texto o numéricas
Las LSTM son una versión mejorada de las RNN debido a los problemas que estas tienen durante su entrenamiento
Ejemplos:
Análisis de sentimientos
Traducción automática
image captioning que trata de extraer una pequeña frase que describa una imagen
backpropagation through time (BPTT)
«desenrollar» la red a lo largo del tiempo y aplicar backpropagation a partir de todos los outputs que hemos obtenido
backpropagation through time (TBPTT), donde la secuencia de entrada se «parte» en trozos y solo hacemos backpropagation en un pequeño número de steps
7.3. Modelos del lenguaje con RNN
es un modelo que asigna una probabilidad a una secuencia de palabras o incluso de caracteres
7.4. Arquitecturas LSTM y GRU
Vanishing gradients
O que se haga cada vez más pequeño hasta prácticamente desaparecer (vanishing gradient).
exploding gradients
El gradiente pierda su valor de aproximación local y acabe divergiendo a un valor enorme (exploding gradient).
Arquitectura LSTM
La arquitectura LSTM (Long Short-Term Memory) data de 1997
mantienen un estado interno cell state (𝑐𝑡) además del tradicional hidden state (ℎ𝑡)
ahora obtenemos cuatro vectores distintos conocidos como gates: 𝑖𝑖,𝑓𝑓,𝑜𝑜 y 𝑔𝑔,
𝑖𝑖 se conoce como input gate
𝑔𝑔, que viene de aplicar una 𝑡𝑡𝑡𝑡𝑡𝑡 ℎ como en las RNN tradicionales.
𝑓𝑓 se conoce como forget gate
𝑜𝑜 (output gate), que nos dice cuánto de nuestro estado interno 𝑐𝑐 hemos de revelar en el ℎ𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖
Las LSTM surgieron como una arquitectura encaminada a solucionar los problemas de «memoria» de las vanilla RNN
Arquitectura GRU
Fue introducida en 2014
Las mayores diferencias con LSTM son que se combina el cell state y el hidden state en un solo elemento, así como la forget gate y la input gate en una sola puerta.
RNN bidireccionales (bidirectional RNN), donde las secuencias de entrada se leen de atrás hacia delante y de delante hacia atrás
gradient clipping.
Controla la magnitud del gradiente durante backpropagation. Si este se hace muy grande, se reduce su magnitud para evitar el problema de exploding gradients.
Tema 8. Agentes inteligentes. Deep Reinforcement Learning
8.1. Introducción y objetivos
Los problemas de aprendizaje por refuerzo se modelan matemáticamente usando cadenas de Markov
Existen tres tipos de aprendizaje automático: el aprendizaje supervisado, el aprendizaje no supervisado y el aprendizaje por refuerzo
8.2. Reinforcement Learning
Ejemplos
El problema del cart-pole o péndulo invertido
El movimiento de robots (robot locomotion).
los videojuegos
un robot para cadenas de montaje
El objetivo aquí es aprender las acciones a realizar según nuestro estado para maximizar la recompensa.
Un agente interactuando con un entorno (environment).
El agente se encuentra en un estado 𝑠 y lleva a cabo acciones 𝑎𝑎.
Lo cual produce un nuevo estado y una recompensa (reward) del entorno.
8.3. Procesos de decisión de Markov
Los procesos de decisión de Markov, Markov Decision Processes (MDP) en inglés, son la formulación matemática de los problemas de aprendizaje por refuerzo o reinforcement learning
𝑃𝑃𝑠𝑠𝑠 son las probabilidades de transiciones entre estados
𝛾𝛾 es el discount factor
𝐴𝐴 es el conjunto de acciones
𝑅𝑅 es la reward function
𝑆𝑆 es el conjunto de estados
El objetivo es encontrar la política óptima 𝝅𝝅∗ que maximice la suma cumulativa de recompensas a lo largo del tiempo.
Value function y Q-value function
La value function: V en el estado 𝑠 para una policy 𝜋𝜋 es la recompensa acumulada esperada a partir de seguir la policy desde el estado 𝑠 :
La Q-value function: 𝑄𝑄 en el estado 𝑠 y acción 𝑎𝑎 para una policy 𝜋𝜋 es la recompensa acumulada esperada al elegir la acción 𝑎𝑎 en el estado 𝑠 y, después, seguir la policy
Con esto, la optimal Q-value function 𝑄𝑄∗ es el máximo valor alcanzable con una policy 𝜋𝜋 a partir de un par (estado, acción)
8.4. Deep Q-Learning
Caso de estudio con Atari Breakout
La idea clave del Deep Q-learning es utilizar una red neuronal profunda como función de aproximación.
Podemos obtener todos los Q-values para un estado con un solo forward pass.
Tema 9. Redes neuronales en entornos Big Data
9.1. Introducción y objetivos
model parallelism y data parallelism
9.2. GPU para entrenamiento de redes neuronales profundas
GPU: graphics processing unit
es un coprocesador hardware dedicado al procesamiento de gráficos y operaciones de coma flotante, con el objetivo de aligerar la carga de trabajo del procesador
en qué se diferencian una CPU y una GPU
Las GPU tienen memoria RAM propia, mientras que las CPU utilizan la memoria del sistema.
Las GPU están optimizadas para grandes anchos de banda de memoria, mientras que las CPU lo están para conseguir latencias bajas al leer de memoria.
Las GPU tienen un número mucho mayor de cores.
Las CPU resuelven tareas de propósito general, mientras que las GPU están optimizadas para tareas muy particulares.
Multiplicación de matrices en GPU
La GPU lee las matrices a multiplicar de memoria y utiliza sus múltiples cores para obtener los valores resultantes de manera paralela, calculando en cada core un producto escalar.
CUDA y cuDNN
CUDA, una plataforma de desarrollo para computación paralela con GPU y utiliza su propioe lenguaje de programación
cuDNN implementa primitivas altamente optimizadas para el entrenamiento de redes neuronales profundas, tales como forward y backward passes
Las distintas operaciones del grafo pueden aprovechar una implementación más eficiente en GPU a partir de librerías de más bajo nivel como cuDNN
9.3. Entrenamiento distribuido
Model parallelism
el modelo se distribuye en partes y cada máquina del sistema distribuido se hace responsable de los cálculos de una parte de la red, enviando los resultados correspondientes a otras máquinas
Data parallelism
en data parallelism cada máquina tiene una copia completa del modelo y un subconjunto distinto de los datos de entrenamiento
En parameter averaging tenemos un servidor de parámetros (parameter server) encargado de mantener la versión actual del modelo a partir del trabajo de las distintas máquinas entrenando el modelo o workers.
Asynchronous SGD
Esta es una versión para ejecución en paralelo de stochastic gradient descent
Downpour SGD
el número de workers es elevado es utilizar varios parameter servers en vez de uno.
el servidor de parámetros va recibiendo los gradientes de cada worker de manera asíncrona.
Un sistema distribuido nos permite utilizar los recursos de muchas máquinas a la vez
Tema 10. Ecosistemas en la nube y puesta en producción de sistemas de inteligencia artificial
10.1. Introducción y objetivos
Una buena práctica que suelen hacer los expertos en inteligencia artificial es contratar proveedores de cloud computing para poner sus modelos en la nube
10.2. Servidores de modelos de inteligencia artificial
inferencia, esto es, utilizar los modelos ya entrenados para extraer conocimiento a partir de nuevos datos
Características de un servidor para deep learning
Batching
suele acelerar el entrenamiento de las redes neuronales
el batching solo es útil durante serving time y si recibimos un gran número de requests por segundo, ya que si solo llega una cada varios segundos, no tiene sentido dejarla esperando
Versionar los modelos
Concurrencia
poder atender múltiples requests
Servidores de modelos
TensorFlow Serving
Clipper es otro servidor para modelos de machine learning, desarrollado en este caso en la universidad de Berkeley
Otros servidores disponibles son DeepDetect y Model Server for Apache MXNet
10.3. Ecosistemas en la nube
Google Cloud Platform (GCP)
Microsoft Azure.
Amazon Web Services (AWS).
API para resolver tareas comunes en el mundo del machine learning
Traducción automática
Visión
Speech-to-Text y Text-to-Speech
Análisis de vídeo
Procesamiento del lenguaje natural
Chatbots
10.4. Aspectos prácticos de la puesta en producción de sistemas de machine learning
infraestructura para entrenar y servir nuestros modelos,
contar con una serie de elementos de monitorización y análisis del funcionamiento de nuestro sistema
Una parte importante es la recolecta de datos, así como la extracción de features de estos datos y una posterior validación de los mismos
Training-serving skew
Training-serving skew es el problema que viene dado por una degradación del rendimiento entre el entrenamiento del modelo y su uso para inferencia
Continuous training pipelines
Validación de datos
Entrenamiento
Ingestión y transformación de datos
Comportamiento del modelo en subpoblaciones
Evaluación y validación del modelo
Despliegue del modelo en servidores
Tema 11. Últimos avances en aprendizaje profundo
11.1. Introducción y objetivos
concepto de meta-learning.
generative adversarial networks (GAN),
11.2. Generative adversarial networks (GAN)
introducidas por primera vez por Ian Goodfellow en 2014.
Las GAN están formadas por dos redes neuronales, que son el generador y el discriminador
La generator network es una aproximación a la obtención de una muestra (sample) de la distribución de los datos de entrenamiento
el generador intenta minimizar el objetivo
La discriminator network es una red que intenta distinguir entre imágenes reales (pertenecientes a los datos de entrenamiento) y falsas (generadas por la generator network).
el discriminador intenta maximizar el objetivo
Las GAN son un tipo de modelo generativo. Los modelos generativos son una rama del aprendizaje no supervisado en la que, dado un conjunto de datos de entrenamiento, se intenta aprender la distribución de probabilidad de esos datos. A partir de esta distribución de probabilidad, podemos generar nuevos ejemplos similares a los de entrenamiento.
directamente se aprende a generar ejemplos. Este tipo de modelo generativo se conoce como implicit density estimation (en oposición a explicit density estimation).
11.3. Meta-learning
La idea básica de meta-learning es aprender y mejorar el proceso del aprendizaje o, en otras palabras, «aprender a aprender».
Optimizer learning
En este tipo de meta-learning, hay una red neuronal auxiliar, conocida como meta-learner, que se encarga de aprender cómo hacer un update de los parámetros de la red principal (learner). La red meta-learner suele ser normalmente una RNN, lo cual facilita que esta recuerde cómo ha cambiado los parámetros en iteraciones anteriores
El few-shot learning es un tipo de método de los conocidos como meta-learning
Neural architecture search
Neural architecture search trata el problema de diseñar una red como un problema de meta-learning: se intenta aprender a diseñar redes neuronales de manera que aprendan de manera eficiente distintas tareas