语言模型(属于generative model)
语言定义为字母表的某一子集
统计学语言模型在概率的角度看语言production,从词汇表分配随机的token序列
P(<w1,w2,…wn>)
- generative model 不考虑condition,语言模型就是, 回答问题2,3(联合分布等),可以用于发现outlier
- descrimitive 例如逻辑回归 classification model P(x|c),只能回答问题1
generative model 例子(贝叶斯)
LM
V->vocalbularies
最近更多的subword 和字母基础的语言模型广泛应用
现在讨论word based language modeling
概率语言模型用于语法检查 预测输入 语音转换,chatbot,翻译,总结等
连续概率建模(token 序列)
当你想要得出prob of the network,此时也是generative model:classification
可以画出树形图->生成text
可能是sub-optimal(第一次选择时很大 后面都很小)
K=5 五个最大的->避免局部最优
Evalution
外部:作为spell checker的一部分
内在:分配的prob.与测试集的文本对应的如何
最常用-perplexity(依赖length)how surprising
连续prob.连乘(geometric mean)->all words in thecorpus
->log
->平均交叉熵最小化/平均最大似然估计(MLE)/最小化模型的perplexity
N-gram based modelling
更经典的方式,用现有的counts获取最大似然估计
但是在实际应用时大部分文字不仅出现一次,而是有很多可能的文字。没有足够的data
解决方案是转换为连续概率:
估计概率
存在数据稀疏的问题
限制序列的长度为K+1 为N-grams语言模型
Unigram模型
最简单的N-gram语言模型(w1,…,wn)
p(w1)p(w2)…p(wn)
忽略词的顺序,最可能的序列就是那些包含最频繁词的序列
Bigram模型(N=2)
计算序列概率 取出第一次乘以每个词和他前一个词的条件概率
马尔科夫语言模型
N-gram 是finite state machines
增加N
实际应用时人类语言很复杂 更高的N才能有好的效果
概率是爆炸增长的
也会随之而来一些问题,如数据稀疏,模型size大
smoothing
1 additive smoothing,
每次count加上 theta,一般选择为1
分母加上theta V 保证概率和为1
2 interpolation 插入
加入一个weight-从unigram 频率得到的概率