【deeplearning.ai】第二门课:提升深层神经网络——正则化
来源:互联网 发布:exo arashi知乎 编辑:程序博客网 时间:2024/06/03 16:32
一、逻辑斯特回归的正则化
在损失函数后面加上L2正则化项:
其中正则化项:
不对b使用正则化是因为w已经是高维参数矢量,几乎涵盖了所有的参数,而b只是一个标量,可以忽略。当然也可以对b进行正则化,不会产生什么影响。
也可以使用L1正则化:
L1正则化使w是稀疏的,即w中有很多0。目前更倾向于使用L2正则化。
二、神经网络的正则化
Feobenius范数:
加入L2正则化后的参数更新:
三、为什么正则化能防止过拟合
训练神经网络的目的是最小化损失函数并更新参数。如果正则化参数λ很大,为了最小化损失函数,那么权重矩阵w将接近于0。对于w接近于0带来的影响,可以从以下两个例子来说明。
- 对于一个多层神经网络,w接近于0意味着隐藏单元的权重接近于0,相当于大大减小了这些隐藏单元的影响。这样神经网络被简化成小规模的网络,但深度不变。这样会欠拟合状态趋向于欠拟合状态。但λ会存在一个中间值,使其达到合理拟合的状态。
- 假设使用双曲激活函数tanh(z),如果z集中于0附近,那么tanh(z)会接近于线性;如果z很大或很小,则tanh(z)变得非线性。那么,w接近于0时,z=wa+b变得很小,集中于0附近,那么每一层几乎都是线性的,这个网络就变成了非常深的线性网络,不会过度拟合数据集的非线性决策边界。
总之,λ增大时,整个网络会变的更加简单,越简单的模型越不会发生过拟合。
四、Dropout
dropout会遍历网络的每一层,以一定的概率消除某一节点,得到一个规模较小的网络。常用的dropout方法是inverted dropout(反向随机激活)。下面以某一神经网络的第三层举例说明。
d3 = np.random.rand(a3.shape[0], a3.shape[1]) < keep_proba3 = np.multply(a3, d3)a3 /= keep_prob第一行,d3是随机矩阵,布尔型。keep_prob是保留某个隐藏单元的概率。
第二行,将a3与d3相乘,以消除某些节点。
第三行,将a3除以keep_prob,使a3的期望值不变。
五、正则化输入
当输入特征不在同一范围时,如x1在[0,1],x2在[0,10000],需要对输入特征进行归一化,步骤包括零均值化和归一化方差。
零均值化:
归一化方差:
如下图1所示,输入特征可能不在同一范围,零均值化后输入特征变为图2所示分布,归一化方差后输入特征变成图3所示,x1和x2的方差都为1。
如果不进行输入正则化,那么代价函数J的形状可能如下图所示。J的形状十分狭长,此时需要设置较小的学习率,反复尝试才能达到最优点。
进行输入正则化后,J的形状如下所示。J变得均匀,设置一个较大的学习率就可以较快地达到最优点。
六、其他正则化方法
1、数据增强
当不好收集其他数据来扩展训练集时,可以利用现有的训练集进行数据增强。例如在图像分类中,可以对图像进行翻转、裁剪等操作来扩展数据集。
2、early stopping
在训练网络时,我们能看到训练误差在不断地下降,但在验证集上误差可能是先下降再上升。当验证集误差上升时,网络就出现了过拟合,此时提早停止训练可以防止过拟合。一般机器学习包括两个重要内容,一是选择优化算法来优化代价函数J,二是防止过拟合。在一个时间只做以上其中一个事情,而不影响另一个事情,这称为正交化。early stopping的缺点是无法独立地处理这两个事情,你若提早停止训练网络,就无法继续优化代价函数J。
- 【deeplearning.ai】第二门课:提升深层神经网络——正则化
- 【deeplearning.ai】第二门课:提升深层神经网络——正则化的编程作业
- 【deeplearning.ai】第二门课:提升深层神经网络——偏差和方差
- 【deeplearning.ai】第二门课:提升深层神经网络——权重初始化
- 【deeplearning.ai】Neural Networks and Deep Learning——深层神经网络
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络
- deeplearning.ai-卷积神经网络
- 第2次课改善深层神经网络:超参数优化、正则化以及优化
- 第2次课改善深层神经网络:超参数优化、正则化以及优化
- deeplearning.ai 第四课第一周,step by step 卷积神经网络的python实现
- deeplearning.ai 第四课第一周, 卷积神经网络的tensorflow实现
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-4)-- 深层神经网络
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-4)-- 深层神经网络(转载)
- 深度学习DeepLearning.ai系列课程学习总结:7. 深层神经网络理论学习
- deeplearning.ai之卷积神经网络
- 神经网络的提升方法(2)——正则化
- 【deeplearning.ai】Neural Networks and Deep Learning——浅层神经网络
- 【Spark】Spark的Standalone模式安装部署
- 正则表达式笔记
- 利用AdaBoost元算法提高分类性能
- pandas学习笔记1—categories与set_categories
- *TEST 3 for NOIP 哈希有毒
- 【deeplearning.ai】第二门课:提升深层神经网络——正则化
- 关于MyBatis的创建与一对多和多对一
- 兼容性测试
- linux下调试基础知识 GDB
- Mybatis学习笔记(一)-----SqlSession
- 超实用流程图制作技巧,制作流程图so easy
- position
- code[vs]1004四子连棋(迭代深度优先搜索)
- 三张图读懂机器学习:基本概念、五大流派与九种常见算法