Redes Neurais em IA e Deep Learning - página 35

 

Tensorflow para la investigación de aprendizaje profundo - Clase 1



Tensorflow para la investigación de aprendizaje profundo - Clase 1

El video "Tensorflow para la investigación de aprendizaje profundo - Conferencia 1" presenta el tutorial sobre TensorFlow cubriendo la necesidad de un tutorial de nivel profundo, explicando los conceptos básicos y las aplicaciones prácticas de la biblioteca. La conferencia cubre cómo construir y estructurar modelos usando TensorFlow desde una perspectiva de aprendizaje profundo. El tutorial también cubre las herramientas utilizadas en TensorBoard para visualizar un modelo gráfico computacional, incluido cómo operar con nodos, bordes y sesiones, que brindan opciones de cálculo eficientes mediante la ejecución de subgráficos. El disertante recomienda aprender TensorFlow desde cero para crear modelos personalizados y manejar los recursos de manera eficiente, con la capacidad de ejecutarse en CPU, GPU, Android o iOS, al tiempo que brinda la capacidad de implementar modelos.

  • 00:00:00 En esta sección, el orador presenta el tutorial sobre TensorFlow explicando que se necesitan tutoriales en video que no sean demasiado superficiales y que aborden los puntos que otros tutoriales pasan por alto. Anuncia que la conferencia seguirá el contenido de CS 20 de la Universidad de Stanford y utiliza las diapositivas creadas por Chip Huyen, con sus pensamientos personales. Además, señala que TensorFlow es una biblioteca para computación numérica, desarrollada por Google, que permite gráficos y computaciones numéricas, lo que la hace adecuada para construir varios modelos de aprendizaje automático que van desde la regresión logística hasta modelos de aprendizaje profundo. TensorFlow también brinda la capacidad de implementar modelos en CPU, GPU, Android o iOS.

  • 00:05:00 En esta sección, el orador analiza el concepto de puntos de control: estados guardados de modelos que permiten la continuación desde el mismo punto en caso de interrupciones. Se destaca la importancia de la diferenciación en los marcos de aprendizaje profundo, y el orador sugiere intentar escribir capas de retropropagación manualmente para comprender la facilidad que Tensorflow aporta al proceso. La popularidad de Tensorflow se atribuye a su uso por parte de una gran comunidad, y se analizan varios proyectos, como la transferencia de estilo de imagen, la generación de escritura a mano y StackGAN. La conferencia tiene como objetivo cubrir el modelo gráfico computacional de Tensorflow, la construcción de funciones y la estructuración de modelos desde una perspectiva de aprendizaje profundo. Finalmente, el orador aconseja utilizar el sitio web de Tensorflow como fuente de las API y bibliotecas más recientes.

  • 00:10:00 En esta sección, el orador analiza la importancia de aprender TensorFlow desde cero. Si bien las abstracciones de alto nivel pueden manejar tareas más complejas, comprender el funcionamiento detrás del código es crucial para crear modelos personalizados. El ponente explica que TensorFlow separa la definición de computación de su ejecución, ensamblando un gráfico computacional y usando una sesión para ejecutar operaciones. La sección explica cómo la definición de operaciones en TensorFlow crea un gráfico que se puede visualizar con la herramienta integrada TensorBoard. El código de ejemplo utilizado muestra nodos para operadores y tensores, donde los valores de borde representan valores de tensor.

  • 00:15:00 En esta sección, el disertante analiza los nodos y los bordes en un gráfico de TensorFlow, así como el uso de sesiones para ejecutar cálculos dentro del gráfico. Los nodos pueden ser operadores, variables o constantes, mientras que los bordes son tensores. Se utiliza una sesión para instanciar el gráfico y ejecutar cálculos, y la sesión se ocupa de los recursos necesarios. Ejecutar un nodo específico en el gráfico con una sesión calculará el gráfico y devolverá el valor del nodo, y el disertante lo demuestra con un ejemplo usando la suma. El objeto de sesión encapsula el entorno de recursos para que se ejecuten los operadores y los objetos de tensor. El disertante también menciona el uso de la declaración "con" como alternativa al cierre explícito de la sesión.

  • 00:20:00 En esta sección, el video explica el concepto de evaluación perezosa en Tensorflow. Establece que cuando se crea un gráfico en Tensorflow, no se calcula previamente ni se almacena en caché en algún lugar, sino que los cálculos se realizan con pereza cuando se necesitan. El poder de la evaluación perezosa proviene del hecho de que no es necesario calcular todo, por lo que ahorra un montón de cálculos a medida que profundizamos en los modelos. Al llamar al método de ejecución de punto de sesión, el primer argumento es una lista de nodos dentro de la lista de búsquedas que deben calcularse, y Tensorflow calcula todos estos nodos diferentes y devuelve los resultados como una lista.

  • 00:25:00 En esta sección, el disertante analiza los beneficios de modelar cálculos como un gráfico en TensorFlow, incluida la capacidad de ejecutar subgráficos en paralelo en varias CPU o GPU. Explican cómo especificar un gráfico específico para que se ejecute en una GPU en particular mediante el comando GPU del dispositivo TF y cómo crear varios gráficos en TensorFlow, lo que podría ser útil en casos como el aprendizaje conjunto en el que puede tener diferentes modelos ejecutándose en paralelo. El disertante también señala que las sesiones en TensorFlow pueden ser codiciosas en términos de uso de recursos, por lo que puede ser necesario administrar los recursos con cuidado cuando se usan múltiples gráficos.

  • 00:30:00 En esta sección, el disertante analiza cómo crear y manipular gráficos en TensorFlow. Explican que se pueden crear múltiples sesiones, pero puede ser complejo pasar datos entre ellas. Se recomienda usar solo una sesión por simplicidad. Para agregar nodos a un gráfico, se usa TF dot Graph API, donde el gráfico instanciado se puede configurar como predeterminado. Cuando se crea una instancia de la sesión, el gráfico se puede pasar como un argumento y todo el entorno de ejecución se crea a su alrededor. Es importante evitar mezclar dos gráficos y, para obtener un identificador del gráfico predeterminado, se utiliza el valor predeterminado API TF dot get underscore.

  • 00:35:00 En esta sección, el orador analiza las ventajas de usar gráficos en TensorFlow. Uno de los beneficios es la capacidad de ejecutar subgráficos e incluso una sola operación, en lugar de tener que ejecutar todo el gráfico, lo que hace que los cálculos sean más eficientes. TensorFlow también tiene un modo distribuido, lo que permite que los cálculos se ejecuten en diferentes dispositivos y máquinas cuando el cálculo se describe mediante subgráficos. La conclusión de esta sección es la importancia de configurar gráficos de cálculo y ejecutar subgráficos dentro de una sesión.
 

Tensorflow para la investigación de aprendizaje profundo - Clase 2



Tensorflow para la investigación de aprendizaje profundo - Clase 2

La conferencia sobre TensorFlow para la investigación de aprendizaje profundo cubre una amplia gama de temas, incluidas operaciones básicas, tipos de tensores, marcadores de posición y carga diferida. Se enfatiza la importancia de utilizar TensorBoard para visualizar el gráfico que se está ejecutando, y se analizan varias funciones de la API de TensorFlow, incluida la reproducción aleatoria aleatoria, el recorte aleatorio, el multinomial TF.dot y la función gamma aleatoria. El video también cubre los conceptos de definir 0-ness para diferentes tipos de datos, inicializar variables, asignarles valores y los beneficios de usar una sesión interactiva de TensorFlow. Por último, se cubre en detalle el uso de marcadores de posición en TensorFlow y se analizan los problemas potenciales al usar marcadores de posición con formas indefinidas.

