back to index

Deep Learning Theory 2-4: Geometry of Loss Surfaces (Conjecture)


link |
00:00.000
剩下的部分,其實還是需要講的
link |
00:03.500
等一下助教會講作業,請容我再講十分鐘
link |
00:07.500
因為等一下這個是跟作業有關係的
link |
00:13.000
其實今天在Deep Learning的領域有這麼一個推論
link |
00:17.500
這個推論是這樣
link |
00:19.000
幾乎所有的Local Minima
link |
00:22.000
它的Loss跟Global Optimum都是差不多的
link |
00:27.500
也就是說,你今天在做Optimization的時候
link |
00:31.000
走到Local Minima也不用驚慌
link |
00:34.000
因為Local Minima的Loss跟Global Minima的Loss
link |
00:37.000
應該是差距不大的
link |
00:39.000
而我們今天又知道說,Learning跟Optimization不一樣
link |
00:42.000
你硬是找一個
link |
00:45.000
在你的Training Set上Loss最小的東西
link |
00:49.000
搞不好你只是Overfitting而已啊
link |
00:51.000
找一個Local Minima,它的Loss跟Global Minima差不多
link |
00:55.000
其實搞不好也就夠了
link |
00:57.000
所以在Deep Learning有這麼樣的一個傳說
link |
01:01.000
這個傳說是怎麼來的呢?
link |
01:03.000
其實這個傳說,我第一次聽到的時候
link |
01:06.000
是Yann LeCun在2007年的一個,還是2006年的一個演講
link |
01:11.000
距今已經十年了,或者是超過十年了
link |
01:15.000
所以十年前,Yann LeCun就已經這麼說了
link |
01:18.000
他就告訴我們說,在Deep Learning的時候不用害怕
link |
01:21.000
當你卡在Local Minima的時候,它跟Global Minima的值
link |
01:24.000
應該是差不多的
link |
01:25.500
那這個說法是怎麼來的呢?
link |
01:27.500
以下是一個簡化的版本
link |
01:29.500
但其實這些東西現在都已經有證明了
link |
01:32.000
那當年Yann LeCun十年前講的時候
link |
01:34.500
應該是沒有證明的
link |
01:36.000
憑著直覺他居然知道這些事情
link |
01:38.000
但是十年後,我看到2007年的時候有一篇Paper
link |
01:41.000
已經有對這樣子的假說做了一些證明
link |
01:46.000
那Yann LeCun是怎麼說的呢?
link |
01:48.500
這邊是一個簡化的版本
link |
01:50.500
這個簡化的版本是這樣
link |
01:52.000
我們今天在Train的時候
link |
01:53.500
我們就歸顛Descent,我們最後會停在一個Critical Point
link |
01:56.500
這個Critical Point,它可能是一個Settle Point
link |
01:59.500
也可能是一個Local Minima
link |
02:02.000
那它到底是Settle Point還是一個Local Minima呢?
link |
02:05.500
我們剛才說,我們要分析Hessian Edge
link |
02:09.500
那我們假設現在Network有N個參數
link |
02:12.500
那Hessian Edge就是一個NxN的Matrix
link |
02:16.000
我們剛才講過說一個NxN的對稱的矩陣
link |
02:20.000
它會有N個彼此之間是orthogonal的I跟Vector
link |
02:26.500
所以我們現在把N個I跟Vector列出來就是V1、V2
link |
02:30.000
一直到VN
link |
02:32.000
每一個I跟Vector會對應一個I跟Value
link |
02:35.000
這邊寫作Λ1、Λ2到ΛN
link |
02:38.000
如果所有的I跟Value都是正的
link |
02:40.000
那這個Critical Point就是Local Minima
link |
02:43.500
如果所有的I跟Value都是負的
link |
02:45.000
它就是Local Minima
link |
02:46.000
有正有負,它就是Settle Point
link |
02:49.000
那現在我們隨便走到一個Critical Point
link |
02:52.000
它的Matrix H
link |
02:54.000
它到底應該是Local Minima還是Settle Point還是Local Maxima呢?
link |
02:58.000
這邊引入了一個有點奇怪的假設
link |
03:01.000
假設今天這些Λ是從某一個比如說Gaussian Distribution Sample出來的
link |
03:08.000
它有一半的機率是正的,有一半的機率是負的
link |
03:12.000
你不要再問我說這個是哪來的這樣子
link |
03:15.000
你先假設你相信說這些Λ
link |
03:18.000
你拿一個Λ1出來
link |
03:21.000
它的I跟Value應該是正的和負的的機率各一半一半
link |
03:26.000
假設這個前提你相信的話
link |
03:29.000
那如果今天Λ只有一個參數
link |
03:32.000
那今天卡走到一個Critical Point
link |
03:35.000
它因為只有一個參數嘛
link |
03:37.000
所以你只有一個I跟Vector
link |
03:39.000
你只有一個I跟Value
link |
03:41.000
它有二分之一的機率是正的
link |
03:44.000
有二分之一的機率是負的
link |
03:46.000
也就是說它有二分之一的機率是Local Minima
link |
03:49.000
有二分之一的機率是Local Maxima
link |
03:52.000
除非正好是零,不然它不可能是Settle Point
link |
03:56.000
所以今天在只有一個參數的情況下
link |
04:00.000
有一半的機率是Local Minima,有一半的機率是Local Maxima
link |
04:04.000
幾乎不可能是一個Settle Point
link |
04:06.000
假設有兩個參數
link |
04:08.000
你有兩個ΛΛ1跟Λ2
link |
04:10.000
今天如果兩個Λ都是正的
link |
04:14.000
那你有四分之一的機率發生這件事情
link |
04:16.000
那它是一個Local Minima
link |
04:18.000
兩個Λ都是負的
link |
04:19.000
有四分之一的機率發生這件事情
link |
04:21.000
那它是一個Local Maxima
link |
04:23.000
兩個Λ一個正一個負
link |
04:25.000
那它是一個Settle Point
link |
04:27.000
Settle Point發生的機率有二分之一
link |
04:29.000
所以發現有兩個參數的時候
link |
04:31.000
Settle Point發生的機率就已經大過Local Minima
link |
04:35.000
假設今天有十個參數呢
link |
04:37.000
有十個參數你就會發現說
link |
04:39.000
有非常低的機率是Local Minima
link |
04:42.000
因為你要全部的
link |
04:44.000
你有ΛΛ1到ΛΛ10
link |
04:46.000
然後每次指骰子決定它是正的還負的
link |
04:48.000
有二分之一
link |
04:49.000
你指個銅板決定它是正的還負的
link |
04:51.000
那你要全部都是正的它才是Local Minima
link |
04:54.000
那全部都是正的機率
link |
04:56.000
是1024分之一
link |
04:58.000
全部都是負的機率也是1024分之一
link |
05:01.000
通常
link |
05:02.000
你只要其中有一個正的
link |
05:04.000
有一個負的
link |
05:05.000
它就是Settle Point
link |
05:06.000
所以幾乎通通
link |
05:08.000
你每次走到一個Settle Point的時候
link |
05:10.000
走到一個Critical Point的時候
link |
05:12.000
它幾乎都是一個Settle Point
link |
05:14.000
所以這整套說法告訴我們說
link |
05:16.000
假設一個Network它的參數很多
link |
05:18.000
Network參數越多
link |
05:20.000
當我們今天碰到一個Critical Point的時候
link |
05:22.000
它就越不可能是一個Local Minima
link |
05:24.000
它就越有可能是一個Settle Point
link |
05:28.000
當你今天的參數非常非常多的時候
link |
05:31.000
你走到一個Critical Point
link |
05:32.000
它是Local Minima的機率幾乎是不可能的
link |
05:35.000
它幾乎一定是Settle Point
link |
05:38.000
而且這個假設還有下半部
link |
05:43.000
這個下半部是說
link |
05:44.000
我們剛才說浪達有二分之一的機率
link |
05:47.000
它是正的
link |
05:48.000
或有二分之一的機率它是負的
link |
05:49.000
接下來我們再進一步想像說
link |
05:51.000
這個機率並不是二分之一
link |
05:54.000
這個機率跟你現在的Loss是有關係的
link |
05:59.000
我們假設這個機率我們把它寫成P
link |
06:02.000
然後我們說今天這個P
link |
06:04.000
是跟你現在的Loss Function的Loss
link |
06:07.000
我這邊寫Arrow
link |
06:08.000
但意思是一樣的
link |
06:09.000
就跟Loss Function的Loss是有關係的
link |
06:12.000
而假設現在Loss越大
link |
06:18.000
那P的值就越大
link |
06:21.000
P是負的Icon Value出現的機率
link |
06:26.000
負的Icon Value代表說
link |
06:27.000
你有某一條路可以讓你往下走
link |
06:29.000
這個假設也是蠻合理的
link |
06:31.000
因為你想想看
link |
06:32.000
Loss大就是你剛開始的時候
link |
06:34.000
剛開始的時候
link |
06:35.000
你在Loss比較高的地方
link |
06:37.000
應該會有很多條路
link |
06:39.000
你找到一個Critical Point
link |
06:40.000
應該有很多條路可以讓你
link |
06:42.000
再往Loss更低的地方走
link |
06:44.000
直到你找到Loss很低的地方的時候
link |
06:46.000
可能Loss就沒有再更低的地方了
link |
06:48.000
所以所有的路可能都是會讓Loss變高
link |
06:51.000
所以這個假設也是蠻合理的
link |
06:53.000
如果今天你所在的Arrow Surface
link |
06:59.000
你是在Training剛開始的時候
link |
07:01.000
Loss很大的時候
link |
07:02.000
那這個時候比較有可能出現
link |
07:07.000
負的Icon Value
link |
07:08.000
當你今天Train到後來
link |
07:10.000
Loss已經很低了
link |
07:11.000
出現負的Icon Value的機率就很小
link |
07:17.000
所以今天Loss
link |
07:20.000
這邊用Epsilon代表Loss
link |
07:22.000
今天隨著Epsilon Loss的不同
link |
07:25.000
你走到一個Critical Point
link |
07:26.000
它的Icon Value的分布
link |
07:29.000
是可能會有向下面的變化
link |
07:33.000
如果你今天它的Loss很大
link |
07:35.000
那你的分布就是這樣
link |
07:38.000
它有一定的機率是正的
link |
07:40.000
幾乎一半的機率是正的
link |
07:41.000
幾乎一半的機率是負的
link |
07:43.000
如果今天隨著Loss越來越小
link |
07:46.000
那今天你的這個浪達代表Icon Value
link |
07:49.000
你的Icon Value就會逐漸往正的那邊偏
link |
07:53.000
當你的Loss真的很小的時候
link |
07:55.000
Icon Value就很容易是正的
link |
07:58.000
Icon Value很容易是正的
link |
07:59.000
代表它很容易是一個
link |
08:00.000
一個Critical Point
link |
08:01.000
很容易是一個Local Minima
link |
08:04.000
所以這整個理論告訴我們說
link |
08:06.000
Zero Point比較容易出現在Loss大的地方
link |
08:10.000
Local Minima比較容易出現在Loss低的地方
link |
08:15.000
所以對於Deep Learning
link |
08:17.000
Aero Surface的想像是長這個樣子的
link |
08:21.000
可能有一個Global Minima在這個地方
link |
08:25.000
那所有的Local Minima它的Loss都很低
link |
08:28.000
可能就跟Global Minima差不多低了
link |
08:31.000
而所有的Zero Point它的Loss都很高
link |
08:35.000
所有的Zero Point它都會出現在Loss比較高的地方
link |
08:40.000
所以如果你今天走走走走到一個Local Minima
link |
08:44.000
那這個Local Minima的Loss
link |
08:45.000
可能就跟Global Minima的Loss差不多了
link |
08:48.000
而這件事情可能已經就夠好了
link |
08:51.000
你也沒有必要真的一定要去找出Global Optimum
link |
08:53.000
也許Local Optimum的Loss已經夠低了
link |
08:56.000
那這件事情
link |
08:58.000
剛才就只是一個假設而已
link |
09:01.000
但是首先在實驗上
link |
09:03.000
有一些實驗是可以佐證的
link |
09:06.000
那這個是Benjo Payton
link |
09:08.000
他Trade了三個Network
link |
09:10.000
這三個Network呢
link |
09:11.000
紅色的這個它的Aero很低
link |
09:14.000
綠色的這個Aero是23
link |
09:17.000
藍色的這個Aero更高是28
link |
09:19.000
好那現在呢
link |
09:20.000
他找到了三個Critical Point
link |
09:22.000
這三個Critical Point Loss分別是這三個樣子
link |
09:25.000
那找到那個Critical Point以後
link |
09:27.000
你就把它的Eigenvalue解出來
link |
09:31.000
把那三個黑線的Eigenvalue解出來
link |
09:34.000
藍色的這個Critical Point
link |
09:35.000
它的Eigenvalue的分布呢
link |
09:37.000
是這樣子的
link |
09:38.000
中間這個黑色的這條線代表Eigenvalue是0
link |
09:41.000
藍色這個Critical Point
link |
09:43.000
它的Eigenvalue有一部分是負的
link |
09:45.000
有一部分是正的
link |
09:46.000
代表它是一個Zero Point
link |
09:49.000
綠色的有一部分Eigenvalue是負的
link |
09:52.000
有一部分Eigenvalue是正的
link |
09:53.000
代表它是一個Zero Point
link |
09:55.000
紅色的這個Critical Point
link |
09:57.000
你會發現說呢
link |
09:58.000
它的Loss很低
link |
09:59.000
然後呢
link |
10:00.000
它的Eigenvalue幾乎通通都是正的
link |
10:03.000
你看紅色的這個
link |
10:04.000
它的Eigenvalue都是正的
link |
10:06.000
代表它是一個Low Commitment
link |
10:10.000
而Low Commitment是出現在Loss很低的地方
link |
10:15.000
而這邊只分析了三個點
link |
10:16.000
那你可以分析更多的點
link |
10:18.000
那這個其實是作業要大家做的一件事
link |
10:21.000
看看說這個
link |
10:22.000
這也是Benjo講的
link |
10:23.000
看看Benjo有沒有在騙我們這樣子
link |
10:26.000
好那這個實驗是什麼
link |
10:27.000
這個實驗的重軸啊
link |
10:29.000
是Training Error
link |
10:30.000
就是你就Training Error就Training很多次
link |
10:32.000
你知道每次Initialization的值不同
link |
10:34.000
那你最後收斂的地方會不太一樣嘛
link |
10:36.000
好那你就Training很多次
link |
10:37.000
找到很多的參數
link |
10:40.000
找到很多個Critical Point
link |
10:43.000
好那那些Critical Point
link |
10:45.000
各自有不同的Error把它們記錄下來
link |
10:48.000
接下來每一個Critical Point
link |
10:50.000
你都去算出它的Hesitant
link |
10:52.000
然後算出那個Hesitant的Eigenvalue
link |
10:55.000
那假設你找到的那個Hesitant
link |
10:57.000
它的Positive的Eigenvalue越多的話
link |
11:01.000
代表它越像是一個Low Commitment
link |
11:03.000
因為你很難找
link |
11:04.000
很難正好最後所有的Eigenvalue通通是正的
link |
11:07.000
講的通通是有正有負
link |
11:08.000
只是比例不同而已
link |
11:10.000
那假設今天某一個Hesitant算出來的
link |
11:12.000
正的Eigenvalue比例越高
link |
11:14.000
代表說它越像是一個Low Commitment
link |
11:19.000
反之如果負的越多
link |
11:20.000
代表它越像是一個Saddle Point
link |
11:23.000
好現在就把每一個Critical Point
link |
11:26.000
它像是Low Commitment的比例把它畫出來
link |
11:31.000
你就會發現說
link |
11:32.000
如果今天一個Critical Point
link |
11:34.000
它越像是Low Commitment
link |
11:36.000
它的Error就越低
link |
11:38.000
或者是就是說一個Critical Point
link |
11:41.000
它越像是Low Commitment
link |
11:43.000
它的Error就越低
link |
11:46.000
那剛才講的其實比較像是猜測
link |
11:51.000
但實際上剛才講的那件事情
link |
11:54.000
是有理論的證明的
link |
11:57.000
那實際上理論的證明就留給你
link |
12:00.000
就把它放在文獻裡留給大家參考
link |
12:03.000
那理論上的證明給我們的
link |
12:06.000
是圖上的實現
link |
12:10.000
這個實現告訴我們什麼
link |
12:12.000
這個實現告訴我們說
link |
12:14.000
1減掉Low Commitment的Degree
link |
12:17.000
也就是負的Eigenvalue
link |
12:19.000
佔的比例
link |
12:21.000
會正比於你的Loss Epsilon
link |
12:25.000
除上某一個值再減1的三分之二次方
link |
12:27.000
但這個C一定要小於Epsilon
link |
12:30.000
所以你可能想說
link |
12:32.000
二分之三次方這個哪來的
link |
12:35.000
你就看看那個paper
link |
12:36.000
震出來是這個樣子
link |
12:39.000
它震出了這樣子
link |
12:41.000
那這個需要一些假設
link |
12:43.000
那這個假設到底合不合理
link |
12:45.000
就是未來再繼續研究
link |
12:48.000
那至少根據一些假設震出來說
link |
12:51.000
是一個Critical Point
link |
12:53.000
它像不像是Low Commitment的程度
link |
12:56.000
是確實跟Epsilon是成正比的
link |
12:58.000
畫出圖來就是這個實現
link |
13:01.000
那這個點點呢
link |
13:03.000
這個點點是實際上做實驗的結果
link |
13:05.000
跟實現其實是蠻接近的
link |
13:08.000
還有其他的假說
link |
13:10.000
在早年這個E4年的時候
link |
13:12.000
那個Young-Luck
link |
13:16.000
就他就把SpringGlass的Model
link |
13:19.000
跟Neural Network
link |
13:21.000
把它連結在一起
link |
13:22.000
我不知道大家知不知道
link |
13:23.000
SpringGlass的Model
link |
13:24.000
它是物理上的一個
link |
13:25.000
研究的比較透徹的Model
link |
13:27.000
然後他假設說
link |
13:29.000
Network跟SpringGlass Model
link |
13:31.000
是非常像的
link |
13:32.000
他用了七個Assumption
link |
13:34.000
那七個Assumption
link |
13:35.000
有很多是不合理的這樣子
link |
13:36.000
然後硬是告訴你說
link |
13:38.000
Network跟SpringGlass Model是一樣的
link |
13:40.000
所以SpringGlass Model
link |
13:41.000
有這些這些特質
link |
13:43.000
所以Network
link |
13:44.000
應該也有這些這些特質
link |
13:46.000
但是要在假設成立的前提下
link |
13:48.000
才能夠這麼講就是了
link |
13:50.000
我就不打算講這個部分
link |
13:51.000
因為他七個Assumption
link |
13:52.000
有很多是很奇怪的
link |
13:53.000
所以這個留給大家研究
link |
13:55.000
但是他自己做了一些實驗
link |
13:57.000
他說我們
link |
13:59.000
在左邊是SpringGlass的Model
link |
14:00.000
我們就不要管它
link |
14:01.000
右邊是說
link |
14:02.000
我們來Trend Network
link |
14:03.000
那Network有比較小的
link |
14:05.000
只有25個Neural的
link |
14:07.000
比較大的有500個Neural的
link |
14:09.000
然後TrendTrendTrend看
link |
14:10.000
它的Loss最後卡在哪裡
link |
14:12.000
那假設說今天會卡住
link |
14:13.000
就是走到Local Minima就會卡住
link |
14:15.000
那你會發現說
link |
14:16.000
今天如果是一個比較小的Network
link |
14:19.000
它有可能卡在
link |
14:21.000
它有可能Loss降得很低
link |
14:22.000
但它的分布很廣
link |
14:23.000
它有可能卡在Loss很大的地方
link |
14:25.000
其實這個Network越來越大
link |
14:27.000
它就變得越來越集中
link |
14:28.000
如果Network非常大的時候
link |
14:29.000
它的Loss呢
link |
14:30.000
都會幾乎集中在某一個區域
link |
14:33.000
這好像顯示說
link |
14:35.000
Local Minima
link |
14:36.000
Loss呢
link |
14:37.000
通通集中在某一個Value一樣
link |
14:41.000
link |
14:42.000
這邊還有另外一個理論
link |
14:45.000
這個也是最新的
link |
14:47.000
這是CPPR2017的Paper
link |
14:49.000
它想
link |
14:50.000
這篇Paper告訴我們說
link |
14:52.000
只要一個Network夠大
link |
14:55.000
但它沒有告訴我們要多大
link |
14:56.000
只要大到某一個程度
link |
14:59.000
我們有一個Global Optimization的方法
link |
15:03.000
有一個
link |
15:04.000
我們可以用Gradient Descent
link |
15:06.000
找到Global Optimization
link |
15:08.000
無視Initialization
link |
15:10.000
只要Network夠大
link |
15:12.000
但是它這邊其實也有一些比較不Practical的假設
link |
15:15.000
第一個它有一個假設是說
link |
15:17.000
它假設Network的架構
link |
15:18.000
必須是長這個樣子
link |
15:20.000
也就是說
link |
15:21.000
它有很多條之路
link |
15:25.000
而之路和之路之間是不相通的
link |
15:27.000
當然我們知道一般的Network是Fully Connected的
link |
15:29.000
並不是長這個樣子
link |
15:31.000
如果我們今天把中間的每一條路
link |
15:34.000
簡化成只有一個Neuron的話
link |
15:36.000
它就變成只有一個Hidden Layer的Network
link |
15:40.000
它變成一個正常的Fully Connected Network
link |
15:42.000
但是證明只有一個Hidden Layer的Network
link |
15:45.000
可以找到Global Optimization
link |
15:48.000
其實沒有特別厲害
link |
15:49.000
因為你知道說
link |
15:50.000
SVM它也可以看作是一個Hidden Layer的Neuron Network
link |
15:55.000
它已經可以找到Global Optimization
link |
15:57.000
它的整個Algorithm看起來有點像是Boosting
link |
16:00.000
它每次會加一條之路進去
link |
16:03.000
加一條之路進去
link |
16:04.000
直到那個Error變成0為止
link |
16:07.000
這邊是想要引用一些文獻
link |
16:10.000
最早的有關Hessian的一些猜測
link |
16:15.000
出現在這三篇Paper裡面
link |
16:17.000
分別是兩篇04年的Paper
link |
16:18.000
還有一篇15年的Paper
link |
16:20.000
第一篇這個是
link |
16:22.000
下面這一篇
link |
16:25.000
The Low Surface of Modern Linked Network
link |
16:27.000
就是試圖把Splitting Edge Model跟Network硬是連在一起
link |
16:31.000
上面這兩篇
link |
16:32.000
就是講了一下
link |
16:34.000
Settlepoint才是真正的問題所在
link |
16:38.000
Local密碼比較不是問題
link |
16:40.000
裡面其實沒有證明
link |
16:41.000
它都只是引用一個物理學的文獻
link |
16:43.000
告訴你說應該是這樣
link |
16:45.000
物理學文獻跟Network
link |
16:46.000
也是沒什麼太多的關係
link |
16:48.000
它這邊都講得比較模糊
link |
16:50.000
但是這篇Paper就有直接證明
link |
16:53.000
告訴你說
link |
16:54.000
過去的那些猜測
link |
16:56.000
是對的
link |
16:58.000
然後剛才CVPR的Paper
link |
16:59.000
我也列在這邊
link |
17:00.000
它是講了一個演算法
link |
17:01.000
叫做Global Optimism