基于深度学习的自然语言处理——学习基础与线性模型

本文介绍了有监督学习中的线性模型在自然语言处理中的应用,包括线性模型的概念、二分类与多分类的表示,以及常用的损失函数如hinge损失和对数损失。此外,还讨论了训练和优化过程中的正则化和基于梯度的最优化方法。
摘要由CSDN通过智能技术生成

学习基础与线性模型

学习基础与线性模型

有监督学习与参数化函数
  • 有监督机器学习的精华:创造一种通过观察样本进而产生泛化的机制。
  • 假设类
    指的是包含函数的特定的函数簇。例如:具有 d i n d_{in} din个变量的决策树空间。
    也确定了学习器可以表示什么,不可以表示什么。
    • 常见假设类(一个高维线性函数)
      f ( x ) = x ⋅ W + b f\left(x\right)=x\cdot W+b f(x)=xW+b
      x ∈ R d i n , W ∈ R d i n × d o u t , b ∈ R d o u t x\in R{^{{d_{in}}}},W\in R^{d_{in}\times d_{out}},b\in R^{d_{out}} xRdinWRdin×doutbRdout
      其中 x x x是函数输入, W W W b b b是参数,常被表示为 Θ \Theta Θ,学习的目标是确定参数的值。
  • 归纳偏置:为了把搜素限制在假设类中,引入了归纳偏置——一组关于期望结果形式的假设
训练集、测试集和验证集
  • 留一法(留一交叉验证):

    • 原理
      首先我们做一个假设:训练样本是一个有代表性的样本集合
      • 训练 k k k个函数 f 1 : k f_{1:k} f1:k,每次取出一个不同的输入样例,评估 f i f_i fi预测 x i x_i xi的能力。
      • 之后在整个训练集上训练一个函数 f f f
      • f f f在新输入上的准确率接近对取出元素得到正确预测结果的函数 f i f_i fi所占的比例。
    • 特点
      非常浪费时间,当 k k k小时才会使用
  • 留存法

    • 原理
      就是大家常用的对数据进行划分,一部分作为训练集一部分作为验证集。之后可以在整个数据集上重新训练一个模型,一般会产生更好的结果。但是当训练过程中某些参数对训练集敏感时,就需要注意了,可能产生次优解。
    • 特点
      • 划分数据前应打乱数据,保证样例分布的平衡
      • 随机划分不一定是一个好的选择
      • 应该保证训练集中包含更早的数据,验证集包含 较新的数据
  • 三路划分
    在上面的两路划分(存留法)中,根据验证集的准确率会导致对模型质量过于乐观的估计。

    • 原理
      将数据划分为三个部分:
      • 训练集
      • 验证集:在验证集上进行实验、调参、误差分析和模型选择等
      • 测试集:只进行一次简单运算对模型达到评估的目的
线性模型
  • 二分类
    二分类问题中,只有一个输出,所以 d o u t = 1 d_{out}=1 dout=1 w w w是一个向量, b b b是一个标量,
    f ( x ) = x ⋅ w + b f\left( x \right) = x \cdot w + b f(x)=xw+b
    值域为 [ − ∞ , + ∞ ] \left[ { - \infty , + \infty } \right] [,+],通常将 f ( x ) f\left( x \right) f(x)的输出通过sign函数进行映射。
  • 对数线性二分类
    当我们对决策的置信度或分类器分类的概率感兴趣时,一个便捷的方法就是将输出经过一个扁平函数将其映射到 [ 0 , 1 ] \left[ {0,1} \right] [0,1]
    • s i g m o i d sigmoid sigmoid函数
      σ ( x ) = 1 1 + e − x \sigma \left( x \right) = \frac{1}{{1 + {e^{ - x}}}} σ(x)=1+ex1
      最终模型为:
      y ^ = σ ( f ( x ) ) = 1 1 + e − ( x ⋅ w + b ) \hat y = \sigma \left( {f\left( x \right)} \right) = \frac{1}{{1 + {e^{ - \left( {x \cdot w + b} \right)}}}} y^=σ(f(x))=1+e(xw+b)1
  • 多分类
    当为多分类问题时,一种可行的方法是:
    • 为不同的分类考虑不同的权重 w 1 , w 2 , ⋯   , w k {w^1},{w^2}, \cdots ,{w^k} w1,w2,,wk和偏置 b 1 , b 2 , ⋯   , b k {b^1},{b^2}, \cdots ,{b^k} b1,b2,,bk
    • 将其分别组成矩阵 W W W b b b
    • 则新的公式变为:
      y ^ = f ( x ) = x ⋅ W + b \hat y=f\left( x \right) = x \cdot W + b y^=f(x)=xW+b
      p r e d i c t i o n = y ^ = arg ⁡ max ⁡ i y ^ [ i ] prediction=\hat y=\mathop {\arg \max }\limits_i {{\hat y}_{\left[ i \right]}} prediction=y^=iargmaxy^[i]
