60年技术简史,带你读懂AI的前世今生(6)
这篇论文的想法其实非常非常简单,但取得了非常好的效果。它的思路是用深度的双向RNN(LSTM)在大量未标注数据上训练语言模型,如下图所示。然后在实际的任务中,对于输入的句子,我们使用这个语言模型来对它处理,得到输出的向量,因此这可以看成是一种特征提取。但是和普通的Word2Vec或者GloVe的pretraining不同,ELMo得到的Embedding是有上下文的。 比如我们使用Word2Vec也可以得到词”bank”的Embedding,我们可以认为这个Embedding包含了bank的语义。但是bank有很多意思,可以是银行也可以是水边,使用普通的Word2Vec作为Pretraining的Embedding,只能同时把这两种语义都编码进向量里,然后靠后面的模型比如RNN来根据上下文选择合适的语义——比如上下文有money,那么它更可能是银行;而如果上下文是river,那么更可能是水边的意思。但是RNN要学到这种上下文的关系,需要这个任务有大量相关的标注数据,这在很多时候是没有的。而ELMo的特征提取可以看成是上下文相关的,如果输入句子有money,那么它就(或者我们期望)应该能知道bank更可能的语义,从而帮我们选择更加合适的编码。 图:RNN语言模型 ELMo学到的语言模型参数是固定的,下游的任务把它的隐状态作为特征。而来自论文《Improving Language Understanding by Generative Pre-Training》的OpenAI GPT模型会根据特定的任务进行调整(通常是微调),这样得到的句子表示能更好的适配特定任务。它的思想其实也很简单,使用Transformer来学习一个语言模型,对句子进行无监督的Embedding,然后根据具体任务对Transformer的参数进行微调。因为训练的任务语言模型的输入是一个句子,但是下游的很多任务的输入是两个,因此OpenAI GPT通过在两个句子之前加入特殊的分隔符来处理两个输入,如下图所示。 图:OpenAI GPT处理下游任务的方法 OpenAI GPT取得了非常好的效果,在很多任务上远超之前的第一。 ELMo和GPT最大的问题就是传统的语言模型是单向的——我们是根据之前的历史来预测当前词。但是我们不能利用后面的信息。比如句子”The animal didn’t cross the street because it was too tired”。我们在编码it的语义的时候需要同时利用前后的信息,因为在这个句子中,it可能指代animal也可能指代street。根据tired,我们推断它指代的是animal,因为street是不能tired。但是如果把tired改成wide,那么it就是指代street了。 传统的语言模型,不管是RNN还是Transformer,它都只能利用单方向的信息。比如前向的RNN,在编码it的时候它看到了animal和street,但是它还没有看到tired,因此它不能确定it到底指代什么。如果是后向的RNN,在编码的时候它看到了tired,但是它还根本没看到animal,因此它也不能知道指代的是animal。Transformer的Self-Attention理论上是可以同时attend to到这两个词的,但是根据前面的介绍,由于我们需要用Transformer来学习语言模型,必须用Mask来让它看不到未来的信息,因此它也不能解决这个问题。 那它是怎么解决语言模型只能利用一个方向的信息的问题?答案是它的pretraining训练的不是普通的语言模型,而是Mask语言模型。这个思路是在Google的论文《Pre-training of Deep Bidirectional Transformers for Language Understanding》里提出了,也就是我们现在熟知的BERT模型。 BERT一出来就横扫了各种NLP的评测榜单,引起了极大的关注。就在媒体都在用”最强NLP模型”之类的词赞美BERT的时候,最近又出现了XLNet,又一次横扫了各大榜单。它认为BERT有两大问题:它假设被Mask的词之间在给定其它非Mask词的条件下是独立的,这个条件并不成立;Pretraining的时候引入了特殊的[MASK],但是fine-tuing又没有,这会造成不匹配。XLNet通过Permutation语言模型来解决普通语言模型单向信息流的问题,同时借鉴Transformer-XL的优点。通过Two-Stream Self-Attention解决target unaware的问题,最终训练的模型在很多任务上超过BERT创造了新的记录。 强化学习 强化学习和视觉、听觉和语言其实不是一个层面上的东西,它更多的是和监督学习、非监督学习并行的一类学习机制(算法),但是我认为强化学习是非常重要的一种学习机制。 监督学习的特点是有一个“老师”来“监督”我们,告诉我们正确的结果是什么。在我们在小的时候,会有老师来教我们,本质上监督学习是一种知识的传递,但不能发现新的知识。对于人类整体而言,真正(甚至唯一)的知识来源是实践——也就是强化学习。比如神农尝百草,最早人类并不知道哪些草能治病,但是通过尝试,就能学到新的知识。学到的这些知识通过语言文字记录下来,一代一代的流传下来,从而人类社会作为整体能够不断的进步。 与监督学习不同,没有一个“老师”会“监督“我们。比如下围棋,不会有人告诉我们当前局面最好的走法是什么,只有到游戏结束的时候我们才知道最终的胜负,我们需要自己复盘(学习)哪一步是好棋哪一步是臭棋。自然界也是一样,它不会告诉我们是否应该和别人合作,但是通过优胜劣汰,最终”告诉”我们互相协助的社会会更有竞争力。和前面的监督、非监督学习相比有一个很大的不同点:在强化学习的Agent是可以通过Action影响环境的——我们的每走一步棋都会改变局面,有可能变好也有可能变坏。 它要解决的核心问题是给定一个状态,我们需要判断它的价值(Value)。价值和奖励(Reward)是强化学习最基本的两个概念。对于一个Agent(强化学习的主体)来说,Reward是立刻获得的,内在的甚至与生俱来的。比如处于饥饿状态下,吃饭会有Reward。而Value是延迟的,需要计算和慎重考虑的。比如饥饿状态下去偷东西吃可以有Reward,但是从Value(价值观)的角度这(可能)并不是一个好的Action。为什么不好?虽然人类的监督学习,比如先贤告诉我们这是不符合道德规范的,不是好的行为。但是我们之前说了,人类最终的知识来源是强化学习,先贤是从哪里知道的呢?有人认为来自上帝或者就是来自人的天性,比如“人之初性本善”。如果从进化论的角度来解释,人类其实在玩一场”生存”游戏,有遵循道德的人群和有不遵循的人群,大自然会通过优胜劣汰”告诉”我们最终的结果,最终我们的先贤“学到”了(其实是被选择了)这些道德规范,并且把这些规范通过教育(监督学习)一代代流传下来。 (编辑:ASP站长网) |