[读书笔记] 自然语言处理中的损失函数和正则项

  • 书:
    • 基于深度学习的自然语言处理
    • Neural Network Methods for Natural Language Processing
  • 作者:Yoav Goldberg
  • 出版社:机械工业出版社
  • 章节:2.7 训练和最优化

优化目标

优化目标包括两部分:损失函数和正则项。
损失函数用于衡量预测值与实际值的差距(更好地拟合),正则项用于控制参数值的复杂度(避免过拟合)。
优 化 目 标 = 最 小 化 ( 损 失 函 数 + λ 正 则 项 ) 优化目标=最小化(损失函数+\lambda正则项) =+λ
其中, λ \lambda λ用于控制正则化的程度。

损失函数

注:主要是在自然语言处理中经常和线性模型以及神经网络一起使用的损失函数。

1. hinge损失函数

二分类:间隔损失、SVM损失

  • 损失函数:
    L h i n g e ( b i n a r y ) ( y ~ , y ) = m a x ( 0 , 1 − y ⋅ y ~ ) L_{hinge(binary)}(\widetilde{y},y)=max(0, 1-y\cdot\widetilde{y}) Lhinge(binary)(y ,y)=max(0,1yy )
    分类规则为:
    p r e d i c t i o n = y ^ = s i g n ( y ~ ) prediction=\hat{y}=sign(\widetilde{y}) prediction=y^=sign(y )
    其中, y y y是正确的类别(1或-1), y ~ \widetilde{y} y 是分类器的计算结果, y ^ \hat{y} y^是分类器的输出。
  • 目标:
    • 得到一个间隔至少是1的正确分类

多分类

  • 损失函数:
    L h i n g e ( m u l t i − c l a s s ) ( y ^ , y ) = m a x ( 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(multiclass)(y^,y)=max(0,1(y^[t]y^[k]))
    分类规则为选择分数最高的类别:
    p r e d i c t i o n = arg ⁡ max ⁡ i   y ^ [ i ] prediction=\mathop{\arg\max}_{i}\ \hat{\mathbf{y}}_{[i]} prediction=argmaxi y^[i]
    其中, y y y是正确类别的独热向量, 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]为正确类别 t t t对应的分数, y ^ [ k ] \hat{\mathbf{y}}_{[k]} y^[k]最高分类别 k k k的分数。
  • 目标:
    • 使正确类别的得分比其他类别至少高出1。

评价

  • 可用于线性输出
  • 适用于当需要一个严格的决策规则,而不需要建模类别成员概率的情况

2. 对数(log)损失函数

  • 损失函数:
    L l o g ( y ^ , y ) = l o g ( 1 + e x p ( − ( 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损失

  • 损失函数:
    L l o g i s t i c ( y ^ , y ) = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) L_{logistic}(\hat{y},y)=-ylog\hat{y}-(1-y)log(1-\hat{y}) Llogistic(y^,y)=ylogy^(1y)log(1y^)
    分类规则:
    p r e d i c t i o n = { 0 y ^ &lt; 0.5 1 y ^ ≥ 0.5 prediction= \begin{cases} 0 &amp; \hat{y}&lt;0.5 \\ 1 &amp; \hat{y}\ge0.5 \end{cases} prediction={01y^<0.5y^0.5
    其中, y y y是正确的类别(0或1), y ^ \hat{y} y^是模型的输出 y ~ \widetilde{y} y 经过变换的结果( y ^ = s i g m o d ( y ~ ) = P ( y = 1 ∣ x ) ) \hat{y}=sigmod(\widetilde{y})=P(y=1|x)) y^=sigmod(y )=P(y=1x)),即 y ^ \hat{y} y^为样本为1的概率。

多分类:分类交叉熵损失、负对数似然损失

  • 损失函数:
    L c r o s s − e n t r o p y ( y ^ , y ) = − ∑ i y [ i ] l o g ( y ^ [ i ] ) L_{cross-entropy}(\hat{\mathbf{y}},\mathbf{y})=-\sum_i\mathbf{y}_{[i]}log(\hat{\mathbf{y}}_{[i]}) Lcrossentropy(y^,y)=iy[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=ix))
  • 简化版:
    • 对于训练样本有且只有一个正确的类别这类严格的分类问题来说, y y y是一个代表正确类别的独热向量:
      L c r o s s − e n t r o p y ( h a r d   c l a s s i f i c a t i o n ) ( y ^ , y ) = − log ⁡ ( y ^ [ t ] ) L_{cross-entropy(hard\ classification)}(\hat{\mathbf{y}},\mathbf{y})=-\log(\hat{\mathbf{y}}_{[t]}) Lcrossentropy(hard classification)(y^,y)=log(y^[t])
      其中, t t t是正确的类别。
  • 目标:
    • (正常版)最小化正确类别分布 y y y与预测类别分布 y ^ \hat{y} y^之间的相异度
    • (简化版)使正确类别的概率最大

评价

  • 常见于对数线性模型和神经网络文献中
  • 用于构造一个不仅可以预测最好类别也可以预测可能类别分布的多分类器

4. 等级损失

注:还没整明白

margin

  • 损失函数:
    L r a n k i n g ( m a r g i n ) ( x , x ′ ) = m a x ( 0 , 1 − ( f ( x ) − f ( x ′ ) ) ) L_{ranking(margin)}(\mathbf{x},\mathbf{x}&#x27;)=max(0,1-(f(\mathbf{x})-f(\mathbf{x}&#x27;))) Lranking(margin)(x,x)=max(0,1(f(x)f(x)))

log

  • 损失函数:
    L r a n k i n g ( l o g ) ( x , x ′ ) = l o g ( 1 + e x p ( − f ( x ) − f ( x ′ ) ) ) ) L_{ranking(log)}(\mathbf{x},\mathbf{x}&#x27;)=log(1+exp(-f(\mathbf{x})-f(\mathbf{x}&#x27;)))) Lranking(log)(x,x)=log(1+exp(f(x)f(x))))

正则项

1. L 2 L_2 L2正则项:高斯先验、Ridge

  • 表示:
    R L 2 ( W ) = ∣ ∣ W ∣ ∣ 2 2 = ∑ 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)=W22=i,j(W[i,j])2
  • 目标:
    • 保证参数的平方和足够小,即让所有特征的比重都缩小
  • 特点:
    • 一旦参数值足够接近于0, L 2 L_2 L2正则化的作用几乎可以忽略不计
    • 把10个参数都减少0.1 v . s . v.s. v.s. 把一个参数减少1: L 2 L_2 L2正则化会选择后者

2. L 1 L_1 L1正则项:稀疏先验、Lasso

  • 表示:
    R L 1 ( 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)=W1=i,jW[i,j]
  • 目标:
    • 保证参数值的绝对值和足够小,即让一部分特征的比重减少到0(特征选择)
  • 特点:
    • 偏向把所有非零参数减少到0

3. 弹性网络

  • 表示:
    R e l a s t i c − n e t ( W ) = λ 1 R L 1 ( W ) + λ 2 R L 2 ( W ) R_{elastic-net}(\mathbf{W})=\lambda_1R_{L_1}(\mathbf{W})+\lambda_2R_{L_2}(\mathbf{W}) Relasticnet(W)=λ1RL1(W)+λ2RL2(W)
  • 目标:
    • 得到少量非零参数
  • 特点:
    • 组合了 L 1 L_1 L1正则和 L 2 L_2 L2正则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值