学习
实践
活动
专区
工具
TVP
写文章

试着用大白话复述“深度学习”

今天的学习笔记挑战一下高难度:试着从小白的角度,用通俗的语言复述一下对“深度学习”的理解。

我们现在经常听到很多牛词儿,什么“人工智能”、“机器学习”、“人工神经网络”、“深度学习”、“大数据”等等,而且也知道,现实中很多改变生活方式的科技应用,都是由此实现的。

这些概念到底是什么东东?一直很感兴趣,也看了一些书籍材料。总的感觉是,太tm深了,有时候,有点明白了,有时候,又完全糊涂了。我知道,以我的知识结构和储备,不可能透彻理解这些科技前沿的东西。但学习不就是由浅入深、从无知到认知的过程吗?深入不了,但可以先有个肤浅的认识。

周末把之前看过的一些东西又重新捋一捋,在这里试着复述一下,巩固一下。当然不是抄书里的东西,而尽量是自己消化过的大白话。下面开始。

用一个例子说,可能容易一点儿。比如,现在大家都在用的语音识别,对着手机说,马上出来文字,而且非常准。这肯定是人工智能的应用。问题是,怎么实现的?

先用最简单的数学方程Y=f(X)理解:

我们的声音是可以数字化的,作为输入值X。手机上出来的文字,实质也是一串数字,就是Y。X怎么就变成了Y?是经过了手机里的程序算法或者说一个函数的运算。

就比如一个最简单的函数Y=2X,如果输入X=2,就输出Y=4。语音识别也一样,你对手机说“你好”,它把声音变成数字,作为X输入了,经过函数运算,输出了Y,也就是“你好”的文字(其实也是个数字)。

所不同的是,我们从小到大学的函数都比较简单,而实现语音识别的函数,是个超级复杂的函数(数学模型)。

这个函数,不是人思考并写出来的,天才也写不出来。它是计算机通过机器学习、深度学习,自己生成的。这里就终于说到了“深度学习”。

机器怎么学习?学什么?

机器学的是这个世界已有的经验,具体来讲就是大数据。比如“你好”这个声音对应着“你好”两个字,我们是知道的,不光知道这个,关于什么声音对应什么文字,我们都知道,而且这么多年积累,我们都有相应的资料和数据(术语叫“语料”)。这些经验、数据,就是机器需要去学习的东西,学习的过程就是自我训练的过程。

我们以前解方程,一般是已知一个函数式(F),给你X,让你求Y,或者给你Y,让你求X。机器学习或深度学习面临的问题是,给你X和Y,让机器求那个函数式(F)。也就是不求结果,而是求过程(F),问你X怎么就变成Y了。当然,不是给出一组XY,而是无数组,也就是大数据,让机器从无数已知的对应的数据中,去学会中间的过程,掌握中间的规律(F)。

也许你说,既然我们已经知道什么X对应什么Y,那让机器学会中间的联系和规律有什么用?

一方面很多事情可以自动化,极大提高效率,比如语音识别、文字识别、自动翻译。这些活儿,人类也能干,但是太慢,计算机就太快了,实现高速以后就产生“质”的飞跃。

另一方面,可以根据以往预测未来。既然通过深度学习掌握了F,那根据新发生的情况,新的X,我们就可以计算出Y,就知道什么事情大概率会发生。也就是所谓的“太阳底下没有新鲜事”。

说到这里,其实还是很好理解的。X-F-Y,这个模型还是很清楚、很容易懂的。

但你仔细想,到目前为止,F是个黑箱。里面到底发生了什么?机器怎么就根据以往的大数据总结出X和Y之间的规律了?机器怎么学会的?这个没说,这也是长期让我感到困惑的问题。最近稍微明白一点儿,试着说说,估计也说不太明白。

机器可以自动学习,但怎么学习,还是要根据人给出的方法去学习。这种方法,叫作深度学习算法。人要先编写一套程序算法,驱动机器去处理大数据,慢慢调整构建那个F。也就是说,深度学习算法,是生产算法的算法,生产最终那个超级复杂函数的算法。

