Deep Learning Note3

偏差与方差

欠拟合(在训练集中模型表现差): 偏差大。解决方案:

  • 增加隐藏层数量
  • 增加循环次数

过拟合(在训练集中模型表现好,但是在测试集中表现差):方差大解决方案:

  • 获取更多数据
  • 正则化

Regularization(正则化)

用于解决过拟合问题,加在损失函数上

正则表达式下标表示正则化类型

Frobenius norm正则化
$$

做反向传播时,w的导数为
$$
我们可以看出正则化相当于对原本的W做了衰减,弱化了W的权重,使得模型不会过分适配训练数据。

Dropout(随机失活)正则化

就是在神经网络的隐藏层,为每个神经元结点设置一个随机消除的概率,对保留下来的神经元进行训练,得到一个节点较少,规模较小的网络。

注意,是每次迭代随机失活,所以每次迭代时的模型是变换的。因此,它的实质就是每次迭代尝试不同的模型进行训练。

怎么做到不直接变动a的情况下,实现随机失活的呢?需要额外定义一个维度等同a的数组,用0,1表示是否失活

    keep_prob = 0.8  # 设置神经元保留概率
    d3 = np.random.rand(a3.shape[0], a3.shape[1]) #随机失活概率矩阵初始化
    d3= d3< keep_prob #大于0.8的设置为0,小于0.8的设置为1
    a3 = np.multiply(a3, d3)  #与输入值a相乘,得到了随机失活后的输入值
    a3 /= keep_prob    #为了不影响计算的Z值,需要除以一个keep_prob

反向传播

需要在正向传播时,缓存概率矩阵,反向传播时,用dA乘以概率矩阵。

思考:神经节点随机失活,为什么不将得到的概率矩阵乘以权重w,而是乘以了输入值a?

归一(正则)化输入

过程:

  1. 计算所有样本每个特征的均值
  2. 减去均值得到相对对称的分布
  3. 再将特征值归一(正则)化输入:

原因:

  • 因为我们使用的激活函数的区间一般在[-1,1],而以tanh为例,但z位于[-1,1]区间时,下降梯度较为平稳。
  • 使用了归一化,那么无论从哪个位置开始迭代,我们都能以相对很少的迭代次数找到全局最优解。

梯度爆炸和梯度消失

梯度消失的直观体现
$$

范围在0~1之间时,不断相乘导致得到的dw越来越小。会引起梯度下降的程度指数级下降。
范围在>1时,不断相乘导致得到的dw越来越小。会引起梯度下降的程度指数级上升。

利用初始化缓解梯度消失和爆炸问题

Min-Batch

将训练集分割为小一点的子训练集,步骤

  1. 对数据集进行随机洗牌,x要与y同步
  2. 切分数据集,可能数据集最后一部分无法分成等同大小
  3. 正常的正向反向传播,每次迭代一个min-batch
    ### 首先数据洗牌
    ### permutation随机排列一个序列
    permutation = list(np.random.permutation(m))
    ### x[:,n]表示在全部数组(维)中取第n个数据,
    shuffled_X = X[:, permutation]
    shuffled_Y = Y[:, permutation].reshape((1,m))
    ### math.floor()向下取整
    num_complete_minibatches = math.floor(m/mini_batch_size) 
    for k in range(0, num_complete_minibatches):

        mini_batch_X = shuffled_X[:, k*mini_batch_size : (k+1)*mini_batch_si***i_batch_Y = shuffled_Y[:, k*mini_batch_size : (k+1)*mini_batch_si***i_batch = (mini_batch_X, mini_batch_Y)
        mini_batches.append(mini_batch)

指数加权平均

即当前数据值加上一部分上一个数据值的权重,使得变化更加平稳
$$
v时加权后的前一个数据,θ时本身的数据

例:首先令,则,代表求平均天的温度,若,则相当于求平均50天的数据,而刚开始的几十天的没有这么多的数据,所以统计的均值图像会往右平移一点。

在统计学中被称为加权移动平均值,这个移动就代表求取平均值的延迟

有一个式子:
$\frac{1}{0.9}=10\frac{1}{ε}*0.1$

指数加权平均的偏差修正

上一节讨论了加权均值存在延迟的问题,因为刚开始不存在那么多的数据,因此我们加强前几个数据的当日权重。

动量(Momentum)梯度下降法

在梯度下降的过程中,权重w的趋势往往是往最低方向逼近,而偏置量b则容易产生摆动。这时,如果设置教的的学习率,虽然可以加快w的下降逼近速度,但会导致b的震荡过大。而如果学习率国小,又会导致模型训练速度变慢。

基本思想就是计算梯度的指数加权平均数,并利用该梯度来更新权重。这种方式可以降低b的震荡,但不会加速w的下降。
$$
思考:既然w和b逼近最低点的形式和速度不同,为什么不能给w和b设置不同的学习率?

下面的RMSprop就是将w,b采用了不同的学习率

RMS(均方根)prop梯度下降法

为了进一步优化损失函数在更新中存在摆动幅度过大的问题,并且进一步加快函数的收敛速度,RMSProp算法对权重 W 和偏置 b 的梯度使用了微分平方加权平均数。
$$

ε是一个极小的值一般为,是为了防止分母过小

理解RMSprop作用:

实质是让w,b采用不同的学习率,因为db的平方很大,所以作为分母的会很大,使得db的学习率较小,而dW的平方较小,所以作为分母的会很大,使得db的学习率较大,下降速度会更快。

但是如何S的值无效趋近于0时,会导致学习率过大,因此会加上一个常数ε,稳定学习率

注意:此处为了方便理解,例举了w,b,其实这样的做法也可以消除高维度下w1,w2……wn的摆动

思考:有了平均值,为什么要采用均方根?

均方根能更有效的反应数据的离散性。例如w:3,4,5,平均值为4;而b:4,-1,9,平均值也为4,这样就无法有效区分b的震荡情况。但是我认为,由于存在正负,假如b:-3,4,-5,求得的均方根依旧和3,4,5一样。有待优化

Adam 优化算法

Adam 优化算法的基本思想就是将 Momentum 和 RMSprop 结合起来形成的一种适用于不同深度学习结构的优化算法。 Momentum
$$

衰减学习率

随着w,b的不断更新,变化和震动也越来越小,所需要的学习率也越来越小,所以选哟根据迭代次数,不断衰减学习率。一般常用的公式
$$

全部评论

相关推荐

2024-12-10 17:38
门头沟学院 Node.js
想逆袭好楠:太紧凑了感觉,文字好多看的眼花,建议自我评价删了,因为自我评价都是吹嘘自己的,感觉没什么价值,然后改一下排版
点赞 评论 收藏
分享
2024-12-09 11:16
已编辑
蚌埠坦克学院 机电工程师
津輕:译文: 本科入职过华为,然后又去读研了;研究生毕业继续面华为,感觉走了弯路;自己2硕可能不一定能过,但还是愿意分享面经。(4分) 主题思想: 作者借用三年前后面试华为的经历,对比表现了自己求职境遇的不同,表达了选择读研的犹豫和读研就业后的希望(2分);同时以小见大,表述了时代变迁中就业形势的恶化,暗含了自己对当今就业形势的担忧(2分);在文章的最后,作者希望自己能够发布面经以帮助更多求职者,突出展示了作者的博大胸襟与作者心中对求职者们的鼓励与期望。(2分) (其他答案言之有理可酌情给分)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务