back to index

Deep Learning Theory 2-2: Deep Linear Network


link |
00:00.000
沒有講到Deep Learning這樣子
link |
00:02.600
剛才講的是一個General的Case
link |
00:04.800
現在我們來講Deep Learning
link |
00:07.200
那在講真正的Deep Learning之前
link |
00:09.600
我們先來分析Deep的Linear的Network
link |
00:14.000
它長什麼樣子
link |
00:16.400
它的Loss Function長什麼樣子
link |
00:20.000
我們先來假設一個非常非常簡單的Deep的Linear Network
link |
00:25.000
這個Deep Linear Network呢
link |
00:26.600
它只有兩個Neuron
link |
00:29.000
它的Input就只有一圍就是X
link |
00:32.000
然後它的每一個Neuron都沒有Non-Linear的Activation Function
link |
00:37.400
每一個Neuron的Activation Function都是Linear的
link |
00:41.800
那每一個Neuron就只有一個Weight W1跟W2
link |
00:46.200
那今天把一個X帶進去
link |
00:48.000
它只會Output一個Value Y
link |
00:49.800
那Y顯然就是X乘上W1乘上W2就得到Y就結束了
link |
00:55.800
那我們今天在做Deep Learning的時候
link |
00:57.800
我們會給這個Network Training Data
link |
00:59.600
我們假設現在Training Data只有一筆
link |
01:02.800
也就是說Input是1,X等於1的時候
link |
01:06.200
我們希望Network的Output跟1越接近越好
link |
01:10.800
我們現在有這樣子的一個Linear的Network
link |
01:19.800
它只有兩個Weight
link |
01:21.200
因為它只有兩個Weight
link |
01:22.400
我們甚至可以把它在一個二維平面上畫出來
link |
01:26.800
其中一維是W1的值的變化
link |
01:35.200
另外一維是W2的值的變化
link |
01:40.200
然後這個圖上可能你就畫一些等高線
link |
01:46.600
代表它的Low
link |
01:50.000
我們寫做L
link |
01:52.600
那你要不要猜猜看現在這一個Loss Function
link |
01:59.000
它是不是Convex的
link |
02:04.600
我們想想看
link |
02:06.000
假設我們有一個
link |
02:08.200
先問一下大家好
link |
02:09.400
給你講個三秒鐘
link |
02:12.000
這一個問題
link |
02:15.800
你覺得它的Loss Function是Convex的
link |
02:18.400
同學舉手一下
link |
02:21.600
有一些同學覺得是
link |
02:22.800
你覺得它不是Convex的同學舉手一下
link |
02:26.000
有一些同學
link |
02:27.400
所以有人覺得是Convex
link |
02:29.000
有人覺得不是Convex
link |
02:30.800
那我們再給你一個提示吧
link |
02:33.000
我們再考慮一個更簡單的Network
link |
02:36.400
這個Network只有一個參數
link |
02:39.800
它只有一個Neural
link |
02:41.400
只有一個參數叫W
link |
02:43.200
InputX,OutputY等於WX
link |
02:48.000
這一個Network它是一個Linear的Function
link |
02:53.400
這一個Network它就跟Linear Regression是一模一樣的
link |
02:58.800
如果我們今天考我們講機器學那門課
link |
03:02.400
第一堂課就講Linear Regression
link |
03:04.600
它跟Linear Regression是一樣的
link |
03:06.200
Input是1
link |
03:07.200
那希望它的Output跟1越接近越好
link |
03:11.400
這一個Network
link |
03:13.800
如果我們橫軸是W
link |
03:17.200
縱軸是它的Loss
link |
03:20.600
它是Convex的嗎
link |
03:22.200
它是Convex的
link |
03:24.200
如果今天W等於1
link |
03:27.800
這個時候它的Loss會是0
link |
03:32.400
當W偏離1越來越多
link |
03:35.600
Loss就會逐漸上升
link |
03:37.800
這是一個二次曲線
link |
03:40.800
它長這個樣子
link |
03:42.600
它是Convex的
link |
03:45.400
那你問說
link |
03:49.200
這一個Function
link |
03:50.200
W1跟W2的Function
link |
03:53.000
跟這個只有W的Function
link |
03:54.800
它們有什麼不同嗎
link |
03:56.000
其實沒什麼不同
link |
03:57.000
你只是把這個W拆成W1乘上W2而已
link |
04:04.000
這樣講完以後
link |
04:05.400
你覺得它是一個Convex的Function嗎
link |
04:08.400
你覺得它是一個Convex的Function
link |
04:10.400
同學舉手一下
link |
04:13.800
沒有人覺得,你覺得它不是一個Convex的Function的同學舉手一下
link |
04:18.800
還是有些同學覺得它不是Convex的Function
link |
04:22.200
那我們就實際上把它畫出來看看是什麼樣子
link |
04:25.000
實際上畫出來
link |
04:25.800
這個圖不是我自己畫的
link |
04:27.200
我是截了那個Ian Guffalo paper
link |
04:29.200
是長這個樣子的
link |
04:30.600
所以它不是Convex的
link |
04:32.200
今天這個顏色代表Loss的值
link |
04:35.400
越偏藍代表Loss的值越小
link |
04:38.000
它不是Convex的
link |
04:39.000
你會發現很神奇就是
link |
04:40.800
同樣是Linear的Function
link |
04:42.400
只有一個weight的時候它是Convex的
link |
04:45.000
今天有兩個weight的時候
link |
04:47.600
你的Loss對weight來說就不是Convex的了
link |
04:51.000
所以它是一個Linear的Function
link |
04:52.400
但它的Loss不是Convex的
link |
04:53.600
很多人聽到Linear方式就覺得說
link |
04:55.400
嗯,它是Convex的
link |
04:56.600
沒有,這只有在這個case才是Convex的
link |
05:00.000
這是一個Linear的Function
link |
05:02.000
但它的Loss就已經不是Convex的了
link |
05:06.000
它的Loss長什麼樣子
link |
05:07.200
它的Loss長這個樣子
link |
05:10.200
那在這個地方跟這個地方
link |
05:16.400
它的Loss是最低的
link |
05:19.200
Loss最低的值可以是0對不對
link |
05:23.000
因為你看W1代1、W2代1
link |
05:25.200
Loss就是0了嘛
link |
05:26.400
所以W1代1、W2代1
link |
05:30.200
Loss就是0了
link |
05:31.200
當然還有其他的組合就是了
link |
05:33.200
連成一條曲線
link |
05:37.000
那這個圖上的這個黑色箭頭
link |
05:39.000
代表Gradient的方向
link |
05:41.200
所以在這個地方
link |
05:42.200
你就會順著Gradient的方向走走走走
link |
05:44.200
走到這個Local Minima的地方
link |
05:48.000
不過這個Local Minima也是Global Minima
link |
05:49.800
因為它整個Function裡面是最小的地方
link |
05:52.600
然後這個綠色的線代表
link |
05:55.200
是Global Minima的Manifold
link |
05:56.800
它只是把Global Minima連起來而已
link |
05:59.200
紅色的線是一個Settled Point
link |
06:00.800
其實在00這個地方
link |
06:02.200
你就自己算
link |
06:03.200
等一下算一下
link |
06:03.800
就是它有一個Settled Point在00這個地方
link |
06:07.000
它Gradient是0
link |
06:08.000
但它不是Local Minima
link |
06:10.600
也不是Local Maxima
link |
06:13.000
因為從這個方向走會增加
link |
06:15.000
從這個方向走也只會變小
link |
06:18.600
然後藍色的這條線是說
link |
06:21.000
假設你這邊是起始點
link |
06:23.000
Gradient Descent會這樣子走
link |
06:25.600
走走走走進去
link |
06:28.000
然後今天這條粉紅色的線是要告訴我們說
link |
06:32.800
它不是一個Convex的Function
link |
06:35.000
它不是一個Convex的Function
link |
06:39.000
因為我們把這兩邊連起來的時候
link |
06:42.000
我們會發現說
link |
06:44.000
這個區面上的這個值
link |
06:46.000
是比紅色這條線連起來的值
link |
06:48.000
是還要大的
link |
06:50.000
link |
06:51.000
那剛才是真的
link |
06:52.000
因為你只有兩個參數
link |
06:53.000
你真的把它硬化出來以後
link |
06:55.000
看起來是這個樣子
link |
06:56.000
那如果今天沒有辦法硬化呢
link |
06:58.000
我們就來分析一下
link |
07:00.000
我們知道說
link |
07:02.000
現在這個Loss
link |
07:03.000
等於Yhat減掉
link |
07:05.000
W1乘W2乘以X的平方
link |
07:08.000
然後呢
link |
07:09.000
今天Yhat跟X都在1
link |
07:12.000
都在1
link |
07:13.000
隨便1減W1乘以W2的平方
link |
07:15.000
然後我們計算一下它的Gradient
link |
07:17.000
你把L對W1算Gradient
link |
07:19.000
對W2算Gradient
link |
07:21.000
你得到這樣的式子
link |
07:23.000
得到這樣子的式子
link |
07:25.000
然後接下來就可以分析看看說
link |
07:28.000
什麼情況下
link |
07:29.000
你會得到Critical Point
link |
07:31.000
什麼情況下Gradient是零
link |
07:32.000
有兩個可能
link |
07:33.000
一個可能是說
link |
07:35.000
我把圖都畫出來好了
link |
07:39.000
我右上角本來有一個小圖
link |
07:41.000
但不知道為什麼
link |
07:42.000
它在這個螢幕上
link |
07:43.000
沒有辦法顯示出來
link |
07:46.000
link |
07:47.000
沒關係
link |
07:48.000
什麼情況下
link |
07:49.000
它會有這個Critical Point
link |
07:52.000
一個可能是
link |
07:53.000
W1跟W2相乘等於1的時候
link |
07:57.000
對不對
link |
07:58.000
假設這一項是零
link |
07:59.000
這一項是零
link |
08:00.000
它是一個Critical Point
link |
08:01.000
這個Critical Point
link |
08:02.000
它是Global Minima
link |
08:05.000
我們不需要想這件事情
link |
08:07.000
因為W1乘以W2等於1
link |
08:10.000
這就是一個Global Minima
link |
08:13.000
今天有一個Critical Point
link |
08:14.000
有一些Critical Point
link |
08:15.000
它可以讓W1乘以W2等於1
link |
08:17.000
它是Global Minima
link |
08:20.000
另外一個可能是
link |
08:21.000
W1等於零
link |
08:22.000
W2等於零
link |
08:23.000
有在原點的地方
link |
08:24.000
它是另外一個Critical Point
link |
08:27.000
這個Critical Point
link |
08:28.000
長什麼樣子呢
link |
08:30.000
如果我們今天算一下
link |
08:31.000
它的黑懸的話
link |
08:33.000
我們現在把黑懸的matrix算出來
link |
08:35.000
把黑懸的matrix算出來長這樣
link |
08:37.000
那我們把W1跟W2都在零
link |
08:41.000
也就考慮原點那個地方的黑懸
link |
08:43.000
我們會發現那個黑懸算出來
link |
08:45.000
link |
08:50.000
那個黑懸算出來
link |
08:52.000
link |
08:57.000
0-2-2-0
link |
09:04.000
那接下來呢
link |
09:05.000
我們要考慮一下
link |
09:07.000
這一個黑懸
link |
09:09.000
它是
link |
09:12.000
Critical Point
link |
09:13.000
還是Local Minima
link |
09:15.000
還是Local Maxima呢
link |
09:17.000
那你就要找一下它的
link |
09:20.000
我這樣有沒有算錯啊
link |
09:26.000
應該
link |
09:28.000
應該沒有
link |
09:31.000
應該沒有
link |
09:33.000
link |
09:36.000
那今天這個H
link |
09:39.000
我們今天要找它的
link |
09:42.000
Local
link |
09:43.000
我們要算一下
link |
09:44.000
它是Local Minima
link |
09:45.000
還是Critical Point
link |
09:47.000
那我們就要看一下
link |
09:48.000
它的Eigenvector
link |
09:51.000
那它有什麼樣的Eigenvector呢
link |
09:53.000
你可以自己回去翻一下
link |
09:55.000
因為我們看這個怎麼算
link |
09:57.000
我清算一下以後
link |
09:59.000
覺得應該是
link |
10:01.000
1 1
link |
10:03.000
link |
10:04.000
1-1
link |
10:05.000
這樣子
link |
10:06.000
直覺就是這個樣子
link |
10:08.000
好那你就算一下它的
link |
10:10.000
那個
link |
10:12.000
Eigenvalue
link |
10:13.000
Lambda 1
link |
10:14.000
是怎麼樣
link |
10:15.000
把1 1乘進去
link |
10:16.000
所以10-2
link |
10:18.000
Lambda Q
link |
10:23.000
是2
link |
10:25.000
link |
10:26.000
所以現在呢
link |
10:27.000
有正的Eigenvalue
link |
10:28.000
有負的Eigenvalue
link |
10:29.000
我們剛才講說
link |
10:30.000
有正的Eigenvalue
link |
10:31.000
有負的Eigenvalue
link |
10:32.000
它是一個
link |
10:34.000
Settle Point
link |
10:36.000
當我們今天
link |
10:37.000
從原點的地方
link |
10:39.000
往1的方向走
link |
10:41.000
會減少負2
link |
10:43.000
往1-1的方向走
link |
10:45.000
link |
10:47.000
增加2
link |
10:51.000
好不知道為什麼
link |
10:53.000
那個圖沒有顯示出來
link |
10:55.000
link |
10:57.000
對啊如果有錄音的話
link |
10:58.000
它就會彈出一個
link |
10:59.000
要不要按確認這樣子
link |
11:01.000
所以如果沒有彈出來
link |
11:02.000
就代表說
link |
11:03.000
沒有錄到音這樣子
link |
11:05.000
好不過沒有關係
link |
11:06.000
剛才講的那個
link |
11:07.000
也還蠻輕柔的
link |
11:09.000
不是這樣嗎
link |
11:12.000
不是這樣嗎
link |
11:13.000
好剛才講的還蠻簡單的啊
link |
11:14.000
所以
link |
11:15.000
link |
11:19.000
我們剛才想要表達的事情是說
link |
11:21.000
我們在原點這個地方
link |
11:23.000
它是一個Settle Point
link |
11:25.000
往1-1走
link |
11:26.000
會往變小
link |
11:27.000
是不是往1
link |
11:28.000
原點這個地方是往1-1走
link |
11:29.000
會變小呢
link |
11:30.000
link |
11:31.000
往1-1走
link |
11:33.000
會變大
link |
11:34.000
link |
11:36.000
1-
link |
11:37.000
X是1
link |
11:38.000
Y是負1
link |
11:39.000
往1-1走
link |
11:40.000
這個方向會變大
link |
11:41.000
沒錯
link |
11:42.000
跟這個圖上看起來的
link |
11:43.000
是一模一樣
link |
11:45.000
好我們今天知道說
link |
11:46.000
在做歸點Descent的時候
link |
11:47.000
你最後可能會停在
link |
11:48.000
一個Settle Point
link |
11:49.000
也可能會停在一個
link |
11:50.000
Local Minima
link |
11:51.000
停在Local Minima
link |
11:52.000
沒有問題
link |
11:53.000
因為今天這個地方
link |
11:54.000
Local Minima
link |
11:55.000
就是Global Minima
link |
11:56.000
停在Settle Point
link |
11:57.000
就有問題了
link |
11:58.000
因為Settle Point
link |
11:59.000
不是我們要的
link |
12:00.000
它不是一個Global Minima
link |
12:01.000
它的Loss是很大的
link |
12:02.000
它的Loss不是
link |
12:03.000
不是最小的
link |
12:04.000
但是今天在這個問題裡面
link |
12:06.000
你不太需要害怕Settle Point
link |
12:08.000
為什麼
link |
12:09.000
因為這個Settle Point啊
link |
12:10.000
它非常的容易被逃出去
link |
12:12.000
首先呢
link |
12:14.000
假設
link |
12:16.000
你從這個圖上的
link |
12:17.000
任何一個點開始
link |
12:18.000
你要最後走到Settle Point
link |
12:20.000
是還蠻困難的
link |
12:21.000
要怎麼樣才能走到Settle Point
link |
12:23.000
你要正好
link |
12:24.000
初始在這個對角線的地方
link |
12:27.000
順著歸點走
link |
12:28.000
你才能夠走到Settle Point
link |
12:30.000
如果你稍微偏一點
link |
12:31.000
像這個Case一樣
link |
12:33.000
你就錯過Settle Point
link |
12:35.000
你就走到
link |
12:36.000
Global Minima去了
link |
12:37.000
所以今天在這個Case裡面
link |
12:38.000
你其實不太容易
link |
12:39.000
卡在Settle Point
link |
12:40.000
就算你不幸卡在Settle Point
link |
12:42.000
也沒有關係
link |
12:43.000
因為你可以算Hatred
link |
12:45.000
你算了Hatred以後
link |
12:46.000
Hatred可以告訴你說
link |
12:47.000
往哪個地方走
link |
12:48.000
可以讓Loss下降
link |
12:50.000
你就可以逃出那個Settle Point
link |
12:52.000
往Loss比較小的地方走了
link |
12:54.000
這個是
link |
12:55.000
只有兩個Neuron的狀況
link |
12:57.000
我們現在來考慮一個
link |
12:58.000
更複雜的狀況
link |
12:59.000
是有三個Neuron
link |
13:01.000
也就是有兩個
link |
13:02.000
Hidden Layer的狀況
link |
13:03.000
當我們今天有三個Neuron的時候
link |
13:05.000
我們畫出來的Loss
link |
13:07.000
我們的那個Loss L啊
link |
13:09.000
等於1減掉
link |
13:10.000
W1 W2 W3的平方
link |
13:12.000
好接下來呢
link |
13:13.000
我們就
link |
13:14.000
你知道有三個參數啊
link |
13:15.000
所以就不太好畫圖了
link |
13:17.000
所以這個時候
link |
13:18.000
你就用
link |
13:19.000
Gradient和Hatred來分析一下說
link |
13:21.000
今天這個Loss L呢
link |
13:23.000
應該長什麼樣子
link |
13:25.000
好我們現在把這個Loss L呢
link |
13:27.000
分別對W1 W2和W3
link |
13:29.000
做偏微分
link |
13:31.000
做完這個偏微分以後
link |
13:33.000
我們就可以知道說
link |
13:35.000
哪些地方是Critical Point
link |
13:37.000
但光知道Critical Point還不夠
link |
13:39.000
我們要早算出Hatred
link |
13:41.000
才能夠知道說
link |
13:42.000
這個Critical Point
link |
13:43.000
它的性質是什麼
link |
13:45.000
好那這個Hatred
link |
13:47.000
就如果今天這個Hatred算出來啊
link |
13:50.000
理論上應該要有
link |
13:51.000
3乘以3 9個值啦
link |
13:53.000
有點麻煩
link |
13:54.000
我這邊就隨便舉一個
link |
13:55.000
隨便舉一個例子
link |
13:57.000
就W1偏微分兩次
link |
13:59.000
跟先對W1偏微分
link |
14:01.000
再對W2偏微分的結果
link |
14:03.000
那你可以輕易的
link |
14:05.000
想像說剩下的值
link |
14:07.000
長什麼樣子
link |
14:08.000
我們先看一下Critical Point吧
link |
14:10.000
有哪些地方
link |
14:11.000
可能是Critical Point呢
link |
14:12.000
一個可能是
link |
14:14.000
W1 W2 W3等於1
link |
14:17.000
如果W1 W2 W3都等於1的時候
link |
14:20.000
會發生什麼事呢
link |
14:21.000
這三個偏微分的值
link |
14:24.000
也就是Gradient的第一項都是0
link |
14:26.000
所以Gradient等於0
link |
14:28.000
Gradient等於0
link |
14:32.000
那還有另外兩個地方
link |
14:34.000
兩個可能性
link |
14:35.000
可能會製造出Critical Point
link |
14:38.000
一個可能是
link |
14:39.000
W1 W2 W3都是0
link |
14:41.000
也就是在原點的地方
link |
14:43.000
如果W1 W2 W3都是0的話
link |
14:45.000
後面這一項會是0
link |
14:47.000
所以這邊也是一個Critical Point
link |
14:49.000
但其實不需要三項都是0
link |
14:51.000
才能夠製造Critical Point
link |
14:53.000
其實只要三項裡面的兩項是0
link |
14:55.000
不一定要W1 W2是0
link |
14:57.000
我這個是想表達意思說
link |
14:59.000
只要三項裡面的兩項是0
link |
15:01.000
舉例來說
link |
15:02.000
W1 W2是0
link |
15:04.000
就可以讓它變成一個Critical Point
link |
15:07.000
接下來我們來分析說
link |
15:09.000
這三個Critical Point
link |
15:11.000
它分別是什麼樣的狀況
link |
15:14.000
第一個Case
link |
15:16.000
W1 W2 W3等於0
link |
15:18.000
它是一個Global Minimum
link |
15:20.000
你說沒分析還沒算Hesitant
link |
15:22.000
你怎麼知道它是Global Minimum
link |
15:23.000
你要至少先算個Hesitant
link |
15:25.000
看看它的Eigenvalue
link |
15:27.000
是不是都是正的
link |
15:28.000
才知道它是不是一個Local Minimum
link |
15:29.000
你又不知道它是不是Global Minimum
link |
15:31.000
但是今天這個Case是比較特殊的
link |
15:33.000
我知道說
link |
15:34.000
W1 W2 W3
link |
15:36.000
這個Loss的最小值就是0
link |
15:38.000
W1 W2 W3等於1的時候
link |
15:40.000
可以讓Loss是0
link |
15:41.000
最小值是0
link |
15:42.000
這邊正好讓Loss是0
link |
15:43.000
所以它就已經是Global Minimum
link |
15:45.000
沒有別的可能了
link |
15:46.000
所以這個問題
link |
15:47.000
這個Critical Point就不用分析了
link |
15:49.000
那這邊分析
link |
15:50.000
W1等於W2等於3
link |
15:52.000
等於W3等於0
link |
15:53.000
如果W1 W2 W3都是0的話
link |
15:56.000
你就算一下它的Hesitant
link |
15:57.000
發現它的Hesitant
link |
15:58.000
是一個Zero Matrix
link |
16:00.000
Hesitant是Zero Matrix
link |
16:01.000
是一件很可怕的事情
link |
16:03.000
因為它的Eigenvalue都是0
link |
16:07.000
意味著說
link |
16:08.000
如果我們今天用Hesitant來
link |
16:10.000
考慮這一個原點的地方的話
link |
16:13.000
Hesitant告訴你說
link |
16:15.000
不管往什麼方向走
link |
16:17.000
都是0
link |
16:19.000
就如果我們不考慮更高的次數
link |
16:21.000
更高的項
link |
16:22.000
只考慮Hesitant那一項的話
link |
16:24.000
這個Hesitant告訴我們說
link |
16:25.000
在原點的地方
link |
16:27.000
不管往哪個方向走
link |
16:29.000
都是0
link |
16:30.000
所以你今天如果走走走
link |
16:31.000
走到Hesitant那個地方
link |
16:32.000
你就逃不出去了
link |
16:34.000
因為你就算是算了Hesitant
link |
16:37.000
你仍然不知道哪個地方
link |
16:39.000
可以讓你的Loss變小
link |
16:41.000
除非你真的就是
link |
16:43.000
挪動一下你的數值去試試看
link |
16:45.000
不然你光是算Gradient
link |
16:47.000
光是算Hesitant
link |
16:48.000
你就逃不出這個地方了
link |
16:49.000
因為這個Hesitant告訴我們說
link |
16:51.000
不管往哪個方向走
link |
16:53.000
值都不會增加
link |
16:54.000
也不會減少
link |
16:55.000
它是不增不減
link |
16:56.000
你永遠都逃不出去了
link |
16:58.000
這是一個可怕的
link |
17:00.000
可怕的critical point
link |
17:02.000
當然我們其實
link |
17:04.000
你如果憑著直覺想
link |
17:05.000
你知道說它是一個saddle point
link |
17:07.000
就是有些
link |
17:08.000
在原點的地方往旁邊走
link |
17:10.000
有些時候可以讓Loss增加
link |
17:11.000
有些時候可以讓Loss減小
link |
17:13.000
它是一個saddle point
link |
17:14.000
但是從Hesitant我們看不出來
link |
17:15.000
從Hesitant這邊我們只知道說
link |
17:17.000
這邊是一個黑洞
link |
17:19.000
陷進去以後就出不來了
link |
17:22.000
那如果是W1 W2等於0
link |
17:24.000
W3等於K呢
link |
17:26.000
這個時候我們得到了
link |
17:30.000
這樣子的一個Hesitant matrix
link |
17:34.000
那這個Hesitant的matrix
link |
17:36.000
你實際上去算一下
link |
17:38.000
它的Eigenvalue以後
link |
17:40.000
你會發現說
link |
17:42.000
它有一個positive Eigenvalue
link |
17:45.000
一個negative Eigenvalue
link |
17:47.000
一個zero Eigenvalue
link |
17:48.000
雖然它有zero Eigenvalue
link |
17:50.000
但是它的Eigenvalue又
link |
17:51.000
正好一個positive一個negative
link |
17:53.000
所以它往某個方向走會增加
link |
17:55.000
往某個方向走會減少
link |
17:57.000
那往zero的那個方向
link |
17:59.000
zero Eigenvalue那個方向走
link |
18:01.000
不知道增加還是減少
link |
18:02.000
不過沒關係反正有增有減
link |
18:04.000
所以它一定就是saddle point
link |
18:07.000
好從這個例子裡面
link |
18:09.000
我們發現什麼
link |
18:10.000
從這個例子裡面
link |
18:11.000
我想告訴大家的事情是
link |
18:13.000
我們最後發現說
link |
18:14.000
所有的minima
link |
18:16.000
至少在這個case裡面
link |
18:18.000
所有的minima
link |
18:20.000
它都是global minima
link |
18:23.000
其他的critical point
link |
18:25.000
它都不是local minima
link |
18:27.000
只要你是一個local minima
link |
18:29.000
那你就是一個global minima
link |
18:32.000
另外一件事情是
link |
18:33.000
有一些critical point
link |
18:34.000
它是很差的critical point
link |
18:36.000
你陷進去以後
link |
18:37.000
它就會跑不出來了
link |
18:39.000
那什麼叫差的critical point
link |
18:40.000
就是你從那個critical point
link |
18:42.000
算Eigenvalue
link |
18:43.000
沒有任何Eigenvalue是負的
link |
18:45.000
你這樣就不知道說
link |
18:46.000
哪個方向可以讓你的
link |
18:48.000
loss的值減少
link |
18:49.000
你就走不出去了
link |
18:51.000
這個是兩個hidden layer的情況
link |
18:54.000
如果是十個hidden layer的話
link |
18:56.000
你其實也可以自己分析一下
link |
18:58.000
也不會太難
link |
18:59.000
但我就懶得再分析了
link |
19:00.000
我這邊做的事情就是
link |
19:01.000
在十個hidden layer
link |
19:05.000
就有十個參數
link |
19:07.000
我想看
link |
19:09.000
兩個hidden layer有三個參數
link |
19:10.000
所以十個hidden layer
link |
19:11.000
有十一個參數
link |
19:12.000
在十一個參數的space上面
link |
19:15.000
我取兩個點
link |
19:16.000
然後那兩個點
link |
19:17.000
它們正好在原點的兩邊
link |
19:19.000
然後把它們拉起來
link |
19:20.000
再算說
link |
19:21.000
在這個區間之內的loss的變化
link |
19:24.000
那我如果取某兩個點
link |
19:26.000
它們的loss的變化可能是這樣
link |
19:30.000
然後再取某兩個點
link |
19:31.000
它們loss的變化可能是這個樣子
link |
19:34.000
那你會發現說
link |
19:35.000
在原點的附近
link |
19:36.000
這邊兩邊都是一樣
link |
19:37.000
它們都是1
link |
19:39.000
那在原點附近
link |
19:41.000
有一個saddle point
link |
19:44.000
它是saddle point
link |
19:47.000
在原點附近呢
link |
19:48.000
但是如果你光看Hessian的話
link |
19:50.000
你不知道它是不是saddle point
link |
19:51.000
在原點附近
link |
19:52.000
有一個critical point
link |
19:54.000
這個critical point
link |
19:55.000
它算出來的Hessian都是0
link |
19:57.000
然後在原點附近非常的平
link |
20:00.000
非常的平
link |
20:01.000
所以你如果走到原點附近
link |
20:03.000
你就再也逃不出來
link |
20:05.000
就像被吸入黑洞裡面
link |
20:06.000
這個就是我們在開學
link |
20:08.000
學習初的時候
link |
20:09.000
demo的那一個狀況
link |
20:13.000
好 那我們現在
link |
20:14.000
真的來train一個非常簡單的
link |
20:16.000
只有兩個neuron的linear network
link |
20:19.000
那我在現在我們的training data呢
link |
20:21.000
就像我們剛才講的
link |
20:23.000
它的input是1
link |
20:24.000
然後output的target也是1
link |
20:27.000
這個network只有兩個neuron
link |
20:30.000
第一個neuron
link |
20:31.000
input只有一維
link |
20:33.000
output只有一維
link |
20:34.000
然後沒有bias
link |
20:35.000
所以這個neuron
link |
20:36.000
它只有一個參數
link |
20:37.000
這個參數是weight
link |
20:38.000
它沒有bias
link |
20:40.000
那它的activation function是linear
link |
20:43.000
接下來用for回圈
link |
20:44.000
再加第二個neuron
link |
20:46.000
那這第二個neuron呢
link |
20:47.000
它的input dimension是1
link |
20:49.000
output dimension是1
link |
20:50.000
一樣沒有加bias
link |
20:51.000
一樣它的activation function是linear
link |
20:56.000
好 那這種network呢
link |
20:57.000
我們可以輕易的把它train起來
link |
20:59.000
但是我現在
link |
21:00.000
故意在做參數的initialization的時候
link |
21:03.000
把這個neuron的所有的weight
link |
21:06.000
通通initialize在
link |
21:08.000
這個weight等於0的狀況
link |
21:10.000
那要怎麼做到這件事情呢
link |
21:12.000
其實在Keras裡面非常容易
link |
21:14.000
因為我這邊呢
link |
21:15.000
是用random normal
link |
21:17.000
來做參數的initialization
link |
21:19.000
那我只要把standard deviation
link |
21:21.000
設成0
link |
21:22.000
那在做參數的initialization的時候
link |
21:24.000
initialize的參數
link |
21:25.000
就會自動的被設為0了
link |
21:28.000
好 那我們剛才有講說
link |
21:30.000
今天呢
link |
21:31.000
一個只有兩個neuron的linear network
link |
21:35.000
它的這個
link |
21:38.000
在原點的地方
link |
21:40.000
有一個saddle point
link |
21:42.000
所以今天如果initialize
link |
21:43.000
是在原點那個地方
link |
21:45.000
你會發現說
link |
21:46.000
training loss就完全降不下去了
link |
21:49.000
你就算用add
link |
21:50.000
有加momentum
link |
21:51.000
也沒有用
link |
21:52.000
因為一開始呢
link |
21:53.000
初始的地方
link |
21:54.000
gradient就是0
link |
21:55.000
但你一開始初始在一個
link |
21:57.000
這個saddle point的地方
link |
21:59.000
你就沒有辦法再train下去了
link |
22:01.000
但是
link |
22:02.000
初始在saddle point的地方
link |
22:04.000
這件事情
link |
22:05.000
其實是
link |
22:07.000
並沒有那麼容易發生
link |
22:09.000
你現在呢
link |
22:10.000
只要在做initialization的時候
link |
22:12.000
給這個standard deviation
link |
22:14.000
非常非常小的值
link |
22:15.000
就算它的值非常非常小
link |
22:17.000
也就是你initialize的時候
link |
22:19.000
你initialize的點呢
link |
22:20.000
在原點的附近
link |
22:22.000
在兩個參數都是0
link |
22:24.000
在所有參數都是0
link |
22:25.000
在這個原點的附近
link |
22:27.000
你會發現說
link |
22:28.000
其實
link |
22:30.000
network只要它不初始化呢
link |
22:32.000
離原點有一點點的距離
link |
22:34.000
就不會被卡在那個saddle point了
link |
22:36.000
所以我們現在呢
link |
22:37.000
給這個standard deviation
link |
22:39.000
一個非常小非常小的值
link |
22:46.000
這樣夠小了吧
link |
22:53.000
link |
22:54.000
那我們實際來train一下
link |
22:59.000
你會發現說
link |
23:00.000
現在loss呢
link |
23:01.000
就可以輕易的降為0
link |
23:03.000
如果你的參數初始化的時候
link |
23:05.000
exactly在原點的地方
link |
23:06.000
沒有辦法train
link |
23:07.000
但只要離原點稍微偏離一點
link |
23:09.000
就可以train了
link |
23:11.000
接下來呢
link |
23:12.000
我們稍微再加深一下這個network
link |
23:15.000
現在變成有三個neural
link |
23:17.000
同樣的initialization
link |
23:20.000
你會發現說
link |
23:21.000
三個neural
link |
23:22.000
同樣的initialization
link |
23:23.000
結果就train不起來了
link |
23:25.000
因為我們剛才有分析說
link |
23:27.000
如果今天有三個neural
link |
23:29.000
那在原點那個地方的saddle point
link |
23:31.000
它會變成一個很糟糕的saddle point
link |
23:34.000
這個saddle point
link |
23:35.000
它的hessian呢是一個zero matrix
link |
23:38.000
也就是說在原點的地方
link |
23:40.000
這個arrow的surface是非常平坦的
link |
23:43.000
它平坦的就是一個一望無際的大地
link |
23:46.000
平坦的就跟一個鏡面一樣
link |
23:48.000
那邊完全沒有任何的coverture
link |
23:51.000
所以如果你今天initialize的時候
link |
23:53.000
initialize在原點的附近
link |
23:56.000
initialize在那個非常平的
link |
23:58.000
那個saddle point附近
link |
24:00.000
你就很難逃出那一個區域
link |
24:03.000
接下來呢
link |
24:04.000
我們試一下
link |
24:05.000
當把network加得非常深的時候
link |
24:08.000
我們現在總共有十個neural
link |
24:11.000
假設你現在有十個neural
link |
24:13.000
就算是你用正常的initialization
link |
24:16.000
你其實也逃不出去了
link |
24:18.000
因為我剛才有講過說
link |
24:20.000
如果你今天有
link |
24:22.000
你今天的network是非常深的
link |
24:24.000
你今天這個linear network是非常深的
link |
24:26.000
在原點的地方呢
link |
24:28.000
會產生一個
link |
24:29.000
這個非常非常平的區域
link |
24:33.000
那如果你今天initialize的時候呢
link |
24:35.000
在這個非常非常平的區域的附近
link |
24:37.000
你就會沒有辦法逃脫了
link |
24:39.000
我們現在呢
link |
24:40.000
給參數做initialization
link |
24:43.000
用一個比較正常的standard deviation
link |
24:45.000
然後圈圈看
link |
24:46.000
現在network非常深
link |
24:47.000
用一個正常的standard deviation
link |
24:49.000
看能不能跑出去
link |
24:51.000
發現說
link |
24:52.000
現在loss就降不下去了
link |
24:54.000
lossstrain了這個
link |
24:57.000
一萬個epoch
link |
24:58.000
但是這個loss呢
link |
24:59.000
完全都沒有辦法降下去
link |
25:02.000
那怎麼辦呢
link |
25:04.000
這個時候
link |
25:05.000
因為我們知道在原點附近
link |
25:06.000
有一個非常平的區域
link |
25:08.000
所以你要避免在你做initialization的時候
link |
25:11.000
initialize在原點附近
link |
25:14.000
盡量離原點足夠的遠
link |
25:16.000
不要initialize在那個非常平的地方
link |
25:18.000
initialize離那個非常平的地方遠一點
link |
25:21.000
不要在那個很平的區域
link |
25:23.000
其實就可以順利的把它圈起來了
link |
25:26.000
我們試試看把standard deviation呢
link |
25:28.000
自己設的大一點
link |
25:33.000
你看發現
link |
25:34.000
這個時候雖然network非常深
link |
25:36.000
但是loss呢
link |
25:37.000
也輕易的就下降到零了
link |
25:46.000
非常的遠
link |
25:47.000
那我就告訴你說
link |
25:48.000
general現在可以證明出來的東西是怎麼樣
link |
25:51.000
那證明的細節
link |
25:52.000
我就把reference放在後面
link |
25:54.000
你再自己
link |
25:55.000
你再自己看看
link |
25:57.000
現在我們知道的事情是
link |
25:59.000
假設有一個network
link |
26:00.000
它是linear的
link |
26:02.000
什麼意思
link |
26:03.000
它不見
link |
26:04.000
剛才我們舉的是一個linear的network的
link |
26:06.000
一個非常special的case
link |
26:08.000
link |
26:09.000
我們現在
link |
26:10.000
它special的case
link |
26:11.000
那現在是一個general的case
link |
26:13.000
input是一個vector x
link |
26:14.000
x乘以matrix w1以後
link |
26:16.000
再乘以matrix w2
link |
26:18.000
再乘以matrix wk
link |
26:19.000
得到y
link |
26:20.000
希望y跟y hat
link |
26:21.000
它們的q0越接近越好
link |
26:26.000
那再來
link |
26:27.000
可以證明說
link |
26:29.000
只要滿足一些非常寬鬆的條件
link |
26:33.000
這一個linear的network
link |
26:35.000
不管它疊幾層
link |
26:37.000
它的所有local minima
link |
26:40.000
都是global minima
link |
26:42.000
就跟我剛才在兩個hidden layer證的case是一樣的
link |
26:47.000
所有的
link |
26:48.000
如果你只要算一算它的critical point
link |
26:51.000
把你找到一個critical point
link |
26:52.000
就發現說它是local minima
link |
26:55.000
那它就一定是global minima
link |
26:58.000
那不同的paper
link |
26:59.000
他們證明的時候需要的條件不太一樣
link |
27:01.000
我現在找到的一個最寬鬆的條件是
link |
27:04.000
要求所有hidden layer的size
link |
27:07.000
要大於等於input dimension跟output dimension
link |
27:10.000
舉例來說
link |
27:11.000
你input dimension是五維
link |
27:12.000
output dimension是五維
link |
27:13.000
中間每一個hidden layer的output都要至少五維
link |
27:18.000
那為什麼需要這個限制呢
link |
27:20.000
其實是在證明裡面會用到說
link |
27:24.000
因為在證明裡面
link |
27:26.000
實際上會用到的概念是說
link |
27:28.000
現在loss最小是零
link |
27:30.000
所以你需要讓你的這一個linear的network
link |
27:34.000
它的global minima的loss是零
link |
27:37.000
而實際上證明的時候會用到說
link |
27:39.000
你找到一個critical point
link |
27:40.000
發現它是local minima
link |
27:42.000
接下來你又說
link |
27:43.000
如果它是local minima
link |
27:45.000
它的loss一定是零
link |
27:47.000
那因為global minima的loss是零
link |
27:48.000
所以它一定是global minima
link |
27:50.000
所以它是這樣證出來的
link |
27:52.000
所以需要加上這個條件
link |
27:54.000
確保global minima的loss是零
link |
27:56.000
那其實還有另外一個發現
link |
27:58.000
這個發現是說
link |
27:59.000
當今天network的深度
link |
28:02.000
大過兩個hidden layer
link |
28:04.000
那你就會產生我們剛才講的
link |
28:07.000
不好的saddle point
link |
28:10.000
就會產生不好的saddle point
link |
28:13.000
所謂不好的saddle point是說
link |
28:14.000
這個saddle point
link |
28:15.000
它沒有任何negative的eigenvalue
link |
28:19.000
它是個saddle point
link |
28:20.000
但是它沒有negative的eigenvalue
link |
28:23.000
所以不知道往哪個方向走
link |
28:25.000
可以讓你的loss下降
link |
28:26.000
這件事情在network的hidden layer
link |
28:29.000
一層的時候不會發生
link |
28:31.000
兩層以上就會發生
link |
28:33.000
那我今天在講課的時候
link |
28:34.000
我並沒有直接證
link |
28:35.000
我就只是舉個例子
link |
28:36.000
我們就剛才舉個例子
link |
28:37.000
只有兩個neuron
link |
28:39.000
也就是一個hidden layer的時候
link |
28:40.000
沒有差的saddle point
link |
28:41.000
但多加一個neuron
link |
28:42.000
有兩個hidden layer
link |
28:43.000
三個neuron的時候
link |
28:44.000
它有差的saddle point
link |
28:47.000
但是in general
link |
28:48.000
不是只有好幾個neuron
link |
28:50.000
而是一個
link |
28:51.000
而是更general case
link |
28:53.000
其實也是這樣子
link |
28:55.000
詳情大家自己再去看一下paper
link |
28:58.000
最早的完整的證明
link |
29:00.000
應該是來自NIF2016
link |
29:02.000
這一篇Deep learning without
link |
29:04.000
poor local minima
link |
29:06.000
其實2016離現在
link |
29:09.000
其實也沒有太久
link |
29:10.000
但是在Deep learning
link |
29:12.000
這個地方的時空的
link |
29:13.000
這個時間的流動是比較快的
link |
29:15.000
所以2016就覺得說
link |
29:16.000
非常久以前
link |
29:17.000
那個時候
link |
29:18.000
第一次有這樣證明的時候
link |
29:20.000
大家其實都還蠻驚訝的
link |
29:21.000
哇 原來Deep linear network
link |
29:23.000
它雖然是non-convex的
link |
29:25.000
但是它是沒有local minima的
link |
29:27.000
好神奇啊
link |
29:28.000
而且這個就是
link |
29:31.000
Deep linear network
link |
29:32.000
沒有local minima這件事
link |
29:33.000
好像在不知道是80年
link |
29:35.000
還是90年的時候
link |
29:36.000
就有人提出這樣子的假說
link |
29:39.000
但是沒有證
link |
29:40.000
這篇paper就是說
link |
29:41.000
過去有人提這樣的假說
link |
29:42.000
沒證
link |
29:43.000
然後我幫他證了一下
link |
29:45.000
但是因為時間過得是非常快的
link |
29:47.000
然後後面就有很多其他的paper
link |
29:48.000
比方說2018的paper
link |
29:49.000
它submit到ICLR就被reject
link |
29:52.000
然後看到reject
link |
29:53.000
他們就說
link |
29:54.000
嗯 linear的network
link |
29:56.000
只證linear network
link |
29:57.000
實在是太linear
link |
29:58.000
其實沒有什麼這樣子
link |
29:59.000
過去可以上NIF2016的oral
link |
30:01.000
但同樣差不多的東西
link |
30:02.000
現在已經會被reject了
link |
30:04.000
講給大家已經覺得說
link |
30:05.000
linear的東西
link |
30:06.000
分析的已經差不多了
link |
30:08.000
所以接下來就是
link |
30:10.000
更general的case
link |
30:11.000
因為linear的network
link |
30:14.000
簡單來說就沒有什麼用
link |
30:16.000
我們真正處理問題的時候
link |
30:18.000
我們需要的是
link |
30:19.000
nonlinear的network
link |
30:21.000
但是問題就是
link |
30:22.000
nonlinear的network
link |
30:24.000
到底長什麼
link |
30:26.000
到底長什麼樣子呢
link |
30:28.000
事實上在這篇paper裡面
link |
30:30.000
deep learning without
link |
30:32.000
破local minima
link |
30:33.000
這篇paper裡面
link |
30:34.000
它試著證明了
link |
30:36.000
nonlinear的deep network
link |
30:38.000
但它用的方式非常的怪異
link |
30:41.000
如果你看它的
link |
30:42.000
abstract introduction
link |
30:44.000
你會以為說
link |
30:45.000
原來所有deep的network
link |
30:47.000
不管linear nonlinear
link |
30:48.000
通通沒有local minima
link |
30:49.000
太強了
link |
30:50.000
但是其實你之後仔細看一下
link |
30:52.000
發現說
link |
30:53.000
它只真的證了linear的network
link |
30:56.000
如果是nonlinear的network
link |
30:57.000
它用一個非常奇怪的假設
link |
30:59.000
告訴你說根據這兩個assumption
link |
31:01.000
linear network等於nonlinear network
link |
31:03.000
那兩個assumption是完全不合理的
link |
31:05.000
然後我就不打算講那兩個assumption
link |
31:07.000
因為如果講了
link |
31:08.000
等一下大家問到頭炸裂
link |
31:10.000
因為那個就是不合理的
link |
31:11.000
所以接下來要怎麼證呢
link |
31:14.000
就很多人會試著想要去往說
link |
31:16.000
deep learning
link |
31:18.000
一般的general deep network
link |
31:20.000
是沒有破local minima
link |
31:23.000
就只有global minima
link |
31:24.000
這個方向去證明
link |
31:25.000
但是發現非常困難
link |
31:27.000
那你何不反過來問呢