0%

课程学习-CS224n-Lecture-3-Word Window Classification and Neural Networks

分类问题

假设有训练集样本 \{\mathbf{x}_i,\mathbf{y}_i\}^N_{i=1}​

传统机器学习/统计方法

假设 \mathbf{x}_i 固定,训练一个softmax/logistic regression去更新权重 \mathbf{W}

通过softmax计算后验概率:

p(y|x) = \frac{\exp(W_y\cdot x)}{\sum_{c=1}^C\exp(W_c\cdot x)}

并采用交叉熵损失进行优化(等同于最小化类别的负对数概率),交叉熵损失函数为:

H(p,q) = -\sum_{c=1}^C p(c)\log q(c)
神经网络方法

解决非线性问题和适用于更复杂场景

NLP中的分类方法

同时学习权重 \mathbf{W} word vectors \mathbf{x}

命名实体识别(NER)

通常包括两部分:1)实体边界识别;2) 确定实体类别(人名、地名、机构名或其他)

目的:找到并对文本中的命名实体进行分类,主要包含人名、地名、机构名等。

难点:实体边界难找;很难保证是否是实体;很难知道某些未见过的实体的类别;命名实体可能有多个类别

window classification

思想:通过邻域的context windowword进行分类

做法:将window中的vector进行平均,再进行分类

问题:会丢失位置信息

window classifier: softmax

做法:将window中所有的vector进行concat,再对这个新的vector进行分类判断,如果center word为某个类型的实体词(如地点),则希望对应有较高的分数。

具体而言,对于窗口大小为 2 concat的新的vector如下:

使用神经网络层计算得到非归一化的得分,结合softmax并配合交叉熵损失函数进行优化。假设 x 表示输入词向量, y 表示对应标签,假设有 C 个类别,则 x 对应类别为 y 的概率为:

\hat{y}_y = p(y|x) = \frac{\exp(W_y\cdot x)}{\sum_{c=1}^C\exp(W_c\cdot x)}

则交叉熵损失为:

J(\theta) = \frac{1}{N}\sum_{i=1}^{N}-\log p(y|x)

此时通过反向传播求导更新参数和word vector

使用单层神经网络
  • 单层神经网络包含一个线性层 z = Wx + b 和一个非线性激活函数 a=f(z)

  • 再使用softmax计算最终概率或者使用非归一化的得分:

    • 对于softmax

      p(y|x) = \text{softmax}(Wa)
    • 对于非归一化得分:

      \text{score}(x) = U^Ta
  • 接下来进行损失函数计算:

    • 对于softmax:可使用交叉熵

    • 对于非归一化得分:

      基本思想是让“真实”的窗口得分值变大,而语料库中其他窗口的得分值变小。对于之前的例子,假设 s 表示center wordlocation的得分, s_c center word不是location的得分,希望最小化 s_c-s ,即希望 s 的得分高于 s_c ,但又不希望两个得分差距过大,故通常设定一个阈值,当 s_c-s<t hreshold 时才有损失。

      max margin loss公式如下:

      J = \max(0, 1-s+s_c)

      该公式不可微分,但为连续函数,可使用SGD优化器。