El orador también analiza el uso de marcadores de posición en TensorFlow, incluido cómo alimentar múltiples puntos de datos y usar dictados libres. Luego, la lección pasa a la carga diferida, donde el cálculo se difiere hasta el tiempo de ejecución para evitar que el gráfico se hinche debido a múltiples nodos de la misma operación en bucles. Separar la definición de los objetos de operación del código de cómputo y estructuración para definiciones de variables y funciones de cómputo ayuda a evitar problemas con las funciones de llamada en TensorFlow. El orador también cubre cómo el optimizador minimiza la entropía cruzada y actualiza los pesos y sesgos mientras usa propiedades para estructurar el código de TensorFlow de manera eficiente.

  • 00:00:00 En esta sección de la lección, el instructor cubre operaciones básicas, tipos de tensores, marcadores de posición y carga diferida. Demuestran cómo visualizar el gráfico TF usando TensorBoard con un programa de gráficos simple que se visualiza usando TensorBoard. El proceso implica agregar un escritor de archivos de resumen de tabla TF al contexto de la sesión, proporcionar una ubicación para escribir los eventos, especificar qué escribir y luego cerrar el escritor cuando haya terminado. También muestran cómo hacer que el gráfico sea más legible agregando argumentos de nombre.

  • 00:05:00 En esta sección, el orador enfatiza la importancia de utilizar TensorBoard para visualizar el gráfico que se ejecuta, que es una función automática en TensorFlow que no está disponible en otros marcos. Luego, la conferencia profundiza en la firma de la función TF.constant y cómo se puede especificar o inferir su valor, forma y tipo de datos. Además, el orador explica qué sucede cuando verificar_forma se establece en verdadero o falso, y cómo TensorFlow maneja los nombres únicos de las constantes. Finalmente, la clase demuestra cómo crear un vector y una matriz, sumarlos y usar TensorBoard para visualizar el gráfico.

  • 00:10:00 En esta sección de la conferencia, se introduce el tema de la transmisión en TensorFlow y se demuestra cómo es similar a NumPy. La transmisión se muestra a través de ejemplos de suma y multiplicación de constantes en una matriz. También se cubre el concepto de crear tensores precargados con ciertos valores, ya sea con ceros o unos, y cómo crear tensores rellenos con un valor personalizado utilizando el método TF.fill. Se enfatiza la importancia de establecer correctamente el tipo de datos para estos tensores. En general, la conferencia enfatiza la importancia de comprender las similitudes y diferencias entre TensorFlow y otras bibliotecas numéricas, como NumPy.

  • 00:15:00 En esta sección, el orador analiza algunos tipos diferentes de restricciones y secuencias que se pueden usar en Tensorflow. Un ejemplo es el uso de linspace para crear una secuencia de intervalos equidistantes, donde los valores de inicio y finalización son float 32 o float 64. Otro ejemplo es la función normal aleatoria, que genera un tensor de una forma específica mediante el muestreo de una distribución normal. La normal truncada es similar, pero muestra dentro de dos desviaciones estándar de la media. Finalmente, se analiza la mezcla aleatoria como una forma de mezclar los valores de un tensor en una dimensión específica. El ponente sugiere practicar estas funciones para desarrollar la memoria muscular y evitar depender constantemente de la documentación.

  • 00:20:00 En esta sección, el disertante analiza varias funciones de la API de Tensorflow, comenzando con la función aleatoria aleatoria, que mezcla datos en la cuarta dimensión de forma predeterminada, lo que la hace útil para conjuntos de datos de imágenes. La función de recorte aleatorio recorta bloques contiguos de datos de una forma específica de un tensor. La función multinomial TF.dot toma muestras de una distribución multinomial con un tensor logit y un número de muestras determinados. Finalmente, se discute la función gamma aleatoria, que es otra distribución en estadística que tiene dos parámetros: forma y beta.

  • 00:25:00 En esta sección, el orador analiza el uso de las funciones de TensorFlow para generar secuencias y constantes generadas aleatoriamente para la investigación de aprendizaje profundo. Se presenta la función set_random_seed, que permite a los usuarios configurar una fuente aleatoria para todo el gráfico, lo que hace que los resultados sean más determinísticamente aleatorios y permite a los usuarios repetir los experimentos de manera constante. El orador también explica varias funciones de TensorFlow para operaciones básicas, como la suma de elementos, la multiplicación de matrices y las operaciones de módulo. Además, el orador enfatiza que algunos de los tipos nativos de Python, como boolean y string, se pueden usar con TensorFlow.

  • 00:30:00 En esta sección de la conferencia, el orador analiza los conceptos de definición de 0-ness para diferentes tipos de datos, como vectores, matrices y cadenas, en TensorFlow, y cuál será el resultado esperado para cada tipo. También cubren los tipos de datos TensorFlow, que incluyen lento 32 64, en 8 16 32 64, y cómo se pueden usar indistintamente con NumPy. Además, el orador advierte contra el uso de constantes en TensorFlow, ya que se almacenan en la definición del gráfico, lo que puede causar problemas más adelante.

  • 00:35:00 En esta sección, el orador analiza el uso de las variables de TensorFlow y explica que los usuarios pueden definir una variable mediante TFDOTvariable junto con un valor y un nombre opcional. Los tamaños se deducen del valor que se ingresa, y los usuarios pueden optar por inicializar sus variables mediante la función TF.global_variables_initializer(). El orador advierte que las variables no inicializadas generarán errores, pero que los usuarios pueden inicializar solo un subconjunto de las variables si es necesario. Además, el orador explica que las constantes son diferentes de las variables, ya que la constante es un operador, mientras que una variable es una clase con múltiples funciones y métodos a los que los usuarios pueden llamar.

  • 00:40:00 En esta sección, el video explica las diferentes formas de inicializar variables en TensorFlow, una de las cuales es llamando a la opción "asignar" en ellas con un valor determinado. Este enfoque puede ser útil cuando se entrena un modelo mediante el aprendizaje por transferencia, donde a algunas capas se les asignan valores de un modelo previamente entrenado, mientras que otras se inicializan aleatoriamente. El video también explica cómo inicializar una sola variable y cómo obtener el valor de una variable usando el método "eval". Además, el video explica que al asignar un valor a una variable, está bien si la variable no se ha inicializado antes, y la opción "asignar" puede inicializar la variable antes de asignar el valor.

  • 00:45:00 En esta sección, el video cubre la inicialización de variables y la asignación de valores a ellas. El inicializador op asigna el valor inicial de una variable a la variable misma. Además, la operación de asignación suma, resta o multiplica el valor actual de una variable por un valor nuevo, mientras que la operación secundaria de asignación resta el valor nuevo del valor actual. Varias sesiones mantendrán sus propias copias de variables e inicializaciones, y es importante administrar y seguir cuidadosamente la ruta de ejecución cuando se trata de varias sesiones para evitar resultados inesperados. Por último, las variables no inicializadas no tendrán ningún efecto en las asignaciones ni en las operaciones, y todas las sesiones deben cerrarse para liberar recursos.

  • 00:50:00 En esta sección, el orador analiza la inicialización de variables en la biblioteca TensorFlow. Al ejecutar TensorFlow, todas las variables utilizadas en el código deben inicializarse. Esto puede ser arriesgado cuando se utilizan múltiples variables, ya que pueden depender unas de otras. En casos como estos, se debe usar el valor de inicialización de la variable para asegurarse de que el valor de la variable sea seguro antes de usarlo para inicializar otra variable. Luego, el orador continúa explicando los beneficios de usar una sesión interactiva de TensorFlow y cómo usar la sesión para evaluar una serie de operaciones dentro del código. Finalmente, el disertante analiza la dependencia de control, un método para garantizar que todas las operaciones relevantes se ejecuten antes de llamar a la operación final. Esto puede ser útil en modelos complejos de aprendizaje automático que contienen muchas operaciones.

  • 00:55:00 En esta sección, el video analiza los marcadores de posición en TensorFlow, que permiten ensamblar un gráfico sin conocer los valores de los datos que se utilizarán en el cálculo. Los marcadores de posición actúan como marcadores de posición para los valores reales que se calcularán en la línea y se definen mediante el operador TF.placeholder con un tipo y forma definidos. Cuando se ejecutan operaciones que involucran marcadores de posición, se debe crear un diccionario con los marcadores de posición y sus valores, y este diccionario se alimenta luego a la llamada session.run(). Vale la pena señalar que, si bien los marcadores de posición pueden tener la forma establecida en ninguno, algunas operaciones requieren que se defina la forma, lo que puede causar errores.

  • 01:00:00 En esta sección, el video analiza los marcadores de posición y cómo son operaciones de primera clase válidas por sí mismas, que se pueden visualizar en TensorBoard. La sección también cubre cómo alimentar múltiples puntos de datos y cómo usar el dictado libre para cualquiera de las variables o constantes en su gráfico. Luego, el video pasa a la carga diferida, donde los objetos se crean solo cuando son necesarios, y a la carga normal, donde se crea un nodo dentro del gráfico antes de ejecutarlo. El concepto de carga diferida ayuda con la gestión de la memoria, especialmente cuando se trabaja con grandes conjuntos de datos.

  • 01:05:00 En esta sección, el orador explica la carga diferida y sus implicaciones para TensorFlow. La carga diferida es una técnica en la que el cálculo se aplaza hasta el tiempo de ejecución, en lugar de en la construcción del gráfico; esto puede dar lugar a varios nodos de la misma operación en el gráfico de cálculo, especialmente en los bucles. Para evitar abultar el gráfico y otros problemas asociados, el orador recomienda separar la definición de los objetos de operación del cálculo y ejecución de las operaciones. Además, el orador enfatiza la importancia de estructurar el código para que las definiciones de variables estén en un lugar y las funciones informáticas estén en otro.

  • 01:10:00 En esta sección, el disertante explica cómo estructurar el código para evitar problemas con las funciones de llamada cuando se usa TensorFlow para la investigación de aprendizaje profundo. Usando las propiedades de Python, el disertante demuestra cómo definir atributos internos como 'start_prediction', 'optimized' y 'error'. La primera parte del bloque de código calcula el tamaño de los datos, el tamaño objetivo, el peso y el sesgo antes de agregar una operación. La salida resultante de esta operación se suma al gráfico. La función 'optimizar' sigue el mismo patrón, creando los nodos iniciales la primera vez que se llama y devolviendo identificadores a estos nodos las veces posteriores que se llama.

  • 01:15:00 En esta sección, el orador analiza cómo el optimizador minimiza la entropía cruzada y actualiza los pesos y sesgos en TensorFlow. Cuando se llama al optimizador por primera vez, TensorFlow hace la retropropagación y actualiza las variables que contribuyen a la pérdida. Cuando se llama al optimizador posteriormente, TensorFlow ya tiene el gráfico y calcula los nodos entrantes para minimizar y actualizar los pesos sin llamar a ningún nodo adicional. El uso de propiedades ayuda a estructurar el código de TensorFlow de manera más eficiente. La próxima lección proporcionará un ejemplo para comprender mejor este proceso.
 

Tensorflow para la investigación de aprendizaje profundo - Clase 3



Tensorflow para la investigación de aprendizaje profundo - Clase 3

