Semanas 1, 2, 3 y 4. Deep learning con Python.pptx
Document Details
Uploaded by Deleted User
Tags
Related
Full Transcript
DEEP LEARNING with PYTHON DR. JORGE CHUE GALLARDO Texto: Deep Learning with Python – Second Edition. François Chollet 1. ¿QUÉ ES DEEP LEARNING? Nuestro futuro está en juego, y es un futuro en el que ustedes tienen una participación activa. Después de ap...
DEEP LEARNING with PYTHON DR. JORGE CHUE GALLARDO Texto: Deep Learning with Python – Second Edition. François Chollet 1. ¿QUÉ ES DEEP LEARNING? Nuestro futuro está en juego, y es un futuro en el que ustedes tienen una participación activa. Después de aprender DL, serás uno de los que desarrollen sistemas de IA. ¿Qué se ha logrado hasta ahora con el aprendizaje profundo? ¿Qué importancia tiene? ¿Hacia dónde nos dirigimos ahora? Inteligencia artificial, máquinas de aprendizaje y aprendizaje profundo. 1. ¿QUÉ ES DEEP LEARNING? 1. ¿QUÉ ES DEEP LEARNING? INTELIGENCIA ARTIFICIAL Concepto: esfuerzo por automatizar las tareas intelectuales que normalmente la realizan los humanos. Como tal, la IA es un campo general que abarca el aprendizaje automático y aprendizaje profundo, pero eso también incluye muchos más enfoques. IDe hecho, durante bastante tiempo, la mayoría de losLos expertos creían que la inteligencia artificial a nivel humano podría lograrse teniendo los programadores necesarios para elaborar a mano un conjunto suficientemente grande de reglas explícitas para manipular conocimiento almacenado en bases de datos explícitas. Este enfoque se conoce como IA simbólica. Esto fue el paradigma dominante en IA desde la década de 1950 hasta finales de la década de 1980, y alcanzó su máxima popularidad con el boom de los sistemas expertos en la década de 80´s. Aunque la IA simbólica demostró ser adecuada para resolver problemas lógicos bien definidos, como jugar al ajedrez, resultó intratable encontrar reglas explícitas para resolver problemas más complejos y difusos, como la clasificación de imágenes, el reconocimiento de voz, traducción en lenguaje natural. En este contexto, surgió un nuevo enfoque para ocupar el lugar simbólico de la IA: aprendizaje automático. 1. ¿QUÉ ES DEEP LEARNING? MACHINE LEARNING Un sistema de aprendizaje automático se entrena en lugar que sea explícitamente programado. Se presenta con muchos ejemplos relevantes para una tarea y encuentra estadísticas de estructuras en estos ejemplos que eventualmente permite que el sistema llegue a reglas para automatizar la tarea. Por ejemplo, si desea automatizar la tarea de etiquetado de fotos de tus vacaciones, podrías presentar un sistema de aprendizaje automático con muchos ejemplos de imágenes ya etiquetadas por humanos, y el sistema aprendería reglas estadísticas para asociar imágenes específicas a etiquetas específicas. 1. ¿QUÉ ES DEEP LEARNING? Machine learning: a new programming paradigm 1. ¿QUÉ ES DEEP LEARNING? Aunque el aprendizaje automático solo comenzó a florecer en la década de 1990, se ha convertido en el subcampo más popular y exitoso de la IA, una tendencia impulsada por la disponibilidad de hardware más rápido y conjuntos de datos más grandes. El aprendizaje automático está relacionado con la matemática y la estadística, pero difiere de las estadísticas en varios aspectos importantes, en el mismo sentido que sentido de que la medicina está relacionada con la química, pero no puede reducirse a la química, ya que la medicina se ocupa de sus propios sistemas distintos con sus propias propiedades distintivas. De semejante forma con la estadística, el aprendizaje automático tiende a tratar con conjuntos de datos grandes y complejos (como un conjunto de datos de millones de imágenes, cada una de las cuales consta de decenas de miles de píxeles) para las que el análisis estadístico, como el análisis bayesiano, sería poco práctico. Como resultado, el aprendizaje automático, y especialmente el aprendizaje profundo, exhibe comparativamente poca teoría, tal vez muy poca, y es fundamentalmente una disciplina de ingeniería. A diferencia de la física teórica o las matemáticas, el aprendizaje automático es un campo muy práctico impulsado por hallazgos empíricos y profundamente dependiente de los avances en software y hardware. 1. ¿QUÉ ES DEEP LEARNING? Las entradas son las coordenadas de nuestros puntos. Los resultados esperados son los colores de nuestros puntos. Una forma de medir si nuestro algoritmo está haciendo un buen trabajo podría ser, por ejemplo, el porcentaje de puntos que se están clasificando correctamente. 1. ¿QUÉ ES DEEP LEARNING? En este caso, definimos el cambio de coordenadas a mano. Pero si en lugar de eso probáramos sistemáticamente diferentes posibles cambios de coordenadas y utilizarlos como retroalimentación considerando el porcentaje de puntos correctamente clasificados, entonces estaríamos haciendo learning (aprendiendo). El aprendizaje, en el contexto del aprendizaje automático, describe un proceso de búsqueda automática para mejores representaciones. 1. ¿QUÉ ES DEEP LEARNING? Esto es, técnicamente, el aprendizaje automático: buscar representaciones útiles de algunos datos de entrada, dentro de un espacio predefinido de posibilidades, utilizando como guía una señal de retroalimentación. Esta sencilla idea permite resolver una gama notablemente amplia de tareas intelectuales, desde el reconocimiento de voz hasta la conducción autónoma de automóviles. El deep learning (aprendizaje profundo) es un subcampo específico del aprendizaje automático: una nueva visión de la representación de datos que ponen énfasis en el aprendizaje de capas sucesivas de representaciones significativas en una red neuronal. Lo deep (profundo) en el aprendizaje profundo no es una referencia a ningún tipo de comprensión más profunda lograda por el enfoque. El número de capas que contribuyen a un modelo de datos es llamada profundidad del modelo. El aprendizaje profundo moderno a menudo implica decenas o incluso cientos de capas sucesivas de representaciones que son expuestas a los datos de entrenamiento. 1. ¿QUÉ ES DEEP LEARNING? El aprendizaje profundo es un framework (marco conceptual/estructura de trabajo) matemático para aprender representaciones a partir de datos 1. ¿QUÉ ES DEEP LEARNING? 1. ¿QUÉ ES DEEP LEARNING? 1. ¿QUÉ ES DEEP LEARNING? Propiedades de Deep Learning − Simplicidad: Deep Learning utiliza modelos que están sustentados en cinco o seis operaciones de tensores. − Escalabilidad: Deep Learning se acondiciona muy bien a la computación paralela en GPU (“Unidad de Procesamiento Gráfico”) y TPU (“Unidad de Procesamiento Tensorial”) tomando ventaja de la Ley de Moore (postula que la cantidad de transistores en un microprocesador, y por extensión la capacidad de procesamiento se duplicará aproximadamente cada dos años). La restricción más importante es la disponibilidad de computación paralela disponible. − Versatilidad y reusabilidad: Deep Learning es entrenado con datos adicionales sin necesidad de repetir el procedimiento desde el inicio o desde cero lo que convierte a Deep Learning en una herramienta para el aprendizaje en línea y para el análisis de grandes volúmenes de datos con sus correspondientes modelos. La reusabilidad de Deep Learning se refiere a que un modelo entrenado 1. ¿QUÉ ES DEEP LEARNING? Antes del aprendizaje profundo: una breve historia del aprendizaje automático El aprendizaje profundo ha alcanzado un nivel de atención pública e inversión en la industria nunca visto antes en la historia de la IA, pero no es la primera forma exitosa de aprendizaje automático. Es seguro decir que la mayoría de los algoritmos de aprendizaje automático utilizados en la industria hoy en día no son algoritmos de aprendizaje profundo. El aprendizaje profundo no siempre es la herramienta adecuada para el trabajo - a veces no hay suficientes datos para que el aprendizaje profundo sea aplicable y, a veces, el problema se resuelve mejor con un algoritmo diferente. El aprendizaje profundo es una herramienta entre muchas otras. Es importante conocer otros enfoques y practicarlos cuando sea apropiado. Algoritmos previos a deep learning: modelamiento probabilístico, ANN, SVM, tree decision, random forests, XGBoost, LightGBM y CatBoost. 1. ¿QUÉ ES DEEP LEARNING? Las dos técnicas para tener éxito en el aprendizaje automático son: a) Gradient boosting machines. Biblioteca XGBoost. b) Deep Learning. Biblioteca Keras. 1. ¿QUÉ ES DEEP LEARNING? XGBoost (Extreme Gradient Boosting) Algoritmo de aprendizaje supervisado que se utiliza comúnmente para problemas de regresión y clasificación. Aquí hay algunas situaciones en las que se podría considerar aplicar XGBoost: Conjuntos de datos grandes: XGBoost es eficiente en términos de velocidad y rendimiento en conjuntos de datos grandes. Si estás trabajando con conjuntos de datos extensos, XGBoost podría ser una opción a considerar. Alta dimensionalidad: Cuando tienes un gran número de características, XGBoost puede manejar la alta dimensionalidad de los datos y lidiar con la multicolinealidad. 1. ¿QUÉ ES DEEP LEARNING? Problemas de clasificación y regresión: XGBoost es versátil y puede aplicarse tanto a problemas de clasificación como de regresión. Si estás tratando con cualquiera de estos tipos de problemas, XGBoost podría ser una elección sólida. Datos desbalanceados: XGBoost permite manejar clases desbalanceadas mediante la configuración de parámetros específicos. Esto lo hace útil en problemas donde hay una distribución desigual de las clases. Problemas de aprendizaje no lineal: XGBoost puede capturar patrones complejos y relaciones no lineales en los datos, lo que lo hace útil en problemas en los que las relaciones entre las características y la variable objetivo son complicadas. Ensemble Learning: XGBoost es una implementación de ensemble learning basada en árboles de decisión, lo que significa que combina múltiples modelos débiles para formar un modelo fuerte. Si estás interesado en técnicas de ensemble learning, XGBoost es una opción destacada. Optimización de parámetros: XGBoost ofrece flexibilidad en la optimización de parámetros, lo que permite ajustar el modelo para obtener un rendimiento óptimo en datos específicos. 1. ¿QUÉ ES DEEP LEARNING? Deep learning: se utiliza cuando se enfrenta a problemas complejos que involucran grandes cantidades de datos y patrones no lineales. Aquí hay algunas situaciones en las que se podría considerar aplicar deep learning: Grandes conjuntos de datos: El deep learning suele requerir grandes cantidades de datos para aprender patrones complejos y realizar predicciones precisas. Es especialmente eficaz cuando se dispone de grandes conjuntos de datos para el entrenamiento. Problemas de visión por computadora: El deep learning ha demostrado ser altamente exitoso en problemas de visión por computadora, como reconocimiento de objetos, segmentación de imágenes, detección de caras, entre otros. Problemas de procesamiento del lenguaje natural (PLN): En tareas relacionadas con el procesamiento del lenguaje natural, como la traducción automática, el análisis de sentimientos, la generación de texto y la respuesta a preguntas, el deep learning, y en particular las redes neuronales recurrentes (RNN) y las redes neuronales transformer, son comúnmente utilizadas. 1. ¿QUÉ ES DEEP LEARNING? Reconocimiento de patrones complejos: Cuando se trata de problemas en los que las relaciones entre las variables son no lineales o altamente complejas, el deep learning puede ser más capaz de capturar estas relaciones que otros enfoques de aprendizaje automático. Aprendizaje no supervisado: El deep learning se ha aplicado con éxito en problemas de aprendizaje no supervisado, como la generación de imágenes, la reducción de dimensionalidad y el aprendizaje de representaciones útiles sin la necesidad de etiquetas explícitas. Problemas de regresión no lineal: En situaciones donde la relación entre las variables de entrada y la variable objetivo es no lineal, las arquitecturas de redes neuronales profundas pueden ser capaces de modelar estas relaciones de manera efectiva. Análisis de secuencias temporales: El deep learning, especialmente las redes neuronales recurrentes (RNN) y las redes neuronales transformer, es efectivo en la modelización de secuencias temporales, lo que lo hace adecuado para problemas 1. ¿QUÉ ES DEEP LEARNING? Aprendizaje transferido: El deep learning se presta bien al aprendizaje transferido, donde los modelos pre-entrenados en grandes conjuntos de datos pueden adaptarse a tareas específicas con conjuntos de datos más pequeños. Es importante señalar que el uso del deep learning también está influenciado por la disponibilidad de recursos computacionales, ya que los modelos profundos pueden ser intensivos en términos de capacidad de cálculo. Además, en algunos casos, modelos más simples de aprendizaje automático pueden ser suficientes y más eficientes en términos de tiempo y recursos. 1. ¿QUÉ ES DEEP LEARNING? Ejemplo: Imagina dos hojas de papel de colores: uno rojo y otro azul. Colócalos uno encima del otro. Ahora arrúgalos juntos formando una pequeña bola. Esa bola de papel arrugada son tus datos de entrada, y cada hoja de papel es una clase de datos en un problema de clasificación. ¿Qué red neuronal (o cualquier otro modelo de aprendizaje automático) se supone debe hacer para descubrir una transformación de la bola de papel que la desarrugue tal que las 1. ¿QUÉ ES DEEP LEARNING? Con el aprendizaje profundo, esto se implementaría como una serie de transformaciones simples del espacio 3D, como los que podrías aplicar en la bola de papel con los dedos, un movimiento a la vez. Desenrollar bolas de papel es de lo que se trata el aprendizaje automático: encontrar representaciones claras para múltiples datos complejos y altamente plegados. En este punto, deberías tener una intuición bastante buena de por qué el aprendizaje profundo sobresale en esto: toma el enfoque de descomponer incrementalmente una complicada transformación geométrica en una larga cadena de elementales, que es más o menos la estrategia que un humano seguiría para desarrugar una bola de papel. Cada capa en una red profunda aplica una transformación que desenreda un poco los datos, y una pila profunda de capas hace que sea manejable un 1. ¿QUÉ ES DEEP LEARNING? Tensores Un tensor se define por tres atributos: Número de ejes (rango): por ejemplo, un tensor 3D tiene tres ejes y una matriz tiene dos ejes. Esto también se denomina ndim del tensor en bibliotecas de Python como Numpy. Forma: se trata de una tupla de enteros que describe el número de dimensiones del tensor tiene a lo largo de cada eje. Por ejemplo, el ejemplo de matriz anterior tiene forma (3, 5), y el ejemplo del tensor 3D tiene forma (3, 3, 5). Un vector tiene una forma con un solo elemento, como (5,), mientras que un escalar tiene una forma vacía, (). Tipo de datos (normalmente denominado dtype en las bibliotecas de Python): este es el tipo de datos contenido en el tensor; Por ejemplo, el tipo de un tensor podría ser float32, uint8, float64, y así sucesivamente. En raras ocasiones, es posible que vea un tensor de caracteres. Tenga en cuenta que los tensores de cadena no existen en Numpy (ni en la mayoría de las otras bibliotecas), porque los tensores se ubican en segmentos de memoria contiguos preasignados: y cadenas, siendo variables en 1. ¿QUÉ ES DEEP LEARNING? Representación de los datos. Tensores. Scalars (0D tensors) Vectors (1D tensors) import numpy as np x = np.array([12, 3, 6, 14]) print(x) x.ndim Matrices (2D tensors) x = np.array([[5, 78, 2, 34, 0], [6, 79, 3, 35, 1], [7, 80, 4, 36, 2]]) x.ndim 1. ¿QUÉ ES DEEP LEARNING? Representación de los datos. Tensores. 3D tensors and higher-dimensional tensors x = np.array([[[5, 78, 2, 34, 0], [6, 79, 3, 35, 1], [7, 80, 4, 36, 2]], [[5, 78, 2, 34, 0], [6, 79, 3, 35, 1], [7, 80, 4, 36, 2]], [[5, 78, 2, 34, 0], [6, 79, 3, 35, 1], [7, 80, 4, 36, 2]]]) x.ndim 1. ¿QUÉ ES DEEP LEARNING? Image data Las imágenes suelen tener tres dimensiones: altura, anchura y profundidad de color. Aunque Las imágenes en escala de grises (como nuestros dígitos MNIST) tienen un solo canal de color y podrían, por lo tanto, ser almacenados en tensores 2D. Por convención, los tensores de imagen son siempre 3D, con un canal de color para imágenes en escala de grises. Un lote de 128 imágenes en escala de grises de tamaño 256 × 256 podrían almacenarse en un tensor de forma (128, 256, 256, 1), y un lote de 128 imágenes en color se puede almacenar en un tensor de forma (128, 256, 256, 3) Ver figura adjunta. El Tensorflow de Google, coloca el eje de profundidad de color al final:(samples, 1. ¿QUÉ ES DEEP LEARNING? Video data Los datos de vídeo son uno de los pocos tipos de datos del mundo real para los que necesitarás tensores 5D. Un vídeo puede entenderse como una secuencia de fotogramas, siendo cada fotograma una imagen en color. Debido a que cada fotograma se puede almacenar en un tensor 3D (alto, ancho, color_depth), una secuencia de fotogramas se puede almacenar en un tensor 4D (fotogramas, altura, anchura, color_profundidad), y, por lo tanto, un lote de diferentes videos se puede almacenar en un tensor de forma 5D (muestras, fotogramas, altura, anchura, color_profundidad). - Por ejemplo, un videoclip de YouTube de 60 segundos, 144 × 256 muestreado a 4 fotogramas por segundo tendría 240 fotogramas. Un lote de cuatro de estos clips de vídeo se almacenaría en un tensor de forma (4, 240, 144, 256, 3). ¡¡¡Eso es un total de 106’168,320 valores!!! - Si el dtype del tensor es float32, entonces cada valor se almacenaría en 32 bits, por lo que el tensor representaría 405 MB. ¡Pesado! (bits=megabytes×8×1024×1024) Los 2. RED NEURONAL Anatomía de una red neuronal Capas, que se combinan en una red (o modelo) Los datos de entrada y los objetivos correspondientes La función de pérdida, que define la señal de retroalimentación utilizada para el aprendizaje El optimizador, que determina cómo se desarrolla el aprendizaje Puede visualizar su interacción como se ilustra en la figura adjunta: la red, compuesta de capas que están encadenadas entre sí, asigna los datos de entrada a las predicciones. La función de pérdida luego compara estas predicciones con los objetivos, lo que produce un valor de pérdida: una medida de qué tan bien las predicciones de la red coinciden con lo que se esperaba. El optimizador utiliza este valor de pérdida para actualizar los pesos de la red. 2. RED NEURONAL 2. RED NEURONAL Layers from keras import layers layer = layers.Dense(32, input_shape=(784,)) Estamos creando una capa que solo aceptará como entrada tensores 2D donde la primera dimensión es 784 (el eje 0, la dimensión del lote, no se especifica y, por lo tanto, cualquier valor sería aceptado). Esta capa devolverá un tensor con primera dimensión transformado a 32. Dense(32,...): Crea una capa densa con 32 neuronas (también llamadas nodos o unidades). En una capa densa, cada neurona está conectada a todas las neuronas de la capa anterior y todas las neuronas de la capa siguiente. input_shape=(784,): Esto especifica la forma de entrada para esta capa. En este caso, indica que la capa espera una entrada de tamaño 784. Esto podría ser, por ejemplo, si estás trabajando con datos de imágenes de 28x28 píxeles (784 píxeles en total). Al utilizar Keras, no tiene que preocuparse por la compatibilidad, ya que las capas que agrega a sus modelos se crean dinámicamente para que coincidan con la forma de la capa entrante. Por ejemplo, supongamos que escribes lo siguiente: from keras import models from keras import layers model = models.Sequential() model.add(layers.Dense(32, input_shape=(784,))) model.add(layers.Dense(32)) 2. RED NEURONAL Models: networks of layers — Un modelo de aprendizaje profundo es un gráfico acíclico (Un gráfico acíclico es un tipo de grafo -conjunto de nodos o vértices y las aristas que los conectan- que no contiene ciclos) dirigido de capas. Algunas de las topologías más comunes son los siguientes: Two-branch networks: Este tipo de arquitectura puede ser útil cuando se desea capturar diferentes aspectos o características en los datos de entrada de manera separada y luego combinar esa información para tomar decisiones. Multihead networks: Este enfoque es comúnmente utilizado en modelos de atención, donde diferentes cabezas pueden aprender a atender diferentes partes de la entrada, permitiendo una mayor capacidad para capturar patrones complejos. Inception blocks: Los bloques de Inception son eficaces para capturar patrones de diferentes escalas en una imagen, lo que puede mejorar la capacidad de la red para reconocer objetos en una variedad de tamaños. — La topología de una red define un espacio de hipótesis. Tal vez recuerdes que en el capítulo 1, definimos el aprendizaje automático como "la búsqueda de representaciones útiles de algunos datos de entrada, dentro de un espacio predefinido de posibilidades, utilizando como guía una señal". — Al elegir una topología de red, restringe su espacio de posibilidades (espacio de hipótesis) a una serie específica de operaciones tensoriales, mapeando los datos de entrada a la salida de los resultados. — Lo que se busca es un buen conjunto de valores de peso para los tensores involucrados en estas operaciones tensoriales. 2. RED NEURONAL Loss functions and optimizers: keys to configuring the learning process Función de pérdida (función objetivo): la cantidad que se minimizará durante el entrenamiento. Representa una medida del éxito de la tarea en cuestión. Optimizador: determina cómo se actualizará la red en función de la función de pérdida. Implementa una variante específica de descenso de gradiente estocástico. Una red neuronal que tiene múltiples salidas puede tener múltiples funciones de pérdida (una por salida). Pero el proceso de descenso de gradiente debe basarse en un único valor de pérdida escalar; por lo tanto, para las redes de pérdidas múltiples, todas las pérdidas se combinan (a través del promedio) en un solo escalar. Elegir la función objetivo adecuada para el problema correcto es extremadamente importante: su red tomará cualquier atajo que pueda para minimizar la pérdida; por lo tanto, si el objetivo no se correlaciona completamente con el éxito de la tarea en cuestión, su red terminará haciendo cosas que tal vez no se hubiera deseado. 2. RED NEURONAL Loss functions and optimizers: keys to configuring the learning process Imagina una IA estúpida y omnipotente entrenada a través de SGD, con esta función objetivo mal elegida: "maximizar el bienestar medio de todos los seres humanos vivos". Para facilitar su trabajo, esta IA podría optar por matar a todos los humanos excepto unos pocos y se centran en el bienestar de los restantes, porque el promedio del bienestar no se ve afectado por la cantidad de seres humanos que quedan. ¡Puede que eso no sea lo que desea! Solo recuerda que todas las redes neuronales que construyas serán igual de despiadadas en reducir su función de pérdida, así que elige el objetivo sabiamente, o tendrás que enfrentarte a efectos secundarios no deseados. Afortunadamente, cuando se trata de problemas comunes como la clasificación, la regresión, y la predicción de secuencias, hay pautas simples que puede seguir para elegir la pérdida correcta. Por ejemplo, usará la entropía cruzada binaria para una clasificación de dos clases, una entropía cruzada categórica para un problema de clasificación de muchas clases, un error cuadrado medio para un problema de regresión, clasificación temporal conexionista (CTC) para un problema de aprendizaje secuencial, y así sucesivamente. Solo cuando estás trabajando en algo verdaderamente nuevo en investigación tendrá que desarrollar sus propias funciones objetivas. Más adelante se detallará explícitamente qué funciones de pérdida elegir para una amplia gama de áreas comunes. 3. INTRODUCCIÓN A KERAS Los softwares más utilizados para realizar Deep Learning son: TensorFlow, Keras, Caffe, Theano, Keras Torch y Pytorch (Chollet, 2018). Keras es una librería que proporciona bloques de alto nivel para construir TensorFlow/Theano/CNTK/… modelos de Deep Learning. Keras analiza el problema en forma modular CUDA/cuDNN BLAS,Eigen utilizando librerías de tensores optimizadas con el motor backend. Los tres motores backend utilizados GPU CPU por Keras son: TensoFlow backend, Theano backend y Microsoft Cognitive Toolkit (CNTK). La figura 5 es la representación gráfica del manejo modular de un problema por Keras. 3. INTRODUCCIÓN A KERAS Metodología Según (Chollet, 2018), el flujo de trabajo de un deep learning con Keras está compuesto de las siguientes etapas: a. Definir el training data: tensores de entrada y tensores objetivos. b. Definir una red de capas (o modelo) que transforma las entradas a los objetivos. c. Configurar el proceso de aprendizaje eligiendo la función pérdida, el optimizador y alguna métrica para monitorear el proceso. d. Aplicar el método fit() a la training data. Existen dos formas de construir un modelo: a. Usando la clase secuencial que consiste en apilar capas. Esta arquitectura de construcción de una red es la más común. b. Aplicando el API funcional que consiste de capas de gráficos acíclicos dirigidos con arquitecturas arbitrarias. 3. INTRODUCCIÓN A KERAS Ejemplo: — Modelo de dos capas definido mediante la clase Sequential (nótese que estamos pasando la forma esperada de los datos de entrada a la primera capa): from keras import models from keras import layers model = models.Sequential() model.add(layers.Dense(32, activation='relu', input_shape=(784,))) model.add(layers.Dense(10, activation='softmax’)) — Y aquí está el mismo modelo definido usando el método functional API: input_tensor = layers.Input(shape=(784,)) x = layers.Dense(32, activation='relu')(input_tensor) output_tensor = layers.Dense(10, activation='softmax')(x) model = models.Model(inputs=input_tensor, outputs=output_tensor) — Con la API funcional, está manipulando los tensores de datos que procesa el modelo y aplica capas a este tensor como si fueran funciones. 3. INTRODUCCIÓN A KERAS Ejemplo: — Una vez definida la arquitectura del modelo, no importa si se ha utilizado un modelo secuencial o la API funcional. Todos los pasos siguientes son los mismos. — El proceso de aprendizaje se configura en el paso de compilación, donde se especifica el optimizador y la(s) función(es) de pérdida que el modelo debe usar, así como las métricas que desea monitorear durante el entrenamiento. A continuación, se muestra un ejemplo con una sola función de pérdida, que es el caso más común: from keras import optimizers model.compile(optimizer=optimizers.RMSprop(lr=0.001), loss='mse’, metrics=['accuracy']) — Finalmente, el proceso de aprendizaje consiste en pasar matrices Numpy de datos de entrada (y el dato objetivo/target correspondiente) al modelo a través del método fit(), similar a lo que haría en Scikit-Learn y varias otras bibliotecas de aprendizaje automático: model.fit(input_tensor, target_tensor, batch_size=128, epochs=10) 3. INTRODUCCIÓN A KERAS NOTA: En una red neuronal con ReLU, el peso de la variable de entrada juega un papel crucial en la forma en que la neurona se activa y procesa la información. El peso determina la importancia que se le da a esa variable específica en la salida de la neurona. Relación entre el peso y la activación ReLU: Ejemplo numérico: Supongamos que tenemos una neurona con dos variables de entrada, x1 y x2, y sus pesos correspondientes, w1 y w2. La función de activación de la neurona es ReLU. Si x1 = 2, x2 = -1, w1 = 0.5 y w2 = -0.3, entonces la salida de la neurona sería: f(x1, x2) = max(0, (0.5 * 2) + (-0.3 * -1)) = max(0, 1.3) = 1.3 En este caso, la variable x1 tiene un impacto positivo en la salida de la neurona debido a su peso positivo, mientras que la variable x2 tiene un efecto inhibitorio debido a su peso negativo. La salida final de la neurona es 1.3, que es un valor positivo debido a la dominancia del efecto de la variable x1. 3. INTRODUCCIÓN A KERAS NOTA (continuación): Relación entre el peso de la variable de entrada y la función sigmoidal Ejemplo numérico: Supongamos una neurona con dos variables de entrada (x1, x2) y sus pesos (w1, w2) y una función sigmoide como función de activación. Si: x1 = 2, x2 = -1, w1 = 0.5 y w2 = -0.3, la salida de la neurona sería: f(x1, x2) = 1 / (1 + exp(-(0.5 * 2 + (-0.3) * (-1)))) = 0.731 En este caso, la variable x1 tiene un impacto mayor en la salida debido a su peso positivo y la pendiente más pronunciada de la sigmoide en ese lado. La variable x2, con un peso negativo, tiene un efecto menor y desplaza la sigmoide hacia la izquierda. 3. INTRODUCCIÓN A KERAS NOTA (continuación): Relación entre el peso de la variable de entrada y la función sigmoidal Ejemplo numérico: En resumen: El peso de la variable de entrada modula la sensibilidad de la neurona a esa variable. Los pesos positivos aumentan la sensibilidad y la pendiente de la sigmoide, mientras que los pesos negativos la disminuyen. Los pesos grandes amplifican la señal, mientras que los pesos pequeños la atenúan. El ajuste de los pesos durante el entrenamiento optimiza la precisión de la red neuronal. 3. INTRODUCCIÓN A KERAS NOTA (continuación): Ejemplo numérico de la relación entre la salida de la función de activación y la función pérdida Consideremos una red neuronal con una única neurona que procesa una entrada escalar x y produce una salida escalar y. La función de activación de la neurona se define como la sigmoidal estándar: y la función de pérdida utilizada para evaluar el desempeño de la red neuronal es el error cuadrático medio (MSE), que se define como:. Supongamos que la entrada a la neurona son los valores x = 0.5, 0.8 y la salida deseada es y = 1 y 1.2. La salida de la función de activación se calcula como: y Luego, = (0.622459-1)^2+(0.6899745-1.2)^2 = 0.4026632. 3. INTRODUCCIÓN A KERAS Ejemplo: Classifying movie reviews: a binary classification example En este ejemplo, se clasifican las reseñas de películas como positivas o negativas, en función del contenido de texto de las reseñas. Ver Archivos del Moodle. 4. INTRODUCCIÓN A PYTORCH https://pytorch.org/tutorials/beginner/basics/intro.html