- 书:
- 基于深度学习的自然语言处理
- Neural Network Methods for Natural Language Processing
- 作者:Yoav Goldberg
- 出版社:机械工业出版社
- 章节:2.7 训练和最优化
优化目标
优化目标包括两部分:损失函数和正则项。
损失函数用于衡量预测值与实际值的差距(更好地拟合),正则项用于控制参数值的复杂度(避免过拟合)。
优化目标=最小化(损失函数+λ正则项)
优化目标=最小化(损失函数+\lambda正则项)
优化目标=最小化(损失函数+λ正则项)
其中,λ\lambdaλ用于控制正则化的程度。
损失函数
注:主要是在自然语言处理中经常和线性模型以及神经网络一起使用的损失函数。
1. hinge损失函数
二分类:间隔损失、SVM损失
- 损失函数:
Lhinge(binary)(y~,y)=max(0,1−y⋅y~) L_{hinge(binary)}(\widetilde{y},y)=max(0, 1-y\cdot\widetilde{y}) Lhinge(binary)(y,y)=max(0,1−y⋅y)
分类规则为:
prediction=y^=sign(y~) prediction=\hat{y}=sign(\widetilde{y}) prediction=y^=sign(y)
其中,yyy是正确的类别(1或-1),y~\widetilde{y}y是分类器的计算结果,y^\hat{y}y^是分类器的输出。 - 目标:
- 得到一个间隔至少是1的正确分类
多分类
- 损失函数:
Lhinge(multi−class)(y^,y)=max(0,1−(y^[t]−y^[k])) L_{hinge(multi-class)}(\hat{\mathbf{y}},\mathbf{y})=max(0,1-(\hat{\mathbf{y}}_{[t]}-\hat{\mathbf{y}}_{[k]})) Lhinge(multi−class)(y^,y)=max(0,1−(y^[t]−y^[k]))
分类规则为选择分数最高的类别:
prediction=argmaxi y^[i] prediction=\mathop{\arg\max}_{i}\ \hat{\mathbf{y}}_{[i]} prediction=argmaxi y^[i]
其中,yyy是正确类别的独热向量,y^\hat{y}y^是模型的输出向量(y^=y^[1],y^[2],…,y^[n]\hat{\mathbf{y}}=\hat{\mathbf{y}}_{[1]},\hat{\mathbf{y}}_{[2]},\dots,\hat{\mathbf{y}}_{[n]}y^=y^[1],y^[2],…,y^[n]),y^[t]\hat{\mathbf{y}}_{[t]}y^[t]为正确类别ttt对应的分数,y^[k]\hat{\mathbf{y}}_{[k]}y^[k]最高分类别kkk的分数。 - 目标:
- 使正确类别的得分比其他类别至少高出1。
评价
- 可用于线性输出
- 适用于当需要一个严格的决策规则,而不需要建模类别成员概率的情况
2. 对数(log)损失函数
- 损失函数:
Llog(y^,y)=log(1+exp(−(y^[t]−y^[k]) L_{log}(\hat{\mathbf{y}},\mathbf{y})=log(1+exp(-(\hat{\mathbf{y}}_{[t]}-\hat{\mathbf{y}}_{[k]}) Llog(y^,y)=log(1+exp(−(y^[t]−y^[k])
符号含义同多分类hinge。
评价
- 是hinge损失的常用变形
- 可以看作hinge损失的平缓版本,具有无限大的间隔
3. 交叉熵
二分类:二元交叉熵损失、logistic损失
- 损失函数:
Llogistic(y^,y)=−ylogy^−(1−y)log(1−y^) L_{logistic}(\hat{y},y)=-ylog\hat{y}-(1-y)log(1-\hat{y}) Llogistic(y^,y)=−ylogy^−(1−y)log(1−y^)
分类规则:
prediction={0y^<0.51y^≥0.5 prediction= \begin{cases} 0 & \hat{y}<0.5 \\ 1 & \hat{y}\ge0.5 \end{cases} prediction={01y^<0.5y^≥0.5
其中,yyy是正确的类别(0或1),y^\hat{y}y^是模型的输出y~\widetilde{y}y经过变换的结果(y^=sigmod(y~)=P(y=1∣x))\hat{y}=sigmod(\widetilde{y})=P(y=1|x))y^=sigmod(y)=P(y=1∣x)),即y^\hat{y}y^为样本为1的概率。
多分类:分类交叉熵损失、负对数似然损失
- 损失函数:
Lcross−entropy(y^,y)=−∑iy[i]log(y^[i]) L_{cross-entropy}(\hat{\mathbf{y}},\mathbf{y})=-\sum_i\mathbf{y}_{[i]}log(\hat{\mathbf{y}}_{[i]}) Lcross−entropy(y^,y)=−i∑y[i]log(y^[i])
其中,y\mathbf{y}y是正确类别分布向量(y=y[1],y[2],…,y[n]\mathbf{y}=\mathbf{y}_{[1]},\mathbf{y}_{[2]},\dots,\mathbf{y}_{[n]}y=y[1],y[2],…,y[n]),y^\hat{\mathbf{y}}y^是经过softmax转换的模型(线性分类器)输出向量(y^=y^[1],y^[2],…,y^[n],y^[i]=P(y=i∣x))\hat{\mathbf{y}}=\hat{\mathbf{y}}_{[1]},\hat{\mathbf{y}}_{[2]},\dots,\hat{\mathbf{y}}_{[n]},\hat{\mathbf{y}}_{[i]}=P(y=i|x))y^=y^[1],y^[2],…,y^[n],y^[i]=P(y=i∣x))。 - 简化版:
- 对于训练样本有且只有一个正确的类别这类严格的分类问题来说,yyy是一个代表正确类别的独热向量:
Lcross−entropy(hard classification)(y^,y)=−log(y^[t]) L_{cross-entropy(hard\ classification)}(\hat{\mathbf{y}},\mathbf{y})=-\log(\hat{\mathbf{y}}_{[t]}) Lcross−entropy(hard classification)(y^,y)=−log(y^[t])
其中,ttt是正确的类别。
- 对于训练样本有且只有一个正确的类别这类严格的分类问题来说,yyy是一个代表正确类别的独热向量:
- 目标:
- (正常版)最小化正确类别分布yyy与预测类别分布y^\hat{y}y^之间的相异度
- (简化版)使正确类别的概率最大
评价
- 常见于对数线性模型和神经网络文献中
- 用于构造一个不仅可以预测最好类别也可以预测可能类别分布的多分类器
4. 等级损失
注:还没整明白
margin
- 损失函数:
Lranking(margin)(x,x′)=max(0,1−(f(x)−f(x′))) L_{ranking(margin)}(\mathbf{x},\mathbf{x}')=max(0,1-(f(\mathbf{x})-f(\mathbf{x}'))) Lranking(margin)(x,x′)=max(0,1−(f(x)−f(x′)))
log
- 损失函数:
Lranking(log)(x,x′)=log(1+exp(−f(x)−f(x′)))) L_{ranking(log)}(\mathbf{x},\mathbf{x}')=log(1+exp(-f(\mathbf{x})-f(\mathbf{x}')))) Lranking(log)(x,x′)=log(1+exp(−f(x)−f(x′))))
正则项
1. L2L_2L2正则项:高斯先验、Ridge
- 表示:
RL2(W)=∣∣W∣∣22=∑i,j(W[i,j])2 R_{L_2}(\mathbf{W})=||\mathbf{W}||_2^2=\sum_{i,j}(\mathbf{W}_{[i,j]})^2 RL2(W)=∣∣W∣∣22=i,j∑(W[i,j])2 - 目标:
- 保证参数的平方和足够小,即让所有特征的比重都缩小
- 特点:
- 一旦参数值足够接近于0,L2L_2L2正则化的作用几乎可以忽略不计
- 把10个参数都减少0.1 v.s.v.s.v.s. 把一个参数减少1:L2L_2L2正则化会选择后者
2. L1L_1L1正则项:稀疏先验、Lasso
- 表示:
RL1(W)=∣∣W∣∣1=∑i,j∣W[i,j]∣ R_{L_1}(\mathbf{W})=||\mathbf{W}||_1=\sum_{i,j}|\mathbf{W}_{[i,j]}| RL1(W)=∣∣W∣∣1=i,j∑∣W[i,j]∣ - 目标:
- 保证参数值的绝对值和足够小,即让一部分特征的比重减少到0(特征选择)
- 特点:
- 偏向把所有非零参数减少到0
3. 弹性网络
- 表示:
Relastic−net(W)=λ1RL1(W)+λ2RL2(W) R_{elastic-net}(\mathbf{W})=\lambda_1R_{L_1}(\mathbf{W})+\lambda_2R_{L_2}(\mathbf{W}) Relastic−net(W)=λ1RL1(W)+λ2RL2(W) - 目标:
- 得到少量非零参数
- 特点:
- 组合了L1L_1L1正则和L2L_2L2正则