La tercera lección sobre TensorFlow para la investigación de aprendizaje profundo cubre la regresión lineal y la regresión logística utilizando el conjunto de datos MNIST. El disertante muestra cómo entrenar un modelo de regresión lineal en TensorFlow mediante la creación de marcadores de posición para datos de entrada, la inicialización de variables entrenables para pesos y sesgos, la elaboración de predicciones, el cálculo de pérdidas y la definición del optimizador como descenso de gradiente con una tasa de aprendizaje específica. La conferencia también explica el descenso de gradiente estocástico de mini lotes y la importancia de recordar la forma de las variables. La precisión del modelo se calcula comparando el índice del valor máximo obtenido de la función TF argmax con la variable objetivo y, calculando el número de predicciones correctas usando TF reduce sum y TF float, y dividiéndolo por el número total de pruebas. ejemplos Finalmente, el disertante señala que este modelo no se considera poderoso y existen modelos más robustos como capas convolucionales que dan mayor precisión.

  • 00:00:00 En esta sección, el orador comienza la tercera lección sobre TensorFlow para la investigación de aprendizaje profundo y comienza con una revisión del material de la lección anterior. Explican cómo TensorFlow separa la definición del gráfico de cálculo de su ejecución y cómo ensamblar un gráfico al agregarle varias operaciones. Luego discuten las constantes, variables y marcadores de posición de TF y sus funcionalidades dentro de un gráfico. El orador enfatiza la importancia de evitar la carga diferida y, en cambio, separar el ensamblaje del gráfico y su ejecución para una eficiencia óptima. Luego presentan el primer ejemplo de regresión lineal y explican cómo predecir la variable dependiente Y en función de las variables independientes en el conjunto de datos. El orador recomienda que los oyentes sigan los ejemplos y resuelvan los problemas por sí mismos.

  • 00:05:00 En esta sección, el disertante explica los conceptos básicos de la regresión lineal y demuestra cómo entrenar un modelo de regresión lineal en TensorFlow. Se usa un modelo lineal simple donde el valor predicho de y es W multiplicado por X, sumado a B. La pérdida se calcula como la diferencia entre el valor predicho y el valor real de Y, y el entrenamiento ocurre minimizando la pérdida optimizando el variables entrenables de W y B. Luego, el disertante comparte el código para un ejemplo de regresión lineal con datos de entrada que son el número de incendios y la variable objetivo de salida es el número de pruebas en una muestra determinada. El código demuestra cómo crear marcadores de posición para los datos de entrada, inicializar las variables entrenables de W y B, generar predicciones, calcular la pérdida y definir el optimizador como descenso de gradiente con una tasa de aprendizaje específica.

  • 00:10:00 En esta sección, el disertante describe el proceso de entrenamiento de un modelo en TensorFlow para la investigación de aprendizaje profundo. Después de crear el modelo y diseñar la función de pérdida, el siguiente paso es iniciar una sesión y ejecutar el modelo durante un número definido de épocas. Cada época implica ejecutar repetidamente los datos de entrenamiento a lo largo de la sesión y actualizar las variables para minimizar la pérdida. El proceso se visualiza a través de TensorBoard y el modelo resultante se puede usar para predecir la salida para cualquier valor de entrada dado. El disertante también nota la presencia de un valor atípico en los datos que afecta la predicción del modelo.

  • 00:15:00 En esta sección, el disertante explica la función de los optimizadores en los modelos de entrenamiento en TensorFlow y enumera varios optimizadores, incluidos el descenso de gradiente, el momento de graduación, Adam, RMSprop, gradiente proximal y graduación proximal. El disertante enfatiza la importancia de probar el desempeño del modelo en datos que no ha visto antes para asegurar que el modelo sea generalizable. Para abordar la sensibilidad de la función de pérdida de error cuadrático a los valores atípicos, el disertante presenta la función de pérdida de Huber y explica cómo funciona. El disertante también proporciona instrucciones sobre cómo codificar la función de pérdida de Huber en TensorFlow.

  • 00:20:00 En esta sección, el disertante explica la implementación de la pérdida de Huber, que es una función de pérdida comúnmente utilizada en el aprendizaje profundo. La pérdida de Huber se usa para problemas de regresión y funciona al encontrar el residuo entre predicciones y etiquetas. Si el residual es menor que el valor Delta, se devuelve una función llamada Small Res. Sin embargo, si es mayor que Delta, se devuelve Large Res. Luego, el disertante pasa a discutir la regresión logística utilizando el conjunto de datos MNIST. La regresión logística se usa para problemas de clasificación y funciona calculando el logit como X en W más B. El resultado de esto luego se pasa a través de una función softmax, produciendo una distribución de probabilidad. La función de pérdida utilizada en este caso es la pérdida de entropía cruzada, que mide la distancia entre dos distribuciones de probabilidad.

  • 00:25:00 En esta sección, el instructor explica el concepto de descenso de gradiente estocástico de mini lotes y el uso de lotes mientras entrena modelos para el aprendizaje profundo. Al hacerlo, ayuda a aprovechar al máximo la memoria de la GPU y es eficiente cuando no podemos usar el conjunto de entrenamiento completo. El tutorial incluye pasos para crear un marcador de posición para el modelo, inicializar los valores de peso y sesgo para las características de entrada y salida, y crear un modelo con tensorflow usando la función tf.random.normal para la inicialización. También se enfatizó la importancia de recordar la forma de estas variables al crearlas, específicamente con la última dimensión de la característica de entrada y el número de clases.

  • 00:30:00 En esta sección, se analiza el modelo DF simple con dimensionalidad para un tamaño de lote de 10, donde se usa la función de pérdida de entropía cruzada para calcular la pérdida. Se define un optimizador y, una vez que se entrena el modelo, se prueba para encontrar el número total de predicciones correctas. Las predicciones correctas se calculan utilizando el lote de logits y la función softmax, donde los valores de probabilidad se alimentan al modelo y se comparan con las etiquetas reales para calcular los valores de predicción correctos. Se recomienda no ejecutar el optimizador en el equipo de prueba para evitar el sobreajuste.

  • 00:35:00 En esta sección, el presentador explica cómo calcular la precisión del modelo. La función TF argmax se usa para obtener el valor máximo en la fila y devuelve el índice del dígito que tiene la probabilidad más alta. Comparamos este índice con la variable objetivo y. Luego, calculamos el número de predicciones correctas usando TF reduce sum y TF float. Finalmente, dividimos el número de predicciones correctas por el número total de ejemplos de prueba para obtener la precisión, que es del 90 % para este modelo lineal específico. El presentador también señala que este modelo no se considera poderoso y que existen modelos más robustos, como capas convolucionales, que brindan una mayor precisión.
 

Tensorflow para la investigación de aprendizaje profundo - Clase 4



Tensorflow para la investigación de aprendizaje profundo - Clase 4

