Redes neuronales de aprendizaje profundo explicadas en inglés sencillo

El aprendizaje automático, y especialmente el aprendizaje profundo, son dos tecnologías que están cambiando el mundo.

Después de un largo "invierno de la IA" que duró 30 años, la potencia de cálculo y los conjuntos de datos finalmente alcanzaron los algoritmos de inteligencia artificial propuestos durante la segunda mitad del siglo XX.

Esto significa que los modelos de aprendizaje profundo finalmente se están utilizando para hacer predicciones efectivas que resuelven problemas del mundo real.

Es más importante que nunca que los científicos de datos y los ingenieros de software tengan una comprensión de alto nivel de cómo funcionan los modelos de aprendizaje profundo. Este artículo explicará la historia y los conceptos básicos de las redes neuronales de aprendizaje profundo en un lenguaje sencillo.

La historia del aprendizaje profundo

El aprendizaje profundo fue conceptualizado por Geoffrey Hinton en la década de 1980. Es ampliamente considerado como el padre fundador del campo del aprendizaje profundo. Hinton ha trabajado en Google desde marzo de 2013 cuando se adquirió su empresa, DNNresearch Inc.

La principal contribución de Hinton al campo del aprendizaje profundo fue comparar las técnicas de aprendizaje automático con el cerebro humano.

Más específicamente, creó el concepto de "red neuronal", que es un algoritmo de aprendizaje profundo estructurado de manera similar a la organización de las neuronas en el cerebro. Hinton adoptó este enfoque porque el cerebro humano es posiblemente el motor computacional más poderoso que se conoce en la actualidad.

La estructura que creó Hinton se denominó red neuronal artificial (o red neuronal artificial para abreviar). Aquí hay una breve descripción de cómo funcionan:

  • Las redes neuronales artificiales se componen de capas de nodo
  • Cada nodo está diseñado para comportarse de manera similar a una neurona en el cerebro.
  • La primera capa de una red neuronal se llama inputcapa, seguida de hiddencapas, luego finalmente la outputcapa
  • Cada nodo de la red neuronal realiza algún tipo de cálculo, que se transmite a otros nodos más profundos en la red neuronal.

Aquí hay una visualización simplificada para demostrar cómo funciona esto:

Una visualización de una red neuronal artificial

Las redes neuronales representaron un inmenso avance en el campo del aprendizaje profundo.

Sin embargo, el aprendizaje automático (y especialmente el aprendizaje profundo) tardó décadas en ganar protagonismo.

Exploraremos por qué en la siguiente sección.

Por qué el aprendizaje profundo no funcionó de inmediato

Si el aprendizaje profundo se concibió originalmente hace décadas, ¿por qué apenas comienza a ganar impulso hoy?

Es porque cualquier modelo de aprendizaje profundo maduro requiere una gran cantidad de dos recursos:

  • Datos
  • Poder computacional

En el momento del nacimiento conceptual del aprendizaje profundo, los investigadores no tenían acceso a suficientes datos o potencia informática para construir y entrenar modelos de aprendizaje profundo significativos. Esto ha cambiado con el tiempo, lo que ha dado lugar a la prominencia del aprendizaje profundo en la actualidad.

Comprensión de las neuronas en el aprendizaje profundo

Las neuronas son un componente crítico de cualquier modelo de aprendizaje profundo.

De hecho, se podría argumentar que no se puede comprender completamente el aprendizaje profundo con un conocimiento profundo de cómo funcionan las neuronas.

Esta sección le presentará el concepto de neuronas en el aprendizaje profundo. Hablaremos sobre el origen de las neuronas de aprendizaje profundo, cómo se inspiraron en la biología del cerebro humano y por qué las neuronas son tan importantes en los modelos de aprendizaje profundo en la actualidad.

¿Qué es una neurona en biología?

Las neuronas del aprendizaje profundo se inspiraron en las neuronas del cerebro humano. Aquí hay un diagrama de la anatomía de una neurona cerebral:

La anatomía de una neurona en el cerebro.