我们之前说输入端为X,这是超级简化的说法,现实远远更复杂。之所以说是超级复杂函数,是因为这个函数里可能有n多个自变量,和n多个参数。绝不是Y=2X这么简单。可能是Y=au+bv+cw……,这里u、v、w……都是自变量,a、b、c……都是参数。这个例子也太简单,真正的F还要复杂千万倍。

但无论F多复杂,作为函数,最基本的组成要素是一样的,3个部分:一是函数的结构和形式;二是自变量;三是参数。

这三部分里,第一个,函数的结构和形式,是人在设计深度学习算法过程中需要给出的(当然不是一整个,而是分成很多模块儿,很多短小函数的组合);第二个,自变量,实际上是已知的,就是大数据中的X;第三个,参数,这个才是需要机器深度学习自动生成的。

所以说,所谓深度学习生产算法、生产函数,主要是指的是调整并生成参数。

具体怎么干的呢?现在最流行、最常用、最好使的是人工神经网络算法。是模仿人类大脑神经元搭建的算法。下图是个简单模型:

最左面是输入层,就是大数据的X端(叫特征);最右面是输出层,大数据的Y端(叫标记)。中间是神经网络的隐藏层,层数越多,学习的深度越深。所有的小圆圈儿是神经网络的运算单元(unit),有点像大脑神经元。每个单元之间有连线,每个连线赋予一个权重,也就是参数(可见参数极其多)。每层之间有一套数学运算公式。

这玩意儿怎么运算呢?还是举个例子说,假设我们手里有100个车辆的数据,来研究车辆情况和交通事故的联系。

输入层有几个unit,就意味着有几个需要输入的自变量。这个例子里是5个,分别是车辆的颜色、车龄、违法数、排量、车型。输出层代表是否发生过交通事故,两种结果,是和否。当然,所有的信息都转化为数学运算的数字。

参数怎么办?先随机生成,随便给一套参数。

下面,开始运算学习。输入第1条数据,根据第1层的数值和1、2层之间的数学公式以及连线权重,可以算出第2层每个unit的数值。以此类推直到算出输出层的数值。算出的数值与真实的数值比较,一定是有误差的。用这个误差值,按照一定的数学公式,往回逐级推算,调整一遍各条连线的权重值。

以第1条数据运算调整的权重值(参数)为起点,输入第2条数据,再进行一遍上述运算,结束后也就又调整了一遍参数。如此反复,随着运算增加,输出层的数值与真实数值之间的误差值将逐渐变小,数据越多,误差越小。直到大数据用完,把最后参数固定,这次深度学习就算暂时完成,生成了一个有固定参数的数学模型或者说是复杂函数。

有了这个模型之后,再随便拿来一辆车的基本数据(不包括Y端),我们就可以用来预测判断,这辆车发生交通事故的可能性。(举例而已,现实不可能这么预测)

这里只是举个例子,大概说明神经网络算法的运算方法和过程,具体情况远远更复杂。同时,神经网络算法中最核心的,也就是上述一笔带过的那些数学公式,其实才是最难最复杂的东西。我理解不了,当然没法复述了。

最后谈一个问题,就是“人工智能”、“机器学习”、“人工神经网络”、“深度学习”这些词儿之间的关系。

人工智能研究,早就有,几起几落,这些年真正火热起来,进入大范围实际应用。机器学习是实现人工智能的途径,也早就提出了,包括各种计算机算法,用以解决不同的问题。神经网络算法是众多机器学习算法中的一种,在计算机运算能力和大数据爆发之前,不好使,不受待见,被长期冷落,也是近些年重获生机,变成神器。深度学习,其实也是机器学习,就是比以往更有深度的机器学习,为什么有深度的,就是因为应用了神经网络算法。

我目前这么理解这些概念的关系,当然不一定对,随着后续学习再调整认知。

以上是自己对深度学习的一点极其极其肤浅的理解,肯定很多错误的地方。其实都称不上自己的思考和理解,主要是对学习内容的复述吧。我所理解的东西,连皮毛都谈不上。真正的深度学习,是一个巨大的坑,是一片无垠的海洋。我顶多算离着老远,听到一点海浪声,然后慢慢往那个方向爬。能不能看见大海都不一定。可是只要方向对,爬到哪算哪吧。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180423G10HTK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券