分享CSD中深度学习的浅而易懂的文章更

深度学习时代之前

早在深度学习时代之前 - 当一个神经网络比一个功能强大的机器学习或人工智能工具更令人恐惧,神秘的数学好奇心时 - 在自然语言处理中出乎意料地有许多相对成功的经典数据挖掘算法的应用(NLP)域。似乎像垃圾邮件过滤词类标记问题可以使用相当直接和可以理解的模型来解决。

但并不是每一个问题都可以这样解决。简单的模型不能充分地捕捉语境,语境,讽刺等语言微妙之处(尽管人类也经常在这方面失败)。基于全面总结(例如,文字袋)的算法证明不足以捕捉文本数据的连续性,而n-gram努力模拟一般情况,并且受到维度诅咒的严重影响即使是基于HMM的模型,由于其马尔可夫性质(如无记忆)而无法克服这些问题。当然,在处理更复杂的NLP任务时也会使用这些方法,但并不是很成功。

第一个突破 - Word2Vec

语言分析的主要挑战之一是将文本转换为数字输入的方法,这使得建模变得可行。在计算机视觉任务中这不是问题,因为在图像中,每个像素由描述三种基色饱和度的三个数字表示。因此,多年来,研究人员尝试了大量的算法来寻找所谓的嵌入,通常指将文本表示为矢量。起初,这些方法中的大多数是基于计数单词或短序列的单词(n-gram)。

解决这个问题的最初方法是单热编码,其中来自词汇表的每个单词被表示为仅具有一个非零条目的唯一二进制向量。一个简单的概括是编码n-gram(n个连续单词的序列)而不是单个单词。这种方法的主要缺点是维数很高,每个矢量都有词汇的大小(在n-gram的情况下甚至更大),这使得建模变得困难。这种方法的另一个缺点是缺乏语义信息。这意味着代表单个单词的所有矢量是等距的。在这种嵌入中,空间同义词就像完全不相关的词一样远离彼此。使用这种类型的词语表达不必要地使得NLP任务变得更加困难,因为它会迫使你的模型记忆特定的单词,而不是试图捕捉语义。

word2vec

图1: 投影到二维空间上的单词的Word2Vec表示。

在这个领域的第一次重大飞跃是在2013年推出了Word2Vec--一个专门用于生产嵌入的基于神经网络的模型。想象一下,从一系列的词汇开始,去掉中间的一个词,然后让一个模型通过查看上下文词语(即CBOW的连续词袋)来预测它该模型的另一个版本是要求预测给定中间词的上下文(skip-gram))。这个想法是违反直觉的,因为这样的模型可能被用在信息检索任务中(某个单词不见了,问题是使用它的上下文来预测它),但是很少这样。相反,事实证明,如果您随机初始化嵌入,然后在训练CBOW或skip-gram模型中将它们用作可学习参数,则可获得可用于任何NLP任务的每个单词的矢量表示。这些强大的表现形式在训练中出现,因为模型被迫识别出现在相同语境中的单词。这样你就可以避免记住特定的单词,而是传达不是由单词本身解释的单词的语义意义,而是通过它的上下文来传达。

在2014年,仅仅一年后,斯坦福大学的NLP研究小组的挑战Word2Vec有一个强有力的竞争者:手套他们提出了一种不同的方法,认为在矢量中对单词的语义含义进行编码的最好方法是通过全局单词共现矩阵,而不是像在Word2Vec中的局部同现。如图1所示,与场景词语相比,同现概率的比率能够区分单词。大约1时,两个目标单词经常或很少与上下文单词共同出现。只有当上下文词与目标词中的一个共同出现时,比例要么非常小,要么非常大。这是GloVe背后的直觉。确切的算法包括将单词表示为向量,其方式是乘以上下文单词的差异等于共现概率的比率。

进一步改进

即使新的功能强大的Word2Vec再现了许多经典算法的性能,仍然需要能够捕获文本(长期和短期)的顺序依赖性的解决方案这个问题的第一个概念是所谓的香草递归神经网络(RNN)。香草RNN利用数据的时间性质,通过将字依次送入网络,同时使用关于存储在隐藏状态中的先前字的信息


