神经网络优化算法

本文介绍了神经网络优化算法,包括梯度下降法、小批量梯度下降法、随机梯度下降法、带动量的梯度下降法以及Adam算法。通过比较这些算法的不同,特别是样本数量的使用和学习速度的调整,阐述了它们在实际应用中的优缺点和适用场景。
摘要由CSDN通过智能技术生成

神经网络发展至今,优化算法层出不穷,但大底是出不了梯度下降的框框架架。

梯度下降法 Gradient Descent

公式:

选择负梯度方向进行参数更新,算是常规操作了。对于多层神经网络如何执行梯度下降:

def update_parameters_with_gd(parameters, grads, learning_rate):
    """
    Update parameters using one step of gradient descent

    Arguments:
    parameters -- python dictionary containing your parameters to be updated:
                    parameters['W' + str(l)] = Wl
                    parameters['b' + str(l)] = bl
    grads -- python dictionary containing your gradients to update each parameters:
                    grads['dW' + str(l)] = dWl
                    grads['db' + str(l)] = dbl
    learning_rate -- the learning rate, scalar.
    Returns:
    parameters -- python dictionary containing your updated parameters 
    """
    L = len(parameters) // 2 # number of layers in the neural networks
    # Update rule for each parameter
    for l in range(L):  
        parameters['W' + str(l+1)] = parameters['W' + str(l+1)] - learning_rate * grads['dW' + str(l+1)]
        parameters['b' + str(l+1)] = parameters['b' + str(l+1)] - learning_rate * grads['db' + str(l+1)]  
    return parameters

在上述代码中,传入含有权值和偏置的字典、梯度字段和更新的学习率作为参数,按照开头的公式编写权值更新代码。

小批量梯度下降法 mini-batch Gradient Descent

在工业数据环境下,直接对大数据执行梯度下降法训练往往处理速度缓慢,这时候将训练集分割成小一点的子集进行训练就非常重要了。这个被分割成的小的子集就叫做 mini-batch,意为小批量。对每一个小批量同时执行梯度下降会大大提高训练效率。在实际利用代码实现的时候,小批量梯度下降算法通常包括两个步骤:

  1. 充分打乱数据(shuffle)
  2. 分组组合数据(partition)。如下图所示。

具体代码实现为:

def 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值