in

Desmitificando las optimizaciones para el aprendizaje automático

165Mxg Yfq L7AvaS0K5aGA

Desmitificando las optimizaciones para el aprendizaje automático

Ravindra Parmar

5 de septiembre de 2018·7 min de lectura

1*65Mxg Yfq L7AvaS0K5aGA
Descenso de gradientes para aprendizaje automático

Descenso de gradiente estocástico

1*iU1QCnSTKrDjIPjSAENLuQ

Ilustración de descenso de gradiente
for i in range(iterations_count):          
param_gradients = evaluate_gradients(loss_function,
data,
params)
params -= learning_rate * param_gradients
1*hGhRddOUV8h0pdQek8T35A

Efecto de la tasa de aprendizaje en el descenso de gradientes

Movimiento en zig zag con pendiente descendente

Descenso de gradiente estocástico con impulso

1*DiaKVezC VM6WCGyXQNVJQ

Demostración del promedio ponderado exponencialmente
NOTE :-
alpha = 0.9
is randomly chosen weight.
t(i) is temperature at ith day.
v(i) is average temperature for ith day averaged over 1/(1 - alpha) days.
v(0) = 0
v(1) = 0.9 * v(0) + 0.1 * t(1)
v(2) = 0.9 * v(1) + 0.1 * t(2)
...
v(i) = alpha * v(i-1) + (1 - alpha) * t(i)
moment = 0
for i in range(iterations_count):

param_gradients = evaluate_gradients(loss_function,
data,
params)
moment = gamma * moment +
param_gradients
params += learning_rate * moment
(where moment is building moving average of gradients.
gamma gives kind of friction = 0.9 or 0.99).

Optimización AdaGrad

squared_gradients = 0
for i in range(iterations_count):

param_gradients = evaluate_gradients(loss_function,
data,
params)
squared_gradients += param
_gradients * param_gradients
params -= learning_rate * param
_gradients/
(np.sqrt(squared_gradients) + 1e-8)
{1e-8 is to avoid divide by zero}

Optimización de RMSProp

squared_gradients = 0
for i in range(iterations_count):

param_gradients = evaluate_gradients(loss_function,
data,
params)
squared_gradients = decay_rate * squared_gradients + (1 -
decay_rate) * param
_gradients * param_gradients
params -= learning_rate * param
_gradients/
(np.sqrt(squared_gradients) + 1e-8)

Adán

first_moment = 0
second_moment = 0
for step in range(iterations_count):
param_gradients = evaluate_gradients(loss_function,
data,
params)
first_moment = beta_1 * first_moment + (1 - beta_1) *
param
_gradients
second_moment = beta_2 * second_moment + (1 - beta_2) *
param
_gradients * param_gradients
params -= learning_rate * first_moment/(np.sqrt(second_moment) +
1e-8)
first_moment = 0
second_moment = 0
for step in range(iterations_count):
param
_gradients = evaluate_gradients(loss_function,
data,
params)
first_moment = beta_1 * first_moment + (1 - beta_1) *
param
_gradients
second_moment = beta_2 * second_moment + (1 - beta_2) *
param
_gradients * param_gradients
first_bias_correction = first_moment/(1 - beta_1 ** step)
second_bias_correction = second_moment/(1 - beta_2 ** step)
params -= learning_rate * first_bias_correction/
(np.sqrt(second_bias_correction) + 1e-8)
1*hqrfj2KVHOWB2044GfVhaQ

Medida de rendimiento para optimizaciones

Recursos

RMSprop – Algoritmos de optimización | Coursera

Este curso le enseñará la «magia» de hacer que el aprendizaje profundo funcione bien. En lugar del proceso de aprendizaje profundo …

www.coursera.org

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

03UEDSY1fWw1rdiJXMTUoM1 1.1632734085.fit lim.size 1200x630

Desarrolle su negocio con los consejos de marketing de Google con descuento

Actualización automática de Java 7 a Java 8