Entrenando una red neuronal  

  RSS
admin
(@admin)
Miembro Admin

Ahora aprenderemos cómo entrenar una red neuronal. También aprenderemos sobre el algoritmo de propagación y el pase hacia atrás en Deep Learning usando Python.

Tenemos que encontrar los valores óptimos de los pesos de una red neuronal para obtener el resultado deseado. Para entrenar una red neuronal, utilizamos el método iterativo de descenso de gradiente. Comenzamos inicialmente con la inicialización aleatoria de los pesos. Después de la inicialización aleatoria, hacemos predicciones en algún subconjunto de los datos con el proceso de propagación directa, calculamos la función de costo correspondiente 'C', y actualizamos cada peso ‘w’ en una cantidad proporcional a dC/dw, es decir, la derivada de las funciones de costo y el peso. La constante de proporcionalidad se conoce como la tasa de aprendizaje.

Los gradientes se pueden calcular de manera eficiente utilizando el algoritmo de propagación inversa. La observación clave de propagación hacia atrás o apuntalamiento hacia atrás es que, debido a la regla de la cadena de diferenciación, el gradiente en cada neurona en la red neuronal se puede calcular usando el gradiente en las neuronas, tiene bordes salientes ‘a’. Por lo tanto, calculamos los gradientes al revés, es decir, primero calculamos los gradientes de la capa de salida, luego la capa oculta más alta, seguida por la capa oculta anterior, y así sucesivamente, terminando en la capa de entrada.

El algoritmo de propagación inversa se implementa principalmente utilizando la idea de un gráfico computacional, donde cada neurona se expande a muchos nodos en el gráfico computacional y realiza una operación matemática simple como la suma y la multiplicación. El gráfico computacional no tiene ningún peso en los bordes; todos los pesos se asignan a los nodos, por lo que los pesos se convierten en sus propios nodos. El algoritmo de propagación hacia atrás se ejecuta luego en el gráfico computacional. Una vez que se completa el cálculo, solo se requieren los gradientes de los nodos de peso para la actualización. El resto de los gradientes se pueden descartar.

Técnica de optimización de descenso de gradiente

Una función de optimización comúnmente utilizada que ajusta los pesos de acuerdo con el error que causaron se llama "descenso de gradiente".

El degradado es otro nombre para la pendiente, y la pendiente, en un gráfico x-y, representa cómo dos variables se relacionan entre sí: el aumento sobre la carrera, el cambio en la distancia sobre el cambio en el tiempo, etc. En este caso, la pendiente es la relación entre el error de la red y un solo peso; es decir, cómo cambia el error a medida que se varía el peso.

Para decirlo de manera más precisa, queremos encontrar qué peso produce el menor error. Queremos encontrar el peso que represente correctamente las señales contenidas en los datos de entrada y los traduzca a una clasificación correcta.

A medida que aprende una red neuronal, lentamente ajusta muchos pesos para que puedan asignar correctamente la señal al significado. La relación entre Error de red y cada uno de esos pesos es una derivada, dE/dw que calcula la medida en que un ligero cambio en un peso causa un ligero cambio en el error.

Cada peso es solo un factor en una red profunda que involucra muchas transformaciones; la señal del peso pasa a través de activaciones y sumas en varias capas, por lo que usamos la regla de cadena del cálculo para trabajar a través de las activaciones y salidas de la red. Esto nos lleva al peso en cuestión y su relación con el error general.

Dadas dos variables, error y peso, están mediadas por una tercera variable llamada activación, a través de la cual se pasa el peso. Podemos calcular cómo un cambio en el peso afecta un cambio en el error al calcular primero cómo un cambio en la activación afecta un cambio en el Error, y cómo un cambio en el peso afecta un cambio en la activación.

La idea básica del aprendizaje profundo no es más que eso: ajustar los pesos de un modelo en respuesta al error que produce, hasta que ya no pueda reducir el error.

La red profunda se entrena lentamente si el valor del gradiente es pequeño, y rápido si el valor es alto. Cualquier inexactitud en la capacitación conduce a resultados imprecisos. El proceso de entrenamiento de las redes desde la salida a la entrada se denomina propagación de retorno o back prop. Sabemos que la propagación hacia adelante comienza con la entrada y avanza. Back prop hace el inverso/opuesto calculando el gradiente de derecha a izquierda.

Cada vez que calculamos un gradiente, usamos todos los gradientes anteriores hasta ese punto.

Comencemos por un nodo en la capa de salida. El borde usa el gradiente en ese nodo. A medida que regresamos a las capas ocultas, se vuelve más complejo. El producto de dos números entre 0 y 1 le da un número más pequeño. El valor del gradiente se hace cada vez más pequeño y, como resultado, el soporte trasero requiere mucho tiempo para entrenar y la precisión sufre.

Desafíos en los algoritmos de aprendizaje profundo

Existen ciertos desafíos tanto para las redes neuronales superficiales como para las redes neuronales profundas, como el sobreajuste y el tiempo de cálculo. Los DNN se ven afectados por el sobreajuste debido al uso de capas adicionales de abstracción que les permiten modelar dependencias raras en los datos de entrenamiento.

Durante el entrenamiento se aplican métodos de regularización, como abandono, detención temprana, aumento de datos, aprendizaje de transferencia para combatir el sobreajuste. La omisión de regularización omite al azar unidades de las capas ocultas durante el entrenamiento, lo que ayuda a evitar dependencias raras. Los DNN tienen en cuenta varios parámetros de entrenamiento, como el tamaño, es decir, el número de capas y el número de unidades por capa, la tasa de aprendizaje y los pesos iniciales. Encontrar parámetros óptimos no siempre es práctico debido al alto costo en tiempo y recursos computacionales. Varios hacks, como los lotes, pueden acelerar el cálculo. La gran potencia de procesamiento de las GPU ha ayudado significativamente al proceso de entrenamiento, ya que los cálculos matriciales y de vectores requeridos se ejecutan bien en las GPU.

Para continuar viendo el resto de contenido por favor Regístrate o Inicia Sección

This topic was modified hace 5 meses 2 times by admin
This topic was modified hace 4 meses by admin
This topic was modified hace 2 meses 2 times by admin
ResponderCitar
Respondido : 02/10/2018 5:16 pm
Share:
  
Trabajando

Por favor Iniciar Sesión o Registro