网络模型构建
想要性能构建良好的网络模型,需要选择合适的神经网络
- 对特征提取具有高效性
- 数据格式具有简易性
- 参数数目具有少量性
其中,对于图像和视频数据,选择卷积神经网络较为合适;对于语音和文本数据(序列数据),选择循环神经网络较为合适
超参数设置
超参数
无法从学习中得到,需要由人根据经验而定,如算法学习率、梯度下降法循环数量、隐藏层数目、单元数目等
调参策略
网络调参方向:更深的网络和更加复杂的结构
目的:提高泛化能力
- 正则化
- 增加神经网络层数
- 使用正确的代价函数
- 使用好的权重初始化技术
- 人为拓展训练集
- 弃权技术
提升CNN泛化能力:
- 使用更多数据
- 使用更大批次
- 调整数据分布
- 调整目标函数
- 调整网络结构
- 数据增强
- 权值正则化
激活函数和损失函数选择
CNN激活函数
ReLU:
- 对线性函数,表达很强;对非线性函数,梯度为常数,无梯度消失
- 增大了网络的稀疏性(单侧抑制)
- 运算量小
注意事项
若后层某层梯度较大,则导致权重更新后较大,该层输入为负且输出为0,该层死亡则应对学习率有适当设置
Leaky ReLu:
损失了一定的稀疏性,增加了一个超参数a,以达到优化ReLU死亡特性
Max Out:
大大增加了参数量
RNN激活函数
在RNN中,若采用ReLU,则会导致输出值过大,且无法解决梯度在长时间传递的问题,于是采用Tanh函数
CNN损失函数
分类:交叉熵损失函数
回归:L1,L2损失函数
作用:逐像素比较差异,避免正负值相互抵消,可对像素之差取绝对值或平方
RNN损失函数
交叉熵损失函数:
- 在
t
t
t时刻的损失函数如下:
L o s s t = − [ y t ln ( O t ) + ( 1 − y t ) ln ( 1 − O t ) ] Loss_t=-[y_t\ln(O_t)+(1-y_t)\ln(1-O_t)] Losst=−[ytln(Ot)+(1−yt)ln(1−Ot)] - 全部
N
N
N个时刻(全局)损失函数:
L o s s = ∑ t = 1 N L o s s t = − ∑ t = 1 N [ y t ln ( O t ) + ( 1 − y t ) ln ( 1 − O t ) ] Loss=\sum^N_{t=1}Loss_t=-\sum^N_{t=1}[y_t\ln (O_t)+(1-y_t)\ln(1-O_t)] Loss=∑t=1NLosst=−∑t=1N[ytln(Ot)+(1−yt)ln(1−Ot)]