|
|
内容来源:本文为人民邮电出版社书籍《深度学习》读书笔记,笔记侠经出版社授权发布。
- }! B e8 j+ ]0 }' Z作者简介: Ian Goodfellow,谷歌公司的研究科学家;Yoshua Bengio,蒙特利尔大学计算机科学与运筹学系的教授;Geoffrey Hinton,多伦多大学荣誉退休教授,Google杰出研究科学家。
' d0 c1 A7 J5 }! D读书笔记•人工智能
1 P1 X; E, U9 A" ~2 H; [6 N3 Y本文优质度:★★★★★+口感:拿铁% _* F7 P/ m3 g8 V8 M* [7 s" L* s
阅读前,笔记君邀你思考:* p* e% y2 G. `( g" _- [
北京时间3月27日晚,ACM(计算机协会)宣布把2018年度图灵奖颁给了深度学习“三巨头”——Yoshua Bengio、Geoffrey Hinton 和 Yann LeCun,以表彰他们在深度学习神经网络上的工作。
! V' [3 r- C- M3 H: y; t图灵奖被认为是计算机领域的“诺贝尔奖”,一起来看看图灵奖得主如何理解所谓的“深度学习”。9 D% R- W" J: q) ^( T8 H6 {! e
以下,尽请欣赏~( O' U0 V N W) T4 r1 [/ f$ @
1956年的夏天,一场在美国达特茅斯大学召开的学术会议,多年以后被认定为全球人工智能研究的起点。" l: B4 P, ^' R3 @! P# |
2016年的春天,一场AlphaGo与世界顶级围棋高手李世石的人机世纪对战,把全球推上了人工智能浪潮的新高。
) F6 e R, c1 g- Q2016年被称为“人工智能元年”,这一年爆发了全球性的人工智能潮流。1 S& c o. x" |- k: N
以谷歌、Facebook、微软为首的全球三大AI巨头都在逐渐将公司的发展重心转移到人工智能方面来。5 q: u1 A2 F8 e) g$ ?8 J/ y

7 C+ w9 F5 Q0 e2019年1月25日,谷歌旗下的DeepMind开发的全新AI程序AlphaStar,在《星际争霸2》人机大战比赛中,以10:1的战绩,全面击溃了人类职业高手。
8 H4 v8 f( M$ T& g+ e5 y3 x在围棋世界里,动作空间只有361种,而《星际争霸2》大约是10的26次方种。这场比赛可以说是人工智能在竞技游戏领域的一次里程碑式的胜利。
, I; a( M6 f& L4 E无论是AlphaGo还是AlphaStar,它们的主要工作原理都是“深度学习”。“深度学习”是机器学习的一个领域,其形式是模拟人类大脑的神经网络进行计算和学习。1 d1 S. ^/ I1 c5 ^& x
一、神经网络与深度学习
0 f3 E( L) l" h. P0 e, \" _为什么要了解深度学习?$ Q2 y$ c5 @5 ]$ ~2 l j
首先,“深度学习”现在太热门了,图形识别、语音识别、汽车导航全都能用上,非常值钱。9 n! k O6 [6 k( y: V% w8 p, d
& K' P- e# Z( R1 N4 O
▲ 长按图片保存可分享至朋友圈
* J, O5 Y% w) z6 @ M, n
. T" c8 C* j4 L) s& ]. O) D: I7 f# a- F- D更重要的是,“深度学习”算法包含精妙的思想,能够代表这个时代的精神。
9 K0 ~: ~/ B" e) C' `0 O: w& y这个思想并不难,但是一旦领会了,你就能窥探一点脑神经科学和现代工程学。; J2 Z7 N7 k- c
我将重点使用两份参考资料:
. a- L0 v1 @4 b( G' k. T: }+ g" e: T! l% l' o+ Y/ L# J4 u' b
一个是Arstechnica网站近期发布的一篇文章《计算机图形识别能力如何好到令人震惊》,作者是蒂莫西·李(Timothy Lee)。 c; [6 D. A5 v+ `* q u
一个是一本新书《深度学习:智能时代的核心驱动力量》,作者是特伦斯·谢诺夫斯基(Terrence Sejnowski),中信出版社刚刚出了中文版。; _* h4 n; @. F8 c! O( [$ l
不知道你注意到没有,你的手机相册,知道你每一张照片里都有什么东西。* M/ j Y7 @* f0 P. ~
不管你用的是 iPhone还是安卓,相册都有一个搜索功能,你输入“beach”,它能列举所有包含海滩的照片;输入“car”,它能列举画面中有汽车的照片,而且它还能识别照片中的每一个人。
6 ~+ {9 i2 c- y0 A每拍摄一张照片,手机都自动识别其中的典型物体。这是一个细思极恐的技术。怎么才能教会计算机识别物体呢?( c) J; C! s& Q# `
1.没有规则的学习
! T0 m$ o) w4 J" H- r* i不到十年之前,人们总认为模式识别方面人脑比计算机厉害,甚至谷歌投入巨大精力研究都做不到从照片里识别出一只猫。
0 Z6 t# {$ g+ s然而,从2012年开始,“深度学习”让计算机识别图形的能力突然变得无比强大,甚至已经超过了人类。7 k7 _# z6 {6 a: ?' U
首先来看人是怎么识别猫的。9 V7 h! d& }3 ^3 v6 X' y) X
观察一下这张图,你怎么判断这张照片里有没有猫呢?、、
' S* W# n; M: Z- k# B, R7 k + B# E( K) F% @
你可能会说,这很简单,所有人都知道猫长什么样——好,那请问猫长什么样?! H0 C( b {( S* [5 y( o
你也许可以用科学语言描写“三角形”是什么样的——这是一种图形,它有三条直线的边,有三个顶点。) W4 M! o- ?- g L2 u
可是你能用比较科学的语言描写猫吗?它有耳朵、有尾巴,但这么形容远远不够,最起码你得能把猫和狗区分开来才行。; }; k. W; H- R3 Z
再看下面这张图片,你怎么判断 ta 是男还是女呢?/ r$ L& _: O: s5 E
1 s* Y; N8 g$ T/ N
图片来自 design.tutsplus.com8 N$ `4 `' E. o
! P8 |! w: @% X1 V1 H9 n
你可能会说女性长得更秀气一些——那什么叫“秀气”?是说眉毛比较细吗?是轮廓比较小吗?+ M- S9 u- v7 D- \$ N3 y
这是一个非常奇怪的感觉。你明明知道猫长什么样,你明明一眼就能区分男性和女性,可是说不清是怎么看出来的。$ j( M V/ |3 s# r
古老的计算机图形识别方法,就是非要规定一些明确的识别规则,让计算机根据规则判断,结果发现非常不可行。
1 Y/ [/ ?. m+ B6 u人脑并不是通过什么规则做的判断。那到底是怎么判断的呢?
5 m" n0 B* K9 d* a/ t% s, Z( i2.神经网络
k. W0 x( q4 b8 ^8 ] H神经网络计算并不是一项新技术,几十年前就有了,但是一开始并不被看好。
% ^' F; h& g; l, X. @《深度学习》的作者谢诺夫斯基,上世纪80年代就在研究神经网络计算,那时候他是一个少数派。; b; f. j2 U% ?7 q# j- ^1 ?
. s5 N" z9 {" p, A Z* q+ {
1989年,谢诺夫斯基到麻省理工学院计算机实验室访问。气氛不算融洽,那里的人都质疑他的方法。5 _. _* J4 x! y- ?
午餐之前,谢诺夫斯基有五分钟的时间,给所有人介绍一下他讲座的主题。谢诺夫斯基临场发挥,以食物上的一只苍蝇为题,说了几句话。
8 m# O2 u o9 ^8 H; v谢诺夫斯基说,你看这只苍蝇的大脑只有10万个神经元,能耗那么低,但是它能看、能飞、能寻找食物,还能繁殖。MIT有台价值一亿美元的超级计算机,消耗极大的能量,有庞大的体积,可是它的功能为什么还不如一只苍蝇?
. Y! T/ }* U2 ]2 @: h在场的教授都未能回答好这个问题,倒是一个研究生给出了正确答案。
$ D3 F% i/ J/ {; b7 T2 V' t/ [他说:这是因为苍蝇的大脑是高度专业化的,进化使得苍蝇的大脑只具备这些特定的功能,而我们的计算机是通用的,你可以对它进行各种编程,它理论上可以干任何事情。+ W0 |, P8 q+ u/ d
这个关键在于,大脑的识别能力,不是靠临时弄一些规则临时编程。大脑的每一个功能都是专门的神经网络长出来的。
! P) B$ g3 A2 U F% f' f
, z1 F8 l7 l B3 W: P5 h! O' [那计算机能不能效法大脑呢?
n& |8 C( a7 i/ u/ Y' o3 E谢诺夫斯基说,大脑已经给计算机科学家提供了四个暗示。
7 E: {: n+ ?) z/ Q第一个暗示:大脑是一个强大的模式识别器。
- k0 h8 J, k7 C+ z人脑非常善于在一个混乱的场景之中识别出你想要的那个东西。比如你能从满大街的人中,一眼就认出你熟悉的人。
* V/ u$ `0 r$ j& [7 d o! W4 d3 {第二个暗示:大脑的识别功能可以通过训练提高。
! X- D! Y$ J/ t$ N第三个暗示:大脑不管是练习还是使用识别能力,都不是按照各种逻辑和规则进行的。3 |" ^, p8 H7 K# c
我们识别一个人脸,并不是跟一些抽象的规则进行比对。我们不是通过测量这个人两眼之间的距离来识别这个人。我们一眼看过去,就知道他是谁了。9 H' M! \- `8 |% D8 F
第四个暗示:大脑是由神经元组成的。我们大脑里有数百亿个神经元,大脑计算不是基于明确规则的计算,而是基于神经元的计算。: j2 B3 p6 | }1 v' [( c/ B) m
这就是神经网络计算要做的事情。
+ w9 [; h; T* i% A3.什么是“深度学习”! m7 z* q% E& Y9 r* L+ ~
下面这张图代表一个最简单的计算机神经网络。 . j& r R. X/ N1 }$ F% H

8 u1 M* _ { I( g图片来自 hackernoon.com
9 a5 F5 m: p/ ]+ w& U
4 G4 q2 e+ D6 X9 ~6 \+ j. G! `它从左到右分为三层。. h# w; F- v: F
第一层代表输入的数据,第二和第三层的每一个圆点代表一个神经元。
; Q4 D A/ v! b# |( Z! _第二层叫“隐藏层”。" Q. L/ H; [8 M
第三层是“输出层”。
. y! q) |1 x% i2 |+ |+ S数据输入进来,经过隐藏层各个神经元的一番处理,再把信号传递给输出层,输出层神经元再处理一番,最后作出判断。0 ~. B% [* G+ Y, k
从下面这张图,你可以看到它的运行过程。, e0 t' s! i& R* K, a5 W6 H
' v4 }* x& j1 n5 ~0 k- d6 A
图片来自 Analytics India Magazine9 v$ S' d( {; h8 W0 Q0 R
那什么叫“深度学习”呢?最简单的理解,就是中间有不止一层隐藏层神经元的神经网络计算。/ O. H8 }& g0 [% z9 `; U! k7 ~# \
“深度”的字面意思就是层次比较“深”。
" `% G) c9 @8 h3 \ k3 K; m接着看下面这张图,你可以看到,左边是简单神经网络,右边是深度学习神经网络。3 b& r) [6 ?9 m/ O5 T2 p
) D6 Q' m& X$ u4 ?" f) ~* f
图片来自 Towards Data Science 网站) B5 [8 B; X' X8 e S S2 i6 ~
计算机最底层的单元是晶体管,而神经网络最底层的单元就是神经元。神经元是什么东西呢?我们看一个最简单的例子。1 J& E, t4 n) J% c$ O
下面这张图表现了一个根据交通信号灯判断要不要前进的神经元。它由三部分组成:输入、内部参数和输出。
$ u @* ]5 v- x* T " h! K& k4 R E" E( U
这个神经元的输入就是红灯、黄灯和绿灯这三个灯哪个亮了。我们用1表示亮,0表示不亮,那么按照顺序,“1,0,0” 这一组输入数字,就代表红灯亮,黄灯和绿灯不亮。
9 _8 K: u& d% P) B& i6 d7 ]' ~- ^$ l# Q* D: ~- f; B
神经元的内部参数包括“权重(weight)”,它对每个输入值都给一个权重。
' g+ K4 _' h$ f1 p比如图中给红灯的权重是 -1,黄灯的权重是 0,给绿灯的权重是 1。另外,它还有一个参数叫“偏移(bias)”,图中偏移值是-0.5。
/ L' v9 E3 ~# e" R# j神经元做的计算,就是把输入的三个数字分别乘以各自的权重,相加,然后再加上偏移值。比如现在是红灯,那么输入的三个数值就是1、0、0,权重是 -1、0、1。3 ]9 u" j& Z. o
所以计算结果就是:1×(-1) + 0×0 + 0×1 - 0.5 = -1.5。
7 u( P' z9 g2 ^$ x, C, d% A, W输出是做判断,判断标准是如果计算结果大于 0 就输出“前进”命令,小于 0 就输出“停止”命令。现在计算结果小于0,所以神经元就输出“停止”。
' S& D/ ]/ h5 X这就是神经元的基本原理。
; b& ?$ f. s- d d6 A8 v真实应用中的神经元会在计算过程中加入非线性函数的处理,并且确保输出值都在 0 和 1 之间。 ( o9 c8 Q0 X" v- e
1 G( R( T3 Z0 L) o" X. S本质上,神经元做的事情就是按照自己的权重参数把输入值相加,再加入偏移值,形成一个输出值。如果输出值大于某个阈值,我们就说这个神经元被“激发”了。
9 Y; T# p, i* S& R神经元的内部参数,包括权重和偏移值,都是可调的。
. J g- U1 O L: L: e( n用数据训练神经网络的过程,就是调整更新各个神经元的内部参数的过程。神经网络的结构在训练中不变,是其中神经元的参数决定了神经网络的功能。- J: X8 _! M2 b- i7 c) ~
接下来我们要用一个实战例子说明神经网络是怎样进行图形识别的。7 N1 e ~& W& D( O1 B: `
二、计算机如何识别手写数字
3 g/ q: S, f7 n2 k" y& W用神经网络识别手写的阿拉伯数字,是一个非常成熟的项目,网上有现成的数据库和很多教程。
+ q' O7 p& S4 L: l7 G有个叫迈克尔·尼尔森(Michael Nielsen)的人只用了74行Python程序代码就做成了这件事。
3 @* B7 H' u! K6 W0 b- E5 f给你几个手写阿拉伯数字,可能是信封上的邮政编码也可能是支票上的钱数,你怎么教会计算机识别这些数字呢?
" \: O" n. s. T7 Y. R0 x: D
$ M* ~4 U4 N. X+ v! x8 C1. 简化( m3 U! E3 ]1 } r/ l
想要让计算机处理,首先要把问题“数学化”。$ ` e( O% v! x4 ]
写在纸上的字千变万化,我们首先把它简化成一个数学问题。我们用几个正方形把各个数字分开,就像下面这张图一样。" A% f. q6 p, p1 l9 X2 _2 I
S9 }1 Q5 R1 u+ c* y& g
现在问题变成给你一个包含一个手写数字的正方形区域,你能不能识别是什么数字?* G9 h& j) A6 u. p
再进一步,我们忽略字的颜色,降低正方形的分辨率,就考虑一个28×28=784个像素的图像。
$ |8 Q- x' n' m6 h B+ m0 B: p8 I5 e" |我们规定每一个像素值都是0到1之间的一个小数,代表灰度的深浅,0表示纯白色,1表示纯黑。这样一来,手写的数字“1”就变成了下面这个样子 —— ) ?- ~" F" m+ g8 R0 U- }% ]: F
8 @5 M3 e- ^2 F* S图片来自packtpub.com, The MNISTdataset。实际分辨率是28×28) J! w' g6 y* |" a2 C( F
这就完全是一个数学问题了。8 R" A3 w- J. ?- C: }' H
现在无非就是给你784个0-1之间的数,你能不能对这组数做一番操作,判断它们对应的是哪个阿拉伯数字。输入784个数,输出一个数。
$ k1 a9 t! c6 e: W' s4 l& u这件事从常理来说并不是一点头绪都没有。3 I; R- P0 o5 C6 Y6 G
比如任何人写数字“7”,左下角的区域应该是空白的,这就意味着784个像素点中对应正方形左下角区域那些点的数值应该是0。, Z/ r5 W+ W+ @8 q4 @9 n# {2 e
再比如说,写“0”的时候的中间是空的,那么对应正方形中间的那些像素点的数值应该是0。
0 x, {# _7 Y9 N) p然而,这种人为找规律的思路非常不可行。
) p4 U6 A7 J; m& X首先你很难想到所有的规则,更重要的是很多规则都是模糊的——比如,7的左下角空白,那这个空白区域应该有多大呢?不同人的写法肯定不一样。' E. q+ E! _# t8 q
肯定有规律,可我们说不清都是什么规律,这种问题特别适合神经网络学习。- P. ], j1 n( e; o+ u+ ^
2. 设定
' t; E& N7 T& I7 v- z我们要用的方法叫做“误差反向传播网络”,它最早起源于1986年发表在《自然》杂志上的一篇论文,这篇论文的被引用次数已经超过了4万次,是深度学习的里程碑。
; ^* z3 v# g8 }# S根据尼尔森的教程,我们建一个三层的神经网络,就是下面这张图。3 Q! k6 N D, l1 p6 ?' f
! S8 A5 u9 v) j; d
第一层是输入数据,图中只画了8个点,但其实上有784个数据点。
( T7 f+ W7 A3 M+ i6 m; @第二层是隐藏层,由15个神经元组成。4 i2 J% |9 w0 n$ A+ l+ y
第三层是输出层,有10个神经元,对应0-9这10个数字。
' s; H& G' Q5 q( A; j7 T5 m- A
: x1 W7 ]# d2 h4 ^% n每个神经元都由输入、权重和偏移值参数、输出三个部分组成。- x2 M" Q4 {: c2 m
隐藏层15个神经元中的每一个都要接收全部784个像素的数据输入,总共有784×15=11760个权重和15个偏移值。
s) i1 }3 x: E第三层10个神经元的每一个都要跟第二层的所有15个神经元连接,总共有150个权重和10个偏移值。这样下来,整个神经网络一共有11935个可调参数。6 S; k& v0 `+ q- |' l2 m
理想状态下,784个输入值在经过隐藏层和输出层这两层神经元的处理后,输出层的哪个神经元的输出结果最接近于1,神经网络就判断这是哪一个手写数字。7 ?+ z7 |* w0 e, \7 Z
3. 训练
, c! R. g1 Y) W$ @- n4 m网上有个公开的现成数据库叫“MNIST”,其中包括6万个手写的数字图像,都标记了它们代表的是哪些数字。
0 S. x0 R9 h F2 U 5 t# q9 M v, ]# `
我们要做的是用这些图像训练神经网络,去调整好那11935个参数。我们可以用其中3万个图像训练,用剩下3万个图像检验训练效果。
4 u, v3 k9 }3 ^/ t' f" B3 r
7 q) S# m/ t2 p/ f. m. f这个训练调整参数的方法,就是“误差反向传播”。比如我们输入一个数字“7”的图像。: h) r3 ]+ N. K( k' ?7 B" h