Como puede ver, las neuronas tienen una estructura bastante interesante. Los grupos de neuronas trabajan juntos dentro del cerebro humano para realizar la funcionalidad que requerimos en nuestra vida diaria.

La pregunta que hizo Geoffrey Hinton durante su investigación fundamental en redes neuronales fue si podríamos construir algoritmos informáticos que se comporten de manera similar a las neuronas en el cerebro. La esperanza era que, imitando la estructura del cerebro, pudiéramos capturar parte de su capacidad.

Para ello, los investigadores estudiaron la forma en que se comportan las neuronas en el cerebro. Una observación importante fue que una neurona por sí sola es inútil. En cambio, necesita redes de neuronas para generar cualquier funcionalidad significativa.

Esto se debe a que las neuronas funcionan recibiendo y enviando señales. Más específicamente, las neuronas dendritesreciben señales y las transmiten a través del axon.

Los dendritesde una neurona están conectados con los axonde otra neurona. Estas conexiones se denominan synapses, que es un concepto que se ha generalizado al campo del aprendizaje profundo.

¿Qué es una neurona en el aprendizaje profundo?

Las neuronas en los modelos de aprendizaje profundo son nodos a través de los cuales fluyen los datos y los cálculos.

Las neuronas funcionan así:

  • Reciben una o más señales de entrada. Estas señales de entrada pueden provenir del conjunto de datos sin procesar o de neuronas ubicadas en una capa anterior de la red neuronal.
  • Realizan algunos cálculos.
  • Envían algunas señales de salida a neuronas más profundas en la red neuronal a través de a synapse.

Aquí hay un diagrama de la funcionalidad de una neurona en una red neuronal de aprendizaje profundo:

La función de una neurona en un modelo de aprendizaje profundo

Repasemos este diagrama paso a paso.

Como puede ver, las neuronas en un modelo de aprendizaje profundo son capaces de tener sinapsis que se conectan a más de una neurona en la capa anterior. Cada sinapsis tiene una asociada weight, que afecta la importancia de la neurona precedente en la red neuronal general.

Las ponderaciones son un tema muy importante en el campo del aprendizaje profundo porque ajustar las ponderaciones de un modelo es la forma principal a través de la cual se entrenan los modelos de aprendizaje profundo. Verá esto en la práctica más adelante cuando construyamos nuestras primeras redes neuronales desde cero.

Una vez que una neurona recibe sus entradas de las neuronas en la capa anterior del modelo, suma cada señal multiplicada por su peso correspondiente y las pasa a una función de activación, como esta:

La función de activación de una neurona

La función de activación calcula el valor de salida de la neurona. Este valor de salida se transmite luego a la siguiente capa de la red neuronal a través de otra sinapsis.

Esto sirve como una amplia descripción de las neuronas de aprendizaje profundo. No se preocupe si fue mucho para asimilar; aprenderemos mucho más sobre las neuronas en el resto de este tutorial. Por ahora, es suficiente que tenga una comprensión de alto nivel de cómo se estructuran en un modelo de aprendizaje profundo.

Funciones de activación de aprendizaje profundo

Las funciones de activación son un concepto básico para comprender en el aprendizaje profundo.

Son los que permiten que las neuronas de una red neuronal se comuniquen entre sí a través de sus sinapsis.

En esta sección, aprenderá a comprender la importancia y la funcionalidad de las funciones de activación en el aprendizaje profundo.

¿Qué son las funciones de activación en el aprendizaje profundo?

En la última sección, aprendimos que las neuronas reciben señales de entrada de la capa anterior de una red neuronal. Una suma ponderada de estas señales se alimenta a la función de activación de la neurona, luego la salida de la función de activación se pasa a la siguiente capa de la red.

Hay cuatro tipos principales de funciones de activación que discutiremos en este tutorial:

  • Funciones de umbral
  • Funciones sigmoideas
  • Funciones de rectificador o ReLU
  • Funciones de la tangente hiperbólica

Trabajemos con estas funciones de activación una por una.

Funciones de umbral

