作业: https://shimo.im/docs/Ger2yvth3180SEkL
前馈神经网络,是由输入层,隐藏层,输出层组成。
参考:
https://blog.youkuaiyun.com/u010089444/article/details/52555567
感知机,最少为单层的感知机,仅由输入层和输出层相链接,中间有权值。
感知器类似于逻辑回归模型(可以做二分类或者多分类,逻辑回归是在线性回归的基础上,对连续值Y做分段,即可得到分类模型),可以做分类。
其实一层的隐藏层的感知机就可以拟合任何我们想要的函数。
参考:
单层感知机: https://cloud.tencent.com/developer/news/389738
逻辑回归: https://www.cnblogs.com/pinard/p/6029432.html
激活函数,常见的有sigmoid,tanh,relu函数。上层节点的输出和下层节点的输入之间具有一个函数关系,为激活函数。激活函数都是非线性的,如果不适用激活函数,则层数增多也都是线性效果,隐藏层并不起作用。
sigmoid的缺点1:比较容易发生梯度消失。2:由于sigmoid的输出是非0均值,在反向传播的过程中,容易向一个方向进行更新参数(正或者负),采用batch训练可以一定缓解。
tanh(hyperbolic tangent)解决了sigmoid的缺点2,但是缺点1依然存在。
relu解决了正区间上的梯度消失的问题;并且计算速度快,只需要判断输入是否大于0;收敛速度远快于sigmoid和tanh。另外relu不是均值为0的函数(zero-centered);2dead relu problem问题,即某些神经元永远不会被激活,导致相应的参数不会被更新。relu是目前最常使用的激活函数。
leaky relu,在relu的基础上,负区间的斜率为0.01, 具有relu的所有有点,另外解决了dead relu的问题。但实际中,并没有证明leakyrelu总是好于relu。
elu(exponential linear units),类似于leak relu,具有relu的所有有点,解决了dead relu的问题,数据均值近0均值分布,但不是总好于relu。计算量还大。
maxout,不是很清晰,跳过。
参考: https://blog.youkuaiyun.com/tyhj_sf/article/details/79932893
反向传播:
递归实现,待补充..
正则化
正则化是结构风险最小化的一种策略表现,就是加入一些规则(先验知识),使得函数的解空间变小(权重参数减少),减少出错的概率。那么L1,L2正则是怎么减少出错概率的呢?
降低过拟合。·
L2正则限定了w的有效区域为在原先损失函数的范围内,和一个原型的交叉部分。L1正则则是限定了一个方形与远损失函数的交叉,可以看出L1更容易得到稀疏的结果。
参考:https://www.zhihu.com/question/20924039/answer/131421690
https://blog.youkuaiyun.com/red_stone1/article/details/80755144
dropout:通过忽略一半的特征检测其(让一半的隐层节点为0)可以减小过拟合。
参考:
https://blog.youkuaiyun.com/program_developer/article/details/80737724
深度模型中的优化:
初始化策略:
自适应学习率算法
batch norm层
layer norm层
-------------------
fasttext:
fasttext模型只有三层,输入层,隐藏层和输出层(使用了层级的softmax),另外使用ngram作为了额外的特征。fasttext也会生成中间文件即词向量。
核心思想是: 使用词的向量叠加求平均,额外加上一些ngram特征来表达文档,使用文档向量做softmax分类(基于逻辑回归的扩展(逻辑回归又是基于线性回归的变化))。
参考:
https://blog.youkuaiyun.com/AZRRR/article/details/90445587
https://zhuanlan.zhihu.com/p/32965521
待续未完..