持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
总计:今天是十月更文计划第十二天,第二十五篇
逐层归一化
深层神经网络中,中间某一层的输入是其之前的神经层的输出。因此,其之前的神经层的参数变化会导致其输入的分布发生较大的差异。利用随机梯度下降更新参数时,每次参数更新都会导致网络中间每一层的输入的分布发生改变。
为了使得每个层的输入分布在训练过程中一致,可以采用逐层归一化的方法。主要有以下方法:
(1)批量归一化(Batch Normalization,BN)
批量归一化是对净输入进行归一化,使输入保持同分布,一般采用正态分布进行批量归一化,其归一化的方式为:
(z^(i)) ̂=z^(i)−E(z^(i))/√var(z^(i))+ℇ
(2)层归一化(Layer Normalization,LN)
层归一化和批归一化不同的是,层归一化是对一个中间层的所有神经元进行归一化。
对于第i层神经元的均值和方差的计算方式为:
μ^(i)=1/n_i∑_i=1^n_i▒z^(i)
σ^(i)^2=1/n_i∑_i=1^n_i▒(z^(i)−μ^(i))^2
采用层归一化方法可以将其应用到循环神经网络中,可以有效的缓解梯度爆炸或者梯度消失的问题。
常用的超参数:
(1)隐层的个数
隐层越多神经网络的模型越复杂,通常可以通过增加隐层来提高性能,但并不是只要增加隐层就会提升,能提升的程度也和具体的问题相关。
(2)丢弃率(Dropout)
Dropout是为了防止过度拟合随机抑制神经元使用的比率。
(3)学习率
在反向传播过程中,学习率和收敛速度相关。高的学习率,可以提升学习速度但是可能会错过最优值。
(4)批量大小
优化算法
常用的优化算法有:
(1)随机梯度下降(Stochastic Gradient Descent,SGD)
(2)动量(Momentum)
m_t=γm_t−1+ηg_t
其中g_t为梯度、γ为动量因子通常取值为0.9。参数更新的方式为:
θ=θ−m_t
(3)Adagrad
n_t=n_t−1+g_t^2
g_t=−1/√∑_r=1^t▒(g_r)^2+ϵ
其中ϵ为一个比较小的数保证分母不为0。
关于评价指标:
评价
一、分类
1、混淆矩阵
2、准确率(Accuracy)
3、错误率(Error rate)
4、精确率(Precision)
5、召回率(Recall)
6、F1 score
7、ROC曲线
8、AUC
9、PR曲线
10、对数损失(log_loss)
二、回归
1、平均绝对误差(MAE)
2、均方误差(MSE)
3、均方根误差(RMSE)
4、归一化均方根误差(NRMSE)
5、决定系数(R2)