Scalers点评: 机器学习小组是成长会的内部小组,这是成长会机器学习小组第22周学习笔记,也是深度学习第11次的复盘笔记

往期日志: ScalersTalk机器学习小组第21周学习笔记(深度学习-10) ScalersTalk机器学习小组第20周学习笔记(深度学习-9) ScalersTalk机器学习小组第19周学习笔记(深度学习-8) 本周学习情况: 本周(20160801—20160807)的学习主要为理论学习

重点介绍了神经网络的基本组成部分,包括激活函数的引入、反向传播基本原理、正则化操作等

本周复盘主持是[S290] Ramon

一、激活函数的引入: 线性模型: 优点:线性计算高效且稳定 缺点:只适用于线性可分数据 如何扬长避短: 保留线性计算中的参数,确保计算的高效性 引入非线性激活函数,确保整个模型的非线性性质 非线性模型: 惯常的方法是引入非线性激活函数,例如Rectified Linear Unit (ReLU) ReLU函数基本形式: ReLU偏倒函数形式: 引入非线性单元的简单网络结构: 激活函数的选择: (1)Sigmoid 函数 函数形式: 优点: 将所有输出约束到[0,1] Sigmoid函数的输出形式能够很好的解释神经元代谢率,所以在过去很长一段时间被当作主流的激活函数使用 缺点: 饱和神经元会造成 梯度消失 函数输出 不是零居中 的(会导致梯度都是正的或者都是负的) exp() 函数 计算耗时 (2)tanh 函数 函数形式: 优点: 将所有输出约束到[-1,1] 函数输出是零居中的 缺点: 依然存在 梯度消失 问题 (3)ReLU 函数 函数形式: 优点: 不存在梯度消失的情况 计算高效 实验显示使用ReLU比Sigmoid和tanh,模型更快收敛(6倍) 缺点: 函数输出不是 零居中 的 如果学习率设置不当,会使部分神经元在学习过程中永久“dead”(假设有一个很大的梯度更新了部分神经元,那这部分神经元的后续梯度都是0) (4)Leaky ReLU 函数形式: 优点: 不存在梯度消失的情况(正数域) 计算高效 实验显示使用ReLU比Sigmoid和tanh,模型更快收敛 不会存在神经元在学习过程中永久“dead”的情况 缺点: 函数输出不是 零居中 的 二、网络优化基本原理 多层网络基本形式: 基于链式法则的梯度计算: 如何设计更大更复杂网络应对更加复杂的问题 : 简单网络→ 增加单层神经元个数( 更宽 ) 简单网络→ 增加网络层数( 更深 ) 在同等参数规模的情况下,更深的网络优于更宽 更深的网络能够学习到更抽象的语义信息 更深的网络学习效率更高 三、模型正则化 正则化能够避免模型过拟合,提高模型的泛化性能,也能加快训练时的收敛速度 避免过拟合的方法: 观察验证集的准确率 对模型进行正则化处理,如L1/L2正则化

一般是在原来模型损失函数的基础上加上一项参数的惩罚项,惩罚过大的参数

Dropout,即随机关闭部分神经元

Batch normalization / Layer normalization等

如何判断过拟合: 观察验证集的准确率,当验证集的准确率不再增加反而减少了,就证明模型已经过拟合了

观察训练集准确率和验证集准确率之间的gap,当gap过大时就证明模型过拟合了

Dropout 方法: Dropout在训练过程中随机将部分神经元置0,使网络学习不依赖于某些特定神经元,迫使网络学习到不同的冗余表达,增加了网络的泛化性能,避免过拟合

为了使模型在验证时的输出能够和在训练时的输出保持相同分布,一般在训练的时候,除了将部分神经元(50%)置0外,还需要将剩下的神经元输出放大两倍 Batch Normalization方法: 神经网络之所以难训练,一个很重要的原因是:网络参数每一轮都会更新,导致网络中每一层的输入都会改变,使得同一层的输入数据的分布都会不一样

这使得网络训练十分依赖参数的初始化,学习率也不能太大,降低了学习效率

一个直接的解决方法就是对每一层的输出都做一个正则化,使得每个维度的输出分布满足高斯分布

有意入会者请和Scalers直接联系,我和其他会员会和你直接交流关于成长行动等各方面的经验教训

2016年 成长会 持续招募中,参见 做能说会写的持续行动者:ScalersTalk成长会2016年会员计划介绍(2016.3更新)



欢迎投稿 职场/创业方向. 邮箱wangfzcom(AT)163.com:王夫子社区 » ScalersTalk机器学习小组第22周学习笔记(深度学习-11)

点评 0

评论前必须登录!

登陆 注册