【读书手记】【deeplearningbook-chinese】(一)

  在暑假期间,笔者阅读了2017年上半年在GitHub上开源的由几位大牛编撰的深度学习书籍《deeplearning》,笔者认为,在众多的深度学习资源中,该书的干货满满,故在此分享一些读书总结和个人感受。若有不妥之处,恳请批评指正。

  本文主要是分享原书的第一章。

  第一章主要是深度学习概念的引入、几种学习概念的递进、以及深度学习的历史和未来。写到这里很多人会觉得,这种吹水的东西有什么值得阅读的,我曾在当年学习人工智能课程的时候也有这样的感觉。但是等在AI坑中摸爬滚打了一年左右,我渐渐发现深度学习也是自成体系的知识架构,如果没有一个全面的认识,那我们对于深度学习也只能是不断搜索和利用别人的研究成果,而没有办法自己去看懂其中的原理。
首先给出一个最直接的定义:深度学习也只是目前人工智能的一种学习方法,并不是人工智能==深度学习(双等号暴露了程序猿的本质2333)

  1. 深度学习的由来
      我们希望计算机能够解决一些高层次的任务,即在计算机设计之初我们便希望其能具有一定的智能(AI),但是这比较困难,因为很多任务很难给出具体的形式化数学规则(比如识别图像中的人脸),但是人可以凭借经验轻易解决。早期人工智能的难点,是如何将主观的、非形式化的规则转达给计算机。在这里可以简单的理解为,对于计算机来说,对于给定的输入X,人们期望计算机能够给出正确的输出Y,但是对于映射F的构造是十分困难的。
      在经过许多尝试后,我们总结得出:AI系统要具备自己获取知识的能力,即从原始数据提取模式的能力。这种能力被称为机器学习。这似乎使得人工智能向前又走了一步,书中这里举出了一些例子,例如逻辑回归、贝叶斯分类,但是玩过这些算法的同学都明白,算法并没有直接使用原始数据,而是原始数据的特征表示。例如贝叶斯进行垃圾邮件分离,我们并没有直接对算法输入一封完整的邮件,而是需要进行词频整理。所以此时的机器学习,可以简单理解为:对于给定的输入X,若想得到预期的Y,计算机可以直接学习映射F,但前提是对X进行特征表示,即Y = F(feature(X))。
      但是这又引入了一个新的问题,我咋知道我应该对输入进行怎样的特征表示,譬如说贝叶斯判定肺癌,我若是提取抽烟的频率就比较靠谱,若是提取鞋子的码数就要翻皮水了,所以直到现在,对于特征的提取依旧是一个热门问题,在许多任务中也可以说,特征决定了结果的上限,模型只是让结果逼近上限。为了解决这个新问题,人们又引入了表示学习:利用机器学习来发掘数据本身的特征表示,而不是把特征当做输入来计算输出。这也就是说,特征的提取也不需要我们手工设计,而是通过机器学习完成,还是上面的例子,对于给定的输入X,若要得到期望的输出Y,则可以构造映射Y = F1(F2(X)),值得注意的是,可能用到了不同的机器学习算法,例如书中所说,对于数据的特征表示,常用的方法的是自编码器。
      所谓自编码器,就是将原来的输入内容换了一种表达方式,有点类似于PCA技术。总而言之借鉴书中的原话,表示学习的本质是将原始数据分离为能解释原数据的变差因素。在这里解释一下变差因素,通常这些因素是我们人力所不能观测到的,但是这些因素可以让计算机作为原数据的特征表达,正如我们对于世界的抽象理解,变差因素是计算机对于世界的抽象理解。说的更简单一点,人看见一只狗就能判定为狗,这是人对狗有着一定的特征表达,也就是说这只生物的某些特征触发了我们对它是狗的判定,虽然我们也说不清楚这些特征是什么,但是我们就能判别出来;同样的道理,变差因素就是让计算机去学习的存在于机器的特征。
      在表示学习的路上,我们又遇到了另一个问题,就是把原始数据抽象为一定的特征,这似乎不能一蹴而就。因为我们需要的特征太高级太表意了,这时就引入了新的概念,深度学习,也就是说通过较为简单的特征表达来不断的表达抽象的特征,这成功解决了表示学习的核心问题。这也就是说,对于上文中的Y = F1(F2(X)),可能一个F2是不够的,在深度学习的基础上,应该是:Y = F1((F21,F22,…,F2n)(X))。具体如下图所示:
    【读书手记】【deeplearningbook-chinese】(一)
      为了让计算机能看出不同的动物,我们无法直接一步到位用表示学习提取特征,只能通过多层表示,先勾勒出线条,其次提取到了角落,然后到部件,一步步提取到最高级的特征。
      基本上到这里深度学习的由来就大致讲清楚了,其中文章中还介绍了深度学习的深度如何定义,书中给出了两种方案,一种是基于网络所需要执行的最长指令的数目,另一个是深度概率,由于目前也没有一个公认的标准,所以这一部分笔者觉得仅作了解就好。
      行文至此,笔者觉得有必要对知识点进行总结,方便以后复习啦。
    【读书手记】【deeplearningbook-chinese】(一)

      2. 深度学习的历史与未来
      在上文我们只是写到了深度学习的提出轨迹,但是没有涉及深度学习的理论依据。在历史上的深度学习有两次大的浪潮,为深度学习打下了理论基础。
      第一次大的浪潮是控制论,当时深度学习还是从神经科学的角度出发的线性模型,也就是本文中一直在使用的函数表达Y = F(X),其实从函数角度出发,只要知道了函数中的各个权重就可以了,基于这一理论,人们开发出了随机梯度下降的训练算法,但是由于线性模型的局限(没有办法解决XOR问题),第一次浪潮退去。即使从现在的角度去看,深度学习中的神经科学研究已经被削弱,因为这真的是太复杂而我们知道的有太少,实在没有办法提供理论支撑(感叹自然的力量吧23333)
      第二次大的浪潮是联结主义,该理论认为,将大量简单的计算单元连接在一起时可以实现复杂的智能行为,这给现代的深度学习提供了几个关键的概念,例如分布式学习(简单介绍一下,也就是说并不是将一个整体的任务一气呵成,而是由每一个小单元独立的分担一个子问题,最后汇总,是不是和之前提到的多层学习比较相似)、反向传播算法的应用,直到现在,都是深度模型的主导算法。
      第三次大的浪潮便是今天了,由于硬件设备、数据收集变得越来越现代,深度学习也不再是高深的艺术(是的,这在以前是只有专业的人才玩得起的),数据降低了技术的门槛,所以诸君现在赶上了好时候呐。

      第一章的内容大致就是这么多,第一次写读书分享可能很多内容都不到位,恳请大家批评指正。