En la lección 4 de la serie TensorFlow for Deep Learning Research, el orador profundiza en las incrustaciones de palabras en el procesamiento del lenguaje natural basado en el aprendizaje profundo. La conferencia explica el concepto de aprendizaje de incrustaciones de palabras para problemas de PNL y describe el proceso de representación de palabras como vectores numéricos en redes neuronales. La conferencia analiza diferentes métodos para generar vectores de palabras usando CBOW basado en IA y saltar gramos y abordar el problema de la complejidad computacional en softmax usando muestreo negativo y NCE. Además, el disertante destaca el proceso de incrustación de variables en TensorFlow y el uso de t-SNE para visualizar vectores de palabras de alta dimensión en dimensiones reducidas. Finalmente, la lección concluye con un resumen de los conceptos cubiertos y un resumen de la próxima lección, que se centrará en la construcción de modelos de palabras.

  • 00:00:00 En esta sección, el disertante analiza el concepto de incrustaciones de palabras en PNL basado en el aprendizaje profundo. Las incrustaciones de palabras son una forma de representar palabras como números en una red neuronal, que captura las relaciones semánticas entre palabras. El objetivo es construir un modelo que pueda agrupar conceptos similares, como países, al proyectarlos en un espacio bidimensional. El disertante también explica el proceso de aprendizaje de incrustaciones de palabras a través del conteo y presenta el enfoque más nuevo de usar retropropagación con redes neuronales.

  • 00:05:00 En esta sección, el orador discute formas de representar palabras como vectores usando la matriz de co-ocurrencia. Sin embargo, la matriz de coocurrencia es muy grande y escasa, lo que dificulta trabajar con ella. Para abordar esto, el orador sugiere usar SVD truncado para encontrar una aproximación de bajo rango de la matriz. Esto implica factorizar la matriz en tres matrices y seleccionar solo el primer K de los vectores singulares correctos para usarlos como representaciones. Sin embargo, SVD es una operación computacionalmente costosa, especialmente para vocabularios grandes, lo que dificulta su escalado. Además, agregar una nueva palabra al vocabulario requeriría rehacer todo el cálculo.

  • 00:10:00 En esta sección, el video analiza dos métodos para generar vectores de palabras utilizando métodos basados en la creación de IA: bolsa continua de palabras (CBOW) y salto de gramo. CBOW usa el contexto alrededor de la palabra objetivo para predecir la palabra central, mientras que skip gram usa la palabra central para predecir las palabras de contexto. Se utilizan vectores one-hot para representar cada palabra, y se crea una matriz de peso a través de una red neuronal simple para aprender los vectores de palabras. Las muestras de entrenamiento se eligen seleccionando un tamaño de ventana y moviendo la ventana sobre el texto. La red neuronal está entrenada para encontrar la probabilidad de cualquier otra palabra en el contexto dada una palabra específica en medio de la oración.

  • 00:15:00 En esta sección de la conferencia, el orador explica la técnica de incrustación de palabras, que consiste en representar palabras como vectores para que sean interpretables por la red neuronal. La técnica consiste en seleccionar aleatoriamente una palabra de un contexto y usar una matriz de peso para aprender los vectores de palabras, que luego se emparejan con una matriz de salida para crear una distribución de probabilidad de palabras en el vocabulario. La función softmax se usa para normalizar la distribución de salida escalar, por lo que las palabras con contextos similares tendrán probabilidades similares asignadas. Mediante el uso de este enfoque, un ejemplo en la conferencia mostró cómo las palabras inteligente y inteligente ocurrirían en contextos similares y, por lo tanto, los vectores de palabras para estas dos palabras serían muy similares.

  • 00:20:00 En esta sección, el disertante analiza posibles soluciones al problema de la complejidad computacional que surge con softmax. Los dos métodos que se utilizan comúnmente para abordar este problema son el muestreo negativo y la estimación del contraste de ruido (NCE). Aunque NCE puede aproximarse a softmax con una garantía teórica, ambos métodos producen resultados similares a efectos prácticos. Luego, la conferencia profundiza en las definiciones de distribuciones empíricas y de conocimiento, donde el objetivo es aproximar la distribución empírica con la ayuda de los parámetros del modelo. Finalmente, el disertante presenta NCE como un método para reducir el problema de estimación del modelo de lenguaje.

  • 00:25:00 En esta sección, el orador explica cómo generarán datos para el problema de entrenamiento de dos clases utilizando la clasificación binaria proxy. Muestrean una palabra central de la P tilde C y luego toman una muestra verdadera de PT minúscula P tilde W coma C. Generarán K muestras de ruido usando QW y les asignarán la etiqueta, D, que es igual a 0 para indicar que estos los puntos de datos son ruido. Luego calculan la probabilidad conjunta de D, coma W en los datos de dos clases creando una mezcla de dos distribuciones. Usando la definición de probabilidad condicional, pueden convertir esto en la probabilidad condicional de D, dados W y C para los dos casos en que D es 0 y cuando es 1.

  • 00:30:00 En esta sección, el disertante discute el problema del costoso cálculo de la función de partición y cómo resolverlo utilizando la Estimación Contrastiva de Ruido (NCE). NCE propone agregar la función de partición como un parámetro para cada palabra de contexto empírico y aprenderla a través de la propagación hacia atrás. Fijando el parámetro Vc a uno y reemplazando la P tilde W coma C con u theta W coma C dividida por la función de partición por Vc, se obtiene un problema de clasificación binaria. El objetivo es maximizar la probabilidad condicional de D con respecto a las K muestras negativas, que se puede escribir como una probabilidad logarítmica. El orador explica cómo NCE reemplaza la expectativa con una aproximación de Monte Carlo, lo que hace que el proceso sea menos costoso desde el punto de vista computacional.

  • 00:35:00 En esta sección, se analiza el uso de Estimación de contraste de ruido (NCE) en lugar de Muestreo negativo (NS). NCE puede reducir el objetivo de modelado del lenguaje a un problema de clasificación binaria, y se muestra que el objetivo se realizará en el mismo punto para los parámetros del modelo. Se presenta la API de TensorFlow para la pérdida de NCE, así como el uso del alcance del nombre, que permite agrupar los nodos para una mejor visualización en TensorBoard. El ámbito de los nombres de variables también se explica en el contexto de la función de ámbito de nombre.

  • 00:40:00 En esta sección, el disertante analiza el proceso de incorporación de variables en TensorFlow para la investigación de aprendizaje profundo. Al incorporar variables dentro de un ámbito particular, se convierten en parte de una visualización bien agrupada en el tablero de TensorFlow. El disertante también explica cómo visualizar vectores de palabras usando una técnica llamada t-SNE y proporciona una receta para trazar el TC para la visualización. Al tomar los vectores de alta dimensión aprendidos de la matriz de incrustación, t-SNE se usa para reducir las dimensiones a 2D o 3D, mostrando las relaciones vecinas más cercanas entre palabras. Finalmente, el disertante brinda una descripción general del código utilizado para el modelo Word to Work.

  • 00:45:00 En esta sección, el disertante analiza el proceso de definición de marcadores de posición para entrada y salida, la construcción de una variable para la pérdida de NCE y la definición de incorporaciones y la matriz de incorporación. Utilizando un tamaño de vocabulario de 50.000 y un tamaño de lote de 128, la lección define una matriz de incrustación que aprende un vector de palabra de 128 dimensiones para cada palabra. También se explica el proceso de inferencia en skip-gram, y la clase se enfoca en una palabra a la vez para facilitar la explicación. Luego, la función de pérdida se define mediante la API de TensorFlow, y la conferencia proporciona un desglose de las variables clave, como las muestras negativas y la cantidad de pasos de capacitación.

  • 00:50:00 En esta sección, el orador explica cómo se usa NCE (estimación contrastiva de ruido) para crear un problema de clasificación binaria que ayuda a resolver la complejidad de softmax. Cada uno de los 64 ejemplos negativos y uno positivo creados para la clasificación proxy corresponde a un vector de palabra. La diferenciación automática de TensorFlow se usa para actualizar los pesos de un clasificador binario para separar el único ejemplo positivo de los 64 ejemplos negativos. La conferencia finaliza con un resumen de los conceptos cubiertos hasta el momento, incluidos los vectores de palabras, NCE, matrices de incrustación y análisis de componentes principales (PCA). La próxima lección se centrará en la gestión de diferentes programas y experimentos mientras se construyen modelos de palabras.
 

Tensorflow para la investigación de aprendizaje profundo - Clase 5_1



Tensorflow para la investigación de aprendizaje profundo - Clase 5_1

La quinta conferencia de la serie TensorFlow for Deep Learning Research cubre varios temas, incluido cómo administrar los experimentos de aprendizaje profundo de manera efectiva, la importancia de la diferenciación automática en TensorFlow y el proceso de entrenamiento de modelos y almacenamiento de variables. El orador explica que la diferenciación automática se proporciona en marcos de aprendizaje profundo como TensorFlow, lo que facilita a los usuarios codificar sus modelos sin tener que lidiar con gradientes. Si bien no es esencial calcular los gradientes manualmente, sigue siendo útil calcularlos para funciones y redes simples. También se cubre la creación de un modelo de reconocimiento de entidad con nombre con subclases y los marcadores de posición necesarios y las técnicas de alimentación, así como el guardado y la restauración de variables en TensorFlow y el proceso de guardar modelos en diferentes sesiones y máquinas.

  • 00:00:00 En esta sección, el orador analiza cómo administrar los experimentos de aprendizaje profundo y la importancia de la diferenciación automática en TensorFlow. Explican que al escribir un modelo, estarás probando varias cosas e iniciando y reiniciando el entrenamiento, por lo que una gestión adecuada es fundamental. La diferenciación automática se proporciona en marcos de aprendizaje profundo como TensorFlow, lo que facilita a los usuarios codificar sus modelos sin tener que lidiar con los gradientes reales. El orador proporciona un ejemplo en el que la operación de 'gradientes' de TensorFlow permite encontrar los gradientes de Y con respecto a cada tensor en una lista proporcionada como segundo argumento. También mencionan que todo en TensorFlow y el aprendizaje profundo se basa en la diferenciación numérica.

  • 00:05:00 En esta sección, el orador habla sobre si es necesario aprender a calcular gradientes a mano cuando TensorFlow ya tiene una función de gradientes de puntos. Sugiere que, si bien no es esencial, sigue siendo útil calcular gradientes para funciones o redes simples, especialmente cuando se escriben capas personalizadas o se trata de problemas de gradientes como explosiones o gradientes que se desvanecen. También sugiere estructurar el modelo de una manera más orientada a objetos para que sea más fácil de usar y mover el modelo fuera de la función por completo. El orador menciona la estructura de asignación CS 244 D como un ejemplo de cómo encapsular componentes de un modelo de aprendizaje profundo.

  • 00:10:00 En esta sección, el orador analiza el aspecto Modelo de la creación de un modelo de aprendizaje profundo. Explican que el modelo es donde se escribe la inferencia completa, tomando una entrada y realizando un pase hacia adelante para dar la salida, luego agregando la operación de pérdida que crea un escalar de pérdida que compara la salida pronosticada con las etiquetas de salida verdaderas de los marcadores de posición. El orador sugiere abstraer todo como una clase base y crear subclases para tipos específicos de modelos, como un modelo de lenguaje. Finalmente, explican cómo crear un modelo de reconocimiento de entidades con nombre con subclases y las API necesarias, como marcadores de posición y tecnología de alimentación.

  • 00:15:00 En esta sección, aprendemos sobre el proceso de entrenamiento de modelos de aprendizaje profundo con TensorFlow y cómo administrar experimentos de manera efectiva. El proceso implica la creación de matrices variables y la obtención de incrustaciones para datos de entrenamiento antes de ejecutar una época de datos de entrenamiento en un bucle, que entrena las matrices de incrustación. Para guardar el progreso, el TF de train.saver guarda las variables en el gráfico en archivos binarios, que se pueden llamar durante ejecuciones futuras para comenzar desde donde se detuvo. El ejemplo de código muestra cómo crear una instancia del objeto protector y recorrer el paso de entrenamiento para ejecutar el optimizador, guardar la sesión y algún nombre de directorio.

  • 00:20:00 En esta sección, el orador profundiza en los detalles de la clase Guardar de TensorFlow y las variables asociadas con ella. La variable de paso global, definida como una variable de código no entrenable que comienza en 0, se puede incrementar cada vez que se llama a la operación de entrenamiento proporcionándola en la función "minimizar". Además, la variable "max to keep" limita la cantidad de puntos de control guardados a los más recientes, y la variable "keep checkpoint every" controla la frecuencia con la que se guarda un punto de control, lo que la hace útil para ciclos de entrenamiento prolongados.

  • 00:25:00 En esta sección, el instructor explica cómo guardar y restaurar variables en TensorFlow. Explica que los usuarios pueden especificar una lista de variables o un diccionario para guardar variables específicas en lugar de guardar todo. El beneficio de esto es ahorrar espacio y aumentar el rendimiento, especialmente cuando se realiza transferencia de aprendizaje. Para restaurar variables, los usuarios pueden llamar a la función tf.latest_checkpoint, que buscará el último punto de control en un directorio específico y restaurará desde allí usando la función session.restore(). El instructor también menciona que los usuarios pueden guardar el gráfico en TensorFlow 0.11 en adelante creando colecciones con claves y valores correspondientes a las variables y luego instanciando el objeto de guardado con todos los valores predeterminados.

  • 00:30:00 En esta sección de la conferencia, el instructor explica cómo guardar y restaurar modelos de TensorFlow en diferentes sesiones e incluso en diferentes máquinas. Los pasos implican ejecutar el inicializador de variables globales, guardar la sesión y utilizar el método "exportar metagráfico" para crear un archivo de gráfico guardado. Este gráfico guardado se puede restaurar y las variables se pueden reinicializar en un proceso o máquina completamente diferente si el gráfico original no está disponible. El instructor también menciona TF.summary, que se tratará en el próximo video.
 

