深度神经网络优化(二)- Optimization algorithms

本文是深度神经网络优化算法的第二篇,探讨了Mini-batch梯度下降、指数加权平均(包括偏差修正)、动量法、RMSprop和Adam优化算法,以及学习率衰减和局部最优问题。这些算法能有效提升模型训练速度和性能。
摘要由CSDN通过智能技术生成

第二篇关于优化算法,介绍mini-batch以及momentum, RMSprop和Adam等优化算法

Mini-batch gradient descent

关于mini-batch,机器学习笔记最后一篇有所提及,不再赘述,这里强调三点:

  1. mini-batch size 的选择,更倾向于去选择2的次方,一般会考虑16,32,64,128,256,512等数字,这会在某种程度上相对于别的mini-batch size运算更快一点,因为更符合电脑的存储方式。
  2. 对于mini-batch,我们一般会进行数据shuffle来打乱数据。
  3. 由于样本数不会正好整除我们选择的mini-batch size,所以进行partition来处理最后一组数据。
def random_mini_batches(X, Y, mini_batch_size = 64, seed = 0):
    
    np.random.seed(seed)            # To make your "random" minibatches the same as ours
    m = X.shape[1]                  # number of training examples
    mini_batches = []
        
    # Step 1: Shuffle (X, Y)
    permutation = list(np.random.permutation(m))
    shuffled_X = X[:, permutation]
    shuffled_Y = Y[:, permutation].reshape((1,m))

    # Step 2: Partition (shuffled_X, shuffled_Y). Minus the end case.
    num_complete_minibatches = math.floor(m/mini_batch_size) # number of mini batches of size mini_batch_size in your partitionning
    for k in range(0, num_complete_minibatches):
        mini_batch_X = shuffled_X[:, k * mini_batch_size : (k+1) * mini_batch_size]
        mini_batch_Y = shuffled_Y[:, k * mini_batch_size : (k+1) * mini_batch_size]

        mini_batch = (mini_batch_X, mini_batch_Y)
        mini_batches.append(mini_batch)
    
    # Handling the end case (last mini-batch < mini_batch_size)
    if m % mini_batch_size != 0:
        mini_batch_X = shuffled_X[:, num_complete_minibatches * mini_batch_size : m]
        mini_batch_Y = shuffled_Y[:, num_complete_minibatches * mini_batch_size : m]

        mini_batch = (mini_batch_X, mini_batch_Y)
        mini_batches.append(mini_batch)
    
    return mini_batches

Exponentially weighted(moving) averages

在讲解momentum,RMSprop,Adam优化算法之前,引入EMA(指数平均数指标),所谓EWA(EMA),它的公式如下图左上角所示。
在下图中关于days-temperature的图,我们看到蓝色的点代表了真实的数据,那很明显有很多噪点,那如果我们想要了解温度变化的大概趋势呢,我们就需要运用所谓local average(moving average),即对于即将要求取的temperature,我们集合之前5天、10天或者50天的温度求平均值来得到,这样曲线就会平滑。那么所谓的EMA就是一种对于moving average的近似。根据 β \beta β 的取值,EMA相当于求取的之前 1 1 − β \frac{1}{1-\beta} 1β1 天的平均值。
如下图 β = 0.9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值