表示
  • 通过上面多分类公式计算的向量 y ^ \hat y y^可以看作是对样本的一个表示
    • 其实输入 x x x也是该文本的一个表示。
    • W W W包含对不同分类结果的表示,也包含对不同特征的表示。
独热和稠密向量表示
  • 独热
    在语言分类的例子中,输入向量包含了文档 D D D中已标准化的二元对数量。这个向量可被分解为 ∣ D ∣ \left| D \right| D个向量,每个对应一个特定的文档位置 i i i
    x = 1 ∣ D ∣ ∑ i = 1 ∣ D ∣ x D [ i ] x = \frac{1}{{\left| D \right|}}\sum\limits_{i = 1}^{\left| D \right|} {{x^{{D_{\left[ i \right]}}}}} x=D1i=1DxD[i]
    其中 D [ i ] D_{\left[i\right]} D[i]是文档位置 i i i上的二元对,每个向量 x D [ i ] {{x^{{D_{\left[ i \right]}}}}} xD[i]是一个独热向量,这个向量中除了对应 D [ i ] D_{\left[i\right]} D[i]的分量为 1 1 1,其余都为 0 0 0
  • 平均二元对词袋(BOW)
    上面的 x x x就是平均二元词袋,一个独热表示可以被认为是一个单一单词的词袋。
  • 连续单词词袋(CBOW)
    y ^ = 1 ∣ D ∣ ∑ i = 1 ∣ D ∣ W D [ i ] \hat y = \frac{1}{{\left| D \right|}}\sum\limits_{i = 1}^{\left| D \right|} {{W^{{D_{\left[ i \right]}}}}} y^=D1i=1DWD[i]
    其中 W D [ i ] {{W^{{D_{\left[ i \right]}}}}} WD[i]表示 W W W中对应于二元对 D [ i ] D_{\left[i\right]} D[i]的一行。
对数线性多分类

在二分类情况中,我们使用了 s i g m o i d sigmoid sigmoid函数,对于多分类情况则是使用 s o f t m a x softmax softmax函数:
s o f t m a x ( x ) [ i ] = e x [ i ] ∑ j e x [ j ] softmax {\left( x \right)_{\left[ i \right]}} = \frac{{{e^{{x_{\left[ i \right]}}}}}}{{\sum\nolimits_j {{e^{{x_{\left[ j \right]}}}}} }} softmax(x)[i]=jex[j]ex[i]
则有:
y ^ = s o f t m a x ( x W + b ) \hat y = softmax \left( {xW + b} \right) y^=softmax(xW+b)
y ^ [ i ] = e ( x W + b ) [ i ] ∑ j e ( x W + b ) [ j ] {{\hat y}_{\left[ i \right]}} = \frac{{{e^{{{\left( {xW + b} \right)}_{\left[ i \right]}}}}}}{{\sum\nolimits_j {{e^{{{\left( {xW + b} \right)}_{\left[ j \right]}}}}} }} y^[i]=je(xW+b)[j]e(xW+b)[i]
s o f t m a x softmax softmax转换强制 y ^ \hat y y^中的值为正数,和为 1 1 1

