• No results found

Some technical derivations for Section 4.8

4.9 Proofs and technical details

4.9.7 Some technical derivations for Section 4.8

Las redes neuronales han de ser entrenadas con grandes cantidades de datos para que “aprendan” a obtener los resultados óptimos ante problemas nunca vistos por la red. Al inicio inicializaremos los datos de forma aleatoria con el fin de no conseguir siempre los mismo resultados en cada entrenamiento. En cada entrenamiento se utilizan un número de ejemplos, el cual viene determinado por el parámetro batch (lote) y el conjunto de todos los ejemplos del dataset se llama época. Aplicando los siguientes métodos se irán ajustando automáticamente los pesos con el fin de llegar a unas pérdidas mínimas.

3.4. Fundamentos teóricos del modelo Dual Encoder LSTM 35

3.4.4.1. Descenso del gradiente

El descenso del gradiente se trata de un algoritmo para optimizar de forma ite- rativa la función de costo hasta llegar a su mínimo (local o global). En las redes neuronales se utiliza para minimizar el error, variando los pesos de forma propor- cional la derivada del error con respecto al peso.

En las NN las neuronas se deben activar para un tipo concreto de entrada. Para que esto ocurra, hay que entrenarlas haciendo que sus pesos varíen, es decir, dando más importancia a unos nodos que a otros con el fin de obtener un sistema que se adecue a nuestra función, dándonos los resultados más reales posibles (el mínimo error). Esto se consigue aplicando los dos siguientes métodos alternativamente:

1. Propagación hacia adelante

En esta propagación las entradas de la red neuronal pasan de los nodos ini- ciales a las capas ocultas de la misma produciendo su activación y finalmente obteniendo una hipótesis de salida, con el fin de calcular el costo entre la salida y la entrada.

2. Propagación hacia atrás

En este tipo de propagación se retrocede desde el costo de la función para calcular el gradiente de los parámetros. Se consigue haciendo el proceso inverso a la propagación hacia adelante, recorriendo la red desde los nodos finales en orden inverso, haciendo la derivada de la salida con respecto a la salida de cada nodo anterior, es decir, la derivada del error con respecto al valor de cada peso en la capa oculta.

En la propagación hacia delante se observa “como de bien” se comporta la red, viendo si la salida es la buscada a través del calculo del error final. En la propagación hacia atrás se intenta minimizar ese error. Ambos métodos son imprescindibles, haciendo primero la propagación hacia adelante para llegar al calculo del error y después utilizando el segundo método, propagación hacia atrás, para minimizarlo actualizando los valores de ponderación con el método del descenso del gradiente (se explicará a continuación). Estos pasos son cíclicos, utilizándolos alternativamente hasta llegar a los valores mínimos del error.

La matemática detrás de todo esto es bastante extensa, así que solo hablaremos de la fórmula que resume todo, para hacernos una idea global del método. La fórmula General del Descenso del Gradiente es la siguiente:

wi+1 =wi−α∇f(wi) (3.2)

Siendowi+1 el peso actualizado del siguiente nodo, wi el peso del nodo actual, α

la tasa de aprendizaje,∇f(wi) es la dirección de propagación de la función, la cual

queremos que vaya hacia el mínimo global.

Los valores calculados en esta ecuación los sustituiremos en la ecuación de la Pérdida de Entropía Cruzada 3.1 en el cálculo de la variable de la hipótesis y0.

36 Capítulo 3. Consiguiendo así un nuevo error, sabiendo así si vamos en la buena dirección si este se ha minimizado. En la siguiente figura se puede ver como el gradiente va variando los pesos en hacia los mínimos de la función, siendo θ0 =wi, θ1 =wi+1, y

J(θ0, θ1) = L(3.1).

Figura 3.11: Visualización gráfica del Descenso del Gradiente. [12]

3.4.4.2. Tasa de aprendizaje

Hay que destacar el papel que tiene en esta ecuación la tasa de aprendizaje, ya que, controla cuán grandes son los steps (pasos) del Descenso del Gradiente. En otras palabras, nos dice como de rápido o lento se avanza hacia los pesos óptimos en cada step. Se ha establecer una tasa de aprendizaje ni muy rápida ni muy lenta para llegar al mínimo local. Esto es debido a que siα(tasa de aprendizaje) es muy grande, es posible no alcanzar el mínimo local y quedarse alrededor de él o incluso hacer que se aleje, divergiendo en la función y no minimizando el error. Si la velocidad de α es un valor muy pequeño, se alcanzará el mínimo local pero tardará demasiado tiempo. Luego la mejor opción es encontrar un valor de compromiso entre ambas posibilidades. En la siguiente imagen se ilustran ambas opciones:

3.4. Fundamentos teóricos del modelo Dual Encoder LSTM 37 A la izquierda se ve como una tasa de aprendizaje alta hace diverger la función convexa del Descenso del Gradiente. A la derecha se observa como una baja tasa de aprendizaje alcanza finalmente un mínimo local, pero invierte demasiado tiempo en llegar, ya que los pasos son muy pequeños.

3.4.4.3. Batchs (lotes) en el descenso de gradiente

El tamaño de lotes define el número de ejemplos que se propagarán a través de la red. Si por ejemplo, tenemos 1050 muestras y establecemos el tamaño del batch en 100, se entrenará la red con los ejemplos del 1 al 100 (considerándose esto un step), después con los ejemplos de 101 al 200 y así sucesivamente hasta el número de steps que hayamos escogido o de épocas.

