安妮 若朴 编译整理 量子位 出品 | 公众号 QbitAI 作者简介:Edwin Chen,在MIT研究数学/语言学,在微软研究院研究语音识别,在Clarium研究量化交易,在Twitter研究广告,在Google研究机器学习。 在这篇文章中,作者首先介绍了一下神经网络、RNN和LSTM的基本概念,然后举例对比了三种网络的性能,并且进一步讲解了LSTM。 LSTM是神经网络一个相当简单的延伸扩展,而且在过去几年里取得了很多惊人成就。我第一次了解到LSTM时,简直有点目瞪口呆。不知道你能不能从下图中发现LSTM之美。
OK,咱们这就开始切入正题。先简单介绍一下神经网络和LSTM。 神经网络 假设我们有一个来自电影的图像序列,然后想用一个活动来标记每张图像。例如这是一场打斗么?角色在交谈?角色在吃东西? 应该怎么做? 一种方法是忽略图像的顺序属性,把每张图片单独考虑,构建一个单张图片的分类器。例如,给出足够的图片和标签: 算法首先学习检测形状、边缘等低级模式 在更多数据的驱动下,算法学会将低级模式组合成复杂形态,例如一个椭圆形上面有两个圆形加一个三角形可以被认为是人脸 如果还有更多数据,算法会学到将这些高级模式映射到活动本身,例如有嘴、有牛排、有叉子的场景可能是吃饭 这就是一个深度神经网络:得到一个图像输入,返回一个活动输出。 神经网络的数学原理如图所示: 用RNN记住信息 忽略图像的顺序可以算是初步的机器学习。更进一步,如果是一幕海滩的场景,我们应该在后续帧中强化海滩相关的标记:如果有人在水中,大概可以标记为游泳;而闭眼的场景,可能是在晒太阳。 同样,如果场景是一个超市,有人手拿培根,应该被标记为购物,而不是做饭。 我们想做的事情,是让模型追踪世界的状态。 看到每个图像后,模型输出一个标签,并更新其对世界的知识。例如,模型能学会自动发现和追踪信息,例如位置、时间和电影进度等。重要的是,模型应该能自动发现有用的信息。 对于给定的新图像,模型应该融合收集而来的知识,从而更好的工作。 这样就成了一个循环神经网络RNN。除了简单的接收一张图片返回一个活动标记之外,RNN会通过给信息分配不同的权重,从而在内部保留了对世界的记忆,以便更好的执行分类任务。 RNN的数学原理如图所示: 通过LSTM实现长期记忆 模型如何更新对世界的认知?到目前为止,还没有任何规则限制,所以模型的认知可能非常混乱。这一帧模型认为人物身处美国,下一帧如果出现了寿司,模型可能认为人物身处日本…… 这种混乱的背后,是信息的快速变换和消失,模型难以保持长期记忆。所以我们需要让网络学习如何更新信息。方法如下: 增加遗忘机制。例如当一个场景结束是,模型应该重置场景的相关信息,例如位置、时间等。而一个角色死亡,模型也应该记住这一点。所以,我们希望模型学会一个独立的忘记/记忆机制,当有新的输入时,模型应该知道哪些信息应该丢掉。 增加保存机制。当模型看到一副新图的时候,需要学会其中是否有值得使用和保存的信息。 所以当有一个新的输入时,模型首先忘掉哪些用不上的长期记忆信息,然后学习新输入有什么值得使用的信息,然后存入长期记忆中。 把长期记忆聚焦到工作记忆中。最后,模型需要学会长期记忆的哪些部分立即能派上用场。不要一直使用完整的长期记忆,而要知道哪些部分是重点。 这样就成了一个长短期记忆网络(LSTM)。 RNN会以相当不受控制的方式在每个时间步长内重写自己的记忆。而LSTM则会以非常精确的方式改变记忆,应用专门的学习机制来记住、更新、聚焦于信息。这有助于在更长的时期内跟踪信息。 LSTM的数学原理如图所示: 卡比兽 △神奇宝贝中的卡比兽 我们不妨拿《神奇宝贝》中的卡比兽对比下不同类别的神经网络。 神经网络 当我们输入一张卡比兽被喷水的图片时,神经网络会认出卡比兽和水,推断出卡比兽有60%的概率在洗澡,30%的概率在喝水,10%的概率被攻击。 循环神经网络(RNN) (责任编辑:本港台直播) |