深度学习基础回顾

献给莹莹

一.损失函数

1.BECloss

二分类用的交叉熵,用的时候需要在该层前面加上 Sigmoid 函数。
因为离散版的交叉熵定义是


其中 p,q 都是向量,且都是概率分布。如果是二分类的话,因为只有正例和反例,且两者的概率和为 1,那么只需要预测一个概率就好了,因此可以简化成


注意这里 x,y可以是向量或者矩阵,i只是下标;xi 表示第 i 个样本预测为 正例 的概率,yi 表示第 i个样本的标签,wi表示该项的权重大小。可以看出,loss, x, y, w 的维度都是一样的。

2.MSEloss

即均方误差

3.CrossEntropyLoss


x为一维向量,label为一个数值
用于多分类的交叉熵

二、避免过拟合的方法

1.Dropout


假设我们要训练上图这个网络,在训练开始时,我们随机地“删除”一半的隐层单元,视它们为不存在。
但是:

Dropout能够避免过拟合的原因:
1)减少神经元之间复杂的共适应关系,权值的更新不再依赖于有固定关系的隐含节点的共同作用。
2)取平均,也可以认为是一种集成学习的思想。

2.正则化

1)L2 正则化

L2正则化就是在代价函数后加上一个正则项


C0代表原始的代价函数,后面那一项就是L2正则化项,它是这样来的:所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C0项的比重。
先求导:

可以发现L2正则化项对b的更新没有影响,但是对于w的更新有影响


在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为 1−ηλ/n ,因为η、λ、n都是正的,所以 1−ηλ/n小于1,它的效果是减小w,这也就是权重衰减(weight decay)的由来。当然考虑到后面的导数项,w最终的值可能增大也可能减小

到目前为止,我们只是解释了L2正则化项有让w“变小”的效果,但是还没解释为什么w“变小”可以防止overfitting?一个所谓“显而易见”的解释就是:更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好(这个法则也叫做奥卡姆剃刀)

\color{red}{稍微数学一点的解释}
过拟合的时候,拟合函数的系数往往非常大,为什么?过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。

2)L1 正则化

在损失函数后添加L1正则项



求导:



上式中sgn(w)表示w的符号。那么权重w的更新规则为



比原始的更新规则多出了η * λ * sgn(w)/n这一项。当w为正时,更新后的w变小。当w为负时,更新后的w变大——因此它的效果就是让w往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。

L1正则化不可导问题的解决:https://blog.csdn.net/xiaocong1990/article/details/83039802

3)L1 正则化 和 L2 正则化的区别

  • L1 正则化可以产生更稀疏的权值矩阵,可以用于特征选择,同时一定程度上防止过拟合;L2 正则化主要用于防止模型过拟合
  • L1 正则化适用于特征之间有关联的情况;L2 正则化适用于特征之间没有关联的情况
    为什么 L1 正则化可以产生稀疏权值,而 L2 不会?

对目标函数添加范数正则化,训练时相当于在范数的约束下求目标函数 J 的最小值
带有L1 范数(左)和L2 范数(右)约束的二维图示


图中 J 与 L1 首次相交的点即是最优解。L1 在和每个坐标轴相交的地方都会有“顶点”出现,多维的情况下,这些顶点会更多;在顶点的位置就会产生稀疏的解。而 J 与这些“顶点”相交的机会远大于其他点,因此 L1 正则化会产生稀疏的解。
L2 不会产生“顶点”,因此 J 与 L2 相交的点具有稀疏性的概率就会变得非常小。

三、反向传播

上标 (l) 表示网络的层,(L) 表示输出层(最后一层);下标 j 和 k 指示神经元的位置;w_jk 表示 l 层的第 j 个神经元与(l-1)层第 k 个神经元连线上的权重

  • (w,b) 为网络参数:权值和偏置
  • z 表示上一层激活值的线性组合
  • a 即 "activation",表示每一层的激活值,上标(l)表示所在隐藏层,(L)表示输出层
  • C 表示激活函数,其参数为神经网络输出层的激活值a^(L),与样本的标签y

四、激活函数

1.为什么要加入激活函数