Tensorflow para la investigación de aprendizaje profundo - Clase 5_2



Tensorflow para la investigación de aprendizaje profundo - Clase 5_2

El video tutorial analiza la implementación de operaciones de resumen de TF, que permiten la visualización de datos en TensorBoard. El tutorial cubre tres tipos de operaciones de resumen: TF.summary.scalar, TF.summary.histogram y TF.summary.image, y explica cómo fusionarlos en uno y escribirlos en un archivo de eventos usando la clase FileWriter. El disertante demuestra cómo usar los ámbitos de nombres para visualizar el gráfico en TensorBoard y define un escritor de prueba y un escritor capacitado para escribir resúmenes en archivos separados. Hacen hincapié en aprovechar las capacidades de visualización de TensorBoard para comprender mejor el rendimiento del modelo. En general, TensorBoard es una herramienta fundamental para realizar un seguimiento del progreso de la capacitación, y la API para agregar operaciones y fusionarlas es sencilla.

  • 00:00:00 En esta sección, el tutorial en video explica cómo usar las operaciones de resumen de TF, que son funciones que adjuntan información a los nodos en el gráfico computacional para generar datos de resumen para visualización en TensorBoard. El tutorial cubre tres tipos de operaciones de resumen: TF.summary.scalar, para adjuntar a los nodos de valor escalar en el gráfico, como pérdida, entropía cruzada y tasas de aprendizaje; TF.summary.histogram, para visualizar la distribución de un tensor, como los pesos de una capa en particular; y TF.summary.image, para visualizar imágenes, entradas o incluso algunas capas intermedias. El tutorial explica cómo fusionar todas las operaciones de resumen en una sola y escribirlas en un archivo de eventos usando la clase FileWriter.

  • 00:05:00 En esta sección, el orador explica cómo configurar un escritor de archivos y un resumen en TensorFlow para visualizar datos en TensorBoard. Recomiendan configurar el escritor para que se ejecute a intervalos específicos, ya que ejecutarlo en cada paso podría producir demasiados datos. Al proporcionar al autor del archivo el objeto gráfico, el gráfico computacional se puede guardar como una definición de gráfico y visualizarse en TensorBoard. El orador demuestra cómo visualizar escalares e histogramas en TensorBoard seleccionando pasos específicos en el eje x para ver los valores correspondientes en el eje y. Animan a los usuarios a aprovechar las capacidades de visualización de TensorBoard para comprender mejor el rendimiento de su modelo.

  • 00:10:00 En esta sección, el disertante analiza la definición de una función llamada variable_summary, que toma un tensor y agrega un nodo de resumen. La función cubre media, desviación estándar, máx., mín. e histograma; cada variable se analizará desde una perspectiva de denominación. También discuten la idea de desorden en las distribuciones donde las pérdidas son mayores cuando el modelo no está lo suficientemente entrenado y, a medida que aumenta el tamaño del paso, las pérdidas disminuyen. Se pueden usar diferentes escritores de archivos para varios experimentos, y se pueden guardar en el equipo de registro. La opción de vivienda densa permite seleccionar y alternar entre diferentes opciones.

  • 00:15:00 En esta sección, el video se enfoca en implementar operaciones de resumen y usar ámbitos de nombres en TensorFlow para la visualización. El código define ámbitos de nombre para la entropía cruzada y la precisión para ayudar a visualizar el gráfico en TensorBoard. La operación fusionada se obtiene llamando a TF.summary.merge_all y esta operación se usa cuando se ejecuta la sesión. El código también define un escritor de prueba y un escritor capacitado para escribir los resúmenes resultantes en archivos separados. Para cada paso, el código entrena el modelo y escribe los resúmenes. Si el número de pasos mod 10 es igual a cero, el resumen se escribe para el escritor de la prueba y para todos los demás pasos, se escribe para el escritor capacitado.

  • 00:20:00 En esta sección, el orador analiza el método para ejecutar TensorBoard para visualizar eventos tanto en el escritor de pruebas como en el escritor de trenes simultáneamente. El comando "s about - - clock there is equal to the path" ayuda a visualizar todo, y el host actual es localhost dos puntos seis cero cero seis, que se puede navegar a través del navegador. Además, la imagen de puntos de resumen de puntos TF tiene un nombre de salidas máximas de tensor por defecto, e interpreta un tensor de cuatro dimensiones con los canales y el ancho de la altura del tamaño de la ruta de la forma. El argumento de salidas máximas determina cuántas imágenes posteriores desplazadas se renderizarán y mostrarán en TensorBoard. En general, TensorBoard es una herramienta fundamental para realizar un seguimiento del progreso del entrenamiento, y la API para agregar varias operaciones y fusionarlas es sencilla.
 

Intuición detrás de la retropropagación como gráfico computacional



Intuición detrás de la retropropagación como gráfico computacional

La intuición detrás de la retropropagación como gráfico computacional se explica en este video. El orador explica cómo se usa una función sustituta para estimar la función empírica que asigna entradas a salidas, y que el objetivo es encontrar los parámetros que minimizan la función de pérdida. La retropropagación permite calcular el gradiente de la función de pérdida con respecto a cada parámetro a través de un paso hacia atrás del gráfico. Se calculan los gradientes locales para cada puerta en el gráfico y se pueden usar para calcular el gradiente de la salida final con respecto a cada entrada. El orador también explica cómo manejar gradientes para operaciones de ramificación y vectorizadas y cómo garantizar que la dimensionalidad funcione al calcular derivadas.

  • 00:00:00 esta sección, la retropropagación permite que el entrenamiento de las redes neuronales converja rápidamente, y comprenderlo en profundidad puede ser beneficioso para los investigadores. La lección comienza explicando que el objetivo de una red neuronal es encontrar la función que asigna las entradas a las salidas, denotada por F(x), que es una función empírica que podría no ser detectable. La lección describe que se utiliza una función sustituta G(x,θ) para estimar F, donde θ denota los parámetros de la red neuronal, y el objetivo es encontrar los parámetros que minimizan una función de pérdida J. Luego, la lección analiza cómo la técnica de retropropagación permite que la red encuentre los parámetros óptimos calculando el gradiente de la función de pérdida con respecto a cada parámetro a través de un paso hacia atrás del gráfico.

  • 00:05:00 En esta sección, el orador analiza cómo encontrar la derivada de G con respecto a theta, que es crucial para entrenar una red neuronal. El ejemplo utilizado es una función simple de X, Y y Z, donde se debe calcular la derivada parcial de F con respecto a X, Y y Z. Se introduce el concepto de gradientes locales, que son las derivadas de la salida con respecto a la entrada para una determinada operación. Sin embargo, se necesita la regla de la cadena para calcular el resultado final con respecto a la variable distante, que en este caso son X, Y y Z.

  • 00:10:00 En esta sección, vemos cómo encontrar los gradientes en el gráfico computacional usando el flujo hacia atrás del gradiente. El gradiente del nodo de salida es trivialmente 1, y para calcular el gradiente en cada nodo, multiplicamos el gradiente local con el gradiente recibido del nodo anterior. Luego, el programa puede calcular los gradientes finales de del F por Del X, del F por Del Y y del F por Del V. Es crucial tener en cuenta que siempre estamos calculando el gradiente con respecto a la función de pérdida final, que en el caso de una red neuronal, es la función de pérdida J. Finalmente, aprendemos cómo una neurona en una red neuronal realiza una función simple durante el paso hacia adelante y cómo, durante la retropropagación, podemos calcular y usar localmente los gradientes.

  • 00:15:00 En esta sección, el orador explica la intuición detrás de la retropropagación como un gráfico computacional para una neurona. El gradiente local se obtiene multiplicando la función hacia atrás con los valores del Z por Del X y del Z por Del Y. El flujo hacia atrás va en la dirección de la salida de la neurona, donde otras neuronas que le envían datos obtienen Del J por Del X. La técnica de gráfico computacional también se usa para funciones más complejas como la función sigmoidea donde el gradiente hacia atrás se calcula numéricamente. El gradiente local para cada nodo se calcula tomando la derivada de la función y luego multiplicándola por el flujo de gradiente.

  • 00:20:00 En esta sección, el ponente explica cómo calcular los gradientes locales de cada puerta en un gráfico computacional y cómo se pueden utilizar para obtener el gradiente de la salida final con respecto a cada entrada. El ejemplo que se usa en el video involucra un pequeño gráfico computacional que consiste en múltiples puertas, como puertas de suma y multiplicación, y el orador explica la intuición detrás del algoritmo de retropropagación usando este ejemplo. El orador detalla cómo calcular los gradientes locales para cada puerta en el gráfico y muestra cómo se pueden combinar para calcular el gradiente de la salida final con respecto a cada entrada.

  • 00:25:00 En esta sección, el orador discute la intuición detrás de la retropropagación como un gráfico computacional. Explican cómo se calculan los gradientes para diferentes tipos de compuertas, como compuertas sumatorias y compuertas multiplicativas, y el patrón que surge al calcular el flujo hacia atrás. El orador también explica cómo definir funciones de avance y retroceso para cada puerta y, una vez definidas, estas funciones se pueden usar para cualquier gráfico computacional, lo que hace que el proceso sea más eficiente.

  • 00:30:00 En esta sección, el concepto de pases hacia adelante y hacia atrás en la retropropagación se analiza como un gráfico computacional. El pase hacia adelante calcula la salida que se convierte en la entrada para el siguiente nodo hasta que se alcanza la pérdida. En el pase hacia atrás, DZ se establece inicialmente como uno y los cálculos se realizan en la dirección inversa. Cuando se trata de vectores, el gradiente local se toma usando matrices jacobianas y la multiplicación por la izquierda se usa en la regla de la cadena. Del L por Del X o Del L por Del Y se calcula utilizando las dos matrices jacobianas, del Z por Del X o del Z por Del Y y del L por Del V.

  • 00:35:00 En esta sección, el orador explica cómo calcular el paso hacia adelante y la propagación hacia atrás de una función dada usando el gráfico computacional. Usando una función de ejemplo, el orador recorre el proceso de creación de variables intermedias y cálculo del pase hacia adelante. Luego, el orador muestra cómo calcular el paso hacia atrás calculando los gradientes con respecto a la entrada y salida de cada puerta. El ponente destaca la utilidad de tener en cuenta las derivadas de la función sigmoidea.

  • 00:40:00 En esta sección, el orador explica cómo manejar los gradientes para operaciones de ramificación y vectorizadas en retropropagación. Cuando se produce la ramificación, se agregan gradientes y, al calcular los gradientes de las funciones, se pueden reutilizar los gradientes intermedios anteriores. Las operaciones vectorizadas, como la multiplicación de matrices, se pueden manejar de manera similar calculando los gradientes con respecto a cada elemento por separado y usando operaciones de matriz para combinarlos. La dimensionalidad de los gradientes está determinada por la dimensionalidad de la salida de la operación que se está realizando.

  • 00:45:00 En esta sección, el ponente explica cómo garantizar que la dimensionalidad funcione al calcular del D/del W y del D/del X en una función, utilizando el ejemplo de multiplicación de matrices en TensorFlow. Se conocen las dimensiones de W y DD, y dado que la única forma de hacer que la multiplicación funcione es usar W punto punto punto X, es una buena idea memorizar esta fórmula. El orador les recuerda a los espectadores que es importante comprender las operaciones gráficas computacionales en TensorFlow, incluso si los marcos como TensorFlow abstraen tal complejidad. Este conocimiento resultará útil cuando se trate de capas personalizadas, que requieren que el usuario escriba sus pases hacia adelante y hacia atrás.
 