Las funciones de umbral calculan una señal de salida diferente dependiendo de si su entrada está por encima o por debajo de un cierto umbral. Recuerde, el valor de entrada a una función de activación es la suma ponderada de los valores de entrada de la capa anterior en la red neuronal.

Matemáticamente hablando, aquí está la definición formal de una función de umbral de aprendizaje profundo:

Funciones de umbral

Como sugiere la imagen de arriba, la función de umbral a veces también se llama a unit step function.

Las funciones de umbral son similares a las variables booleanas en la programación de computadoras. Su valor calculado es 1(similar a True) o 0(equivalente a False).

La función sigmoidea

La función sigmoidea es bien conocida entre la comunidad científica de datos debido a su uso en la regresión logística, una de las técnicas centrales de aprendizaje automático que se utilizan para resolver problemas de clasificación.

La función sigmoidea puede aceptar cualquier valor, pero siempre calcula un valor entre 0y 1.

Aquí está la definición matemática de la función sigmoidea:

Funciones sigmoideas

Un beneficio de la función sigmoidea sobre la función de umbral es que su curva es suave. Esto significa que es posible calcular derivadas en cualquier punto de la curva.

La función rectificadora

La función rectificadora no tiene la misma propiedad de suavidad que la función sigmoidea de la última sección. Sin embargo, sigue siendo muy popular en el campo del aprendizaje profundo.

La función rectificadora se define de la siguiente manera:

  • Si el valor de entrada es menor que 0, entonces la función genera0
  • Si no, la función genera su valor de entrada

Aquí está este concepto explicado matemáticamente:

Funciones rectificadoras

Las funciones de rectificador a menudo se denominan Rectified Linear Unitfunciones de activación, o ReLUspara abreviar.

La función de la tangente hiperbólica

La función de tangente hiperbólica es la única función de activación incluida en este tutorial que se basa en una identidad trigonométrica.

Su definición matemática está a continuación:

Función tangente hiperbólica

La función tangente hiperbólica es similar en apariencia a la función sigmoidea, pero sus valores de salida están todos desplazados hacia abajo.

¿Cómo funcionan realmente las redes neuronales?

Hasta ahora en este tutorial, hemos discutido dos de los componentes básicos para construir redes neuronales:

  • Neuronas
  • Funciones de activación

Sin embargo, probablemente todavía esté un poco confundido sobre cómo funcionan realmente las redes neuronales.

Este tutorial reunirá las piezas que ya hemos discutido para que pueda comprender cómo funcionan las redes neuronales en la práctica.

El ejemplo que usaremos en este tutorial

Este tutorial trabajará a través de un ejemplo del mundo real paso a paso para que pueda comprender cómo las redes neuronales hacen predicciones.

Más concretamente, nos ocuparemos de las valoraciones inmobiliarias.

Usted probablemente ya sabe que hay un montón de factores que influyen en los precios de las casas, incluyendo la economía, las tasas de interés, el número de dormitorios / baños, y su ubicación.

La alta dimensionalidad de este conjunto de datos lo convierte en un candidato interesante para construir y entrenar una red neuronal.

Una advertencia sobre esta sección es que la red neuronal que usaremos para hacer predicciones ya ha sido entrenada . Exploraremos el proceso para entrenar una nueva red neuronal en la siguiente sección de este tutorial.

Los parámetros en nuestro conjunto de datos

Comencemos discutiendo los parámetros en nuestro conjunto de datos. Más específicamente, imaginemos que el conjunto de datos contiene los siguientes parámetros:

  • Pies cuadrados
  • Dormitorios
  • Distancia al centro de la ciudad
  • Edad de la casa

Estos cuatro parámetros formarán la capa de entrada de la red neuronal artificial. Tenga en cuenta que, en realidad, es probable que haya muchos más parámetros que podría utilizar para entrenar una red neuronal para predecir los precios de la vivienda. Hemos limitado este número a cuatro para mantener el ejemplo razonablemente simple.

La forma más básica de una red neuronal