图2: 循环神经网络。图片由一个优秀的Colah 在LSTM上帖子提供

这些网络在处理局部时间依赖性方面被证明是非常有效的,但是当呈现长序列时表现得相当差。这个失败是由于在每个时间步后,隐藏状态的内容被网络的输出覆盖。为了解决这个问题,计算机科学家和机器学习研究人员设计了一种称为长时间记忆(LSTM的新型RNN架构LSTM通过在网络中引入一个称为存储单元的额外单元来处理这个问题,这是一种负责存储长期依赖性的机制,以及负责控制单元中的信息流的多个这是如何工作的,在每个时间步骤,忘记门产生描述要忘记的存储单元内容量的分数。接下来,输入门决定将多少输入添加到存储单元的内容。最后,输出门决定整个单元的输出产生多少存储单元内容。所有的门都像有规律的神经网络层一样具有可学习的参数,这意味着随着时间的推移,网络适应并更好地决定什么样的输入与任务相关,以及哪些信息可以被忘记。

LSTMs自20世纪90年代后期以来已经出现,但是它们在计算和记忆方面相当昂贵,所以直到最近,由于硬件的显着进步,在合理的时间内对深度LSTM网络进行训练变得可行。目前,存在许多LSTM的变体,例如mLSTM,其引入了对输入或GRU的乘法依赖性,由于存储单元更新机制的智能化简化,大大减少了可训练参数的数量。

不久之后,很明显,这些深度学习模式明显优于传统方法,但研究人员渴望更多。他们开始研究卷积神经网络计算机视觉领域的惊人成就并想知道这些概念是否可以纳入NLP。很快,使用1D滤波器(处理一小部分的句子,例如5个连续的单词)简单地替换2D滤波器(处理图像的一小部分,例如3×3像素的区域)使其成为可能。与二维CNN类似,这些模型越来越抽象,随着网络的深入处理,第一层处理原始输入和其前一层的所有后续处理输出。当然,一个单词嵌入(嵌入空间通常在300个维度左右)比单个像素承载更多的信息,这意味着没有必要使用像图像那样的深度网络。你可能会认为它是嵌入式应用程序在前几层完成的,所以可以跳过它们。这些直觉在各种任务的实验中被证明是正确的。1D CNN比RNN更轻,更精确,并且由于更容易并行化,甚至可以训练更快的数量级。

👀 卷积神经网络首先被用来解决计算机视觉问题,并保持在这个领域的最新技术。在这里了解更多关于他们的应用和功能

尽管CNN做出了令人难以置信的贡献,但这些网络仍然有几个缺点。在一个经典的设置中,一个卷积网络由多个卷积层组成,负责创建所谓的特征映射和一个将其转化为预测的模块。特征映射本质上是从文本(或图像)中提取的高级特征,保留文本(或图像)出现的位置。预测模块在特征映射上执行聚合操作,并且或者更常见地忽略特征的位置(完全卷积网络):学习特定特征最经常出现的位置(完全连接的模块)。这些方法的问题出现在例如问题回答中任务,模型应该给出的文本和问题的答案。在这种情况下,如经典预测模块所做的那样,将文本所携带的所有信息存储在单个文本中是困难的并且经常是不必要的。相反,我们希望把重点放在一个文本的粒子部分,其中最重要的信息被存储在一个特定的问题上。注意力机制解决了这个问题,这个机制根据输入的内容来决定文本的部分内容。这种方法对于文本分类或机器翻译等经典应用也是有用的。

典型的NLP问题

有许多语言任务,虽然对于人类来说简单而次要,但对于一台机器来说却是非常困难的。这种混淆主要是由于讽刺和成语等语言上的细微差别。我们来看看研究人员试图解决的一些自然语言处理领域(大致按其复杂程度排列):
最常见也可能最简单的是情感分析这基本上决定了演讲者/作者对特定主题(或者一般)的态度或情感反应。可能的情绪是积极的,中性的和消极的。看看这篇关于使用深度卷积神经网络来测试推特中的情绪的文章。另一个有趣的实验表明,一个深度复发网络可以学习的情绪意外

无监督的情绪神经元
图3激活网络中的神经元,用于生成文本的下一个字符。很清楚,即使它是在完全没有监督的环境中进行训练,也可以了解到情绪。

前一种情况的一个自然概括是 文档分类其中不是将三个可能的标志之一分配给每个文章,而是解决普通的分类问题。根据算法的全面比较,可以说深度学习是一种强大的分类方法。

现在,我们进入真正的交易: 机器翻译机器翻译相当长时间以来一直是一个严峻的挑战。理解这一点非常重要,这与我们之前讨论的两个完全不同的任务是完全不同的。对于这个任务,我们需要一个模型来预测一个单词序列,而不是一个标签。机器翻译清楚地表明深度学习有什么大惊小怪,因为在顺序数据方面它是一个令人难以置信的突破。在这篇博客文章中,您可以阅读更多关于 - yep,你猜对了 - 复发神经网络 解决翻译问题,在这篇文章中你可以了解他们如何达到最新的结果。

假设你需要一个自动文本摘要模型,并且你希望它只提取文本中最重要的部分,同时保留所有的含义。这需要一种能够理解整个文本的算法,同时关注具有大部分含义的特定部分。这个问题被注意机制巧妙地解决了,它可以作为模块在端到端解决方案中引入

最后,还有 问题答案就像你可以得到的那样接近人工智能。对于这个任务,模型不仅需要理解一个问题,而且还需要对一个感兴趣的文本有一个完整的理解,并且确切地知道在哪里寻找答案。有关问题解答解决方案的详细说明(当然使用深度学习),请查看本文

注意机制
图4: 经过训练将英语翻译成法语的经常性神经网络中的注意机制的美丽可视化

由于深度学习为各种数据(例如文本和图像)提供了矢量表示,因此您可以构建模型以专注于不同的领域。这是研究人员如何提出 ** 视觉问题回答 **。任务是“微不足道的”:只要回答关于图像的问题。听起来像一个7岁的工作,对吗?尽管如此,深层模型是第一个在没有人力监督的情况下产生合理结果的。结果与这样的模型的描述是在本文

🍔🍳🍟 饥饿的应用程序?把你的手弄脏,并使用LSTM来实现你的NLP聊天机器人

自然语言生成

你可能已经注意到,上述所有的任务都有一个共同的分母。对于情感分析来说,一篇文章总是积极的,消极的或中立的。在文档分类中,每个例子都属于一个类。这意味着这些问题属于一个称为监督学习的问题家族模型的例子和与之相关的正确值。当你想要你的模型生成文本时,情况会变得棘手

Andrej Karpathy在其优秀的博客文章中全面回顾了RNN如何解决这个问题他展示了深度学习的例子,用于生成新的莎士比亚小说,或者如何生成似乎是人类写的源代码,但实际上什么都不做。这些都是很好的例子,说明这样一个模型是多么的强大,但是这些算法也有真正的商业应用。想象一下,您希望以广告为目标客户,并且不希望他们通过复制和粘贴相同的消息给所有人而变得通用。编写数千个不同版本的程序绝对没有时间,所以一个广告生成工具可能会派上用场。

RNN在字符级别生成文本方面似乎表现得相当好,这意味着网络预测连续的字母(也包括空格,标点符号等),而不会真正意识到单词的概念然而,事实证明,这些模型真的与声音产生困难这是因为要产生一个单词只需要几个字母,但是当以高质量产生声音时,即使是16kHz的采样,也有数百甚至数千个数据点形成口语单词。研究人员再一次转向CNN,并取得了巨大的成功。DeepMind的数学家开发了一个非常复杂的卷积生成WaveNet模型,它通过使用所谓的非对称卷积来处理非常大的接受场(实际原始输入的长度)问题,其随着每一层以指数方式增加接受场。这是目前最先进的模型,其性能明显优于所有其他可用基线,但使用起来非常昂贵,即需要90秒才能生成1秒的原始音频。这意味着还有很大的改进空间,但我们肯定是在正确的轨道上。

概括

所以,现在你知道了。深度学习最近出现在NLP中,由于计算问题,我们需要深入了解深度神经网络以了解它们的能力。但是一旦我们做到了,就永远改变了游戏。

posted on 2018-01-24 19:57  李大大猫  阅读(357)  评论(0)    收藏  举报

导航