科普丨运用深度学习教机器人理解自然语言
本文转自CSDN,作者Jonathan是21CT的首席科学家。他主要研究机器学习和人工智能如何使用在文本和知识中让计算机变得更智能。他在德克萨斯农工大学获得心理学学士学位和工商管理硕士,在德克萨斯大学获得计算机博士学位。译者/赵屹华审校/刘帝伟、朱正贵责编/周建丁。 在深度学习出现之前,文字所包含的意思是通过人为设计的符号和结构传达给计算机的。本文讨论了深度学习如何用向量来表示语义,如何更灵活地表示向量,如何用向量编码的语义去完成翻译,以及有待改进的地方。 在深度学习出现之前,我们书写的文字所包含的意思是通过人为设计的符号和结构传达给计算机的。其符号方法包括WordNet、ConceptNet和FrameNet,通过对比来更好地理解深度学习的能力。然后我会讨论深度学习如何用向量来表示语义,以及如何更灵活地表示向量。接着我将探讨如何用向量编码的语义去完成翻译,甚至为图片添加描述和用文字回答问题。最后,总结了用深度学习技术真正地理解人类语言还需要哪些改进。 WordNet可能是最著名的象征意义的语料库,由普林斯顿大学研发。它将意思相近的单词归为一组,并且表示组与组之间的层次联系。举个例子,它认为“轿车”和“汽车”指的是同一个物体,都是属于一类交通工具。 ConceptNet是来自麻省理工学院的语义网络。它表示的关系比WordNet更广。例如,ConceptNet认为“面包”一词往往出现在“烤面包机”附近。然而,词语间的这种关系实在是不胜枚举。理想情况下,我们会说“面包机”不能被“叉子”插入。 FrameNet是伯克利大学的一个项目,它试图用框架对语义归档。框架表示各种概念及其相关的角色。例如,孩子生日聚会框架的不同部分有着不同的角色,比如场地、娱乐活动和糖源。另一个框架是“购买”这个行为,包括卖方、买方和交易商品。计算机能够通过搜索触发框架的关键词来“理解”文字。这些框架需要手动创建,它们的触发词也需要手动关联。我们可以用这种方式来表示大量知识,但是很难一五一十地明确写出来。因为内容实在太多,完完全全写出来也太费神了。 符号也可以用来创建语言模型,计算某个单词将会出现在句子中的概率。举个例子,假设我刚刚写下“我吃了”,那么下一个词语是“庆丰包子”的概率,可以用语料库中“我吃了庆丰包子”出现的次数除以“我吃了”出现的次数来计算。此类模型相当有用,但我们知道“庆丰包子”与“狗不理包子”非常相似,至少比“电饭锅”相似,但是模型并没有利用这种相似性的优势。使用的词语有千千万万,若是存储所有三词短语需消耗(词语数量x词语数量x词语数量)存储空间,这也是使用符号所带来的问题,因为词语以及词语的组合实在太多。所以,我们需要一种更好的方式。 使用向量表示语义深度学习使用向量来表示语义,因此概念不再是由一个庞大的符号来表示,而是由特征值表示的一个向量来表示。向量的每个索引代表神经网络训练得到的一个特征,向量的长度一般在左右。这是一种更加有效的概念表示方法,因为这里的概念是由特征组成的。两个符号只有相同或者不同两种情况,而两个向量可以用相似性来衡量。“庆丰包子”对应的向量与“狗不理包子”对应的向量很接近,但是它们和“轿车”对应的向量差别很大。如同WordNet处理方式一样,相似的向量被归为同一类。 向量还存在内部结构。如果你用意大利向量减去罗马向量,得到的结果应该与法国向量减去巴黎向量的结果非常接近。我们可以用一个等式来表示: 意大利-罗马=法国-巴黎 另一个例子是: 国王-皇后=男人-女人 我们通过训练神经网络来预测每个词语附近的词语,得到带有这些属性的向量。你可以从谷歌或者是斯坦福直接下载已经训练好的向量,或是用Gensim软件库自己训练。令人惊讶的是这种方法竟然有效,而且词向量有如此直观的相似性和联系,但事实上确实是有效。 由词向量构成语义 我们已经有了原来表示单个词语的向量,该如何用这些词表示语义,甚至形成完整的句子呢?我们使用一种称为递归神经网络(recurrentneuralnetwork,RNN)的技术,如下图所示。用RNN把句子“Thewomanatetacos.”编码为向量,记作h4。单词“the”的词向量记作h0,然后RNN把h0与表示“woman”的词向量结合,生成新的向量h1。然后向量h1继续与下一个单词“ate”的词向量结合,生成新的向量h2,以此类推,直到向量h4。向量h4则表示了完整的句子。 一旦信息被编码为一个向量,我们就能将其解码为另一种形式,如下图所示。比如,RNN随后可以将向量h4表示的句子翻译(解码)成西班牙语。它先根据已有向量h4生成一个最有可能的单词。向量h4与新生成的单词“La”一起又产生了向量h5。在向量h5的基础上,RNN推出下一个最有可能出现的单词,“mujer”。重复进行这个过程直到产生句号,网络结构也到此为止。 使用这种编码器—解码器模型来做语言转换,需要用一个包含大量源语言与目标语言的语料库,基于这个语料库训练RNN网络。这些RNN通常含有非常复杂的内部节点,整个模型往往有几百万个参数需要学习。 我们可以将解码的结果以任何形式输出,例如解析树(parsetree),或是图像的描述,假设有足够多包含描述的图像素材。当给图片添加描述时,你可以用图片训练一个神经网络来识别图像中的物体。然后,把神经网络输出层的权重值作为这幅图像的向量表示,再将这个向量用解码器解析出图像的描述。 从合成语义到治白癜风多少钱白癜风能不能彻底治好转载请注明原文网址:http://www.gzdatangtv.com/hjpz/1209.html |