深度学习中的正则化(regularization)

正则化和准备更多数据都是用于解决模型高方差的方法

logistic regression中的正则化

在这里插入图片描述

Neural network中的正则化

一般来说,目前我们都是应用L2正则化的

对于矩阵L2范数,我们称之为 Frobenius norm 其值就是矩阵内所有元素的平方和

下 图 中 ω 的 维 度 应 该 是 ( n [ l ] , n [ l − 1 ] ) 下图中\omega的维度应该是(n^{[l]},n^{[l-1]}) ω(n[l],n[l1])
在这里插入图片描述

在神经网络中,进行正则化操作又叫做权重衰减(weight decay),因为其最后落实到梯度下降上面的时候就相当于在原来的基础上参数W多乘了一个小于1的系数再减去反向传播算出的梯度

为什么正则化能够防止过拟合?

从神经网络来看

在这里插入图片描述

直 观 上 , 我 们 将 正 则 化 参 数 l a m d a 设 置 的 非 常 大 , 那 么 经 过 梯 度 下 降 后 , 权 重 w [ l ] 就 会 接 近 于 0 直观上,我们将正则化参数lamda设置的非常大,那么经过梯度下降后,权重w^{[l]}就会接近于0 lamdaw[l]0

这意味着很多隐藏神经元的作用被无限缩小,达到极致时,整个神经网络就变成了一个深一点的logistic regression

从激活函数来看

在这里插入图片描述

权 重 w [ l ] 很 小 就 意 味 着 z 会 很 小 , 这 里 我 们 选 择 了 t a n h 作 为 激 活 函 数 , 因 为 z 很 小 , 那 么 经 过 激 活 函 数 输 出 后 的 值 就 会 处 于 中 间 的 线 性 范 围 内 , 权重w^{[l]}很小就意味着z会很小,这里我们选择了tanh作为激活函数,因为z很小,那么经过激活函数输出后的值就会处于中间的线性范围内, w[l]ztanhz线

这 意 味 着 无 论 我 们 有 多 么 复 杂 的 神 经 网 络 , 最 终 也 只 是 不 断 的 进 行 线 性 计 算 , 而 没 有 使 用 高 度 非 线 性 的 计 算 来 拟 合 出 复 杂 的 非 线 性 函 数 , 所 以 我 们 过 拟 合 的 几 率 将 大 大 降 低 这意味着无论我们有多么复杂的神经网络,最终也只是不断的进行线性计算,而没有使用高度非线性的计算来拟合出复杂的非线性函数,所以我们过拟合的几率将大大降低 线使线线

在这里插入图片描述

牢记J的新定义,其多了一个正则化项,如果你忘记了它,可能会导致你的cost function并不会在每一次迭代都单调递减.

dropput正则化(随机失活)

在这里插入图片描述

其基本概念就是设置一些概率,让一些神经元结点随机失活,从而使得整个神经网络更加简化

实现dropout的方法(反向随机失活)

在这里插入图片描述

使用dropout在测试集与在训练集中的不同

在这里插入图片描述

值得注意的是,在测试集进行前向传播计算时,并不需要执行dropout函数,因为这样会使计算变得低效,且会使得不同的神经网络的结果却基本一致,这与训练集不同.

dropout为什么有效?

在这里插入图片描述

dropout的最终目的同样是通过压缩权重矩阵,来防止过拟合,这与L2范数正则化的思想是相同的.

但是,其不同的是,不同的应用方式,dropput也会不同,甚至能更加适用于不同的输入范围.

对于神经网络

keep-prob的值为1,意味着保留所有单元.其可以用来给我们方便记忆那些不需要使用keep-prob的地方设置一个参数

在这里插入图片描述

我们可以对于神经网络的不同层设置不同的keep-prob,例如对于神经元较多(也就是对于过拟合影响较大的层)设置keep-prob的值较小,从而使得keep-prob函数能够发挥更大的作用.

在L2正则化中,也可以通过设置超参数lamda来实现这一点

一般来说,输入层不用dropout或者keep-prob接近于1

dropout的主要应用

始终牢记,dropput是一种正则化方法,如果你的模型并没有发生过拟合或者说你有足够多的训练数据,那么你并没有必要去使用它.

dropout方法常见的应用领域是计算机视觉,因为其往往会有很多像素点需要输入,但又缺少足够多的数据.

dropput的缺点

代价函数J的定义不再明确,因为每次迭代都会随机消除一些节点,从而导致我们失去了一个有效的评估因子去评估梯度下降的性能,所以其使用需要谨慎.

补充:一般droput方法的具体流程:
  1. 首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变(图3中虚线为部分临时被删除的神经元)

在这里插入图片描述

  1. 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)

  2. 然后继续重复这一过程:

    1. 恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)

    2. 从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(记得备份被删除神经元的参数

    3. 对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。

      重复上述过程

其他正则化方法

数据增强(Data augmentation)

在这里插入图片描述

水平翻转 或者进行裁剪

在这里插入图片描述

Early stopping

在这里插入图片描述

Early stopping 就是提早结束神经网络的训练

在验证集误差开始上升之前停止整个神经网络的训练

一开始随机初始化,一般w会被初始化一个较小的值,因为迭代次数越多,w的值也就是权重就会变得越来越大,我们只需要让它处于一个中间(合适的值)即可.

实际机器学习过程中的正交化

在这里插入图片描述

在实际的机器学习的过程中,我们最好用两套工具去分别针对两个问题(降低代价函数和防止过拟合)

而不是简单的用同一套工具去解决两个问题,这会使得我们的思考变得更加复杂.

一般来说,我会更倾向于使用L2正则化法,但是其缺点就是需要尝试不同的lamda值

这意味着我需要更加强大的算力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值