En su forma más básica, una red neuronal solo tiene dos capas: la capa de entrada y la capa de salida. La capa de salida es el componente de la red neuronal que realmente hace predicciones.

Por ejemplo, si quisiera hacer predicciones usando un modelo de suma ponderada simple (también llamado regresión lineal), su red neuronal tomaría la siguiente forma:

Una red neuronal básica

Si bien este diagrama es un poco abstracto, el punto es que la mayoría de las redes neuronales se pueden visualizar de esta manera:

  • Una capa de entrada
  • Posiblemente algunas capas ocultas
  • Una capa de salida

Es la capa oculta de neuronas la que hace que las redes neuronales sean tan poderosas para calcular predicciones.

Para cada neurona en una capa oculta, realiza cálculos usando algunas (o todas) de las neuronas en la última capa de la red neuronal. Estos valores se utilizan luego en la siguiente capa de la red neuronal.

El propósito de las neuronas en la capa oculta de una red neuronal

Probablemente se preguntan - ¿qué significa exactamente cada neurona en la capa oculta media ? Dicho de otra manera, ¿cómo deberían interpretar estos valores los profesionales del aprendizaje automático?

En términos generales, las neuronas en las capas de basura de una red neuronal se activan (lo que significa que su función de activación regresa 1) para un valor de entrada que satisface ciertas subpropiedades.

Para nuestro modelo de predicción del precio de la vivienda, un ejemplo podría ser casas de 5 dormitorios con distancias pequeñas al centro de la ciudad.

En la mayoría de los otros casos, describir las características que provocarían la activación de una neurona en una capa oculta no es tan fácil.

Cómo determinan las neuronas sus valores de entrada

Anteriormente en este tutorial, escribí "Para cada neurona en una capa oculta, realiza cálculos utilizando algunas (o todas) de las neuronas en la última capa de la red neuronal".

Esto ilustra un punto importante: que cada neurona de una red neuronal no necesita utilizar todas las neuronas de la capa anterior.

El proceso mediante el cual las neuronas determinan qué valores de entrada utilizar de la capa anterior de la red neuronal se denomina entrenamiento del modelo. Aprenderemos más sobre el entrenamiento de redes neuronales en la siguiente sección de este curso.

Visualización del proceso de predicción de una red neuronal

Cuando visualizamos una red neutra, generalmente dibujamos líneas desde la capa anterior a la capa actual siempre que la neurona anterior tenga un peso superior 0en la fórmula de suma ponderada para la neurona actual.

La siguiente imagen ayudará a visualizar esto:

Una red neuronal completa

Como puede ver, no todos los pares neurona-neurona tienen sinapsis. x4solo alimenta a tres de las cinco neuronas de la capa oculta, por ejemplo. Esto ilustra un punto importante al construir redes neuronales: que no todas las neuronas de una capa anterior deben usarse en la siguiente capa de una red neuronal.

Cómo se entrenan las redes neuronales

Hasta ahora, ha aprendido lo siguiente sobre las redes neuronales:

  • Que están compuestos de neuronas
  • Que cada neurona usa una función de activación aplicada a la suma ponderada de las salidas de la capa anterior de la red neuronal
  • Una descripción general amplia y sin código de cómo las redes neuronales hacen predicciones

Todavía no hemos cubierto una parte muy importante del proceso de ingeniería de redes neuronales: cómo se entrenan las redes neuronales.

Ahora aprenderá cómo se entrenan las redes neuronales. Analizaremos conjuntos de datos, algoritmos y principios generales utilizados en el entrenamiento de redes neuronales modernas que resuelven problemas del mundo real.

Codificación rígida frente a codificación flexible

Hay dos formas principales de desarrollar aplicaciones informáticas. Antes de profundizar en cómo se entrenan las redes neuronales, es importante asegurarse de comprender la diferencia entre los programas informáticos hard-codingy soft-coding.

La codificación rígida significa que especifica explícitamente las variables de entrada y las variables de salida deseadas. Dicho de otra manera, la codificación no deja espacio para que la computadora interprete el problema que está tratando de resolver.

