极简自然语言处理技术发展史

2022-04-11 17:46:22 浏览数 (1)

自然语言处理,英文Natural Language Processing,为了简便,一般都简写成NLP。NLP很重要。有多重要?以前有一种说法,说NLP是人工智能这一皇冠顶上的明珠。不过,出自一本写NLP的书,是不是“王婆卖瓜”呢?说不好。但事实是,深度学习有两大热门问题分支,一个是图像处理,另一个是NLP。

接下来讲一讲机器学习和深度学习怎么做NLP。首先简单介绍一下NLP大概都做些什么。其实很简单,机器学习是一部大男主的套路剧,大男主的名字叫“样本”,所以,NLP的大男主,自然也是样本。长什么样呢,你肯定见过,就是一个一个的字。譬如,“这就是一个NLP样本”,这几个字就是一个NLP样本。自然语言处理嘛,自然处理的就是语言。有了样本能干什么呢?玩法很多,主要有两种,“判别”和“生成”。“判别”就是分类,譬如情感识别,判断一下“我好爱NLP啊!”是属于好评还是差评。“生成”就简单多了,就是续写,给你一段太监文让你给续上。以前你看到的那些“震惊!XX公司的人工智能居然能写小说!”之类的震惊体,用行话来说就是文本生成。当然,NLP的玩法非常多,像是研究回字的四种写法的譬如NER、POS。既然是简史,这里就不展开了。

知道了NLP要做什么,接下来就是怎么做的问题。这里就真的要用到一些机器学习的知识了。我们说训练机器学习模型,很重要的一道工序是“提取特征”,如果做过机器学习,你一定知道所谓特征,就是一条样本用一串的数来表示,数学里叫向量。很多的样本特征,就构成了矩阵。如果你没做过机器学习,看到这里是不是有点懵了?不要紧,只要知道机器学习模型的样本,听起名字霸气侧漏,实则和你的工资条差不多,都是一串儿数就行了。

那么,问题就来了。机器学习只认数,而只要你的记忆比鱼厉害一点点,稍微超过7秒就一定记得,我刚说NLP要处理的是一个一个的字。他们一个是火星一个是地球,要怎样才能让火星撞地球呢?

这就说到本文的主线了,两个字,转换将文字转换成数字

当然了,对于我们学计算机的,文字转数字和搬砖差不多,算是常规操作,最容易想到的就是转ASCII码。不过,NLP一般是以“词”为单位,原因也简单,毕竟起源于欧美嘛,人家的语言都是以“word”为最小单位的。所以问题就复杂了一点,简单转成ASCII码就不太合适了。

那怎么办呢?这就开始说到NLP的发展。第一代NLP技术,是One-Hot。

是不是感觉这个词怪怪的。中文一般翻译为“独热”,是不是感觉更怪了?不过One-Hot的做法极其简单,NLP你不是要以“词”为单位嘛,那好,我把整个样本库——注意,不是一条样本,而是整个样本库的所有词去重后整成一个巨大的词典,假设里面有2673个不同的词吧,我就用2673维的矩阵来表示,每一维只代表一个词,绝不重复。接下来就是转换,其实更像是填空,只要把词对应的维置1,其他的2672维置0。这也就是为什么One-Hot被称为“One-Hot”。一个词转成One-Hot后,大概是这个样子:

......000000001000000......

你可能会认为这种“通信基本靠吼”的方法只存在于远古。还真不是。我不知道现在自然语言处理的教材都是什么内容,不过如果你现在大一,你找大四的师兄借一下课本,应该还能看到对One-Hot的详细介绍,课本还会煞有介事地告诉你,这是自然语言处理最规范的做法。

One-Hot简单粗暴,也能达到转换的效果,不过,问题也很明显,一大串的0带着一个1,直观感受就是太浪费空间的,行话叫“稀疏”。那怎么让它“稠密”一点呢?这就说到了第二代NLP技术,Word2vec。

Word2Vec同样要完成词的向量化,和One-Hot最大的不同是短很多,上面One-Hot表示一个词需要2673维,而在Word2Vec中维度可能只需40维或60维,显然,Word2Vec要稠密多了。前面我们讲了一个词的One-Hot是怎么来的,那一个词的Word2Vec是怎么来的呢?分三步。首先你得先有One-Hot,然后塞进Skip-gram模型,最后你就得到了Word2Vec。这个过程,叫Word Embedding,词嵌入。多说两句这个Embedding,你可能很难想象“嵌入”是个什么概念,照书本的官方说法,嵌入这里是指高维空间嵌入低维空间,别看写得文绉绉的,估计写书的那伙人自己也没搞明白这是个什么玩意。不过你可以简单理解一下,前面我们不是说用One-Hot需要很高的维度才能表示一个词嘛,现在有了词嵌入,有了Word2Vec,维度一下降低了许多,但还是同样能表示那个词,“意思不变维度降低了许多”,嗯意思大概就是这么个意思。Embedding现在跟着深度学习火不得了,衍生出了一个子研究方向,名字就叫表示学习。

从Word2Vec开始,NLP就和深度学习撇不清关系了。深度学习给我的感觉吧,和网红真的很像,每个深度学习模型的背后,多半有一个一战成名的故事。Word2Vec也不例外,声称能把关系都给表示出来。什么意思呢?就是用了Word2Vec做词向量,以下算式将成立:King-Man Woman=Queen

这就是为什么在Word2Vec大热的那段时间,很多同学前赴后继地用Word2Vec来计算,《射雕英雄传》里面的黄蓉最爱的男人是谁。也别觉得太玄乎,深度学习玩来玩去也就是统计学相关性的那一套戏法。Word2Vec当然也不是就完美无缺了,虽然比起One-Hot,一下在维度方面的减肥效果拔群,但源自One-Hot的Word2Vec,同样还是继承了一个特点:一个词对应一个向量值。这就导致了一个问题:多义词怎么办?

在很长的一段时间里,对于这个问题,业界做出了非常大的努力,主要就是努力装鸵鸟,假装问题不存在。这不是开玩笑,词向量发的论文非常多,五花八门各种变种,给人一种打卡圣地的感觉,但内容基本都是在Word2Vec的基础上修修补补。直到山雨欲来的2018年10月,各种花里胡哨的词向量几乎在一夜之间,统统被扫进历史的垃圾桶。这就是第三代NLP技术,Bert。

当然了,搞研究的人都知道,什么“横空出世”“一夜之间”,这些表示戏剧性的词主要用于商业互吹。Bert也不是从石头中蹦出来的,她属于一个技术大类,叫PTM,预训练模型,是现在NLP的一个热门研究分支。在Bert之前,其实业界已经有不少人尝试用PTM来解决问题了。

然而,Bert确实是NLP领域当之无愧的里程碑,当年一经推出,硬是凭着爆表的战斗力横扫几乎所有的NLP任务排行榜,其他原本玩得不亦乐乎的方法一下就成了纯属搞笑的杂耍。前面我说,每个深度学习模型,背后都有一个一战成名的故事。Bert也不例外。有人说,Bert你不是牛吗,你咋不敢和人类比比呢?结果一比,Bert居然在SQuAD任务的两个指标上全面超越了人类,真的是吓死人了。

你也许很好奇,这个SQuAD是个什么玩意?简单来说,是阅读理解,对,就是那个在中学英语课上往死了折腾你的阅读理解,而且形式多样,除了选择题,还有简答、填空等多种口味,是现在NLP技术非常重要的一个应用方向,也是测试NLP模型性能的常用方法。

好了,NLP发展就介绍到这。小朋友,你是否有很多的问号?这是自然的,不过每一个问号展开了,都足以写一篇同样长度的文章。我推荐一本书,华章新出的《机器阅读理解:算法与实践》,应该是目前我在市面看到的唯一一本专题介绍机器阅读理解的书。上面你关心的许多问题,应该都能在里面找到答案。

0 人点赞