预训练语言模型笔记

一、什么是语言模型

语言模型的目的:有词语组成的字符串,是一个句子的可能性有多大。

语言模型和之前学过的数据分析的案例类似。经典的啤酒与尿布的案例中,假设有四种情况:啤酒+鸡蛋,鸡蛋+汉堡,汉堡+尿布,尿布+啤酒。分别统计啤酒(2次)、鸡蛋(2次)、汉堡(2次)、尿布(2次)的出现次数,以及不同搭配出现的次数(啤酒+鸡蛋出现1次,其他同为1次)。然后再做条件概率,例如购买啤酒的前提下,购买xx的概率。然后类似计算支持度、置信度等数据。

语言模型同样。假设有一个数据集,包含3000个句子。现在要对"今天天气____"做预测。首先计算"今天,天气"在数据集中出现的次数,然后计算不同的"今天,天气,xx"出现的次数,比如"今天,天气,很好"、"今天,天气,很热"等,然后计算条件概率,即在"今天,天气"的情况下,后面接xx的概率,P(xx|今天,天气)为多少,概率最大的就是最后预测的词。

但是数据集中有些词是不会出现在句子后的,例如不可能出现"今天天气苹果",这个句子是不存在的。这时会用到马尔可夫链,即要预测的词与前面最近的几个词关系最大,和距离远的词没什么关系。P(xx|今天,天气)约等于P(xx|天气)。

有些特殊情况中,要预测的词跟前面的词语无关,即可能会出现P(xx|今天,天气)约等于P(xx)的情况,这时只需要计算每个词在文本出现的概率即可。

补充概念:

1,困惑度:衡量句子好坏的指标。句子的概率越大,困惑度越小。公式略。

2,平滑:为了避免0值的出现,为分母和分子加一个值(例如分母加词典大小,分子加1)。包括Good- Turing Estimate、Katz平滑法、Jelinek-Mercer平滑法。

二、词向量

词语需要转变成数字才能进行计算。最早使用独热表示,用一个n维向量表示一个词,n的大小为词汇量的大小,比如有6000个词,则n大小为6000,某个词只有其中某一维有值,其他值均为0。这种方法弊端非常明显,无效值太多,降低计算效率。

新的方案是进行降维。根据上下文相似的程度,上下文越相似的词,空间上就越接近。相似度的计算使用余弦相似度。不同维度代表不同的特征,这些特征并不一定是人能想到的、有直观意义的,而是由机器自动计算的。

未登录单词:什么是未登录词 Out-of-vocabulary(OOV)?

在word2vec中,使用层次Softmax(Hierarchical Softmax)和负采样(Negative Sampling)降低计算成本。

但是word2vec无法解决一词多义的问题,每个词的词向量是唯一的。ELMo使用双向LSTM,解决了一词多义的问题。

LSTM在RNN的基础上使用遗忘门、输入门、输出门来获取更远距离/时间的信息。遗忘门决定应该丢弃哪些信息,输入门决定哪些信息应该被保留下来,输出门决定最后输出的信息。

三、bert的层次

之前看cnn的时候,对神经网络深层浅层有一个认识,浅层是一些通用的信息,比如线条,不管识别对象是人、动物或者汽车,浅层都是先提取线条,然后往深提取的就是特征,比如人提取五官,汽车提取组件(车灯、轮胎、车窗)。那时对nlp不了解。

nlp浅层提取的是语法信息,例如词性(名次动词形容词)、成分(主谓宾)、依存(动宾关系、动补关系、主宾关系),深层提取语义信息,如共指消解(我理解的是多词共义,例如缩略词与全称)、语义原型角色。越往深针对性越强,越针对正在测试的具体内容。

四、神经网络语言模型

任务:通过前面n-1个单词,预测第n个单词。

输入层:前n-1个单词,根据查找表,获取对应的词向量,从而形成一个(n-1)✖️m的矩阵(m为词向量的维数)。

隐藏层:没懂。

输出层:一共有V个结点(V表示数据集词典的大小),输出值为概率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值