如何通俗易懂地让女朋友明白什么是语言模型?

NLP情报局

共 4955字,需浏览 10分钟

 · 2023-05-07

839d3fe40d1a6a076dc9f27bcb27650d.webp

💘背景

上周末和女朋友去风云再起夹娃娃,原本不会玩的我们在好哥们的指点下竟然夹到了一堆。其中一只娃娃是语言模型BERT的好兄弟,来自芝麻街的“甜饼怪”。于是饭后回到家,我们有了下面的对话。

💘什么是语言模型?

我:亲爱的,今天你夹到了一只甜饼怪耶,还记得我之前和你说过的BERT吗?他们是好兄弟哦,而且甜饼怪也是语言模型Grover的代表。

女友:有点印象,是不是那个小黄人!你们NLPer说的BERT到底是啥呀?

我:BERT是Google发布的一款预训练语言模型,中文全称叫“基于变换器的双向编码器....”

女友:可不可以“说人话” - -!

08d788d271282f45e14fb9671b4f2a86.webp

我:哦,对不起!BERT属于预训练语言模型的一种,那我先从语言模型开始介绍吧,保证用通俗易懂的语言。

女友:这还差不多。

我:先举一个最简单的例子!

假如我刚和你交往没多久,突然有一天我想对你说三个字,又不好意思直说,于是我把中间的那个字先盖住,你看到的变成了:“我[mask]你”

虽然你心中大概率觉得就是那三个字,但也许会猜测有没有别的可能?

这时BERT出现了,他和你说:“让我来帮你看看这小子心里在想啥”。

通过统计我和你之前的一些聊天资料,BERT科学分析得出如下结论:中间的字97%的概率是“爱”,2.5%的概率是“想”,0.01%的概率是“恨”

女友的嘴角微微上扬,“果不出我所料”。

我:当然啦,这只是最简单的demo。再来一个例子,假如夏天我们去爬山避暑,在半山腰发现对面山上有一大片竹林。

才华横溢的女票随口而出一句五言诗:“一望山多竹”,并含情脉脉地看向了我。

鄙人虽然才疏学浅,好在我的专业是自然语言处理,又有BERT这一法宝。我悄悄地把这5个字告诉了他,部署在远程GPU上的BERT瞬间发回5个字:

“能生夏日寒”。

女友:哎呀,对的不错呀。BERT咋这么聪明?

27abca581c27f5d7b76b4dea09580eee.webp

我:不仅如此,BERT还可以根据你指定的主题作出完整的古诗或对联呢!甚至还能编排小说和电影剧情。

当然了,主旨概括、文字翻译、新闻归类这些工作对他而言更不在话下。和文字相关的活,BERT几乎都能干

女友:天呐,这么厉害。

我:现在我来完整解释一下。

所谓语言模型,就是通过观察人类的表达习惯,计算机模型自动统计归纳出一些客观的文字规律。经过总结这些规律,模型一定程度上可以理解人类的语言。

一个优秀的语言模型,无法让你分辨出它到底是人还是机器。

女友:还是没有很懂,是怎样的规律呢?

我:假如我们现在从网络上收集到了100W个句子,其中有一个句子是:“今晚我想吃香芋西米露”。

语言模型的学习任务就是统计语言序列 “今 / 晚 / 我 / 想 / 吃 / 香 / 芋 / 西 / 米 / 露”的概率,即:

今晚我想吃香芋西米露

简单的说,语言模型的目的是判断一个句子是否正常,是不是是人话。例如:

P(今 / 晚 / 我 / 想 / 吃 / 香 / 芋 / 西 / 米 / 露) > P(香 / 芋 / 西 / 米 / 露 / 今 / 晚 / 想 / 吃 / 我)

语言模型认为,后面一句话不是正常的人话,几乎不会在我们的生活中出现。依此类推,模型会对100W个句子分别计算出现的概率。

女友:哦,好像有点明白了~

5a21d3a923caff8de0f7740f2b827e0e.webp

我:嗯嗯,这就是最早期的基于统计的语言模型。当然啦,上面的序列计算量有些大,实际中我们往往会对句子先分词,把“今晚我想吃香芋西米露”切分成“今晚 / 我 / 想 / 吃 / 香芋 / 西米露”。

女友:这不就是我们小学学习的组词嘛。

我:对!分词是NLP最基础的概念之一,看来你已经能初步理解啦。

分词的好处是我们可以以词为粒度,统计每个词彼此先后的顺序、分布的规律,显著减少计算量。例如“香芋”后跟“西米露”的概率要远大于“金露”。

女友:明白分词的含义啦。

我:要计算一个句子中所有词出现的概率仍然比较困难,所以实际中我们会继续优化,使用基于n-gram的统计方法,以及随后出现的神经网络语言模型。

这些内容涉及了一些专业知识,下一次我们再来讨论。要是感兴趣,我可以先给你一些资料哦[1]。

女友:好。

💘预训练语言模型和语言模型又有什么区别?

女友:为什么你一开始时说BERT是预训练语言模型呢,他和上面的语言模型难道还不一样?

我:本质是一样的,但是实现方法有一些不同。

女友:怎么说?

我:BERT是2018年底开发出来的语言模型,用到了当时NLP最前沿的技术。BERT模型有3个核心特点:

(1)基于self-Attention的Transformer架构;(2)采用的MLM预训练任务符合语言模型本质;(3)训练语料庞大,多达33亿文本,见多识广。

女友:不行,又开始懵了。

我:不急哈,我来一个个说明。

关于注意力机制,你只要先了解这是一种非常高效的神经网络。假如现在有一个很长的句子,从头读到尾,很可能句子一开始说的内容我们已经忘了。

