FFN前馈神经网络
一、MCP单层感知机
1、实现流程
输入信号、加权求和、非线性激活(、逻辑回归/softmax回归)输出
2、特点
a二值化的线性模型(模拟单个神经细胞只有抑制和兴奋两种状态)
**b网络参数(权重W和偏置b)**可学习
3、激活函数:
a、概述
注:不加非线性激活函数,再多的隐藏层都相当于单层感知机
b、适用场景
输出层:sigmoid(二分类)、softmax(多分类)
隐藏层激活函数:RELU(导数为1)
ques:为什么用RELU做激活函数
- 计算相对sigmoid,tanh更简单
- 缓解梯度消失
- 输出部分神经元为0,增强网络稀疏化,防止过拟合
二、FFN前馈神经网络
1、定义
FFN:泛指所有单向信息流的神经网络
MLP:特指包含至少一个隐藏层且使用非线性激活函数的FFN(MLP是FNN的子集)
2、特点:
a各神经元属于不同的层、层内无连接
b前馈:信息单向传播
c全连接:两层之间的神经元全部两两相连
3、理论基础
通用近似定理:
线性输出+至少一个非线性激活函数+层数足够—>任意逼近
4、前向传播
注:每一个隐藏层加一次偏置b,b是数学意义上逐元素相加而非矩阵叠加
5、BP梯度反向传播维度确定
a、向量与标量求导
技巧核心:
1、标量不变,向量拉伸
2、前面横向拉,后面纵向拉(后×前)
(dy/dx的话就是Y横向拉伸,X纵向拉伸)
b、矩阵与标量求导
结果永远为矩阵的维度
具体表达式先根据代数运算写出,再通过添加转置和交换顺序变为矩阵维度
eg:
注意区分Xij和X,其中X是矩阵而Xij只是一个一维分量。
参考资料:
ques:梯度消失和梯度爆炸的定义与原因
原因:隐藏层层数过多
梯度消失:BP反向传播时,神经网络层数多时,每一层相对前一层乘上一个小数,累乘叠加,使得得到梯度过小近似消失 梯度爆炸:累乘指数爆炸解决方案:
1、RELU激活函数 2、残差连接 3、减少参数量:预训练与微调/LSTM和GRU中的门结构 4、限制上限:梯度剪切/正则化6、BP梯度反向传播
目的
具体计算:
a红:前向传播和反向传播公式
b蓝:各偏导维度
7、FFN中参数量的确定
(准确的说是针对全连接层的而非所有FFN)
注:FFN中输入大小i需要同时考虑输入图像大小和图像通道数
eg: