¿Qué significa el impulso en las redes neuronales?

En las redes neuronales, utilizamos un algoritmo de optimización de descenso de gradiente para minimizar la función de error para alcanzar un mínimo global. En un mundo ideal, la función de error se vería así

Por lo tanto, tiene la garantía de encontrar el óptimo global porque no hay un mínimo local donde su optimización pueda atascarse. Sin embargo, en realidad, la superficie de error es más compleja, puede comprender varios mínimos locales y puede verse así

En este caso, puede atascarse fácilmente en un mínimo local y el algoritmo puede pensar que alcanza el mínimo global que conduce a resultados subóptimos. Para evitar esta situación, utilizamos un término de impulso en la función objetivo, que es un valor entre 0 y 1 que aumenta el tamaño de los pasos dados hacia el mínimo al intentar saltar desde un mínimo local. Si el término de impulso es grande, entonces la tasa de aprendizaje debe mantenerse más pequeña. Un gran valor de impulso también significa que la convergencia ocurrirá rápidamente. Pero si tanto el impulso como la tasa de aprendizaje se mantienen en valores grandes, entonces puede omitir el mínimo con un gran paso. Un pequeño valor de impulso no puede evitar de manera confiable los mínimos locales, y también puede ralentizar el entrenamiento del sistema. Momentum también ayuda a suavizar las variaciones, si el gradiente sigue cambiando de dirección. Se puede aprender un valor correcto de impulso mediante hit y trial o mediante validación cruzada.

Fuente de las imágenes – Adaptación del momento y la tasa de aprendizaje

Digamos que su primera actualización de los pesos es un vector [math] \ theta_1 [/ math]. Para la segunda actualización (que sería [math] \ theta_2 [/ math] sin ímpetu) actualiza por [math] \ theta_2 + \ alpha \ theta_1 [/ math]. Para el siguiente, actualiza por [math] \ theta_3 + \ alpha \ theta_2 + \ alpha ^ 2 \ theta_1 [/ math], y así sucesivamente. Aquí el parámetro [math] 0 \ leq \ alpha <1 [/ math] indica la cantidad de impulso que queremos.

La forma práctica de hacerlo es mantener un vector de actualización [math] v_i [/ ​​math] y actualizarlo como [math] v_ {i + 1} = \ alpha v_i + \ theta_ {i + 1} [/ math].

La razón por la que hacemos esto es para evitar que el algoritmo se atasque en un mínimo local. Piense en ello como una canica rodando sobre una superficie curva. Queremos llegar al punto más bajo. El mármol que tiene impulso le permitirá evitar muchas pequeñas inmersiones y hará que sea más probable encontrar una mejor solución local.

Tener un impulso demasiado alto significa que será más probable que se exceda (el mármol pasa por el mínimo local, pero el impulso lo lleva hacia arriba un poco). Esto conducirá a tiempos de aprendizaje más largos. Encontrar el valor correcto del momento dependerá del problema particular: la suavidad de la función, cuántos mínimos locales espera, qué tan “profundos” se espera que sean los mínimos locales subóptimos, etc.

Es un algoritmo de optimización utilizado para entrenar el NN:

More Interesting

¿Es posible o hay algún documento sobre el ajuste de hiperparámetros usando aprendizaje de refuerzo o regresión?

Cómo entrenar a cualquier clasificador basado en características de texto en un documento EMR

¿El aprendizaje por refuerzo es meta-aprendizaje?

¿Cuáles son algunos de los problemas abiertos más importantes en el aprendizaje automático en este momento?

Durante la validación cruzada k-fold, ¿cuáles son algunas soluciones posibles cuando la varianza de las estimaciones de error de prueba es muy alta?

¿Cuáles son las soluciones de producción efectivas para el reconocimiento de entidades nombradas?

Dada una oración, quiero encontrar la emoción de la persona que la dijo. ¿Cómo puedo hacer esto?

Aprendizaje automático: ¿qué significa 'Los bosques aleatorios requieren casi ninguna preparación de entrada'?

¿Es posible una batalla de humanos contra máquinas en el futuro previsible?

Algunas cosas "fueron modeladas como procesos de Poisson". ¿Qué quieren decir con eso?

¿Cuál es el resultado de un modelo de omisión de gramo en Word2Vec?

Cómo construir una consulta a partir de una pregunta de lenguaje natural en Python

¿Por qué la agrupación de datos del panel reduce los errores estándar?

¿Qué sucede si hacemos que la forma de una función de activación sea diferente en cada capa, permitiendo que también se aprenda su forma, si las capas superiores tienen menos unidades, haciéndolas más no lineales?

¿Qué es la regresión en el aprendizaje automático?