|
|
内容来源:本文为人民邮电出版社书籍《深度学习》读书笔记,笔记侠经出版社授权发布。
" o1 x3 H- ^! O+ w9 A$ ^作者简介: Ian Goodfellow,谷歌公司的研究科学家;Yoshua Bengio,蒙特利尔大学计算机科学与运筹学系的教授;Geoffrey Hinton,多伦多大学荣誉退休教授,Google杰出研究科学家。+ W& u2 J8 x$ D5 \6 B+ b9 Z
读书笔记•人工智能" X7 b0 o; y! `* N- y- O
本文优质度:★★★★★+口感:拿铁 D0 p" I* w& B; q" {6 r& e+ Y" v$ o
阅读前,笔记君邀你思考:
k/ ]6 P8 n* T0 n北京时间3月27日晚,ACM(计算机协会)宣布把2018年度图灵奖颁给了深度学习“三巨头”——Yoshua Bengio、Geoffrey Hinton 和 Yann LeCun,以表彰他们在深度学习神经网络上的工作。
+ y/ v% ?; n4 a1 `: c2 d图灵奖被认为是计算机领域的“诺贝尔奖”,一起来看看图灵奖得主如何理解所谓的“深度学习”。
, R) E% ]+ R; U, b# `6 O以下,尽请欣赏~
3 U' I8 u; f8 v$ V0 {1956年的夏天,一场在美国达特茅斯大学召开的学术会议,多年以后被认定为全球人工智能研究的起点。
4 r* J+ J' _. v6 b4 ^* O, S! e2016年的春天,一场AlphaGo与世界顶级围棋高手李世石的人机世纪对战,把全球推上了人工智能浪潮的新高。
, h ?; i8 x) P. u, j1 ^2016年被称为“人工智能元年”,这一年爆发了全球性的人工智能潮流。
' x; \ L7 ^% g1 R9 h2 J以谷歌、Facebook、微软为首的全球三大AI巨头都在逐渐将公司的发展重心转移到人工智能方面来。
/ X @; R( [8 H4 F
5 ?5 d5 M9 u, }7 \$ o2019年1月25日,谷歌旗下的DeepMind开发的全新AI程序AlphaStar,在《星际争霸2》人机大战比赛中,以10:1的战绩,全面击溃了人类职业高手。
/ ]8 z/ I) d5 V5 I( y2 t# Y' \& i在围棋世界里,动作空间只有361种,而《星际争霸2》大约是10的26次方种。这场比赛可以说是人工智能在竞技游戏领域的一次里程碑式的胜利。
) q/ S2 M% v; \. J# Z; X" l) O无论是AlphaGo还是AlphaStar,它们的主要工作原理都是“深度学习”。“深度学习”是机器学习的一个领域,其形式是模拟人类大脑的神经网络进行计算和学习。
! `8 }3 ]# m8 ^" r& h一、神经网络与深度学习
- ~4 A4 j- B K& D为什么要了解深度学习?
7 ] @2 _4 X0 d( }首先,“深度学习”现在太热门了,图形识别、语音识别、汽车导航全都能用上,非常值钱。
7 U5 F+ W/ ~8 n2 y( Y. k
! C# t5 b& Z v5 K3 S▲ 长按图片保存可分享至朋友圈
; f3 A, V2 m1 j) j
: ^/ R( e, Z3 s1 T9 Z' I更重要的是,“深度学习”算法包含精妙的思想,能够代表这个时代的精神。. X3 t: b5 v3 y: f: J
这个思想并不难,但是一旦领会了,你就能窥探一点脑神经科学和现代工程学。: g b* V6 F. ~
我将重点使用两份参考资料:! I' k! s% S' G% m
& {/ l$ n8 o7 {2 t" x1 r% N3 I一个是Arstechnica网站近期发布的一篇文章《计算机图形识别能力如何好到令人震惊》,作者是蒂莫西·李(Timothy Lee)。' |8 V* C6 _/ w+ z- c
一个是一本新书《深度学习:智能时代的核心驱动力量》,作者是特伦斯·谢诺夫斯基(Terrence Sejnowski),中信出版社刚刚出了中文版。
- \/ R- R2 C. P不知道你注意到没有,你的手机相册,知道你每一张照片里都有什么东西。
3 ^* l( Z/ B8 M- ]1 A不管你用的是 iPhone还是安卓,相册都有一个搜索功能,你输入“beach”,它能列举所有包含海滩的照片;输入“car”,它能列举画面中有汽车的照片,而且它还能识别照片中的每一个人。/ w% h) Z* ?& W2 ]
每拍摄一张照片,手机都自动识别其中的典型物体。这是一个细思极恐的技术。怎么才能教会计算机识别物体呢?
8 l% X! v% y8 H Q! j1.没有规则的学习
, _' n# B" U6 y6 N不到十年之前,人们总认为模式识别方面人脑比计算机厉害,甚至谷歌投入巨大精力研究都做不到从照片里识别出一只猫。5 O" P: i% x( e7 @5 z
然而,从2012年开始,“深度学习”让计算机识别图形的能力突然变得无比强大,甚至已经超过了人类。9 B4 S% T$ _% f- J2 ^
首先来看人是怎么识别猫的。
) F- I8 z. I9 L A6 N观察一下这张图,你怎么判断这张照片里有没有猫呢?、、# [3 Q2 N& F. [2 |( r2 F3 u
; P+ }& o9 Y% k! W/ I5 p
你可能会说,这很简单,所有人都知道猫长什么样——好,那请问猫长什么样?
' B+ d! f# x3 a) n; E F你也许可以用科学语言描写“三角形”是什么样的——这是一种图形,它有三条直线的边,有三个顶点。- j5 r% @1 M; U5 r0 C/ |
可是你能用比较科学的语言描写猫吗?它有耳朵、有尾巴,但这么形容远远不够,最起码你得能把猫和狗区分开来才行。
5 U4 i# n3 y; ], z9 ?4 b. ?4 D6 O再看下面这张图片,你怎么判断 ta 是男还是女呢?
& B. V+ S# p, E1 ]0 _3 G , ]2 s; c3 S2 C3 Y+ o1 y: }
图片来自 design.tutsplus.com' y3 z" B9 ` h# D- m9 P
3 c% j7 Y8 w/ r }/ j你可能会说女性长得更秀气一些——那什么叫“秀气”?是说眉毛比较细吗?是轮廓比较小吗?. n. G" i6 L- [' H
这是一个非常奇怪的感觉。你明明知道猫长什么样,你明明一眼就能区分男性和女性,可是说不清是怎么看出来的。3 w; ~" \: ]' ?8 x+ x4 A
古老的计算机图形识别方法,就是非要规定一些明确的识别规则,让计算机根据规则判断,结果发现非常不可行。
$ q' l7 e8 K' f; y人脑并不是通过什么规则做的判断。那到底是怎么判断的呢?
+ B$ I: q. q& W6 @- w# |# Y4 ?2.神经网络/ m+ _" r4 W% C T7 q
神经网络计算并不是一项新技术,几十年前就有了,但是一开始并不被看好。
; k* x) ?2 V) A( T《深度学习》的作者谢诺夫斯基,上世纪80年代就在研究神经网络计算,那时候他是一个少数派。
1 S' h: j j3 ?9 Q0 x4 g3 t
# A+ f; ^. E/ c1989年,谢诺夫斯基到麻省理工学院计算机实验室访问。气氛不算融洽,那里的人都质疑他的方法。2 |5 Q/ n6 F5 i4 A0 H
午餐之前,谢诺夫斯基有五分钟的时间,给所有人介绍一下他讲座的主题。谢诺夫斯基临场发挥,以食物上的一只苍蝇为题,说了几句话。$ [0 Y& Z3 @! g8 _7 N! u
谢诺夫斯基说,你看这只苍蝇的大脑只有10万个神经元,能耗那么低,但是它能看、能飞、能寻找食物,还能繁殖。MIT有台价值一亿美元的超级计算机,消耗极大的能量,有庞大的体积,可是它的功能为什么还不如一只苍蝇?& @5 G' ]- _/ y& Y1 w' {9 Y8 \
在场的教授都未能回答好这个问题,倒是一个研究生给出了正确答案。7 ~) C. }' s3 M- {( k
他说:这是因为苍蝇的大脑是高度专业化的,进化使得苍蝇的大脑只具备这些特定的功能,而我们的计算机是通用的,你可以对它进行各种编程,它理论上可以干任何事情。% J! R: w1 Y, ~7 J5 }- B$ U
这个关键在于,大脑的识别能力,不是靠临时弄一些规则临时编程。大脑的每一个功能都是专门的神经网络长出来的。
/ z7 n( Q% `% }& u( c2 J4 U 1 r) L. [, A C4 Q
那计算机能不能效法大脑呢?0 g8 ?! K- P7 b. v1 R: {% ?
谢诺夫斯基说,大脑已经给计算机科学家提供了四个暗示。
& t- S6 m8 i8 p1 U第一个暗示:大脑是一个强大的模式识别器。& P9 `3 {' d: b) q0 ]0 E7 y
人脑非常善于在一个混乱的场景之中识别出你想要的那个东西。比如你能从满大街的人中,一眼就认出你熟悉的人。
6 v! s ^) V; O6 h4 @第二个暗示:大脑的识别功能可以通过训练提高。+ [7 E# W i2 @' c: ^" V) D
第三个暗示:大脑不管是练习还是使用识别能力,都不是按照各种逻辑和规则进行的。& P. X9 |/ ^: B X0 E1 M2 y
我们识别一个人脸,并不是跟一些抽象的规则进行比对。我们不是通过测量这个人两眼之间的距离来识别这个人。我们一眼看过去,就知道他是谁了。
- w( J2 Q0 o6 S7 M第四个暗示:大脑是由神经元组成的。我们大脑里有数百亿个神经元,大脑计算不是基于明确规则的计算,而是基于神经元的计算。7 |: M6 s" |* p: c9 D+ v$ d
这就是神经网络计算要做的事情。
4 \" k5 H8 Q3 F) u( n7 \# s3.什么是“深度学习”
, u. k( M; ~* L4 T! Q3 ]8 r下面这张图代表一个最简单的计算机神经网络。 / g3 U* e# t' l! D: _
" ^5 P6 b5 s/ ]7 d
图片来自 hackernoon.com$ } c/ v/ @4 M* G: d3 P& l: x
; z1 g; v- r9 ?1 e& }它从左到右分为三层。- R+ j7 E# d% F
第一层代表输入的数据,第二和第三层的每一个圆点代表一个神经元。- Q6 e9 w+ m7 g6 Q* ~& E* A. s" K& L. c5 U
第二层叫“隐藏层”。1 Q2 J6 [1 W. ?) C
第三层是“输出层”。8 p5 n j5 f! r- y2 ^$ U
数据输入进来,经过隐藏层各个神经元的一番处理,再把信号传递给输出层,输出层神经元再处理一番,最后作出判断。7 ^6 X. ^( ~* o& f9 W
从下面这张图,你可以看到它的运行过程。 t1 H$ e3 O/ w2 _

! V- Y# n+ v* X" n图片来自 Analytics India Magazine6 Y2 c9 x, v& B: E. Q' ]/ b
那什么叫“深度学习”呢?最简单的理解,就是中间有不止一层隐藏层神经元的神经网络计算。
- _& K- l2 o+ q2 A" K6 ]5 y“深度”的字面意思就是层次比较“深”。 d0 r4 m h) z8 Z, W2 h; t3 J0 }
接着看下面这张图,你可以看到,左边是简单神经网络,右边是深度学习神经网络。7 |+ t1 }, S0 H% P9 h) j
8 h/ B) Q1 F$ ~+ ~ a" j) K( A7 o, w图片来自 Towards Data Science 网站
- F+ A+ P; M; U8 Z' q9 k: y& p计算机最底层的单元是晶体管,而神经网络最底层的单元就是神经元。神经元是什么东西呢?我们看一个最简单的例子。
! @$ C1 H) b% K- X h5 L下面这张图表现了一个根据交通信号灯判断要不要前进的神经元。它由三部分组成:输入、内部参数和输出。
# J+ P6 G% l' N+ y* Y0 [; t& E) m- l4 n
3 q, h" q3 T, r' }6 j这个神经元的输入就是红灯、黄灯和绿灯这三个灯哪个亮了。我们用1表示亮,0表示不亮,那么按照顺序,“1,0,0” 这一组输入数字,就代表红灯亮,黄灯和绿灯不亮。 5 H! Y* I t/ y
( P7 I" |$ z/ F/ T( N7 V5 @神经元的内部参数包括“权重(weight)”,它对每个输入值都给一个权重。
& a) H3 p2 e* |* C比如图中给红灯的权重是 -1,黄灯的权重是 0,给绿灯的权重是 1。另外,它还有一个参数叫“偏移(bias)”,图中偏移值是-0.5。
7 d) Z! @8 [6 c) p神经元做的计算,就是把输入的三个数字分别乘以各自的权重,相加,然后再加上偏移值。比如现在是红灯,那么输入的三个数值就是1、0、0,权重是 -1、0、1。 ?/ z7 p {# q+ i6 s" R9 H
所以计算结果就是:1×(-1) + 0×0 + 0×1 - 0.5 = -1.5。4 L% R2 e+ c; [# Q
输出是做判断,判断标准是如果计算结果大于 0 就输出“前进”命令,小于 0 就输出“停止”命令。现在计算结果小于0,所以神经元就输出“停止”。/ N7 E% _, l3 s$ `) J( Q
这就是神经元的基本原理。- p# f0 ^$ W% L' [9 Y, H
真实应用中的神经元会在计算过程中加入非线性函数的处理,并且确保输出值都在 0 和 1 之间。 3 O0 E: [6 |( B7 i- @
0 {* g7 y: b0 H8 C* e0 l! u本质上,神经元做的事情就是按照自己的权重参数把输入值相加,再加入偏移值,形成一个输出值。如果输出值大于某个阈值,我们就说这个神经元被“激发”了。+ z4 f! L- @' G( ^5 {4 Q6 q; n
神经元的内部参数,包括权重和偏移值,都是可调的。5 G& ?* K4 Z5 P& M5 n
用数据训练神经网络的过程,就是调整更新各个神经元的内部参数的过程。神经网络的结构在训练中不变,是其中神经元的参数决定了神经网络的功能。3 W( T- ], G; I3 V* m
接下来我们要用一个实战例子说明神经网络是怎样进行图形识别的。
2 v. z% z6 h$ i* s二、计算机如何识别手写数字
% p' P0 u- `1 |/ P3 m4 I+ k用神经网络识别手写的阿拉伯数字,是一个非常成熟的项目,网上有现成的数据库和很多教程。
! S! {- J# c: W( ?& \有个叫迈克尔·尼尔森(Michael Nielsen)的人只用了74行Python程序代码就做成了这件事。
& C6 ~2 R& r+ h! e3 A7 c+ N给你几个手写阿拉伯数字,可能是信封上的邮政编码也可能是支票上的钱数,你怎么教会计算机识别这些数字呢?0 V9 |6 h! {* i& ^4 B i/ N S

4 L* l# s' C$ K& D+ W. |1. 简化3 n$ A4 `& F( }. u o- p ^) d
想要让计算机处理,首先要把问题“数学化”。; D" H7 Y$ R1 o: i, t
写在纸上的字千变万化,我们首先把它简化成一个数学问题。我们用几个正方形把各个数字分开,就像下面这张图一样。
2 ~9 e' t( T7 j5 s; [; A
( \) l% q; Q8 V5 z2 ?+ h+ |现在问题变成给你一个包含一个手写数字的正方形区域,你能不能识别是什么数字?
/ l, T. z U' V% s3 h/ y7 H再进一步,我们忽略字的颜色,降低正方形的分辨率,就考虑一个28×28=784个像素的图像。9 w5 M, p" U `3 F
我们规定每一个像素值都是0到1之间的一个小数,代表灰度的深浅,0表示纯白色,1表示纯黑。这样一来,手写的数字“1”就变成了下面这个样子 —— $ H* _: c: d/ m' I8 k( G
0 L! D/ R3 Y6 y9 ^- I* n* P( X0 {8 W/ d
图片来自packtpub.com, The MNISTdataset。实际分辨率是28×28: ?* _! X0 \! a( Y# I9 H9 S- `
这就完全是一个数学问题了。
5 ~( @, n* M5 S# B( \$ k5 u5 {/ X现在无非就是给你784个0-1之间的数,你能不能对这组数做一番操作,判断它们对应的是哪个阿拉伯数字。输入784个数,输出一个数。8 A8 a! I! W* y! R& |& ^3 Y& R
这件事从常理来说并不是一点头绪都没有。
, z; C- }* t% i/ M比如任何人写数字“7”,左下角的区域应该是空白的,这就意味着784个像素点中对应正方形左下角区域那些点的数值应该是0。
- B% C6 g: {' N4 X再比如说,写“0”的时候的中间是空的,那么对应正方形中间的那些像素点的数值应该是0。- ?/ Y% g2 _% w, }& P
然而,这种人为找规律的思路非常不可行。5 V! }, Q) k( s4 n
首先你很难想到所有的规则,更重要的是很多规则都是模糊的——比如,7的左下角空白,那这个空白区域应该有多大呢?不同人的写法肯定不一样。
9 W8 h- P, d8 z0 @5 K/ K肯定有规律,可我们说不清都是什么规律,这种问题特别适合神经网络学习。
9 p! a$ [' G; s8 g% U+ z! X4 ^" b( H2. 设定
8 }, o! O$ a7 N/ X2 ~3 a我们要用的方法叫做“误差反向传播网络”,它最早起源于1986年发表在《自然》杂志上的一篇论文,这篇论文的被引用次数已经超过了4万次,是深度学习的里程碑。/ J0 e! f* t! a+ J& B
根据尼尔森的教程,我们建一个三层的神经网络,就是下面这张图。
3 [( e. p; I/ ^# R5 J9 M" O+ w% M! i' v 6 |2 q" A7 y( K% o/ F* U/ J1 ^
第一层是输入数据,图中只画了8个点,但其实上有784个数据点。$ s/ x4 P1 b* |+ b0 w% ]
第二层是隐藏层,由15个神经元组成。0 V; j& D& F. D' S, L3 W# o
第三层是输出层,有10个神经元,对应0-9这10个数字。+ y: e' h8 A# e. |* I; t
' W: H9 _4 \5 ?! }1 |7 w: s
每个神经元都由输入、权重和偏移值参数、输出三个部分组成。* m* `; y: m b" ^! f8 [" v; m
隐藏层15个神经元中的每一个都要接收全部784个像素的数据输入,总共有784×15=11760个权重和15个偏移值。" R1 Q) T- V6 H' B
第三层10个神经元的每一个都要跟第二层的所有15个神经元连接,总共有150个权重和10个偏移值。这样下来,整个神经网络一共有11935个可调参数。
; e- V- |+ q+ R; d7 L; r理想状态下,784个输入值在经过隐藏层和输出层这两层神经元的处理后,输出层的哪个神经元的输出结果最接近于1,神经网络就判断这是哪一个手写数字。9 D- T y) r- E
3. 训练2 ~' i+ ~+ \; h1 R/ C2 s3 B! o
网上有个公开的现成数据库叫“MNIST”,其中包括6万个手写的数字图像,都标记了它们代表的是哪些数字。
8 b2 l, o0 {+ K$ k/ Z* r2 p 3 G; b8 o! |- D3 F3 m0 [) |
我们要做的是用这些图像训练神经网络,去调整好那11935个参数。我们可以用其中3万个图像训练,用剩下3万个图像检验训练效果。
9 G3 x+ K0 {4 ^
! j( Y0 g7 `/ G' V! ?这个训练调整参数的方法,就是“误差反向传播”。比如我们输入一个数字“7”的图像。
' W! n8 I( p! T, ? " }3 s! s0 U# m% Y. r. U
神经网络实际收到的是784个像素值。经过两层神经元的传播计算,理想情况下,输出层的7号神经元的输出值应该最接近于1,其他的都很接近于0。9 j4 P8 y, _8 Q8 `0 m# J3 k; q$ [
; o! ^9 g+ W8 b9 K: {$ [' c
一开始结果并不是这么准确,我们要用一套特定的规则去调整各个神经元的参数。% M1 M. w$ M0 d+ k8 e E
参数调整有个方向,叫做“误差梯度”。
8 h3 m& R. Y% \* K$ b o比如对输出层的7号神经元来说,调整方向就是要让它的输出值变大;对其他9个神经元,调整方向则是让输出值变小。% j5 S& z6 w( p
这个调整策略是看哪个输入信息对结果的影响大,对它的权重的调整就要大一点。' T& f* w3 k) Q& Q. ?& J
几万个训练图像可能会被反复使用多次,神经网络参数不断修改,最终将会达到稳定。
6 I+ t8 g8 Q, o7 Y慢慢地,新图像喂进来,这11935个参数的变化越来越小,最终几乎不动了。那就是说,这个识别手写数字的神经网络,已经练成了。) P. K5 H6 G, u) y
事实证明这个简单网络的识别准确率能达到95%!
& j% I s! B" T2 P' v" |6 I j3 t
在理论上,这个方法可以用来学习识别一切图像。
9 K6 o5 C! r# J) i你只要把一张张的图片喂给神经网络,告诉它图上有什么,它终将自己发现各个东西的像素规律……但是在实践上,这个方法非常不可行。6 T3 h. a9 Q( r4 k9 ~: f" G! l
三、卷积网络如何实现图像识别
+ @3 Z5 k% u+ G) W, H( i计算机不怕“笨办法”,但是哪怕你能让它稍微变聪明一点,你的收获都是巨大的。5 r: k3 s, Z* K- o' B
1.“笨办法”和人的办法$ j3 V, W9 ~, l5 B8 O
下面这张图中有一只猫、一只狗、绿色的草地和蓝天白云。它的分辨率是350×263,总共92050个像素点。 w+ e- {3 `( F6 `' r
考虑到这是一张彩色照片,每个像素点必须用三个数来代表颜色,这张图要用27万个数来描写。, R0 |& f9 X+ M. K: W& @. b; @- ]1 e* d
+ G) j* J; i) r7 L$ l: V
要想用误差反向传播神经网络识别这样的图,它第二层每一个神经元都要有27万个权重参数。
! Z, }) g9 Z+ E" ?) w要想识别包括猫、狗、草地、蓝天白云这种水平的常见物体,它的输出层必须有上千个神经元才行。
7 w5 J9 }) }4 K/ v( A" ~这样训练一次的计算量将是巨大的 —— 但这还不是最大的难点。
, f8 N: `' u. p最大的难点是神经网络中的参数越多,它需要的训练素材就越多。# o9 b5 e4 g! f" ~3 ~1 I% O" s2 V
并不是任何照片都能用作训练素材,你必须事先靠人工标记照片上都有什么东西作为标准答案,才能给神经网络提供有效反馈。
# o+ q- `8 H, S8 B( {这么多训练素材上哪找呢?$ p5 U4 z `# {
我听罗胖跨年演讲学到一个词叫“回到母体”,意思大约是从新技术后退一步,返回基本常识,也许能发现新的创新点。
/ w/ M T+ q6 N( ?# `* }现在我们回到人脑,想想为什么简单神经网络是个笨办法。0 m7 v: r, n4 t0 j2 p" X! t. E4 {
人脑并不是每次都把一张图中所有的像素都放在一起考虑。我们有一个“看什么”,和一个“往哪看”的思路。
2 `* _* f7 l1 Z1 M & ^# k2 N3 E, {) _& j
让你找猫,你会先大概想象一下猫是什么样子,然后从一张大图上一块一块地找,你没必要同时考虑图片的左上角和右下角。这是“往哪看”。
( W: j6 @- r* W1 b. k还有,当你想象猫的时候,虽然不能完全说清,但你毕竟还是按照一定的规律去找。比如猫身上有毛,它有两个眼睛和一条尾巴等等。& ]! r+ }( g( ]
你看的不是单个的像素点,你看的是一片一片的像素群的模式变化。这是“看什么”。; N H+ `0 W* d: K6 `. M8 U
我理解“卷积网络”,就是这两个思路的产物。
/ D4 q3 `, V3 s( @& k2.竞赛+ o3 d% Q6 h6 {5 l- P
斯坦福大学的华裔计算机科学家李飞飞,组织了一个叫做ImageNet的机器学习图形识别比赛,从2010年开始每年举行一次。
, t! v7 e1 c3 D4 I7 E这个比赛每年都给参赛者提供一百万张图片作为训练素材!其中每一张图都由人工标记了图中的每个物体。
' E( k* w; j& @; ?3 M % X( W2 ?% P3 |: Q" l" _

4 X6 k& u% j* y图片素材中共有大约一千个物体分类。这就意味着,对每一种物体,人工智能都有大约一千次训练机会。* Q. ^+ G z: ^* ~
比赛规则是参赛者用这一百万张图片训练自己的程序,然后让程序识别一些新的图片。
_ K) ]& |3 M$ q每张新图片有一个事先设定的标准答案,而参赛者的程序可以猜五个答案,只要其中有一个判断跟标准答案相符合,就算识别结果准确。, `4 b/ ?8 }' \- E' {: x

) f, r2 h( l! V6 T: G6 f6 W! C2 S上图是历届比赛冠军的成绩。2010和2011年,最好成绩的判断错误率都在26%以上,但是2012年,错误率下降到了16%,从此之后更是直线下降。2017年的错误率是2.3%,这个水平已经超过人类。
5 K! i, m' N6 N- r6 G那2012年到底发生了什么呢?发生了“卷积网络”。
+ i4 M) [( d0 w( Q3.卷积网络% S Y1 L: | C# k
2012年的冠军是多伦多大学的一个研究组,他们使用的方法就是卷积网络。
2 Q4 l1 K5 a0 z- u$ k }7 W5 u正是因为这个方法太成功了,“深度学习”才流行起来,现在搞图形识别几乎全都是用这个方法。4 C4 F8 J/ U5 Q% h) P- f
获奖团队描述卷积网络的论文的第一作者叫艾利克斯·克里泽夫斯基(Alex Krizhevsky),当时他只是一个研究生,这篇论文现在被人称为“AlexNet” 。
- Q/ ~1 V0 Z0 c* t# w6 A: G/ i简单来说,AlexNet的方法是在最基本的像素到最终识别的物体之间加入了几个逻辑层,也就是“卷积层”。
+ P3 [' S, P% W! _- [“卷积”是一种数学操作,可以理解成“过滤”,或者叫“滤波”,意思是从细致的信号中识别尺度更大一点的结构。. q' k4 U0 i- R- i$ M- I
每一个卷积层识别一种特定规模的图形模式,然后后面一层只要在前面一层的基础上进行识别,这就解决了“看什么”和“往哪看”的问题。% P# y0 _5 Q( t/ H8 w4 ~
比如说我们要搞人脸识别,卷积网络方法把问题分解为三个卷积层。
! x- l: v! ? G& [1 P w' C4 @+ W5 y x( S
图片来自cdn.edureka.co2 F' q# {$ ^6 m2 W) S5 e) [$ O* O
" G ~) f3 V: H8 O. s1 ]
第一层,是先从像素点中识别一些小尺度的线条结构。 o5 b; C- y1 g
第二层,是根据第一层识别出来的小尺度结构识别像眼睛、耳朵、嘴之类的局部器官。& @: T. t+ h4 C. N9 M M2 [6 `
第三层,才是根据这些局部器官识别人脸。
7 W0 K! R( c v/ }/ K9 U, k2 T: c其中每一层的神经网络从前面一层获得输入,经过深度学习之后再输出到后面一层。1 w( @- Z' B3 x8 P- `4 |' e, r" v
AlexNet的论文提到,他的识别系统足足分了五个卷积层,每一层都由很多个“特征探测器”组成。
7 a# R; C) _8 y' U第一层有96个特征探测器,各自负责探测整个图形中哪些地方有下面这96种特征中的一种。
0 J' N) Q8 V$ y7 A
$ H( N/ R% S, d' O* w比如说,第一层的第一个特征探测器,专门负责判断图中哪里有像下面这样,从左下到右上的线条结构。
6 Q! Q. f1 r7 A; B/ v% ?
. V+ `7 g& J6 r _7 U9 ]- z' P这个特征探测器本身也是一个神经网络,有自己的神经元——而这里的妙处在于,它的每一个神经元只负责原始图像中一个11×11小区块。
! D- {" \ f1 S. J考虑到三种颜色,输入值只有 11×11×3= 363个。而且因为这个探测器只负责探测一种结构,每个神经元的参数都是一样的!这就大大降低了运算量。0 L, T4 b) _0 c }2 B* L
第一层的其他探测器则负责判断像垂直条纹、斑点、颜色从亮到暗等各种小结构,一共是96种。9 f/ H5 M! o! i9 r
也就是说,卷积网络的第一层先把整个图像分解成11×11的区块,看看每个区块里都是什么结构。
3 a$ H' X9 q# H为了避免结构被区块拆散,相邻的区块之间还要有相当大的重叠。经过第一层的过滤,我们看到的就不再是一个个的像素点,而是一张小结构的逻辑图。' ^6 g& o( D7 _* S" T( ^
然后第二卷积层再从这些小结构上识别出更大、更复杂也更多的结构来。以此类推,一直到第五层。
0 c! u9 s+ Q& m2 B0 {% a下面这张图表现了从第一层到第三层识别的模块(灰色)和对应的实例(彩色)。
8 b' i1 a1 o% g) I6 U
# M( Y3 F9 m- g5 D8 {3 {6 w图片来自https://datascience.stackexchange.com/questions/17205/feature-extraction-in-convnns-layers-progression
/ j& i/ B' z: d' @我们看到,第二个卷积层已经能识别圆形之类的结构,第三层已经能识别车轮和小的人脸。5 H6 |& X. M* y0 ~. P3 S. P
五个卷积层之外,AlexNet还设置了三个全局层,用于识别更大的物体。整个分层的结构是下面这样。6 ]( ]! h8 c* y) I* x8 D

4 f" T# J" f/ \9 Q) o f2 ~图片来自 Machine Learning Blog
9 X# l8 H' g& N& c9 X3 s4 c* N4 X4 X! |! L' b8 u
这样分层方式有很多好处:第一,卷积层中的神经元只要处理一个小区域的数据,而且参数可以重复使用,大大减少了运算量。第二,因为可以一个区域一个区域地搜索,就可以发现小尺度的物体。- N% x% }9 p! q8 u( a! L7 P
意识到图形识别有多难,你就能体会到AlexNet的识别水平有多神奇。下面这张图中有个红色的螨虫,它出现在图像的边缘,但是被正确识别出来了。' n& F0 r( l9 `& }
; A! ?) m0 F* J
AlexNet还猜测它可能是蜘蛛、蟑螂、虱子或者海星,但是认为它是螨虫的可能性最高。这个判断水平已经超过了我,我都不知道那是个螨虫。
6 P# s, h, z: g$ t6 `% T" ?9 U再比如下面这张图,标准答案是“蘑菇”,但AlexNet给的第一判断是更精确的“伞菌”,“蘑菇”是它的第二选项!
. J9 [' u5 M# D& D2 z . p3 L, x ?& R# C
而现在基于类似的卷积网络方法的深度学习程序,水平已经远远超过了AlexNet。8 N0 s5 A# }, O
# v' U/ A: ?% M; a. j
4.深度学习(不)能干什么
. W8 `0 {, n+ B1 mAlexNet那篇论文的几个作者成立了一家创业公司,这家公司在2013年被Google收购了。半年之后,Google相册就有了基于图片识别的搜索能力。% Y& E x7 _# N v8 a3 w
紧接着,Google就可以从自家拍摄的街景图像中识别每家每户的门牌号码了。, j: s) d% F# [: G6 [
Google还夺得了2014年的ImageNet竞赛冠军。" L: W9 }! v9 Y3 O5 v( H+ q+ w
所以千万别低估工程师迭代新技术的能力。他们举一反三,一旦发现这个技术好,马上就能给用到极致。
% T9 H1 m, i, O0 c5 t2012年之前深度学习还是机器学习中的“非主流”,现在是绝对主流。
$ X% S0 _: R3 Z* L深度学习能做一些令人赞叹的事情。/ `5 n. Y, m& B0 K* G* v
比如说对于一个不太容易判断的物体,如果网络知道图中有草地,那么它就会自动判断这应该是一个经常放在户外的东西,而不太可能是一件家具。
& ], w' ~$ y) U' |% R3 Z) J! ?这完全是基于经验的判断,你不需要告诉它家具一般不放户外。看的图多了,它仿佛获得了一些智慧!一个生活经验少的人可做不到这一点。' x" D; y& B! _% R! F
但是蒂莫西·李也提醒了我们深度学习不能做什么。! q, T* {7 l: @$ ?) f+ S
比如说把一个物体放大一点、或者旋转一个角度、或者调整一下光线,卷积网络就不知道那是同一个东西,它必须重新判断。& C$ {4 Y0 u0 t; Y/ b C' F5 c
/ h L) O0 n" n深度学习完全是基于经验的判断,它没有任何逻辑推理能力。
6 f+ b/ W1 L: y& k |在我看来,这种学习方法,就如同在数学考试前夜背诵习题集。你能猜对答案是因为你背诵过类似的题,但是你并不真的理解数学。
5 _; {4 z& t% H! ]这样的算法会有创造力吗?深度学习能发现图像中从来没有被人命名过的“怪异”物体吗?' y* v0 b4 B* p, r }, q" F
我们见识了光凭经验的操作能强大到什么程度,但是我们也能看出来,它距离真正的智能还非常遥远。4 Y; i& v0 y+ l8 U
! b- `+ p6 q0 I1 u/ K

! o4 I _7 c9 F2 Z$ n) j- o1 t J5 J: w2 {
5 j/ ^3 M) [( l: T) n# ~ 嘿,你在看吗? & S/ g& I: v$ ^' R: Z% U
来源:http://www.yidianzixun.com/article/0LcQnLfw' K: v; M( b. v( w7 R) R) v
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|