Produciendo el aprendizaje profundo para la visión artificial



Produciendo el aprendizaje profundo para la visión artificial

El CTO y científico jefe de Jumio, Lavash Patel, analiza cómo su empresa utiliza una combinación de expertos en inteligencia artificial e identificación para generar confianza en línea y verificar la autenticidad de los documentos de identificación. El proceso de verificación de identidad es desafiante debido a la variedad de identificaciones y subtipos, así como a la necesidad de rectificación y rechazo de imágenes ilegibles. Para mantener la precisión, se adopta un enfoque humano en el circuito, donde los modelos de IA detectan problemas y un humano verifica la cordura de los resultados. Patel también analiza cómo Jumio produce aprendizaje profundo utilizando un algoritmo híbrido de aprendizaje activo, que se adapta a nuevos subtipos y mejora al volver a capacitarse. Además, enfatiza la importancia de limpiar los datos en el reconocimiento facial y mantener el cumplimiento de PCI cuando se trata de datos confidenciales con fines de aprendizaje automático.

  • 00:00:00 En esta sección, Lavash Patel, CTO y científico jefe de Jumio, describe el negocio de la empresa de generar confianza en línea mediante la combinación de expertos en inteligencia artificial e identificación para verificar la autenticidad de un documento de identificación. El problema con este tipo de proceso de verificación se complica por el hecho de que aceptan tráfico de todo tipo de canales, incluidos teléfonos móviles, cámaras web y llamadas API simples. Para abordar estos problemas, Jumio utiliza una combinación de modelos de clasificación y Facemash para ayudar a verificar la autenticidad de una identificación y la identidad de la persona frente a la cámara.

  • 00:05:00 En esta sección, el orador analiza los desafíos de usar IA para la verificación de identidad, dada la variedad de identificaciones y subtipos que existen. Se enfatiza la importancia de la rectificación o alineación de imágenes, así como la necesidad de rechazar imágenes ilegibles debido a borrosidad o deslumbramiento. La aprobación de imágenes de identificación es un proceso más estricto que el rechazo, ya que todos los componentes deben pasar para que se consideren válidos. Para mantener una precisión estricta y rechazar a los usuarios fraudulentos, se adopta un enfoque humano en el circuito en el que se utilizan modelos de IA para detectar problemas y se utiliza un ser humano para realizar una verificación de la cordura de los resultados. Este enfoque permite una precisión líder en la industria en términos de conversión y detección de fraude.

  • 00:10:00 En esta sección, el orador analiza el aspecto de clasificación de la producción del aprendizaje profundo para la visión artificial. Si bien la clasificación de imágenes se resolvió durante los últimos años utilizando una red preentrenada como Inception versión 4 o Viji 16, el problema es ligeramente diferente debido a las etiquetas agregadas en lugar de etiquetas granulares. Con más de 100 millones de imágenes etiquetadas, descubrir las diferentes clases se ha convertido en un problema de descubrimiento de clases transformado, que el aprendizaje activo puede resolver. El aprendizaje activo híbrido implica un paso de aprendizaje no supervisado o agrupación integrada, comenzando con las clases más populares con ejemplos etiquetados para obtener un puñado de clases.

  • 00:15:00 En esta sección, el orador explica cómo producir aprendizaje profundo para visión por computadora utilizando un algoritmo híbrido de aprendizaje activo. El algoritmo recopila una gran cantidad de muestras por clase y entrena un clasificador para clasificar imágenes con confianza en 50 clases, con niveles de confianza de salida. Luego, el algoritmo agrupa automáticamente las imágenes en las que el clasificador no confía y un agente humano las revisa para agregar nuevas clases según sea necesario. Una vez que se crea el modelo, se implementa como una API y, si existen regulaciones de cumplimiento, se pueden agregar registros, monitoreo y controles de estado. Además, el locutor señala que el algoritmo se adapta a los nuevos subtipos y continúa mejorando al volver a entrenarse, como lo hizo cuando se detectó una nueva identificación con la ortografía incorrecta y el agente humano la rechazó.

  • 00:20:00 En esta sección, el orador explica cómo producen nuevos modelos teniendo siempre un modelo campeón y evaluando nuevos modelos en función de su rendimiento en comparación con el campeón. Este método también permite la mejora continua utilizando una infraestructura híbrida de aprendizaje activo que recopila y limpia continuamente conjuntos de datos. La canalización de producción es sensible a la limpieza de los conjuntos de datos, con una tasa de error objetivo para el entrenamiento que no supera el 20 %. Todo el proceso también debe cumplir con PCI y GDP, lo que significa que todo debe cifrarse y llevarse a los datos en lugar de datos a la capacitación. Luego, el orador presenta un segundo estudio de caso sobre la comparación de rostros, en el que utilizan sesgos de datos sobre la edad, el género y el origen étnico en su beneficio para comparar selfies con identificaciones.

  • 00:25:00 En esta sección, el ponente analiza un posible enfoque para abordar el problema de la detección de usuarios fraudulentos mediante el uso de incrustaciones de rostros y la función de pérdida de tripletes en una red de convolución profunda. El proceso implica recortar rostros con un detector de rostros y conjuntos de datos públicos para entrenar el modelo, seguido de un ajuste fino de los datos de producción. El modelo se ajusta a través del proceso de aprendizaje activo, que implica el uso de una infraestructura supervisada para recolectar muestras informativas y aumentar continuamente los datos. El orador enfatiza la efectividad del aprendizaje activo en una amplia gama de casos de uso.

  • 00:30:00 En esta sección, el ponente enfatiza la importancia de los datos limpios en la visión artificial, especialmente en el reconocimiento facial. Él enfatiza que producir aprendizaje profundo implica mucho más que solo modelar e incluso problemas simples como la clasificación pueden terminar teniendo numerosas complejidades en la etapa de producción. La inteligencia colaborativa o los flujos de trabajo de humanos en el circuito también pueden ser útiles para mejorar los algoritmos y son especialmente importantes en el reconocimiento facial, ya que requiere conjuntos de datos limpios. El ponente también mencionó que su empresa está contratando personal para sus equipos de I+D con sede en Viena y Montreal.

  • 00:35:00 En esta sección, el orador analiza los desafíos de mantener el cumplimiento de PCI cuando se trata de datos confidenciales para fines de inteligencia artificial y aprendizaje automático. El orador explica que los datos solo deben usarse para el propósito previsto y que deben existir ubicaciones y procedimientos de alta seguridad para evitar cualquier acceso no autorizado. El orador también explica que los datos se colocan en cubos de Amazon S3 dentro de PCI DMZ, y que las imágenes ofuscadas se crean con fines de aprendizaje automático, que luego se supervisan de forma remota para garantizar que no haya fugas de datos personales.
 