, s' T2 h) u3 h8 b神经网络实际收到的是784个像素值。经过两层神经元的传播计算,理想情况下,输出层的7号神经元的输出值应该最接近于1,其他的都很接近于0。
6 U/ X( u/ c, s; t) }& t, k. G6 ?7 i& l& R
一开始结果并不是这么准确,我们要用一套特定的规则去调整各个神经元的参数。
" ]3 [$ `0 O+ G6 ?参数调整有个方向,叫做“误差梯度”。
: D) ~/ G* c# n比如对输出层的7号神经元来说,调整方向就是要让它的输出值变大;对其他9个神经元,调整方向则是让输出值变小。5 o$ T( [. l4 s& A# l
这个调整策略是看哪个输入信息对结果的影响大,对它的权重的调整就要大一点。
1 [5 q% ?% l. w7 h) { p; n7 p几万个训练图像可能会被反复使用多次,神经网络参数不断修改,最终将会达到稳定。
$ c& M s" D8 P. f* O& B, @! r慢慢地,新图像喂进来,这11935个参数的变化越来越小,最终几乎不动了。那就是说,这个识别手写数字的神经网络,已经练成了。
; {+ H' {" g! `' \事实证明这个简单网络的识别准确率能达到95%!
8 |; Q4 s. @ d$ \* X) E1 v
z- [6 H8 E3 ?" K& j, r6 f在理论上,这个方法可以用来学习识别一切图像。+ K' J# }$ m& |* I% n
你只要把一张张的图片喂给神经网络,告诉它图上有什么,它终将自己发现各个东西的像素规律……但是在实践上,这个方法非常不可行。
" g( [! X; k7 V/ k! W三、卷积网络如何实现图像识别
8 `$ F" U; }( ?' }计算机不怕“笨办法”,但是哪怕你能让它稍微变聪明一点,你的收获都是巨大的。
* \: @" X7 J; m/ F, a( f5 q1.“笨办法”和人的办法5 ~5 w( ^3 W8 Q
下面这张图中有一只猫、一只狗、绿色的草地和蓝天白云。它的分辨率是350×263,总共92050个像素点。2 Y) z% G' w# a' ]& x7 m' y
考虑到这是一张彩色照片,每个像素点必须用三个数来代表颜色,这张图要用27万个数来描写。3 {, X% X8 v9 h" y

' f5 i) B1 t" J; o/ i1 u |要想用误差反向传播神经网络识别这样的图,它第二层每一个神经元都要有27万个权重参数。1 P' S1 I1 q* Z% h* E$ U8 y
要想识别包括猫、狗、草地、蓝天白云这种水平的常见物体,它的输出层必须有上千个神经元才行。
5 X' e4 E9 I6 C8 u* _这样训练一次的计算量将是巨大的 —— 但这还不是最大的难点。# X; a* q* d" P2 Q! ^
最大的难点是神经网络中的参数越多,它需要的训练素材就越多。8 g# w" f, [! Z" L0 A
并不是任何照片都能用作训练素材,你必须事先靠人工标记照片上都有什么东西作为标准答案,才能给神经网络提供有效反馈。* ?& k4 y' E/ b7 ?- ^/ O
这么多训练素材上哪找呢?
4 p8 J1 E7 V+ W' U, @+ f我听罗胖跨年演讲学到一个词叫“回到母体”,意思大约是从新技术后退一步,返回基本常识,也许能发现新的创新点。
3 r& R7 G& n, @: D4 p现在我们回到人脑,想想为什么简单神经网络是个笨办法。
" L' u3 ?) n8 m5 x人脑并不是每次都把一张图中所有的像素都放在一起考虑。我们有一个“看什么”,和一个“往哪看”的思路。
* i6 R- Y* @& O' X* C3 M! l
, G' F0 s8 @ [' x4 r! v8 @& ]+ M让你找猫,你会先大概想象一下猫是什么样子,然后从一张大图上一块一块地找,你没必要同时考虑图片的左上角和右下角。这是“往哪看”。
7 y7 b4 u6 D, P2 z c还有,当你想象猫的时候,虽然不能完全说清,但你毕竟还是按照一定的规律去找。比如猫身上有毛,它有两个眼睛和一条尾巴等等。
7 n9 G4 G4 T* C: l3 O' q f你看的不是单个的像素点,你看的是一片一片的像素群的模式变化。这是“看什么”。! l: _0 u9 T. t$ j7 s" u
我理解“卷积网络”,就是这两个思路的产物。
8 h9 U% S1 U6 u4 y, t2.竞赛: b2 H' f: n& _: I5 s& E
斯坦福大学的华裔计算机科学家李飞飞,组织了一个叫做ImageNet的机器学习图形识别比赛,从2010年开始每年举行一次。/ C% {# I) r% C6 W; u# N
这个比赛每年都给参赛者提供一百万张图片作为训练素材!其中每一张图都由人工标记了图中的每个物体。
/ `6 G1 l# H9 S4 q . I& v2 M- P; f. t4 M* f7 A

/ S' u5 w( V" i图片素材中共有大约一千个物体分类。这就意味着,对每一种物体,人工智能都有大约一千次训练机会。0 T, p% ?& {0 V
比赛规则是参赛者用这一百万张图片训练自己的程序,然后让程序识别一些新的图片。/ a* j4 o1 l2 `: t% Q
每张新图片有一个事先设定的标准答案,而参赛者的程序可以猜五个答案,只要其中有一个判断跟标准答案相符合,就算识别结果准确。
5 Z0 C# J0 Y) @0 E & {) A+ R. b! I- J3 W
上图是历届比赛冠军的成绩。2010和2011年,最好成绩的判断错误率都在26%以上,但是2012年,错误率下降到了16%,从此之后更是直线下降。2017年的错误率是2.3%,这个水平已经超过人类。8 _6 v. I; l* g0 K* @; U8 k* \
那2012年到底发生了什么呢?发生了“卷积网络”。
5 c/ Y# O3 N" G3.卷积网络
5 H- I# u! t* k* ?& c2012年的冠军是多伦多大学的一个研究组,他们使用的方法就是卷积网络。1 L1 X& ]6 H- ^7 {) C+ E% g* L
正是因为这个方法太成功了,“深度学习”才流行起来,现在搞图形识别几乎全都是用这个方法。/ N1 ~7 k; j/ L6 a2 x7 ?
获奖团队描述卷积网络的论文的第一作者叫艾利克斯·克里泽夫斯基(Alex Krizhevsky),当时他只是一个研究生,这篇论文现在被人称为“AlexNet” 。
; z7 O2 \, j F& U! y) L$ q简单来说,AlexNet的方法是在最基本的像素到最终识别的物体之间加入了几个逻辑层,也就是“卷积层”。
% V% m% z, C# Y* f4 m“卷积”是一种数学操作,可以理解成“过滤”,或者叫“滤波”,意思是从细致的信号中识别尺度更大一点的结构。' o _4 M" i# \; s
每一个卷积层识别一种特定规模的图形模式,然后后面一层只要在前面一层的基础上进行识别,这就解决了“看什么”和“往哪看”的问题。
; I4 ~. U% K) C" e( f( o: t4 S比如说我们要搞人脸识别,卷积网络方法把问题分解为三个卷积层。
- _" B* A6 x2 m
; m; A0 p0 |7 L图片来自cdn.edureka.co2 S8 F: }; j$ \2 V t3 l

/ u; V g1 G# _0 i7 y; F1 f第一层,是先从像素点中识别一些小尺度的线条结构。
9 S+ s, t: B0 T8 `4 u2 N第二层,是根据第一层识别出来的小尺度结构识别像眼睛、耳朵、嘴之类的局部器官。
/ P, H' H$ O% t1 h. @: C- F- C/ L第三层,才是根据这些局部器官识别人脸。5 ^/ h+ x: `- F- ~
其中每一层的神经网络从前面一层获得输入,经过深度学习之后再输出到后面一层。
4 p2 k* n u. Q/ d& wAlexNet的论文提到,他的识别系统足足分了五个卷积层,每一层都由很多个“特征探测器”组成。
% b7 ?0 n& D5 q) K3 r4 O第一层有96个特征探测器,各自负责探测整个图形中哪些地方有下面这96种特征中的一种。2 x2 K) W& |" [: W# }: E& E
* j$ D! V9 L V ?
比如说,第一层的第一个特征探测器,专门负责判断图中哪里有像下面这样,从左下到右上的线条结构。- [% f4 S- \) r6 j0 ~' n9 o