La codificación suave es todo lo contrario. Deja espacio para que el programa comprenda lo que está sucediendo en el conjunto de datos. La codificación flexible permite que la computadora desarrolle sus propios enfoques de resolución de problemas.

Un ejemplo específico es útil aquí. Aquí hay dos ejemplos de cómo puede identificar gatos dentro de un conjunto de datos utilizando técnicas de codificación flexible y codificación rígida.

  • Codificación rígida: utiliza parámetros específicos para predecir si un animal es un gato. Más específicamente, podría decir que si el peso y la longitud de un animal se encuentran dentro de ciertos
  • Codificación flexible: proporciona un conjunto de datos que contiene animales etiquetados con su tipo de especie y características sobre esos animales. Luego, construye un programa de computadora para predecir si un animal es un gato o no en función de las características del conjunto de datos.

Como puede imaginar, el entrenamiento de redes neuronales entra en la categoría de codificación suave. Tenga esto en cuenta a medida que avance en este curso.

Entrenamiento de una red neuronal usando una función de costo

Las redes neuronales se entrenan usando a cost function, que es una ecuación que se usa para medir el error contenido en la predicción de una red.

La fórmula para una función de costo de aprendizaje profundo (de las cuales hay muchas, este es solo un ejemplo) se encuentra a continuación:

Ecuación de la función de costo

Nota: esta función de costo se llama mean squared error, por lo que hay un MSE en el lado izquierdo del signo igual.

Si bien hay muchas fórmulas matemáticas en esta ecuación, es mejor resumirla de la siguiente manera:

Take the difference between the predicted output value of an observation and the actual output value of that observation. Square that difference and divide it by 2.

Para reiterar, tenga en cuenta que este es simplemente un ejemplo de una función de costos que podría usarse en el aprendizaje automático (aunque es cierto que es la opción más popular). La elección de qué función de costo usar es un tema complejo e interesante en sí mismo y fuera del alcance de este tutorial.

Como se mencionó, el objetivo de una red neuronal artificial es minimizar el valor de la función de costo. La función de costo se minimiza cuando el valor predicho de su algoritmo es lo más cercano posible al valor real. Dicho de otra manera, ¡el objetivo de una red neuronal es minimizar el error que comete en sus predicciones!

Modificar una red neuronal

Después de que se crea una red neuronal inicial y se imputa su función de costo, se realizan cambios en la red neuronal para ver si reducen el valor de la función de costo.

Más específicamente, el componente real de la red neuronal que se modifica son los pesos de cada neurona en su sinapsis que se comunican con la siguiente capa de la red.

Se llama al mecanismo a través del cual se modifican los pesos para mover la red neuronal a pesos con menos error gradient descent. Por ahora, es suficiente para que comprenda que el proceso de entrenamiento de redes neuronales se ve así:

  • Se asignan pesos iniciales para los valores de entrada de cada neurona
  • Las predicciones se calculan utilizando estos valores iniciales
  • Las predicciones se introducen en una función de costos para medir el error de la red neuronal.
  • Un algoritmo de descenso de gradiente cambia los pesos de los valores de entrada de cada neurona
  • Este proceso continúa hasta que los pesos dejan de cambiar (o hasta que la cantidad de su cambio en cada iteración cae por debajo de un umbral especificado)

Esto puede parecer muy abstracto, ¡y está bien! Por lo general, estos conceptos solo se comprenden completamente cuando comienza a entrenar sus primeros modelos de aprendizaje automático.

Pensamientos finales

En este tutorial, aprendió cómo las redes neuronales realizan cálculos para realizar predicciones útiles.

Si está interesado en aprender más sobre la construcción, capacitación e implementación de modelos de aprendizaje automático de vanguardia, mi libro electrónico Pragmatic Machine Learning le enseñará cómo construir 9 modelos de aprendizaje automático diferentes utilizando proyectos del mundo real.

Puede implementar el código del libro electrónico en su GitHub o cartera personal para mostrárselo a posibles empleadores. El libro se lanza el 3 de agosto. ¡Pídelo ahora con un 50% de descuento!