自然语言处理 lec4-3 nlm
Language Modelling as Classification
从分类器的角度看语言模型
目标:设计分类器计算:
输入:从第一个词到目前预测位置的词
输出:在词汇表中找到下一个词
A Log-linear based Language Model
- Log-Linear Model:使用softmax来概率化/归一化
设计许多特征模板/函数 f∗() 来描述一段文本 x
y可以是给定单词的含义、给定书籍的类别或餐厅评论的正面/负面标签等等
An Intuitive Idea: N(ew)LM-0
直观地,构建一个对数线性分类器,将 h1-hi−1 作为输入并输出单词标签 w∗
- 从单词 h1-hi−1 的历史中提取特征
- 尝试任何可能的单词标签 w
- 输出概率最高的 w∗i
问题:
- 特征维度过大,不易应对可变长的位置表达
- 模型不容易优化
- 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:
- 加入提供非线性的函数,有点像log-liniear:
Non-Linear Activation Function
可微分
domain宽一些而输出窄一些
Sigmoid:
- tanh: elementwise hyperbolic tangent
- ReLU: Rectified Linear Unit
- 现在我们可以添加很多layers: linear, non-linear, linear, non-linear, linear, …
- layers越多,参数越多,计算量越大
- layers越多,可以越好的拟合训练数据
- layers越多,可以提高模型能力
Neural Language Model 1
- Let’s build the first neural language model:linear, non-linear, linear, non-linear
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:
- 找到 (V,d) 的矩阵 M 来存储这些向量
- V 中的第 i 个单词将表示为 (wi.T)M = mi,mi可以跟着模型一起训练
- mi,更短,更浓缩
重要的是,可以将 (V,d) 的矩阵 M 视为参数,和LM一起训练。如果训练集够大,可以学很好的词的表示:
- 无需提前构建
- 无需额外的训练数据
- 可以学习 one-hot 之外的东西