t$ T% F7 l- ?这个特征探测器本身也是一个神经网络,有自己的神经元——而这里的妙处在于,它的每一个神经元只负责原始图像中一个11×11小区块。: G, g3 v& m ^" S- B& g
考虑到三种颜色,输入值只有 11×11×3= 363个。而且因为这个探测器只负责探测一种结构,每个神经元的参数都是一样的!这就大大降低了运算量。( H8 x, j) r* G0 n! h2 |" w
第一层的其他探测器则负责判断像垂直条纹、斑点、颜色从亮到暗等各种小结构,一共是96种。3 W/ o# X; J- Z1 h& E2 v( d' @
也就是说,卷积网络的第一层先把整个图像分解成11×11的区块,看看每个区块里都是什么结构。
. c' {) I, [, U$ Q% ?9 x8 J' a为了避免结构被区块拆散,相邻的区块之间还要有相当大的重叠。经过第一层的过滤,我们看到的就不再是一个个的像素点,而是一张小结构的逻辑图。
+ e7 }1 _3 \) _9 G% ^+ P5 b然后第二卷积层再从这些小结构上识别出更大、更复杂也更多的结构来。以此类推,一直到第五层。
0 s% X- v$ `0 N+ ]2 ~下面这张图表现了从第一层到第三层识别的模块(灰色)和对应的实例(彩色)。( Y1 k; ?. b& H0 G0 `4 I
. i; m: ]0 R3 g' E: C$ o
图片来自https://datascience.stackexchange.com/questions/17205/feature-extraction-in-convnns-layers-progression
. z' p* {9 X N6 H& H% B我们看到,第二个卷积层已经能识别圆形之类的结构,第三层已经能识别车轮和小的人脸。 L2 z9 s0 L2 o$ P" i# n2 ?
五个卷积层之外,AlexNet还设置了三个全局层,用于识别更大的物体。整个分层的结构是下面这样。! p0 _% `4 M( Q) Q- T

+ J6 ?) k5 C6 s. R图片来自 Machine Learning Blog; G E+ [# A. M4 S
# s# `# C' x, F' S! M1 n9 j
这样分层方式有很多好处:第一,卷积层中的神经元只要处理一个小区域的数据,而且参数可以重复使用,大大减少了运算量。第二,因为可以一个区域一个区域地搜索,就可以发现小尺度的物体。
2 n2 N( F; l( }- U意识到图形识别有多难,你就能体会到AlexNet的识别水平有多神奇。下面这张图中有个红色的螨虫,它出现在图像的边缘,但是被正确识别出来了。% _3 ^4 b' r. b, f( Z

) ?* u) H1 X4 IAlexNet还猜测它可能是蜘蛛、蟑螂、虱子或者海星,但是认为它是螨虫的可能性最高。这个判断水平已经超过了我,我都不知道那是个螨虫。* k0 p+ u' u: f
再比如下面这张图,标准答案是“蘑菇”,但AlexNet给的第一判断是更精确的“伞菌”,“蘑菇”是它的第二选项!
3 j! ~! c; b' y, i; w1 C! ]
$ [3 v- x$ q" F# h3 w9 Z而现在基于类似的卷积网络方法的深度学习程序,水平已经远远超过了AlexNet。4 R+ b& C4 V' a( k* C% N5 U `& g! T
. a; n. u3 S/ ^* j5 n$ I3 K4.深度学习(不)能干什么
' I+ l5 N: J- }- A8 e; j' hAlexNet那篇论文的几个作者成立了一家创业公司,这家公司在2013年被Google收购了。半年之后,Google相册就有了基于图片识别的搜索能力。4 _+ E) l n% g! e% V
紧接着,Google就可以从自家拍摄的街景图像中识别每家每户的门牌号码了。
* `1 I- K( t# u+ |" d- f, dGoogle还夺得了2014年的ImageNet竞赛冠军。
. q P ]- X# G0 l2 Z% Q所以千万别低估工程师迭代新技术的能力。他们举一反三,一旦发现这个技术好,马上就能给用到极致。% `+ W' w+ s3 S
2012年之前深度学习还是机器学习中的“非主流”,现在是绝对主流。
f i% [& j0 h7 t深度学习能做一些令人赞叹的事情。
+ B8 }' E$ ?, a, | v5 W; P- @比如说对于一个不太容易判断的物体,如果网络知道图中有草地,那么它就会自动判断这应该是一个经常放在户外的东西,而不太可能是一件家具。0 d2 y* K& D [: y6 B% w3 X
这完全是基于经验的判断,你不需要告诉它家具一般不放户外。看的图多了,它仿佛获得了一些智慧!一个生活经验少的人可做不到这一点。: A& S2 y, Q; L
但是蒂莫西·李也提醒了我们深度学习不能做什么。# f/ m) {/ W2 S6 {5 V* w
比如说把一个物体放大一点、或者旋转一个角度、或者调整一下光线,卷积网络就不知道那是同一个东西,它必须重新判断。
) W4 g" [" O, o3 _0 T3 f7 `+ [# \. A6 f1 r' p+ Y& l6 R
深度学习完全是基于经验的判断,它没有任何逻辑推理能力。
/ I+ P' Z5 e! u) i/ n, O8 B9 G5 o在我看来,这种学习方法,就如同在数学考试前夜背诵习题集。你能猜对答案是因为你背诵过类似的题,但是你并不真的理解数学。3 c( {) {" b! K- p0 [
这样的算法会有创造力吗?深度学习能发现图像中从来没有被人命名过的“怪异”物体吗?
1 O6 C6 a* u7 r! H2 @ X我们见识了光凭经验的操作能强大到什么程度,但是我们也能看出来,它距离真正的智能还非常遥远。+ \' p. O1 Q8 a
8 f6 ~/ j5 I2 b
2 H% v% i, `( V) Y! ~: `
2 N2 \+ R7 X _5 }8 R r 嘿,你在看吗?
9 R* Z9 q; V4 B9 I) }' p来源:http://www.yidianzixun.com/article/0LcQnLfw
6 r( x, J9 \+ Q免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|