但是Attention没有这个烦恼,在它看来句子中任意两个位置的词都是相邻关系。所以我们说Attention有很强的“记忆能力”!

45202c4b2a199fc268ffd24346567b7f.webp

女友:哦,原来是记性好。那MLM呢?

我:MLM(Mask Language Model)其实很好理解。正常的一句话,针对其中的每个字以15%的概率掩盖,再让BERT预测被盖住的字原本是什么。

以苏东坡的诗“欲把西湖比西子,淡妆浓抹总相宜”为例。

经过随机掩盖,原诗可能变成了“欲把西[mask]比西子,淡[mask]浓抹总相宜”。

BERT的主要训练任务就是将文本经过层层Transformer编码后,根据没有被掩盖的上下文还原[mask]位置的字。

女友:那不会出现有很多种可能的表达吗?

我:中文版BERT的词表一共有20,000多个字符,常见的中文字符只有2000-3000个。假如让模型随机猜,猜中的概率最多只有1/2000。

女友:这也太低了吧~

我:模型不会瞎猜啦!他会根据上下文缩小范围。

通过对海量文本的学习,BERT知道和“西”组成的词只有“西瓜、西湖、西红柿、西溪、西北...”等十几种,再结合上下文语境,能快速锁定第一个[mask]对应的字符是“湖”。

即便有多种可能组合,BERT也只会选择概率最大的字符(“湖”在这个语境中的概率可能大于90%)。

女友:所以BERT最终会输出“欲把西[湖]比西子,淡[妆]浓抹总相宜”?

我:就是这样。假如刚开始训练时BERT预测错了,MLM对应的损失函数(CrossEntropy)就会产生一个比较大的值,对模型进行惩罚;下一次预测对了,损失值就变成0。

BERT会往损失值最小的方向学习,也就越学越聪明啦!

女友:好聪明呀。为什么会选择MLM这样一个训练任务呢?

我:MLM任务的灵感来自于人类做完形填空。挖去文章中的某些片段,需要理解上下文来猜测这些被掩盖位置的内容。这样的任务符合咱们前面介绍过的语言模型的本质。

女友:猴。

我:第3点训练语料庞大更好理解。相比前面提及的100W文本,明显33亿语料包含的信息更丰富,BERT几乎能学到每一个词在各种上下文语境中的用法。

正所谓是大力出奇迹。

女友:一个人读了33亿文本规模的书,估计也是半个国学大师了吧dc9d2d4c1d48efd05b4ff06bc8b16d0f.webp

我:哈哈很有可能。

d2a84c5579347e65a23bea9894a68238.webp

💘语言模型有什么用?

女友:你说了这么多,BERT在实际中有什么用?

我:只要和自然语言相关的场景(其实还包括图片、音频等),几乎都有BERT的用武之地。从最常见的新闻分类、相似句判断到机器阅读理解、问答系统等等。

女友:你刚说问答系统,那是不是可以训练一个BERT和我聊天?

我:可以,闲聊属于问答系统的一个重要分支,有很广泛的应用场景。

女友:我问什么BERT都能回答吗?

我:这需要关注2个问题:训练语料和训练任务

BERT本质是一个庞大的语言模型,所以给一段文本让他分类,或者判断是真/假新闻,很符合他的预训练目标。但如果想和他聊天,我们需要提供新的目标让BERT学习。

女友:啥目标?

我:比如我们提供上句S1,让BERT预测下句S2;通过这样的训练方式,他就具备了一定的问答能力。

如果你提供给他的是百度百科语料以及相应的“问题-答案“句子对,他就是一个百科问答型BERT,能帮助你解决一些常见的FAQ。

如果提供的是聊天相关的文本,他就是一个闲聊类型的BERT,能帮你解闷甚至讲笑话逗你开心。

女友:这么神奇!

什么地方可以安装BERT啊?

我:BERT模型可以部署到公众号、小程序、手机应用app、网页甚至嵌入到已有的硬件产品中哦,不限载体。

也许未来BERT会在问答机器人、智能家居中大显身手。

💘可以自己训练一个BERT吗?

女友:BERT好好玩,我可以自己训练一个吗?

86e6d79bd8bf759ceea44e8a5279127a.webp

我:可以的,不过需要先学习一些工具哦,比如Python、基础的NLP知识,看一看BERT的论文...

女友:啊,这么麻烦= =!有没有办法快速上手dc9d2d4c1d48efd05b4ff06bc8b16d0f.webp

我:有。我可以用tf/torch帮你搭好训练框架,告诉我你想和他聊天的主题,任务型 or 闲聊 or FAQ问答?

再帮你爬取一些语料,部署成一键训练!点击“开始训练”,过几小时就会有一个专属你的BERT诞生啦!

女友:好,今晚帮我训练一个!

我:这么积极呀,遵命...

5fa75e2c6151c451451ec85df073de53.webp

女友:下一次我还要去夹娃娃,争取夹回一个“BERT”9970339a51ed59f04440c01163711d9c.webp

💘后记

经过这次交流,女朋友对语言模型有了一定的认知,也开始了解我的专业,并喜欢上了BERT。我决定以后要多以这种轻松的方式和她分享我的知识,并让她产生兴趣。她也经常会有一些很新奇的idea,帮助我拓宽思路。

以上内容并没有深入讲解专业知识,感兴趣的读者可以搜索相关资料,或参考下文引用。

参  考  资  料

[1] 深入理解语言模型:https://zhuanlan.zhihu.com/p/52061158

[2] BERT论文:《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》

[3] UNILM,BERT做生成式任务:《Unified Language Model Pre-training for Natural Language Understanding and Generation》

创作不易,有收获的话请帮忙点击分享、点赞、在看🙏

浏览 48
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报