深度学习中,在进行损失函数J的优化及参数寻优时,用到的均是梯度下降法。而其他优化算法均是在此基础上进行的一定改进。
部分代码及图解如下:
#仅做比较,不运行。 #批量梯度下降,又叫梯度下降 X = data_input Y = labels parameters = initialize_parameters(layers_dims) for i in range(0,num_iterations): #前向传播 A,cache = forward_propagation(X,parameters) #计算损失 cost = compute_cost(A,Y) #反向传播 grads = backward_propagation(X,Y,cache) #更新参数 parameters = update_parameters(parameters,grads) #随机梯度下降算法: X = data_input Y = labels parameters = initialize_parameters(layers_dims) for i in (0,num_iterations): for j in m: #前向传播 A,cache = forward_propagation(X[:,j],parameters) #计算成本 cost = compute_cost(A,Y[:,j]) #后向传播 grads = backward_propagation(X[:,j],Y[:,j],cache) #更新参数 parameters = update_parameters(parameters,grads)
此外,还产生了动量梯度下降法(β越大越好)、RMSprop及adam等优化算法,其中adam优化算法是前两者的一个结合,这三种优化算法均是采用了指数加权平均的方法来更新权重,以此减少震荡,增加水平方向的步长,达到更快收敛的目的。