La mayor ventaja de este procedimiento es, un menor uso de memoria en cada entrenamiento al utilizar menos muestras en cada uno. Como desventaja está el hecho de que si los batchs son demasiado pequeños se llega antes a valores cercanos al mínimo local pero la estimación del gradiente es menor, haciendo que fluctúe la dirección del gradiente a diferencia de lotes mayores, en los cuales la dirección es más directa hacia el mínimo local.

Normalmente las redes se entrenan con mini-batchs, como valor de compromiso entre la velocidad y la precisión de la estimación del gradiente, debido a que se deben actualizar los pesos de cada nodo después de cada propagación. En el ejem- plo superior se usan 10 batchs de 100 ejemplos y uno de 50 ejemplos, es decir, se actualizan los pesos 11 veces en total. Si hubiéramos usado todos los ejemplos en un solo entrenamiento, solo se habría hecho una actualización de los pesos para los parámetros de red determinados.

Dependiendo del tamaño del batch, existen varios métodos:

− Descenso del Gradiente Estocástico (SGD)

Es un método que entrena la red y actualiza los valores con cada ejemplo de en- trada, haciendo que se llegue muy rápidamente a valores cercanos al mínimo y un detalle mayor de la evolución al actualizar constantemente, pero dependien- do del problema esto puede no ser útil al no llegar a converger completamente debido al ruido, haciendo que la tasa de error salte de un punto a otro en lugar de disminuir lentamente, además de ser más costoso computacionalmente.

− Descenso del gradiente de mini-batchs

Este método es una combinación entre el Descenso de Gradiente por Batchs y el SGD, simplemente dividiendo el conjunto de datos en pequeños batchs (entre 50 y 256) y realiza una actualización de los parámetros por cada batch. Es un relación de equilibrio entre la robustez del SGD y la eficiencia del descenso del gradiente discontinuo. Es el tipo más común de descenso de gradiente dentro del aprendizaje profundo.

38 Capítulo 3.

3.4.4.4. Overfitting (sobreajuste)

Este es un problema que afecta a las redes neuronales, donde si tenemos de- masiadas características, la hipótesis obtenida se ajustara muy bien a los datos de entrenamiento, pero en nuevos ejemplos que queramos predecir, la hipótesis fallará. De forma parecida ocurriría si la red está poco ajustada (subajuste) a la función de aprendizaje, devolviendo datos incorrectos ante datos nunca vistos por la red. Hay que encontrar un punto de compromiso entre el subajuste y el sobreajuste, pudiendo ajustarse a cualquier información de entrenamiento que se le proporcione a la red. Posibles soluciones a este problema suelen ser:

Para un problema de regresión lineal

− Conseguir más ejemplos de entrenamiento, corregir alta varianza.

− Probar con conjuntos de características más pequeños, corregir alta varian- za.

− Probar añadiendo nuevas características, corregir alto sesgo.

− Probar añadiendo características polinómicas, corregir alto sesgo.

− Probar a disminuir α (tasa de aprendizaje), corregir alto sesgo.

− Probar a incrementarα (tasa de aprendizaje), corregir alta varianza. Para redes neuronales

− En redes neuronales pequeñas, con una sola capa oculta y con pocas uni- dades, es más propenso a aparecer el problema de bajo ajuste, aunque no necesitan un gran gasto computacional.

− En redes neuronales más grandes, con más capas ocultas y más unidades, es más propenso a aparecer el problema de sobre ajuste. Suponen también un gasto computacional más alto. Sin embargo, el sobre ajuste se puede intentar corregir usando regularización.

3.4.4.5. Adam optimizer: Descenso del gradiente estocástico y optimización global

El uso de métodos de optimización del Descenso del Gradiente es debido al problema del overfitting (sobreajuste). Esta optimización ofrece ventajas a la hora de entrenar una red, como una mayor velocidad en comparación al Descenso del Gradiente o no tener que fijar manualmente la tasa de aprendizaje α. Sin embargo, también tiene sus desventajas, como algoritmos de mayor complejidad o la necesidad de librerías externas para implementarlos en el código de programación, ya que son muy complejos de desarrollar.

La Estimación de Momento Adaptativo (Adam) [53] es una extensión del SGD, con una adaptación para aplicaciones de aprendizaje profundo en procesamiento del lenguaje natural. Las características más destacadas de este método son:

3.4. Fundamentos teóricos del modelo Dual Encoder LSTM 39 Pocos requisitos de memoria.

Invariante a reescalado diagonal de los gradientes.

Muy adecuado para problemas que son grandes en términos de datos y/o pa- rámetros.

Apropiado para objetivos no estacionarios.

Apropiado para problemas con gradientes muy ruidosos o escasos.

Los hiperparámetros tienen una interpretación intuitiva y generalmente requie- ren poca afinación.

El SGD mantiene la tasa de aprendizaje igual para todas las actualizaciones de pesos, mientras que Adam varía esta tasa a medida que se va desarrollando el entrenamiento. Más específicamente, calcula un promedio móvil exponencial del gradiente y el gradiente cuadrado, y los parámetros dos parámetrosβ0 yβ1 controlan

las tasas de disminución de estos promedios móviles. Más comúnmente hablando, el SGD se puede ver como una esfera rodando por una pendiente, mientras que Adam se comporta como una esfera pesada con fricción, la cual tiene diferentes aceleraciones en función de la inclinación de la pendiente.