Language Modelling as Classification

  • 从分类器的角度看语言模型

  • 目标:设计分类器计算:

image.png

  • 输入:从第一个词到目前预测位置的词

  • 输出:在词汇表中找到下一个词

A Log-linear based Language Model

  • Log-Linear Model:使用softmax来概率化/归一化

image.png

  • 设计许多特征模板/函数 f∗() 来描述一段文本 x

  • y可以是给定单词的含义、给定书籍的类别或餐厅评论的正面/负面标签等等

An Intuitive Idea: N(ew)LM-0

  • 直观地,构建一个对数线性分类器,将 h1-hi−1 作为输入并输出单词标签 w∗

    1. 从单词 h1-hi−1 的历史中提取特征
    2. 尝试任何可能的单词标签 w
    3. 输出概率最高的 w∗i
  • 问题:

    1. 特征维度过大,不易应对可变长的位置表达
    2. 模型不容易优化
    3. label set过大
  • 特征跟位置有关,而位置难以表达

  • NLM-0(maximum entropy language models):设计了许多优化方法,但最终归结为最大熵梯度下降( stochasitc gradient descent)

  • Pros:没有zero-events,不依赖counting,是概率模型

  • Cons:没有更好的方法表示词,难以优化


Neural Language Models

Neural Networks

  • A basic neural network unit:

image.png

  • 加入提供非线性的函数,有点像log-liniear:

image.png

Non-Linear Activation Function

  • 可微分

  • domain宽一些而输出窄一些

  • Sigmoid:

image.png

  • tanh: elementwise hyperbolic tangent

image.png

  • ReLU: Rectified Linear Unit

image.png

  • 现在我们可以添加很多layers: linear, non-linear, linear, non-linear, linear, …
    1. layers越多,参数越多,计算量越大
    2. layers越多,可以越好的拟合训练数据
    3. layers越多,可以提高模型能力

Neural Language Model 1

  • Let’s build the first neural language model:linear, non-linear, linear, non-linear

image.png

  • parameters: b, A, W, T, u,可学习,但T与历史相关

  • vocabulary size: V = |V|, hidden size: H

  • b(V), A(∗,V), W(V,H), T(∗,H), u(H),word embeddings dim. d

Representing Words

  • bag-of-words和one-hot都并不好,希望对其进行压缩

  • w∗ 肯定是稀疏的,我们肯定可以将它们压缩/压缩成更短的向量,例如,d 维向量,其中 d 比 V 短得多——word embeddings:

    1. 找到 (V,d) 的矩阵 M 来存储这些向量
    2. V 中的第 i 个单词将表示为 (wi.T)M = mi,mi可以跟着模型一起训练
    3. mi,更短,更浓缩
  • 重要的是,可以将 (V,d) 的矩阵 M 视为参数,和LM一起训练。如果训练集够大,可以学很好的词的表示:

    1. 无需提前构建
    2. 无需额外的训练数据
    3. 可以学习 one-hot 之外的东西