使用激活函数的目的是为了向网络中加入非线性因素;加强网络的表示能力,解决线性模型无法解决的问题

2.常见激活函数

1)Relu函数
2)LeakyRelu函数
3)Softmax函数
4)Sigmoid函数

3.Relu函数与Sigmoid函数的区别

避免梯度消失
sigmoid函数在输入取绝对值非常大的正值或负值时会出现饱和现象——在图像上表现为变得很平,此时函数会对输入的微小变化不敏感——从而造成梯度消失;
ReLU 的导数始终是一个常数——负半区为 0,正半区为 1——所以不会发生梯度消失现象
减缓过拟合
ReLU 在负半区的输出为 0。一旦神经元的激活值进入负半区,那么该激活值就不会产生梯度/不会被训练,造成了网络的稀疏性——稀疏激活
这有助于减少参数的相互依赖,缓解过拟合问题的发生
为什么 ReLU 不是全程可微/可导也能用于基于梯度的学习?
虽然从数学的角度看 ReLU 在 0 点不可导,因为它的左导数和右导数不相等;
但是在实现时通常会返回左导数或右导数的其中一个,而不是报告一个导数不存在的错误。从而避免了这个问题

五、BN标准化(Batch Normalization)

1.引入BN的原因

  • 训练的本质是学习数据分布。如果训练数据与测试数据的分布不同会降低模型的泛化能力。因此,应该在开始训练前对所有输入数据做归一化处理。
  • 而在神经网络中,因为每个隐层的参数不同,会使下一层的输入发生变化,从而导致每一批数据的分布也发生改变;致使网络在每次迭代中都需要拟合不同的数据分布,增大了网络的训练难度与过拟合的风险。

2.基本原理

  • BN 方法会针对每一批数据,在网络的每一层输入之前增加归一化处理,使输入的均值为 0,标准差为 1目的是将数据限制在统一的分布下。

  • 具体来说,针对每层的第 k 个神经元,计算这一批数据在第 k 个神经元的均值与标准差,然后将归一化后的值作为该神经元的激活值。

  • BN 可以看作在各层之间加入了一个新的计算层,对数据分布进行额外的约束,从而增强模型的泛化能力;

  • 但同时 BN 也降低了模型的拟合能力,破坏了之前学到的特征分布

  • 为了恢复数据的原始分布,BN 引入了一个重构变换来还原最优的输入数据分布:

3.BN层为什么能够加快网络收敛速度

  • BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布
  • 这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。

4.BN层为什么能够避免梯度消失

见上一问

5.为什么BN层一般用在线性层和卷积层后,而不是放在非线性单元后

  • 因为非线性单元的输出分布形状会在训练过程中变化,归一化无法消除他的方差偏移。
  • 相反的,全连接和卷积层的输出一般是一个对称,非稀疏的一个分布,更加类似高斯分布,对他们进行归一化会产生更加稳定的分布。
  • 其实想想也是的,像relu这样的激活函数,如果你输入的数据是一个高斯分布,经过他变换出来的数据能是一个什么形状?小于0的被抑制了,也就是分布小于0的部分直接变成0了,这样不是很高斯了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容

  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 4,484评论 0 6
  • 简书公式支持不太好,欢迎跳转到机器学习深度学习面试题总结GitHub看完整的总结,GitHub总结比较全,大多数是...
    MrMiaow阅读 3,793评论 1 8
  • 改进神经网络的学习方法(上) 当一个高尔夫球员刚开始学习打高尔夫时,他们通常会在挥杆的练习上花费大多数时间。慢慢地...
    nightwish夜愿阅读 2,904评论 2 8
  • 本系列第三篇,承接前面的《浅谈机器学习基础》和《浅谈深度学习基础》。 自然语言处理绪论 什么是自然语言处理? 自然...
    我偏笑_NSNirvana阅读 17,505评论 2 68
  • 请给我一杯普洱清茶,一缕涉人幽桑的思念,静带淡淡的忧伤啊。 来,抿一口茶吧,它会滋润你的喉;它会流淌你的心;它会浸...
    玖煋瑾阅读 220评论 0 6