首页系统综合问题闲下来的Andrej Karpathy录了个课程:保证学会,你听不懂我吃鞋

闲下来的Andrej Karpathy录了个课程:保证学会,你听不懂我吃鞋

时间2023-01-06 05:08:42发布分享专员分类系统综合问题浏览318

今天小编给各位分享office2013永久激活工具的知识,文中也会对其通过闲下来的Andrej Karpathy录了个课程:保证学会,你听不懂我吃鞋和特斯拉的“纯视觉”,能否到达自动驾驶的彼岸?等多篇文章进行知识讲解,如果文章内容对您有帮助,别忘了关注本站,现在进入正文!

内容导航:

  • 闲下来的Andrej Karpathy录了个课程:保证学会,你听不懂我吃鞋
  • 特斯拉的“纯视觉”,能否到达自动驾驶的彼岸?
  • 理解 LSTM 网络
  • 【译】理解LSTM(通俗易懂版)
  • 一、闲下来的Andrej Karpathy录了个课程:保证学会,你听不懂我吃鞋

    机器之心报道

    机器之心编辑部

    为了重拾自己对 AI 开源和教育的热情,Andrej Karpathy 在家录了一个详解反向传播的课程。

    前段时间,特斯拉 AI 高级总监、自动驾驶 Autopilot 负责人 Andrej Karpathy 在推特上宣布自己即将离职,并表示从今年三月份开始,自己已休假四个月。

    在休假的这段时间,Karpathy 也没有闲着,自己在家录了个课程。视频内容长达 2 小时 25 分钟,基于 micrograd 详细介绍了神经网络和反向传播。

    对于这门课程,Karpathy 自信地表示:「这是 8 年来领域内对神经网络和反向传播的最佳讲解。」

    视频地址:https://twitter.com/karpathy/status/1559672719414681601

    Karpathy 还在个人推特上打起了赌:只要你懂 Python,并能模糊记起高中学过的求导知识,看了这个视频你还不理解反向传播和神经网络核心要点的话,那我就吃一只鞋。

    言外之意这门课程只需观看者掌握基本的 Python 编程技能和高中微积分的简单知识,非常适合零基础的同学在线学习。

    有网友调侃到虽然自己很想看 Karpathy 直播吃鞋,但他相信 Karpathy 的视频课程不会让人失望的。

    课程内容

    接近 2 个半小时的视频按照时间段划分了近 20 个小部分,主要包括以下内容。

    micrograd 项目概述。2020 年 4 月,Karpathy 开源了其编写的微型 autograd 引擎 micrograd,其中用 100 行代码实现了针对动态构建的 DAG 的反向传播算法,并用 50 行代码实现了类 PyTorch API 的库。目前,micrograd 项目的 GitHub Star 量已达 2.2k。

    项目地址:https://github.com/karpathy/micrograd/

    然后 Karpathy 介绍了只有一个输入的简单函数的导数和具有多个输入的简单函数的导数、启动 micrograd 的核心 Value 对象及其可视化的方法,并举了两个手动反向传播的例子。

    接下来 Karpathy 系统地介绍了:

    为单个操作实现反向传播;为整个表达式图实现反向函数;修复一个节点多次出现的反向传播 bug;使用更多操作替换 tanh 激活函数;用 PyTorch 实现上述操作,并与 micrograd 进行比较;用 micrograd 构建一个神经网络库 (MLP);创建一个微型数据集,编写损失函数;收集神经网络的所有参数;手动做梯度下降优化,训练网络。

    最后 Karpathy 总结了反向传播与现代神经网络的关系。此外,Karpathy 还在视频中探究了 PyTorch 中 tanh 激活函数的反向传播机制。

    Andrej Karpathy

    个人主页:https://karpathy.ai/

    2005-2009 年,Andrej Karpathy 本科就读于加拿大多伦多大学,主修计算机科学与物理,辅修数学。在这里,他第一次接触到深度学习,聆听 Hinton 的课程。

    2009 -2011 年,Karpathy 硕士就读于加拿大不列颠哥伦比亚大学,其导师为计算机科学系教授 Michiel van de Panne,主要研究物理模拟中用于敏捷机器人的机器学习。

    2011-2016 年,Karpathy 博士就读于斯坦福大学,师从著名 AI 学者李飞飞,专注于研究卷积 / 循环神经网络以及它们在计算机视觉、自然语言处理和交叉领域的应用。期间,他设计并担任斯坦福首个深度学习课程《CS231n:卷积神经网络与视觉识别》的主要讲师。

    与此同时,Karpathy 还有三段实习经历。2011 年,他进入发展初期的谷歌大脑实习,致力于视频领域的大规模无监督学习。之后的 2013 年,他再次在谷歌研究院实习,从事 YouTube 视频的大规模监督学习。2015 年,他在 DeepMind 实习,参与深度强化学习团队的工作。

    Karpathy 是 OpenAI 的创始成员和研究科学家。仅一年多后,2017 年,Karpathy 接受马斯克的邀请加入特斯拉,接替了当时的特斯拉 Autopilot 负责人、苹果 Swift 语言、LLVM 编译器之父 Chris Lattner。

    五年里,Karpathy 一手促成了 Autopilot 的开发。随着特斯拉从最开始的自动驾驶慢慢扩展到更广泛的人工智能领域,Karpathy 也被提为特斯拉的 AI 高级总监,直接向马斯克汇报工作。

    现在根据领英上的资料显示,Karpathy 已于 7 月离开特斯拉。

    至于离开特斯拉,接下来要做什么,此前 Karpathy 透漏还没有具体的安排,但希望重拾自己长久以来对 AI 技术工作、开源和教育等方面的热情。

    一、特斯拉的“纯视觉”,能否到达自动驾驶的彼岸?

    特斯拉最近又出大新闻了。才内部邮件宣布达成L2级自动驾驶,这次彻底“纯视觉”了。

    这次是美国时间7月10日,特斯拉 FSD Beta V9.0终于在美国向用户推送。相比起上一个版本,V9.0做了FSD有史以来最大的一次更新。彻底抛弃了雷达的使用。而且,特斯拉征召了2000名车主内测,报名踊跃。不过,BUG很快就出来了。

    这不,一位叫Giacaglia的网友看了一下特斯拉车主们发的视频,马上就收集了FSD 9.0 beta的11个失误瞬间。从各个动图来看,很明显现在的系统还是只能算是驾驶辅助,如果脱手或者离开人的监控,还是会出事情。这次可以看到的BUG有:

    场景一:自动转弯之后径直向道路中央的绿化带撞了过去。

    场景二:无法识别路中单轨道路。

    场景三:闯公交车专用道。

    场景四:在单行车道上逆行。

    场景五:一直转换车道。路口右转时,无法判断使用哪个车道。

    场景六: 汽车 压实线并线;急需换道时,因为后方车辆逼近,错过时机,只能下个路口见了。

    场景七:自动并线超车之后发现道路划线,还要强行压线并道。

    场景八:左转时提前换道。

    场景九:左转时,差点进入对向路边停车位。

    场景十: 汽车 穿过几条车道后才能左转。

    场景十一:在一个只有停车标志的地方,看到两个停车标志。

    “作为一个做Deep Learning方向的人表示,用神经网络的车我是肯定不敢坐的……”“是的,做ML(Machine Learning)的看现在的自动驾驶,堪比医生遇到挂科的同学给自己做手术。”“强行让机器来学人(纯靠视觉)本就是错误的发展方向,机器有自己的优势(可以自由加装雷达等设备进行辅助)而不利用,就是典型的教条主义、本本主义。”……

    这都是很专业的质疑,那么,特斯拉是不是点错 科技 树?这个问题虽然见仁见智,但是从主流的CV(Computer Vision)+雷达路线来说,特斯拉有点像“西毒”欧阳锋了,为了降低成本,纯视觉一条道走到黑,“虽百死而不悔”的精神虽然有了,但是,那都是消费者的命啊……

    为什么纯视觉?

    如果特斯拉很老实地讲自己是驾驶辅助也就罢了,坏就坏在从一开始马斯克喜欢“吹”自动驾驶,直到吹破了以后在内部邮件中承认是L2级驾驶辅助。但是,现在马斯克给吹得成为一种神话,这种造神运动让马斯克骑上虎背下不来了。

    而且,国内外有太多“特吹”,包括大众集团CEO赫伯特·迪斯博士。当然,迪斯博士吹特斯拉,是为了麻痹敌人,那是另外一回事。

    且不说特斯拉多年排名垫底的自动驾驶功力,已经让多少人命丧黄泉,单说特斯拉靠“纯视觉”方案,说能达到全自动驾驶L4~L5级别,这就让人匪夷所思了。

    苏黎世联邦理工学院(ETH Zurich)教授Marc Pollefeys则认为特斯拉不太可能放弃完全自动驾驶近在咫尺的说法,“很多人已经为此买单(特斯拉的FSD套餐),所以他们必须保持希望,”他说,“他们被困在那个故事里。”故事已经成为一种神话。

    那么,为什么特斯拉取消雷达使用纯视觉?特斯拉多次强调过,摄像头数据和雷达数据在做融合的时候比较困难,当摄像头数据与雷达数据有冲突时,系统反而会更加难以抉择。

    所以,马斯克也表示过,与其让二者互相扯后腿,不如只选一个并把它做到极致。而且,在他看来,特斯拉的深度学习系统已经比毫米波雷达强100倍,现在的毫米波雷达已经开始拖后腿了。

    而在今年的 CVPR(计算视觉与模式识别大会)上,特斯拉首席AI科学家安乔·卡帕西(Andrej Karpathy)还讲了特斯拉如此“执拗”的原因。不过,对于走上歧路的特斯拉,我们还是奉劝要保持冷静。

    为什么呢?道理其实很简单,人在开车,虽然是以视觉为主,但是其他的感官都是一体作用的,并非无用。比如听觉,身体的触觉,甚至是意识的直觉等。“事实上,人类开车的时候,是一种近乎无意识的感知,他就能够预测下一步应该怎么办,从而规避事故。”这是奇瑞 科技 有限公司总经理李中兵在世界人工智能大会的一场论坛上所讲的。而在这点,特斯拉有点过于执着在视觉上了。

    通用视觉系统和神经网络

    那么,这次的CVPR上,特斯拉的安乔·卡帕西(Andrej Karpathy)详细介绍的基于深度学习开发的自动驾驶系统,也就是全视觉的好处是什么?

    特斯拉的底气,是采用了“通用视觉系统”和“神经网络”两种黑 科技 。当然,Karpathy 强调,基于视觉的自动驾驶,在技术角度更难实现,因为它要求神经网络仅仅基于视频输入就能达到超强性能的输出。“不过,一旦取得了突破,就能获得通用视觉系统,方便部署在地球的任何地方。”

    “我们抛弃了毫米波雷达,车辆只靠视觉来行驶。”Karpathy认为,有了通用视觉系统,车辆就不再需要什么补充信息了。特斯拉始终认为,收集环境信息是一回事,利用环境信息又是另一回事。而且,传感器的种类和数量越多,互相之间的协调与整合就越难做,最终效果恐怕只是1+1 2,得不偿失。

    这次特斯拉发布的FSD Beta V9.0,从技术上来说,新算法调用所有用于自动驾驶的8个摄像头,修复跨镜头畸变、时域差,拼接成环视视觉,再对周围环境进行实时的3D建模。也就是特斯拉所谓的“鸟瞰图视觉”。

    具体来说,就是特斯拉将2D视图转化为模拟激光雷达数据,然后再用(激光雷达)算法处理这些数据,得到比之前好非常多的视觉测距精度。你不觉得奇怪么,既然还是得用激光雷达算法,为什么不用激光雷达呢?

    按照特斯拉的说法,其自动驾驶系统是基于神经网络的特征识别、预判和规控,对于道路环境项目进行学习,比如交通路牌的含义到底是什么,需要通过很多场景素材训练系统,训练得越多系统能处理的场景越多。通过几百万车主积累的大数据,表现出来的能力就是,特斯拉可以轻松做到目前城市道路的自主驾驶。

    实际上,马斯克一直都希望将特斯拉的制造成本压到最低。从成本上来说,目前特斯拉Model 3的自动驾驶摄像头成本只需要65美元。而激光雷达的成本,还基本上在1000美元以上级别。要知道,2018年的时候,Velodyne的64线激光雷达HDL-64售价可是高达7.5万美元的。

    支撑特斯拉车价一降再降的当然是成本的控制。但是,马斯克和特斯拉还是过于迷信软件和AI的力量了。对于自动驾驶的“长尾问题”,特斯拉认为靠AI和超级计算机能解决,这都是有问题的。就算完成了99%,最后的1%依然是不可跨越的鸿沟。

    此外,已经有外媒认为,美国本土的传统车企通用 汽车 将在2021年超越特斯拉,原因就在于特斯拉在自动驾驶方面已经落后,特别是又在“纯视觉”的路线上一条道走到黑。

    传感器融合才是未来

    就纯视觉的局限来说,有业内人士认为,在一些极端的场景中是无法满足对于感知探测能力的KPI指标的。比如一些复杂的天气情况,如大雨、大雾、沙尘、强光、夜晚,这对于视觉和激光雷达都是非常恶劣的场景,难以用一种传感器应对。主要体现在几个大的方面:

    1)天气环境因素造成的视觉传感器致盲(如逆光炫目、沙尘暴遮挡等);

    2)小目标物体在中低分辨率视觉感知系统中,可能造成目标晚识别(如减速带、小动物、锥桶等);

    3)异形目标由于未经训练可能造成无法匹配,被漏识别(道路落石、前车掉落轮胎等);

    4)视觉传感器本身的识别要理要求,对于视觉识别的高算力需求等。

    就算一些自动驾驶测试或比较成熟厂商,在智能驾驶中也多次发生撞车事故,为传感器系统的失效付出惨痛代价。所以,传感器融合是构建稳定感知系统的必要条件。毕竟,视觉感知能力有局限,必须结合毫米波雷达或激光雷达做优势互补才能实现。

    回头来说,这次特斯拉的内测BUG里面,但凡有一个场景没有人类驾驶员眼明手快接手的话,就会演变成为交通事故。这能让人放心吗?特斯拉的车主们也忒心大了。

    此外,我们知道,摄像头如何感知深度只是自动驾驶问题的一部分。特斯拉依靠的最先进的机器学习只是识别模式,这意味着它会在新情况下挣扎。一挣扎,就会产生误判。

    与人类司机不同的是,如果系统没有遇到场景,它就无法推理该做什么。“任何AI系统都不了解实际发生的事情,”研究自动驾驶 汽车 计算机视觉的康奈尔大学副教授克里安·温伯格(Kilian Weinberger)如此表示。

    还有一点是,虽说,FSD 9.0给智能辅助驾驶系统是创造了更广阔的应用场景,但是,在L2级别的驾驶辅助系统(而不是自动驾驶系统)这个前提下,这些功能多少仍显得有些鸡肋,因为驾驶过程中根本无法脱手。而且,人类驾驶员不仅需要手握方向盘,还需要在城市道路上与车载电脑系统较劲,增加了额外负担和心理压力。

    FSD BETA V9.0的这些内测BUG会在实际道路上反复出现,毫无疑问这为城市交通也制造了更多的隐患。不过,这套系统能不能用在更加复杂的中国的开放道路上?公社的小伙伴中还是有对特斯拉超有信心的,“大家都没开过,怎么知道行不行呢?”是啊,是骡子是马,特斯拉总会拉出来遛遛。

    二、理解 LSTM 网络

    作者 : Christopher Olah (OpenAI)
    译者 :朱小虎 Xiaohu (Neil) Zhu(CSAGI / University AI)
    原文链接

    术语 : 循环神经网络(Recurrent Neural Network, 简称 RNN); 长短期记忆(Long Short-Term Memory, 简称 LSTM); 门限循环单元(Gated Recurrent Unit, 简称 GRU)

    人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。

    传统的神经网络并不能做到这点,看起来也像是一种巨大的弊端。例如,假设你希望对电影中的每个时间点的时间类型进行分类。传统的神经网络应该很难来处理这个问题——使用电影中先前的事件推断后续的事件。

    RNN 解决了这个问题。RNN 是包含循环的网络,允许信息的持久化。

    在上面的示例图中,神经网络的模块, ,正在读取某个输入 ,并输出一个值 。循环可以使得信息可以从当前步传递到下一步。

    这些循环使得 RNN 看起来非常神秘。然而,如果你仔细想想,这样也不比一个正常的神经网络难于理解。RNN 可以被看做是同一神经网络的多次复制,每个神经网络模块会把消息传递给下一个。所以,如果我们将这个循环展开:

    链式的特征揭示了 RNN 本质上是与序列和列表相关的。他们是对于这类数据的最自然的神经网络架构。

    并且 RNN 也已经被人们应用了!在过去几年中,应用 RNN 在语音识别,语言建模,翻译,图片描述等问题上已经取得一定成功,并且这个列表还在增长。我建议大家参考 Andrej Karpathy 的博客文章—— The Unreasonable Effectiveness of Recurrent Neural Networks 来看看更丰富有趣的 RNN 的成功应用。

    而这些成功应用的关键之处就是 LSTM 的使用,这是一种特别的 RNN,比标准的 RNN 在很多的任务上都表现得更好。几乎所有的令人振奋的关于 RNN 的结果都是通过 LSTM 达到的。这篇博文也会就 LSTM 进行展开。

    RNN 的关键点之一就是他们可以用来连接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解。如果 RNN 可以做到这个,他们就变得非常有用。但是真的可以么?答案是,还有很多依赖因素。

    有时候,我们仅仅需要知道先前的信息来执行当前的任务。例如,我们有一个语言模型用来基于先前的词来预测下一个词。如果我们试着预测 “the clouds are in the sky” 最后的词,我们并不需要任何其他的上下文 —— 因此下一个词很显然就应该是 sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息。

    但是同样会有一些更加复杂的场景。假设我们试着去预测“I grew up in France... I speak fluent French”最后的词。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的 France 的上下文的。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。

    不幸的是,在这个间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力。

    在理论上,RNN 绝对可以处理这样的 长期依赖 问题。人们可以仔细挑选参数来解决这类问题中的最初级形式,但在实践中,RNN 肯定不能够成功学习到这些知识。 Bengio, et al. (1994) 等人对该问题进行了深入的研究,他们发现一些使训练 RNN 变得非常困难的相当根本的原因。

    然而,幸运的是,LSTM 并没有这个问题!

    Long Short Term 网络—— 一般就叫做 LSTM ——是一种 RNN 特殊的类型,可以学习长期依赖信息。LSTM 由 Hochreiter & Schmidhuber (1997) 提出,并在近期被 Alex Graves 进行了改良和推广。在很多问题,LSTM 都取得相当巨大的成功,并得到了广泛的使用。

    LSTM 通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是 LSTM 的默认行为,而非需要付出很大代价才能获得的能力!

    所有 RNN 都具有一种重复神经网络模块的链式的形式。在标准的 RNN 中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层。

    LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于 单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。

    不必担心这里的细节。我们会一步一步地剖析 LSTM 解析图。现在,我们先来熟悉一下图中使用的各种元素的图标。

    在上面的图例中,每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表按位 pointwise 的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。

    LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。

    细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。

    LSTM 有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个 sigmoid 神经网络层和一个按位的乘法操作。

    Sigmoid 层输出 到 之间的数值,描述每个部分有多少量可以通过。 代表“不许任何量通过”, 就指“允许任意量通过”!

    LSTM 拥有三个门,来保护和控制细胞状态。

    在我们 LSTM 中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为 忘记门层 完成。该门会读取 和 ,输出一个在 到 之间的数值给每个在细胞状态 中的数字。 表示“完全保留”, 表示“完全舍弃”。

    让我们回到语言模型的例子中来基于已经看到的预测下一个词。在这个问题中,细胞状态可能包含当前 主语 的性别,因此正确的 代词 可以被选择出来。当我们看到新的 主语 ,我们希望忘记旧的 主语

    下一步是确定什么样的新信息被存放在细胞状态中。这里包含两个部分。第一, sigmoid 层称 “输入门层” 决定什么值我们将要更新。然后,一个 tanh 层创建一个新的候选值向量, ,会被加入到状态中。下一步,我们会讲这两个信息来产生对状态的更新。

    在我们语言模型的例子中,我们希望增加新的主语的性别到细胞状态中,来替代旧的需要忘记的主语。

    现在是更新旧细胞状态的时间了, 更新为 。前面的步骤已经决定了将会做什么,我们现在就是实际去完成。

    我们把旧状态与 相乘,丢弃掉我们确定需要丢弃的信息。接着加上 。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。

    在语言模型的例子中,这就是我们实际根据前面确定的目标,丢弃旧代词的性别信息并添加新的信息的地方。

    最终,我们需要确定输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。首先,我们运行一个 sigmoid 层来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过 tanh 进行处理(得到一个在 到 之间的值)并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。

    在语言模型的例子中,因为他就看到了一个 代词 ,可能需要输出与一个 动词 相关的信息。例如,可能输出是否代词是单数还是负数,这样如果是动词的话,我们也知道动词需要进行的词形变化。

    我们到目前为止都还在介绍正常的 LSTM。但是不是所有的 LSTM 都长成一个样子的。实际上,几乎所有包含 LSTM 的论文都采用了微小的变体。差异非常小,但是也值得拿出来讲一下。

    其中一个流形的 LSTM 变体,就是由 Gers & Schmidhuber (2000) 提出的,增加了 “peephole connection”。是说,我们让 门层 也会接受细胞状态的输入。

    上面的图例中,我们增加了 peephole 到每个门上,但是许多论文会加入部分的 peephole 而非所有都加。

    另一个变体是通过使用 coupled 忘记和输入门。不同于之前是分开确定什么忘记和需要添加什么新的信息,这里是一同做出决定。我们仅仅会当我们将要输入在当前位置时忘记。我们仅仅输入新的值到那些我们已经忘记旧的信息的那些状态 。

    另一个改动较大的变体是 Gated Recurrent Unit (GRU),这是由 Cho, et al. (2014) 提出。它将忘记门和输入门合成了一个单一的 更新门。同样还混合了细胞状态和隐藏状态,和其他一些改动。最终的模型比标准的 LSTM 模型要简单,也是非常流行的变体。

    这里只是部分流行的 LSTM 变体。当然还有很多其他的,如 Yao, et al. (2015) 提出的 Depth Gated RNN。还有用一些完全不同的观点来解决长期依赖的问题,如 Koutnik, et al. (2014) 提出的 Clockwork RNN。

    要问哪个变体是最好的?其中的差异性真的重要吗? Greff, et al. (2015) 给出了流行变体的比较,结论是他们基本上是一样的。 Jozefowicz, et al. (2015) 则在超过 1 万种 RNN 架构上进行了测试,发现一些架构在某些任务上也取得了比 LSTM 更好的结果。

    刚开始,我提到通过 RNN 得到重要的结果。本质上所有这些都可以使用 LSTM 完成。对于大多数任务确实展示了更好的性能!

    由于 LSTM 一般是通过一系列的方程表示的,使得 LSTM 有一点令人费解。然而本文中一步一步地解释让这种困惑消除了不少。

    LSTM 是我们在 RNN 中获得的重要成功。很自然地,我们也会考虑:哪里会有更加重大的突破呢?在研究人员间普遍的观点是:“Yes! 下一步已经有了——那就是 注意力 !” 这个想法是让 RNN 的每一步都从更加大的信息集中挑选信息。例如,如果你使用 RNN 来产生一个图片的描述,可能会选择图片的一个部分,根据这部分信息来产生输出的词。实际上, Xu, et al. (2015) 已经这么做了——如果你希望深入探索 注意力 可能这就是一个有趣的起点!还有一些使用注意力的相当振奋人心的研究成果,看起来有更多的东西亟待探索……
    注意力也不是 RNN 研究领域中唯一的发展方向。例如, Kalchbrenner, et al. (2015) 提出的 Grid LSTM 看起来也是很有前途。使用生成模型的 RNN,诸如 Gregor, et al. (2015) Chung, et al. (2015) 和 Bayer & Osendorfer (2015) 提出的模型同样很有趣。在过去几年中,RNN 的研究已经相当的燃,而研究成果当然也会更加丰富!

    I’m grateful to a number of people for helping me better understand LSTMs, commenting on the visualizations, and providing feedback on this post.
    I’m very grateful to my colleagues at Google for their helpful feedback, especially Oriol Vinyals , Greg Corrado , Jon Shlens , Luke Vilnis , and Ilya Sutskever . I’m also thankful to many other friends and colleagues for taking the time to help me, including Dario Amodei , and Jacob Steinhardt . I’m especially thankful to Kyunghyun Cho for extremely thoughtful correspondence about my diagrams.
    Before this post, I practiced explaining LSTMs during two seminar series I taught on neural networks. Thanks to everyone who participated in those for their patience with me, and for their feedback.

    三、【译】理解LSTM(通俗易懂版)

    人对一个问题的思考不会完全从头开始。比如你在阅读本片文章的时,你会根据之前理解过的信息来理解下面看到的文字。在理解当前文字的时候,你并不会忘记之前看过的文字,从头思考当前文字的含义。

    传统的神经网络并不能做到这一点,这是在对这种序列信息(如语音)进行预测时的一个缺点。比如你想对电影中的每个片段去做事件分类,传统的神经网络是很难通过利用前面的事件信息来对后面事件进行分类。

    而循环神经网络(下面简称RNNs)可以通过不停的将信息循环操作,保证信息持续存在,从而解决上述问题。RNNs如下图所示

    可以看出A是一组神经网络(可以理解为一个网络的自循环),它的工作是不停的接收 并且输出 。从图中可以看出A允许将信息不停的再内部循环,这样使得它可以保证每一步的计算都保存以前的信息。

    这样讲可能还是有点晕,更好的理解方式,也是很多文章的做法,将RNNs的自循环结构展开,像是将同一个网络复制并连成一条线的结构,将自身提取的信息传递给下一个继承者,如下图所示。

    这种链式的结构揭示了RNNs与序列和列表类型的数据密切相关。好像他们生来就是为了处理序列类型数据的。

    谁说不是呢!在过去的几年里,RNNs在语音识别、文字建模、翻译、字幕等领域有很成功的应用。在Andrej Karpathy写的博客 The Unreasonable Effectiveness of Recurrent Neural Networks 中讨论了RNNs取得的惊人成果,这里就不详细讨论了。

    很对成功的案例都有一个共性,就是都用了一种叫LSTMs的特殊的RNNs网络结构。下面就来看看什么是LSTMs。

    从之前的描述可以看出来,RNNs理论上是可以将以前的信息与当前的任务进行连接,例如使用以前的视频帧来帮助网络理解当前帧。如果RNNs能做到这一点,那将会是非常的有用。但是他们能做到这点吗?答案是不一定。

    有时候我们需要利用近期的信息来执行来处理当前的任务。例如,考虑用一个语言模型通过利用以前的文字信息来预测下一个文字。如果我们需要预测“the clouds are in the sky”这句话的最后一个字,我们不需要其他的信息,通过前面的语境就能知道最后一个字应该是sky。在这种情况下,相关信息与需要该信息的位置距离较近,RNNs能够学习利用以前的信息来对当前任务进行相应的操作。如下图所示通过输入的 信息来预测出

    假设现在有个更为复杂的任务,考虑到下面这句话“I grew up in France… I speak fluent French.”,现在需要语言模型通过现有以前的文字信息预测该句话的最后一个字。通过以前文字语境可以预测出最后一个字是某种语言,但是要猜测出French,要根据之前的France语境。这样的任务,不同之前,因为这次的有用信息与需要进行处理信息的地方之间的距离较远,这样容易导致RNNs不能学习到有用的信息,最终推导的任务可能失败。如下图所示。

    理论上RNNs是能够处理这种“长依赖”问题的。通过调参来解决这种问题。但是在实践过程中RNNs无法学习到这种特征。 Hochreiter (1991) [German] 和 Bengio, et al. (1994) 深入研究过为什么RNNs没法学习到这种特征。

    幸好LSTMs这种特殊的RNNs是没有这个问题的。

    Long Short Term Memory networks(以下简称LSTMs),一种特殊的RNN网络,该网络设计出来是为了解决长依赖问题。该网络由 Hochreiter & Schmidhuber (1997) 引入,并有许多人对其进行了改进和普及。他们的工作被用来解决了各种各样的问题,直到目前还被广泛应用。

    所有循环神经网络都具有神经网络的重复模块链的形式。 在标准的RNN中,该重复模块将具有非常简单的结构,例如单个tanh层。标准的RNN网络如下图所示

    LSTMs也具有这种链式结构,但是它的重复单元不同于标准RNN网络里的单元只有一个网络层,它的内部有四个网络层。LSTMs的结构如下图所示。

    在解释LSTMs的详细结构时先定义一下图中各个符号的含义,符号包括下面几种

    图中黄色类似于CNN里的激活函数操作,粉色圆圈表示点操作,单箭头表示数据流向,箭头合并表示向量的合并(concat)操作,箭头分叉表示向量的拷贝操作

    LSTMs的核心是细胞状态,用贯穿细胞的水平线表示。

    细胞状态像传送带一样。它贯穿整个细胞却只有很少的分支,这样能保证信息不变的流过整个RNNs。细胞状态如下图所示

    LSTM网络能通过一种被称为门的结构对细胞状态进行删除或者添加信息。

    门能够有选择性的决定让哪些信息通过。其实门的结构很简单,就是一个sigmoid层和一个点乘操作的组合。如下图所示

    因为sigmoid层的输出是0-1的值,这代表有多少信息能够流过sigmoid层。0表示都不能通过,1表示都能通过。

    一个LSTM里面包含三个门来控制细胞状态。

    前面提到LSTM由三个门来控制细胞状态,这三个门分别称为忘记门、输入门和输出门。下面一个一个的来讲述。

    LSTM的第一步就是决定细胞状态需要丢弃哪些信息。这部分操作是通过一个称为忘记门的sigmoid单元来处理的。它通过查看 和 信息来输出一个0-1之间的向量,该向量里面的0-1值表示细胞状态 中的哪些信息保留或丢弃多少。0表示不保留,1表示都保留。忘记门如下图所示。

    下一步是决定给细胞状态添加哪些新的信息。这一步又分为两个步骤,首先,利用 和 通过一个称为输入门的操作来决定更新哪些信息。然后利用 和 通过一个tanh层得到新的候选细胞信息 ,这些信息可能会被更新到细胞信息中。这两步描述如下图所示。

    下面将更新旧的细胞信息 ,变为新的细胞信息 。更新的规则就是通过忘记门选择忘记旧细胞信息的一部分,通过输入门选择添加候选细胞信息 的一部分得到新的细胞信息 。更新操作如下图所示

    更新完细胞状态后需要根据输入的 和 来判断输出细胞的哪些状态特征,这里需要将输入经过一个称为输出门的sigmoid层得到判断条件,然后将细胞状态经过tanh层得到一个-1~1之间值的向量,该向量与输出门得到的判断条件相乘就得到了最终该RNN单元的输出。该步骤如下图所示

    还是拿语言模型来举例说明,在预测动词形式的时候,我们需要通过输入的主语是单数还是复数来推断输出门输出的预测动词是单数形式还是复数形式。

    之前描述的LSTM结构是最为普通的。在实际的文章中LSTM的结构存在各种变式,虽然变化都不会太大,但是也值得一提。
    其中一个很受欢迎的变式由 Gers & Schmidhuber (2000) 提出,它在LSTM的结构中加入了“peephole connections.”结构,peephole connections结构的作用是允许各个门结构能够看到细胞信息,具体如下图所示。

    上图描绘的是所有门都能看到细胞信息,还有一些变式是在其中的某些门引入细胞信息。

    还有一种变式是在忘记门与输入门之间引入一个耦合。不同于之前的LSTM结构,忘记门和输入门是独立的,这个变式是在忘记门删除历史信息的位置加入新的信息,在加入新信息的位置删除旧信息。该结构如下图所示。

    一种比其他形式变化更为显著的LSTM变式是由 Cho, et al. (2014) 提出的门循环单元(GRU)。它将忘记门和输入门合并成一个新的门,称为更新门。GRU还有一个门称为重置门。如下图所示

    其中重置门为上图中前面那个门,决定了如何将新的输入信息与前面的记忆相结合。更新门为上图中后面那个门,定义了前面记忆保存到当前时间步的量。 由于该变式的简单有效,后来被广泛应用。

    这里介绍的只是一些较为有名的LSTM变式,关于LSTM的变式其实还有很多种,像 Yao, et al. (2015) 提出的Depth Gated RNNs。还有其他用于解决长依赖问题的方法,如由 Koutnik, et al. (2014) 提出的 Clockwork RNNs。

    至于哪种变式效果最好?各种差异对LSTM的影响有多少?这些问题 Greff, et al. (2015) 做了一些对比,结论是他们基本是一样的。 Jozefowicz, et al. (2015) 测试了一万多种RNN结构,发现在某些指定任务上有些变式还是由于标准LSTMs的。

    之前也提到过RNNs取得了不错的成绩,这些成绩很多是基于LSTMs来做的,说明LSTMs适用于大部分的序列场景应用。
    一般文章写法会堆一堆公式吓唬人,希望本文一步一步的拆分能有助于大家的理解。
    LSTMs对于RNNs的使用是一大进步。那么现在还有个问题,是否还有更大的进步?对于很多研究者来说,但是是肯定的,那就是attention的问世。attention的思想是让RNN在每一步挑选信息的时候都能从更大的信息集里面挑选出有用信息。例如,利用RNN模型为一帧图片生成字母,它将会选择图片有用的部分来得到有用的输入,从而生成有效的输出。事实上, Xu, et al. (2015) 已经这么做了,如果你想更深入的了解attention,这会是一个不错的开始。attention方向还有一些振奋人心的研究,但还有很多东西等待探索......

    在RNN领域attention并不是唯一一个可以研究的点。比如 Kalchbrenner, et al. (2015) 提出的Grid LSTMs, Gregor, et al. (2015) , Chung, et al. (2015) , 和 Bayer & Osendorfer (2015) 将RNNs用于生成模型的研究都非常有意思。
    在过去几年RNNs方面的研究非常的多,相信以后的研究成果也会更为丰富。

    同原文

    欢迎加入OCR交流群:785515057(此群已满)
    欢迎加入OCR交流群2:826714963

    原文链接

    关于office2013永久激活工具的问题,通过《理解 LSTM 网络》、《【译】理解LSTM(通俗易懂版)》等文章的解答希望已经帮助到您了!如您想了解更多关于office2013永久激活工具的相关信息,请到本站进行查找!

    爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。

    office2013永久激活工具
    电脑店给客户装正版系统收费299元,店家:真爽,钱来得真快 GRE单词 stonewall