训练和优化
  • 损失函数
    • hinge
      • 二分类: L h i n g e ( b i n a r y ) ( y ~ , y ) = max ⁡ ( 0 , 1 − y ⋅ y ~ ) {L_{hinge\left( {binary} \right)}}\left( {\tilde y,y} \right) = \max \left( {0,1 - y \cdot \tilde y} \right) Lhinge(binary)(y~,y)=max(0,1yy~)
      • 多分类
        y ^ = y ^ [ 1 ] , y ^ [ 2 ] , ⋯   , y ^ [ n ] \hat y = {{\hat y}_{\left[ 1 \right]}},{{\hat y}_{\left[ 2 \right]}}, \cdots ,{{\hat y}_{\left[ n \right]}} y^=y^[1],y^[2],,y^[n]为分类器的输出向量, y y y为正确类别。则分类规则则为:
        p r e d i c t i o n = arg ⁡ max ⁡ i y ^ [ i ] prediction = \mathop {\arg \max }\limits_i {{\hat y}_{\left[ i \right]}} prediction=iargmaxy^[i]
        t t t为正确类别, k k k为最高分的类别,则
        L h i n g e ( m u l t i − c l a s s ) ( y ~ , y ) = max ⁡ ( 0 , 1 − ( y ^ [ t ] − y ^ [ k ] ) ) {L_{hinge\left( {multi - class} \right)}}\left( {\tilde y,y} \right) = \max \left( {0,1 - \left( {{{\hat y}_{\left[ t \right]}} - {{\hat y}_{\left[ k \right]}}} \right)} \right) Lhinge(multiclass)(y~,y)=max(0,1(y^[t]y^[k]))
        试图使正确类别的得分比其他类别高出 1 1 1
    • 对数损失
      hinge损失的变形,比hinge更加平缓:
      L log ⁡ ( y ^ , y ) = log ⁡ ( 1 + exp ⁡ ( − ( y ^ [ t ] − y ^ [ k ] ) ) ) {L_{\log }}\left( {\hat y,y} \right) = \log \left( {1 + \exp \left( { - \left( {{{\hat y}_{\left[ t \right]}} - {{\hat y}_{\left[ k \right]}}} \right)} \right)} \right) Llog(y^,y)=log(1+exp((y^[t]y^[k])))
    • 二元交叉熵(logistic损失)
      用于输出为条件概率分布的二元分类中,预测标签为 y ∈ { 0 , 1 } y \in \left\{ {0,1} \right\} y{0,1},预测规则为:
      p r e d i c t i o n = { 0 y ^ &lt; 0.5 1 y ^ ≥ 0.5 prediction = \left\{ \begin{array}{l} 0\quad \hat y &lt; 0.5\\ 1\quad {\kern 1pt} {\kern 1pt} \hat y \ge 0.5 \end{array} \right. prediction={0y^<0.51y^0.5
      损失被定义为:
      L l o g i s t i c ( y ^ , y ) = − y log ⁡ y ^ − ( 1 − y ) log ⁡ ( 1 − y ^ ) {L_{logistic}}\left( {\hat y,y} \right) = - y\log \hat y - \left( {1 - y} \right)\log \left( {1 - \hat y} \right) Llogistic(y^,y)=ylogy^(1y)log(1y^)
    • 分类交叉熵损失
      当希望得分为概率时,使用分类交叉熵损失。令 y = y [ 1 ] , ⋯ &ThinSpace; , y [ n ] y = {y_{\left[ 1 \right]}}, \cdots ,{y_{\left[ n \right]}} y=y[1],,y[n]为正确分类的多项式分布向量, y ^ = y ^ [ 1 ] , ⋯ &ThinSpace; , y ^ [ n ] \hat y = {\hat y_{\left[ 1 \right]}}, \cdots ,{\hat y_{\left[ n \right]}} y^=y^[1],,y^[n]为预测的结果,则
      L c r o s s − e n t r o p y ( y ^ , y ) = − ∑ i y [ i ] log ⁡ ( y ^ [ i ] ) {L_{cross - entropy}}\left( {\hat y,y} \right) = - \sum\limits_i {{y_{\left[ i \right]}}\log \left( {{{\hat y}_{\left[ i \right]}}} \right)} Lcrossentropy(y^,y)=iy[i]log(y^[i])
      对于样例只有一个正确类别时,可简化为:
      L c r o s s − e n t r o p y ( y ^ , y ) = − log ⁡ ( y ^ [ t ] ) {L_{cross - entropy}}\left( {\hat y,y} \right) = - \log \left( {{{\hat y}_{\left[ t \right]}}} \right) Lcrossentropy(y^,y)=log(y^[t])
      t t t是正确的类别指派。
    • 等级损失
      在没有就标签而言的监督时,只用一对正确项 x x x和不正确项 x ′ x&#x27; x,目标是给正确项打不低于不正确项的分。针对这种情况,定义等级损失:
      L r a n k i n g ( m arg ⁡ i n ) ( x , x ′ ) = max ⁡ ( 0 , 1 − ( f ( x ) − f ( x ′ ) ) ) {L_{ranking\left( {m\arg in} \right)}}\left( {x,x&#x27;} \right) = \max \left( {0,1 - \left( {f\left( x \right) - f\left( {x&#x27;} \right)} \right)} \right) Lranking(margin)(x,x)=max(0,1(f(x)f(x)))
      其中 f ( x ) {f\left( x \right)} f(x)为针对 x x x所打的分。
  • 正则化
    相关内容不再赘述。
基于梯度的最优化
参考文献

《基于深度学习的自然语言处理》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值