一、神经元模型
1. 神经元的工作原理
网络中的基本单元为神经元,每个神经元收到n个来自其他神经元的输入信号,这些输入信号通过带权重的连接进行传递。
每个神经元收到的总的输入值与神经元的阈值相比较,若高于阈值,则该神经元被激活并通过激活函数产生神经元的输出。
(为什么要用激活函数:使得神经网络由简单的线性变换延伸到非线性变换,可获得更强大的表示能力;同时将输入值映射后更利于反向传播时计算梯度)
将多个这样的神经元按一定的层次结构连接起来,即得到神经网络。
2. 激活函数的选择
1) 阶跃函数
阶跃函数为理想的激活函数,然而,阶跃函数既不光滑亦不连续,需要寻找数学性质更好的激活函数做替代。
2) sigmoid函数
sigmoid函数的特点:
a. 输出介于(0, 1)之间,便于处理概率相关的问题。
b. 易导致梯度饱和/梯度弥散。若输入稍远离坐标原点,梯度就会变得很小,趋近于零。由于反向传播过程中,权重需通过微分的链式法则进行更新,使用sigmoid函数会导致权重对损失函数几乎无影响,不利于权重的优化。
c. 函数的输出不是以0为中心,使得权重的更新效率降低
d. 需进行指数运算,速度慢
3)tanh函数
tanh函数的特点:
a. 输出介于(-1, 1)之间,以零为中心
b. 输入较大/较小时,梯度较小,不利于权重的优化
4)ReLU函数
ReLU函数特点:
a. 输入为正时,不存在梯度饱和问题
b. 只有线性关系,计算速度快
c. 输入为负时,完全不被激活,反向传播过程中使得梯度为0,不利于权重优化
d. 不以0为输出中心
二、感知机与多层网络
感知机为两层神经元模型,可进行的运算:与、或、非(线性可分问题)
若要解决非线性可分问题,需使用多层神经元
三、误差逆传播算法(BP)
1.BP算法的过程
0)随机初始化所有权重(阈值可看作哑变量对应的权重,这样可将权重和阈值的学习统一为权重的学习)
1)根据当前参数计算当前样本的输出
2)计算输出层神经元的梯度
3)计算隐层神经元的梯度
4)更新权重
重复1)~4)至达到停止条件
2.缓解BP网络过拟合的方法
1)早停(early stopping)
将数据分为训练集和验证集,训练集用来计算梯度、更新权重,验证集用来计算误差。若训练集误差降低而验证集误差升高时,即终止训练过程。
2)正则化
在目标函数中加入正则项,限制模型复杂度。正则项系数
由交叉验证得到。
四、全局最小与局部极小
参数寻优方法:梯度下降法——沿着负梯度方向搜索最优解,梯度为0时,达到局部极小
若误差函数只有一个局部极小点,则该点为全局最小点;若误差函数有多个局部极小点,则可采取的方法:
1)采用多组不同的参数值初始化神经网络
2)模拟退火
3)随机梯度下降
五、深度学习
如何对深度神经网络进行有效的训练?
1)无监督逐层训练
每次训练一层隐节点,训练时将上一层的隐节点作为输入,本层节点的输出作为下一层节点的输入,即为”预训练“。预训练完成后,再对整个网络微调。
2)权共享
CNN:
卷积层:通过卷积滤波器提取输入的一种特征
池化层:基于局部相关性原理进行下采样,使得在减少数据量的同时保留有用信息
训练时用在卷积层和池化层相同的连接权,大幅减少了需训练的参数数目。
参考链接:激活函数https://www.cnblogs.com/rgvb178/p/6055213.html