Gail Weiss: pensando como transformadores



Gail Weiss: pensando como transformadores

Gail Weiss analiza el concepto de codificadores transformadores en este video y explica su capacidad para procesar secuencias y codificarlas en vectores. Weiss destaca varios estudios que exploran las fortalezas y limitaciones de los codificadores de transformadores e introduce un lenguaje de programación llamado lenguaje de procesamiento de secuencias de acceso restringido (RASP) para representar las capacidades de los codificadores de transformadores. También analiza la atención de múltiples cabezas, los patrones de selección y los desafíos de softmax bajo ciertas condiciones, antes de profundizar en el uso de operadores de secuencia y funciones de biblioteca para calcular el inverso y el selector de volteo. Weiss brinda información sobre la creación de un programa óptimo para un transformador y las ideas de los transformadores universales y sándwich, y finalmente analiza el predicado seleccionado y las relaciones binarias frente a orden tres.

También habla sobre los posibles beneficios y desventajas de usar atención de orden superior en los modelos de transformadores, así como la importancia de las conexiones residuales en el mantenimiento de la información a lo largo de las capas. También analiza problemas potenciales con transformadores muy profundos que se desvían del modelo RASP y sugiere el uso de incrustaciones más largas para superar la falta de claridad en la información.

  • 00:00:00 En esta sección del video, Gail Weiss presenta el concepto de codificadores transformadores, que son parte de una red neuronal diseñada para procesar secuencias. Ella explica que el codificador del transformador toma una secuencia dada y la codifica en un conjunto de vectores, con algunos ejemplos populares que incluyen BERT. Luego, Weiss destaca varios estudios que han explorado las fortalezas y limitaciones de los codificadores de transformadores, incluida su capacidad para reconocer lenguajes formales y realizar cálculos. Si bien estos estudios brindan información sobre las capacidades de los codificadores de transformadores, Weiss señala que no ofrecen una intuición clara sobre cómo los transformadores realmente procesan las tareas.

  • 00:05:00 En esta sección, Gail Weiss explica que las redes neuronales recurrentes (RNN) son similares a una máquina de estados finitos, que define las transiciones entre estados en función de los vectores de entrada, mientras genera una clasificación final según el estado alcanzado. Al analizar su poder expresivo utilizando nuestra comprensión de los autómatas finitos deterministas, obtienen información sobre qué hacer con los RNN, lo que permite la conversión de un RNN en un autómata finito ponderado, un autómata finito determinista o un autómata finito determinista ponderado. Sin embargo, esta intuición no existe para los transformadores y existe la necesidad de crear un modelo que tenga un propósito similar para el codificador de transformadores. A diferencia de los RNN, los codificadores de Transformer toman toda su entrada a la vez y procesan todos los tokens de entrada en paralelo a través de una red profunda que aplica el procesamiento una cantidad fija de veces. Aunque no hay estados en Transformers, hay una sensación de procesamiento y propagación de información a través de un conjunto de operaciones.

  • 00:10:00 En esta sección, Gail Weiss explica cómo se puede representar un codificador de transformador como un lenguaje de programación denominado lenguaje de procesamiento de secuencias de acceso restringido (RASP), que describe la creación de operadores de secuencia (S-ops). Los S-ops representan las capas del codificador del transformador que aplican operaciones a la secuencia, creando más información procesada. RASP proporciona dos constantes, tokens e índices, que crean nuevas secuencias de caracteres e índices a partir de cualquier secuencia de entrada, y luego aplica una red de avance de elementos a cada uno de los vectores que entran en la entrada de la capa del codificador del transformador. El programador es responsable del cálculo lógico o razonable de las operaciones aplicadas, ya que pueden ser cualquier operación por elementos.

  • 00:15:00 En esta sección del video, Gail Weiss presenta el concepto de atención de múltiples cabezas, que es una parte de la capa del codificador del transformador que no es elemental. Comienza explicando la atención de un solo cabezal y cómo funciona aplicando dos transformaciones lineales a la secuencia de vectores, creando un conjunto de consultas y un conjunto de claves. La clave describe la información que tiene para ofrecer, y la consulta describe la información que se desea en cada posición. Mediante el producto escalar de la consulta con cada una de las claves, se normalizan los pesos y se obtiene la salida en cada posición. Weiss también aclara una duda respecto a la transformación intermedia de las claves y valores que permiten que el modelo tenga más parámetros.

  • 00:20:00 En esta sección, el orador analiza la autoatención de múltiples cabezas y cómo se puede usar para comprimir múltiples operaciones en una sola capa. El proceso implica dividir los vectores de entrada en vectores de igual longitud y pasar cada bloque a diferentes cabezales. Una vez que se han aplicado las cabezas múltiples, se concatenan para formar el resultado de la autoatención de cabezas múltiples. Aunque no existe dependencia entre los diferentes cabezales, una sola capa puede realizar varias operaciones porque tiene varios cabezales diferentes. Este proceso permite que el programador se preocupe por las cabezas de atención en lugar de la autoatención de múltiples cabezas, lo cual es un problema para el compilador.

  • 00:25:00 En esta sección, Gail Weiss proporciona ejemplos de cómo codificar ciertos patrones de selección para un transformador. Usando el ejemplo de seleccionar posiciones en función de si se describen a sí mismas con un cero, uno o dos, Weiss indica que la primera posición elige las dos últimas posiciones, la segunda posición no elige nada y la tercera posición elige solo la primera. Weiss también explica que se pueden seleccionar varios tipos de comparación, como mayor o igual, menor o igual o desigual, y que los selectores se pueden componer juntos. Sin embargo, Weiss señala que la abstracción de los patrones de selección para los transformadores depende de la razonabilidad de la operación que se realiza, y esto depende del programador para garantizarlo.

  • 00:30:00 En esta sección, el orador analiza los desafíos de usar softmax bajo ciertas condiciones, a saber, que hay un ligero enfoque en las posiciones restantes que no cumplen con los criterios de selección. Para abordar este problema, el orador sugiere que si se aumenta el tamaño de estas incorporaciones, softmax comenzará a aproximarse a una selección estricta de posiciones "menor o igual" y "superior". Luego, la presentación pasa a la idea de la agregación y cómo se pueden seleccionar y ponderar los tokens utilizando un promedio. El orador proporciona un ejemplo de inversión de fichas y cómo crearon un selector de inversión y agregaron las fichas para obtener la secuencia de entrada invertida utilizando el ejemplo de la palabra "hola" para generar "olleh".

  • 00:35:00 En esta sección, el orador explica cómo se puede usar el operador de longitud en los transformadores aunque no sea parte de la entrada, y cómo las decisiones de selección se toman en pares para evitar operaciones de selección arbitrariamente poderosas que podrían ocultar un poder arbitrario. El ponente también habla de otros componentes del transformador como la conexión skip o residual, que vuelve a añadir el valor de las incrustaciones, y las normas de capa, que no están presentes en el modelo RASP. Además, el orador menciona el uso de funciones y la composición de selectores por conveniencia para evitar la repetición de código.

  • 00:40:00 En esta sección, el orador analiza el uso de operadores de secuencia como val, min y max para verificar qué índices están dentro de un cierto rango. También mencionan la utilidad de las funciones de la biblioteca, como el ancho del selector, para implementar funciones como histogramas en el lugar y tokens de conteo en secuencias de entrada. Además, el orador describe cómo calcularon la longitud de una secuencia usando un selector y una función de indicador, señalando que la normalización de capas podría complicar dichos cálculos. Finalmente, sugieren una solución alternativa que involucra una red de retroalimentación para calcular la inversa, pero reconocen que aún puede verse afectada por la normalización de capas.

  • 00:45:00 En esta sección, Gail Weiss analiza cómo los transformadores pueden aprender a calcular el inverso y el selector, incluso cuando se trata de secuencias relativamente cortas. Ella explica además que el análisis del programa Ras se puede usar para determinar cuándo aplicar la computación inversa y cuándo aplicar el selector de volteo, al tiempo que garantiza que los pares seleccionados y agregados sean solo cabezas de atención. Finalmente, explora cómo un transformador real podría realizar el cálculo inverso en dos capas, lo que fue respaldado por los hallazgos de que el transformador logró alcanzar un 99,6 por ciento de precisión al invertir secuencias de entrada de hasta 100 de longitud después de 20 épocas.

  • 00:50:00 En esta sección, Gail Weiss analiza la creación de un programa óptimo para un transformador, que requiere dos capas para realizar la tarea de manera efectiva. Incluso si el programa se reduce a una capa y se agregan el doble de parámetros o se usan dos cabezales, no logrará obtener una alta precisión porque no sabe cómo lidiar con la longitud de secuencia cambiante. Además, los patrones de atención son los mismos en ambas capas, la primera capa utiliza una atención uniforme para calcular la longitud de la secuencia y la segunda capa utiliza el mismo patrón de atención inversa. Más adelante, Weiss demuestra un histograma en el lugar, que implica seleccionar tokens y generar la cantidad de veces que ese token aparece en la secuencia de entrada. Al enfocar cada token en el mismo token que en sí mismo o en la primera posición al comienzo del token de secuencia, utilizan solo un cabezal de atención para entrenar un transformador, lo que facilita mucho el cálculo de la inversa y otros elementos.

  • 00:55:00 En esta sección, Gail Weiss habla sobre la percepción que surge del Transformador universal y el Transformador sándwich, los cuales afectan la forma de pensar y utilizar el modelo del transformador. Ella explica que cada operador de secuencia en RASP es el resultado de un número finito de operaciones, por lo que el lenguaje no es infinitamente poderoso sino un número finito de cálculos O(n^2). También aborda el costo computacional de un cabezal de atención en el codificador del transformador y cómo podría no valer la pena utilizar los cálculos de n^2. Luego, la conversación cambia a una discusión sobre el predicado seleccionado y las relaciones binarias vs. orden tres.

  • 01:00:00 n esta sección, Gail Weiss analiza el posible aumento de potencia de un modelo de transformador con atención de orden superior, como un tercer orden en lugar de un segundo orden. Ella explica que dicho modelo podría potencialmente calcular funciones con más de O (n ^ 2) operaciones, aumentando su poder. Sin embargo, esto también sería más costoso computacionalmente. Weiss también enfatiza la importancia de las conexiones residuales en el modelo del transformador como una forma de retener y reutilizar la información en todas las capas, y sugiere que eliminarlas puede disminuir drásticamente el rendimiento aunque no parezcan una operación distinta.

  • 01:05:00 En esta sección del video, Gail Weiss analiza los posibles problemas que podrían surgir con los transformadores muy profundos y cómo pueden desviarse del modelo RASP. Menciona un documento que leyó en ICML sobre la importancia de eliminar cierta información de un transformador, lo que podría provocar que se pierda información rápidamente. Sin embargo, también señala que la información puede conservarse si se reconoce que es importante. Weiss también analiza la idea de tener una incrustación muy larga para superar los problemas de borrosidad en la información a medida que el transformador profundiza.
 

Visualización y comprensión de las redes neuronales profundas por Matt Zeiler



Visualización y comprensión de las redes neuronales profundas por Matt Zeiler

Matt Zeiler analiza la visualización y la comprensión de las redes neuronales convolucionales (CNN) para el reconocimiento de objetos en imágenes y videos. Describe cómo funcionan las redes neuronales profundas en comparación con los humanos y los primates en el reconocimiento de objetos y muestra cómo las CNN aprenden a identificar objetos al atravesar las capas. Zeiler explica el proceso de mejora de la arquitectura CNN y analiza las limitaciones al entrenar con datos limitados. Por último, responde preguntas sobre el uso de capas inferiores en capas superiores y la aplicación de convoluciones en redes neuronales.

  • 00:00:00 En esta sección, Matt Zeiler describe una técnica para visualizar redes convolucionales que se utilizan para reconocer objetos en imágenes y videos, lo que les permite comprender lo que cada capa está aprendiendo y obtener información para mejorar el rendimiento. Las redes neuronales convolucionales han existido desde finales de los años 80, con nuevos enfoques que utilizan prácticamente la misma arquitectura que antes. El avance en el campo fue del equipo de Geoff Hinton, ya que su red neuronal redujo las tasas de error en el punto de referencia común, ImageNet, en un diez por ciento en lugar del veintiséis por ciento habitual, lo que condujo a un mejor rendimiento en las tareas de reconocimiento.

  • 00:05:00 En esta sección, Matt Zeiler analiza estudios recientes que comparan el rendimiento de las redes neuronales profundas con el de primates y humanos en el reconocimiento de objetos. Un estudio consistió en registrar el disparo de los electrodos en el cerebro de un mono cuando se le presentaron imágenes y comparar su precisión de reconocimiento con la de las redes neuronales profundas y los humanos. Los resultados mostraron que los humanos, las redes neuronales profundas y la corteza de TI del mono se desempeñaron casi por igual cuando las imágenes se presentaron durante menos de 100 milisegundos. Además, Zeiler analiza las redes convolucionales D, que son modelos de aprendizaje no supervisados que se utilizan para reconstruir imágenes mientras se reducen las características de nivel superior, con el objetivo de aprender lo que realmente está aprendiendo una red convolucional.

  • 00:10:00 En esta sección, Matt Zeiler explica la importancia de hacer que las operaciones en redes convolucionales sean reversibles para lograr buenas reconstrucciones, especialmente cuando se trata de múltiples capas de información. Demuestra cómo se visualiza la capa más alta de la red (utilizando un conjunto de validación de 50 000 imágenes) seleccionando el mapa de características único con la activación más fuerte a la vez y usándolo como entrada en la parte superior de la red convolucional para reconstruir las visualizaciones a partir de de abajo hacia arriba La visualización de los mapas de características de la primera capa muestra filtros que comprenden bordes orientados y bordes de color en diferentes orientaciones y frecuencias, que es lo que los investigadores esperaban anteriormente. Sin embargo, la visualización de capas superiores proporciona nuevos conocimientos sobre cómo la red aprende y clasifica diferentes objetos al mostrar las activaciones e invariantes más fuertes en múltiples imágenes.

  • 00:15:00 En esta sección, Zeiler explica el desarrollo de la segunda capa de redes neuronales, que exhibe un conjunto de patrones mucho más complejo que el primero. Las combinaciones de bordes, líneas paralelas, curvas, círculos y bloques de colores, entre otras estructuras, están presentes en la segunda capa. A través de la agrupación, tiene un alcance más amplio de lo que puede procesar de la imagen. Mirando la tercera capa, Zeiler muestra cómo aprende partes de objetos que son cruciales para construir una representación de un objeto, como la cara de un perro o una cara humana. Las características de agrupación permanecen presentes en la tercera capa, pero como una agrupación de cuadrículas o estructuras faciales específicas más relevante desde el punto de vista semántico.

  • 00:20:00 En esta sección, se explica cómo la red neuronal aprende a identificar objetos específicos a medida que pasa por las capas. En la cuarta capa de la red, las conexiones se vuelven más específicas de objetos y las categorías que no son explícitas en las tareas, como el césped, se convierten en una característica. El modelo también aprende a reconocer características plurales, como diferentes razas de perros o diferentes tipos de teclados en diferentes orientaciones. La última capa de convolución se hace más grande debido a los efectos de los límites en las convoluciones a medida que se acerca a la capa de clasificación. El contenido de esta última capa se vuelve altamente específico del objeto ya que el modelo tiene que tomar una decisión sobre a qué clase pertenece la imagen, y solo existen 256 características en esta capa.

  • 00:25:00 En esta sección, Matt Zeiler analiza un experimento para confirmar que las visualizaciones se activan en partes relevantes de la imagen. Deslizaron un bloque de ceros con píxel medio 128 sobre la imagen y registraron las activaciones o probabilidades del modelo. Al bloquear la cara de un perro Pomerania, encontraron que la probabilidad de Pomerania cae significativamente, mientras que la clase más probable es una pelota de tenis cuando la cara está bloqueada. Curiosamente, descubrieron que la quinta capa ha aprendido un detector de texto, ya que elimina la función de manera significativa al bloquear cualquier texto en una imagen, lo que proporciona una noción de que la capa puede asociar texto con otras clases. Por último, utilizaron el modelo del grupo de Toronto que ganó el desafío ImageNet en 2012 y encontraron una gran disparidad en la normalización de filtros en la primera capa.

  • 00:30:00 En esta sección del video, Matt Zeiler analiza el proceso de mejora de la arquitectura de las redes neuronales profundas. Él explica que después de solucionar el problema de la renormalización, quedó claro que los filtros de la primera capa eran demasiado grandes, lo que resultó en filtros muertos. La segunda capa también tenía muchos artefactos de bloqueo, lo que provocó que perdiera información, lo que los llevó a reducir los pasos en la convolución y eliminar los artefactos de bloqueo, y aumentar la flexibilidad en la segunda capa. Estas modificaciones les ayudaron a ganar la competencia ImageNet de 2013 y estos enfoques se usaron nuevamente en competencias posteriores, lo que generó buenos resultados. Zeiler también analiza las capacidades de generalización y los usos de estas redes neuronales para determinar la prominencia.

  • 00:35:00 En esta sección, Zeiler analiza las limitaciones de los modelos profundos cuando solo se usa una pequeña cantidad de datos de entrenamiento, y afirma que los modelos luchan por aprender las funciones correctamente. Él explica que estos modelos son expertos en el reconocimiento de características que son importantes en general para el reconocimiento de objetos, y esto se puede transferir a otras tareas con solo unos pocos ejemplos, como se muestra a través de varias tablas y gráficos. Además, Zeiler examina la importancia de entrenar un modelo profundo al observar todas las capas intermedias y los diferentes tipos de clasificadores. Finalmente, Zeiler sugiere que es posible utilizar un modelo entrenado para limpiar los datos de etiquetas recopilados y podría mejorar potencialmente los modelos de entrenamiento.

  • 00:40:00 En esta sección, Zeiler responde a una pregunta sobre si las capas inferiores de una red neuronal, que han mostrado un rendimiento decente en la clasificación, se pueden usar en capas superiores o cerca de las salidas de clasificación. Explica que puede haber más información en las capas superiores debido a la extracción repetida, pero también podrían ayudar diferentes tipos de información. Luego, la conversación cambia al rendimiento de diferentes capas y consideraciones de hardware para entrenar grandes redes neuronales. Zeiler también analiza la capacidad de las redes neuronales para reconocer clases menos concretas, como emociones o gestos sutiles, y el mapeo de diferentes tamaños de capas.

  • 00:45:00 En esta sección, el orador explica cómo se aplican las circunvoluciones sobre una imagen y otras capas en las redes neuronales. La aplicación de convoluciones depende de dos parámetros: el tamaño del filtro y el paso entre donde se aplica el filtro. En las capas inferiores, el orador explica que se utilizan pasos de dos porque hay demasiado contenido espacial y el cálculo en cada ubicación es demasiado costoso. Sin embargo, hacerlo puede causar una pérdida de información. El orador también menciona que no hay aprendizaje no supervisado en las primeras capas de la red neuronal, y que palabras descriptivas como "abandonado" ya están integradas en el vocabulario.
Razón de la queja: