back to index

Deep Learning Theory 2-1: When Gradient is Zero


link |
00:00.000
講Deep Learning的Optimization
link |
00:03.360
那先前情提要一下
link |
00:05.600
上週我們講了什麼
link |
00:07.100
上週我們想要講的是
link |
00:09.000
為什麼Deep Network的這個Deep的Structure
link |
00:12.300
它是一個好的Structure
link |
00:14.700
那我們告訴大家說
link |
00:16.100
假設你要描述同樣的Function
link |
00:19.800
那用Deep的Structure是比較有效率的
link |
00:22.400
你可以用比較少的Neural
link |
00:24.400
就可以描述同樣的Function
link |
00:27.000
那今天我們要說的是什麼
link |
00:28.300
今天我們要說的是說
link |
00:29.800
假設我們定出了一個Deep的Network
link |
00:32.100
那我們上週講過說Deep的Network
link |
00:34.300
它代表了一個Function的Space
link |
00:37.200
那怎麼在這個Function的Space裡面
link |
00:39.500
找出那個我們要找的最好的Function
link |
00:42.700
就我們要找那個最好的Function
link |
00:44.600
這邊寫做Fstar
link |
00:46.600
那Deep的Network它定義了一個Function的Space
link |
00:50.500
這邊用藍色的圈圈來表示它
link |
00:52.800
怎麼在這個Function的Space裡面
link |
00:54.500
大海撈針撈出這個Fstar
link |
00:57.300
那就是今天我們要講的主題
link |
01:00.600
那這個從Function的Space裡面
link |
01:02.200
撈出Fstar的這個過程
link |
01:04.400
叫做Optimization
link |
01:07.600
那這邊更正式的用Formulation來講一下
link |
01:11.600
我這邊指的Optimization是什麼
link |
01:14.100
我們有一個Network
link |
01:15.900
這個Network我們這邊寫做Fx
link |
01:19.000
它一個下標Seda
link |
01:20.400
那我們今天代入不同的Seda
link |
01:22.500
Seda指的是Network的參數
link |
01:24.300
也就是Neural的Weight跟Bias
link |
01:26.000
代入不同的Weight跟Bias
link |
01:27.800
我們就得到了不同的Function
link |
01:30.400
接下來我們有一些收集好的TrainingData
link |
01:34.000
這邊TrainingData
link |
01:37.300
X1代表Network的Input
link |
01:39.800
Yhat代表正確的
link |
01:42.000
我們希望Network所Output的Target
link |
01:45.500
那就會收集一大堆訓練資料
link |
01:47.300
這邊從X1 Y1 hat到Xr Yr hat
link |
01:52.300
接下來我們會定義一個LossFunction
link |
01:55.100
那這其實都是我們過去機器學習講過的東西
link |
01:58.000
只是很快再跟大家複習一下
link |
02:00.500
這個LossFunction長什麼樣子呢
link |
02:02.400
我們說這個LossFunction
link |
02:04.100
它是一個參數的Function
link |
02:06.600
它告訴我們說一組參數Seda
link |
02:08.600
它到底是好還是不好
link |
02:10.600
那怎麼定義一組參數是好還是不好呢
link |
02:13.400
你現在Summation over你所有的TrainingData
link |
02:17.300
把TrainingData裡面的X
link |
02:19.300
其中某一個X Xr
link |
02:21.100
代到這個FunctionF裡面
link |
02:22.500
它會給你一個Output
link |
02:24.300
把這個Output跟Yr hat去計算一下
link |
02:27.700
它之間的相似度
link |
02:29.200
至於怎麼要計算相似度
link |
02:30.600
你可以有不同的算法
link |
02:31.700
在不同的Case裡面
link |
02:33.200
你會用不同的算法
link |
02:34.600
如果是Regression的Problem
link |
02:36.000
你會用Mean Square Error
link |
02:37.300
如果是分類的問題
link |
02:38.700
你可能會用這個Binary
link |
02:41.200
你可能會用這個Cross Entropy
link |
02:43.200
那總之你會定義不同的LossFunction
link |
02:46.000
去計算這兩項之間的距離
link |
02:49.300
然後把它們通通加起來
link |
02:50.900
然後你要Minimize這個Total Loss大L
link |
02:54.900
那我們要解的問題就是這個樣子
link |
02:56.800
找一組參數Theta
link |
02:58.700
這個Theta代表Network的參數
link |
03:00.900
我們希望找一組參數
link |
03:02.400
它可以讓Total Loss大L的值
link |
03:05.200
越小越好
link |
03:06.400
那這個可以讓Total Loss大L的值
link |
03:08.700
最小的那一組參數
link |
03:10.100
我們就叫做Theta
link |
03:12.400
Theta star
link |
03:14.500
那現在的問題來了
link |
03:18.400
在一般的狀況下
link |
03:20.400
這個Evolution of Theta
link |
03:22.300
它不是Convex的
link |
03:25.600
你就算不知道Convex是什麼
link |
03:27.200
也沒有關係
link |
03:28.000
因為Convex也不是這門課的重點
link |
03:31.900
我們有別的課的這個
link |
03:34.000
Tool函數最佳化
link |
03:35.100
已經會告訴大家Convex是什麼
link |
03:37.200
所以我們這邊不會強調Convex是什麼
link |
03:40.000
你只要知道說
link |
03:41.100
Deep Learning所定義出來的Loss Function
link |
03:43.000
它不是Convex的
link |
03:44.500
那如果一個Loss Function是Convex的
link |
03:46.900
你在做Optimization
link |
03:48.200
就是找一組參數
link |
03:49.100
去最小化這個Loss的時候
link |
03:51.100
你會有種種讓你覺得很高興的性質
link |
03:54.500
舉例來說
link |
03:55.400
你可以保證你一定可以找到Global Minima
link |
03:58.500
然後Convergence的Rate一定有多大等等
link |
04:02.100
但是這些機會
link |
04:03.500
並不是屬於Deep Learning的
link |
04:05.500
Deep Learning
link |
04:06.200
聽得懂這樣
link |
04:07.800
這些機會並不是屬於Deep Learning的
link |
04:10.400
因為它不是一個Convex的Problem
link |
04:14.800
那In General而言
link |
04:16.900
假設一個Optimization Problem
link |
04:18.700
你要Optimize的那個對象
link |
04:20.500
那個Loss Function是Non-Convex
link |
04:23.100
那這個問題是一個NP-Hard的問題
link |
04:26.600
如果你不知道NP-Hard是什麼
link |
04:27.800
有沒有關係
link |
04:28.300
只要知道說
link |
04:29.100
這是一個很難的問題就對了
link |
04:32.400
但是有趣的事情是
link |
04:35.700
我們知道說
link |
04:36.900
Deep Learning它的Loss Function不是Convex的
link |
04:40.000
等一下會稍微解釋一下為什麼
link |
04:41.800
它很顯然不是Convex的
link |
04:43.800
它不是Convex的
link |
04:45.200
它是Non-Convex的
link |
04:46.500
In General Non-Convex是一個非常困難的問題
link |
04:49.400
但是Deep Learning沒有我們想像的那麼困難
link |
04:54.100
因為你知道
link |
04:55.500
通常我們今天要Optimize Deep Learning的Network的時候
link |
05:00.000
我們其實只要用Gradient Descent這種方法
link |
05:03.200
我們就可以
link |
05:04.300
通常就可以得到不錯的Solution
link |
05:06.700
所以今天要問的問題就是
link |
05:08.500
為什麼我們能夠用Gradient Descent
link |
05:11.300
就得在一個顯然不是Convex的Optimization Problem下
link |
05:16.600
就得到不錯的Solution
link |
05:19.200
那理解這件事情
link |
05:20.600
對Deep Learning是非常有幫助的
link |
05:22.400
因為我們在前一門課裡面只說
link |
05:24.300
Deep Learning它是一個非常強大的方法
link |
05:27.400
但是假如沒有一個很好的Optimization方法
link |
05:30.300
可以讓我們從那個Function的Space裡面
link |
05:32.300
找出我們要的那個Function
link |
05:34.000
就算是Deep Network所定義出來的Function Space
link |
05:36.500
是一個好的Space
link |
05:37.700
那其實也是沒有太大的用處
link |
05:40.000
像有些招式威力非常的強
link |
05:42.100
但是假設使用起來非常困難的話
link |
05:44.200
它其實也不是一個非常好用的招式
link |
05:46.400
我可以想到最Typical的例子就是八門盾甲
link |
05:49.900
八門盾甲大家知道嗎
link |
05:51.300
就是你開了體內的死門以後
link |
05:53.500
你就會死掉
link |
05:54.400
然後你就會瞬間得到跟火影一樣強的力量
link |
05:57.200
而且後來我們大家也知道說
link |
05:58.300
火影其實是沒有很強的
link |
06:02.200
沒有尾獸跟血輪也都不好意思出去跟別人打招呼
link |
06:06.400
所以其實
link |
06:08.100
我們八門盾甲就是沒有什麼用的方法
link |
06:10.400
所以我現在想要知道的是說
link |
06:11.800
Deep Learning它的Optimization
link |
06:13.300
是非常困難的跟八門盾甲一樣
link |
06:15.600
還是是像血輪也那種每個人都有的一樣呢
link |
06:20.000
好那這邊在繼續講下去之前
link |
06:22.100
要強調一件事情就是
link |
06:23.500
Optimization其實不等於Learning
link |
06:26.800
Optimization和Learning是有差別的
link |
06:29.600
它的差別在哪裡
link |
06:31.000
它的差別在於說
link |
06:32.500
今天在做Learning的時候
link |
06:34.600
不管你是Deep Learning還是其他Learning的方法
link |
06:37.200
你做完Optimization
link |
06:39.100
找出了最好的這個參數Theta Star以後
link |
06:42.300
你要把這個Theta Star
link |
06:43.700
Apply到你沒有看過的Data上
link |
06:45.800
那你希望你找出來的Theta Star
link |
06:48.500
它Learn在
link |
06:49.800
它Optimize在你看過的Training Data上
link |
06:52.800
但是在Testing Data上也要有好的結果
link |
06:56.200
那至於要怎麼做到這件事
link |
06:58.200
怎麼做Generalize
link |
06:59.500
怎麼在Training Data上
link |
07:00.500
Train出來的Model可以Apply在Testing Data上
link |
07:02.600
不是我們今天這一門課要探討的內容
link |
07:04.800
我們今天這一門課呢
link |
07:06.200
這一堂課呢
link |
07:07.700
我們只專注在Optimization這件事情上
link |
07:10.800
我們只問
link |
07:12.000
今天Loss Function給我們了
link |
07:14.100
你能不能夠找到一個Theta Star
link |
07:16.200
讓Loss Function的值最小
link |
07:18.600
那至於找了這個Theta
link |
07:19.900
讓Loss Function的值最小的Theta Star
link |
07:21.800
找出來以後會不會Overfeed
link |
07:23.400
那這個不是我們現在關心的問題
link |
07:27.500
好那接下來這一頁投影片
link |
07:28.800
想要跟大家說明的事情是
link |
07:30.900
為什麼Deep Learning所定義出來的Loss Function
link |
07:34.000
它很顯然並不是Convex的
link |
07:38.100
那假設你不知道什麼是Convex的話
link |
07:40.500
那我們這邊呢
link |
07:41.400
不會給大家嚴謹的定義
link |
07:42.900
但是你就很直覺的想說
link |
07:44.600
所謂的Convex的Function
link |
07:46.500
它的形狀呢
link |
07:47.500
就像是一個碗一樣
link |
07:49.600
像是一個碗一樣
link |
07:50.700
像右邊這個圖這樣
link |
07:53.200
那怎麼檢查一個Function是不是Convex的呢
link |
07:56.400
你可以把這個Function的這個
link |
07:59.700
它的這個Input的任意兩點呢
link |
08:02.500
連起來
link |
08:03.500
而如果把任意兩點連起來
link |
08:05.000
你發現說連起來的這個直線
link |
08:07.400
它的值啊
link |
08:08.300
都大過於這個Function本身的值
link |
08:10.700
那它就是Convex了
link |
08:13.000
就是這麼直覺
link |
08:15.400
那接下來我們就是要說
link |
08:17.200
今天根據這個Deep的Network
link |
08:19.600
所定出來的Loss Function
link |
08:22.100
它很有可能沒有辦法滿足這個Convex的特性
link |
08:27.100
怎麼說呢
link |
08:28.300
首先啊
link |
08:29.700
我們其實可以非常直覺的知道說
link |
08:33.200
一個Deep的Network
link |
08:35.300
所定義出來的Loss Function
link |
08:37.800
它有非常非常多的Global Minima
link |
08:42.300
就是它有很多的Minima
link |
08:45.000
這些Minima的值都是最小的
link |
08:49.500
怎麼
link |
08:50.000
大家可以聽得懂我的意思嗎
link |
08:51.200
怎麼說呢
link |
08:52.200
怎麼說呢
link |
08:53.300
因為其實我們今天把一個Network裡面的
link |
08:56.800
任意兩個Neuron的順序對調
link |
09:00.000
我們就產生一組新的Network的參數
link |
09:03.200
但是我們卻不會改變Loss的值
link |
09:06.100
舉例來說
link |
09:06.700
我們看下面這一個示意圖
link |
09:08.900
我們這邊呢
link |
09:10.000
有一個Network
link |
09:11.400
這是Input
link |
09:12.400
這是Hidden Layer
link |
09:13.600
這是Output
link |
09:15.000
那我們假設說
link |
09:16.300
現在這個Network它的參數
link |
09:19.100
我們找到一組參數
link |
09:20.600
這個參數呢
link |
09:21.700
可以讓Loss的值最小
link |
09:24.000
我們找到一個Global Minima
link |
09:26.200
它的參數呢
link |
09:27.400
是長這個樣子
link |
09:29.800
是長這個樣子
link |
09:31.100
我們找到一個Global Minima
link |
09:32.400
可以讓Loss的值最小
link |
09:33.900
它的參數是像左邊這個圖這樣
link |
09:37.200
接下來
link |
09:38.100
我們可以調換這些Weight的順序
link |
09:41.900
我們說
link |
09:42.700
我們把黑色的這個Neuron擺到中間
link |
09:46.300
把深灰色的這個Neuron放到左邊
link |
09:48.700
把淺灰色的Neuron擺到最右邊
link |
09:51.500
我們就把這邊的每一個Neuron
link |
09:53.600
都移動一下位置變成右邊
link |
09:56.600
這一個Network
link |
09:59.000
那接下來
link |
10:00.500
假設
link |
10:02.200
就是說假設呢
link |
10:03.500
這個最深的這三條黑色的線
link |
10:05.900
它的參數
link |
10:06.900
跟最深的這三條黑色的線
link |
10:09.300
它的參數是一樣的
link |
10:10.800
這三個淺灰色
link |
10:12.200
這三個深灰色的參數
link |
10:13.700
跟這三個深灰色的參數是一樣的
link |
10:16.000
這三個淺灰色的參數
link |
10:17.300
跟這三個淺灰色的參數是一樣的
link |
10:19.700
這邊跟它是一樣的
link |
10:21.500
這邊跟它是一樣的
link |
10:23.100
這邊跟它是一樣的
link |
10:24.500
以此類推
link |
10:25.500
那你覺得
link |
10:26.700
這兩個Network
link |
10:28.100
它們所得到的Loss
link |
10:29.800
是一樣的
link |
10:30.900
還是不一樣的呢
link |
10:33.200
給你三秒鐘的時間想一下
link |
10:35.300
你覺得它是
link |
10:36.300
一樣的同學舉手一下
link |
10:38.900
好 手放下
link |
10:39.600
你覺得它是不一樣的同學舉手一下
link |
10:41.600
好 沒有人
link |
10:42.300
所以所有人都覺得
link |
10:43.800
這兩個Network它的參數
link |
10:45.300
它的Loss是一樣的
link |
10:47.500
假設左邊這個Network
link |
10:49.100
它已經是一個Global Minima
link |
10:51.000
那右邊的這個Network
link |
10:52.400
它也是一個Global Minima
link |
10:54.800
用這樣的方法
link |
10:55.900
你就可以製造出一大堆的
link |
10:58.300
Global Minima
link |
10:59.500
但是它們的參數是不同的
link |
11:01.300
但是它們都是Global Minima
link |
11:04.200
link |
11:04.700
有人可能會問說
link |
11:06.400
為什麼這兩個參數是不同的
link |
11:09.300
有人會說
link |
11:09.800
這個參數不是一樣的
link |
11:10.900
它們是不同的
link |
11:11.600
因為你在定義那個參數的時候
link |
11:13.900
你會把這邊所有
link |
11:14.800
假設你把所有的參數都拿出來
link |
11:16.700
排成一個項量
link |
11:19.500
這個是項量的第一位
link |
11:21.500
這個是第二位
link |
11:22.500
這個是第三位
link |
11:23.400
這個是第一位
link |
11:24.200
這個是第二位
link |
11:24.900
這個是第三位
link |
11:25.800
這兩組參數看起來是不一樣的
link |
11:28.000
但它們算出來的Loss是一樣的
link |
11:31.300
link |
11:31.800
所以呢
link |
11:32.600
今天假如你看Loss的話
link |
11:34.800
這兩組不同的參數
link |
11:36.400
它們有同樣的Loss
link |
11:39.600
它們都是
link |
11:40.600
而且它們都是Global Minima
link |
11:42.700
那假設把這兩個Network
link |
11:44.700
它們的參數
link |
11:45.600
直接做Linear Interpolation
link |
11:48.000
你得到一個新的Network
link |
11:50.400
你得到的Loss
link |
11:53.400
有可能比這兩個參數還要低嗎
link |
11:58.300
那因為它的Global Minima
link |
11:59.500
可能不會比較低
link |
12:00.700
但是會跟它一樣嗎
link |
12:02.300
可能機會也非常渺茫
link |
12:04.800
所以今天假設你拿到兩組參數
link |
12:07.900
把它們做Interpolation
link |
12:09.600
因為Network本身是Non-Linear的
link |
12:11.900
所以你做Interpolate以後
link |
12:14.200
你的Loss可能會比
link |
12:15.600
這個Global Minima得到的Loss還要高
link |
12:18.700
那假設這個狀況發生的話
link |
12:21.000
你就會發現說
link |
12:22.400
今天Deep The Network所定義出來的
link |
12:25.200
這個Loss Function
link |
12:27.400
它不是一個Convex的Function
link |
12:30.300
所以總之
link |
12:32.400
其實我覺得不太需要花時間說服大家說
link |
12:35.200
Deep The Network是Non-Convex的
link |
12:37.100
因為很直覺的就知道說
link |
12:38.700
它就是Non-Convex的
link |
12:40.900
但是接下來的重點是
link |
12:42.900
Non-Convex並不代表困難
link |
12:46.100
我們雖然知道說
link |
12:46.900
In General Non-Convex Optimization
link |
12:49.100
是NP-Hard的問題
link |
12:50.900
但是並不代表所有
link |
12:52.900
欸?這什麼東西啊?
link |
12:55.700
喔!感覺好像沒有錄到的那種感覺喔
link |
12:58.300
我們把它
link |
13:00.200
好,那我們接下來要講的是說
link |
13:02.300
其實Non-Convex啊
link |
13:04.500
並不代表說它一定是一個很困難的問題
link |
13:08.000
In General而言Non-Convex Optimization是困難的
link |
13:11.100
但也許Deep The Network所製造出來的
link |
13:15.100
Loss Function它的樣子
link |
13:17.100
是某種特殊的樣子
link |
13:19.200
讓我們可以用Gradient Descent的方法
link |
13:22.000
就去做Optimization
link |
13:24.000
好,所以這節短片想要說的事情是這樣
link |
13:26.400
嗯,哎呀
link |
13:30.400
In General
link |
13:32.400
Non-Convex Optimization可能很困難
link |
13:34.800
你沒有辦法用Gradient Descent的方法
link |
13:36.800
找到Global Optimum
link |
13:39.200
但是有沒有可能
link |
13:40.900
Deep Learning定義出來的
link |
13:42.400
Non-Convex的這個Function
link |
13:44.900
其實是比較簡單的Function
link |
13:47.800
舉例來說這個Function
link |
13:49.800
它不是Convex的
link |
13:52.500
怎麼知道它不是Convex的
link |
13:54.100
你取這兩個點
link |
13:56.100
把它連起來
link |
13:57.600
直線是比那個
link |
13:59.800
呃,呃,曲線還要低的
link |
14:02.200
所以它不是Convex的
link |
14:03.800
但是你用Gradient Descent的方法
link |
14:06.400
不管從這邊走下來
link |
14:08.000
還是從這邊走下來
link |
14:09.500
都可以走到Global Minimum
link |
14:11.400
所以Gradient Descent可以Optimize這一個
link |
14:14.200
Loss Function
link |
14:15.600
那你可能會說,哎
link |
14:17.200
Deep Learning不太可能是這樣吧
link |
14:19.200
因為我們剛才已經看到說
link |
14:21.000
Deep Learning它顯然有好多個
link |
14:23.800
Global
link |
14:25.200
Global的
link |
14:27.200
Optimum
link |
14:28.200
它有好多的這個
link |
14:30.400
這個Global的Minimum
link |
14:32.800
但是有沒有可能
link |
14:34.400
它就只有
link |
14:36.000
Global的Minimum而已
link |
14:38.000
這個Non-Convex的Function
link |
14:40.200
它有很多的
link |
14:42.000
Global Minimum
link |
14:43.400
但是
link |
14:44.400
它沒有任何
link |
14:45.800
不是它沒有任何的Local Minimum
link |
14:48.800
所有的Minimum
link |
14:50.800
它通通都是Global Minimum
link |
14:53.000
有沒有可能
link |
14:54.000
Deep的Network所定義出來的
link |
14:56.200
Loss Function
link |
14:57.200
其實是長這個樣子
link |
14:58.400
如果是長這個樣子的話
link |
15:00.200
你不管是Initial
link |
15:02.000
從哪邊開始做Gradient Descent
link |
15:04.000
你最後可能會走到
link |
15:06.000
不同的點
link |
15:06.800
找到不同的Solution
link |
15:08.400
但是通通都是
link |
15:10.200
Optimal的Solution
link |
15:12.200
好,所以今天這就是我們要講的
link |
15:14.200
首先會跟大家複習一下
link |
15:16.600
什麼是Hessian
link |
15:18.000
也許有很多同學知道Hessian
link |
15:19.800
但是我們在Machine Learning那一堂課
link |
15:22.400
是沒有講過Hessian的
link |
15:24.000
所以我們來跟大家介紹一下
link |
15:26.000
什麼是Hessian
link |
15:27.200
這個在接下來的分析裡面
link |
15:29.600
是非常有用的
link |
15:31.400
好,那
link |
15:32.400
講完了這個Background的知識以後
link |
15:35.000
會分析一下Deep的Linear的Network
link |
15:37.600
再拓展到Non-Linear的Network
link |
15:41.400
最後說一些現在多數人
link |
15:44.400
對這個Deep Learning的Aero Surface的想像
link |
15:47.800
然後如果最後有時間的話
link |
15:49.400
講一些Empirical的Observation
link |
15:53.600
好,那我們就先從Hessian的Matrix開始講起
link |
15:58.000
什麼時候我們會需要用到Hessian的Matrix呢
link |
16:01.400
當你今天做Gradient Descent
link |
16:03.200
然後發現今天Gradient非常趨近於0的時候
link |
16:06.800
也就是你走到了一個Critical Point
link |
16:09.400
這個時候你就會用這個Hessian來進行分析
link |
16:16.000
那我們知道在Trend Network的時候
link |
16:18.400
我們就是用Gradient Descent
link |
16:20.800
那通常我們相信Trend使用Gradient Descent
link |
16:24.400
最後我們會走到一個地方
link |
16:26.800
最後我們會不斷Update參數
link |
16:28.600
參數會Update到某一個地方
link |
16:30.400
這個地方呢
link |
16:31.400
它的Gradient是非常接近0的
link |
16:34.800
那當Gradient非常接近於0的時候
link |
16:36.800
Gradient Descent這個方法就會停下來
link |
16:40.000
那那些Gradient非常接近於0的點
link |
16:43.600
我們叫它Critical Point
link |
16:47.800
所以我們今天用Gradient Descent的時候呢
link |
16:50.200
這個是你在做Gradient Descent的時候
link |
16:52.000
你常常會看到的圖
link |
16:53.200
這個橫軸是Empirical的數目
link |
16:55.400
縱軸是你的這個Loss
link |
16:57.600
你可以觀察到說隨著Empirical越來越多
link |
17:00.000
Loss越來越低
link |
17:01.200
最後就停下來了
link |
17:03.000
那通常我們相信說停下來
link |
17:04.800
是因為現在已經走到某一個地方
link |
17:07.800
那個地方的Gradient非常趨近於0
link |
17:11.000
那很多人都會跟你講說
link |
17:12.600
噢今天Gradient非常趨近於0
link |
17:14.800
就是卡在Local Minima
link |
17:16.800
如果比較或者是Double Minima
link |
17:19.200
我們走到了一個Minima的地方
link |
17:21.200
所以Gradient是0
link |
17:22.600
所以今天Trending停下來了
link |
17:25.200
但是如果你今天在寫Paper的話
link |
17:27.400
如果你隨便講說
link |
17:28.800
噢我到了一個Local Minima
link |
17:30.800
你一定就會被做Deep Learning的人嗆到爆炸這樣子
link |
17:34.000
因為其實當你Trend發現停下來的時候
link |
17:38.000
你不要隨隨便便講說
link |
17:40.200
你是走到Local Minima
link |
17:42.000
因為你有可能你走到的地方
link |
17:44.200
其實是一個Settle Point
link |
17:47.000
因為Settle Point它是
link |
17:49.000
所謂Settle Point是什麼
link |
17:50.400
Settle Point就是它不是極值
link |
17:52.200
它不是Maxima不是Minima
link |
17:54.000
但是它的歸原也是0的地方
link |
17:56.200
就叫做Settle Point
link |
18:00.200
那接下來要問的問題是
link |
18:03.400
怎麼分辨說現在在Gradient是0的地方
link |
18:06.800
它是Settle Point還是一個Minima或者是Maxima呢
link |
18:11.000
這個時候你就需要用到Hessian Matrix這個東西
link |
18:15.000
什麼是Hessian Matrix呢
link |
18:18.000
之前我們在講Gradient Descent的時候
link |
18:20.600
我們在Machine Learning那一課有跟大家推導過Gradient Descent
link |
18:24.800
那Gradient Descent是怎麼推導出來的呢
link |
18:27.400
我們先寫了這一個式子
link |
18:30.400
這個式子告訴我們說
link |
18:33.400
任何的Function f of Theta
link |
18:36.800
就這個不限於Deep Learning
link |
18:38.800
任何的Function假設它的參數是Theta的話
link |
18:41.200
都滿足下面這個特性
link |
18:43.200
任何的Function f of Theta
link |
18:46.200
都可以寫成f of Theta0
link |
18:48.800
Theta0就是某一個Specific的參數
link |
18:52.800
f of Theta0加上
link |
18:54.800
這邊我們假設我們的這個參數
link |
18:56.800
就是用一個Vector來表示它
link |
18:59.200
所以我想大家應該知道我的意思
link |
19:01.200
這個f of Theta0加上Theta-Theta0的Transpose乘上G
link |
19:07.200
再加上1 2 Theta-Theta0的Transpose乘上h
link |
19:11.200
再乘上Theta-Theta0
link |
19:14.200
這個式子是什麼意思呢
link |
19:15.200
我們先看一下第一項
link |
19:17.200
第一項的這個G
link |
19:19.200
它叫做Gradient
link |
19:21.200
這個Gradient它是一個Vector
link |
19:23.800
這個Vector的每一維是哪來的
link |
19:26.800
每一維就是我們拿Theta的某一個Dimension
link |
19:30.800
去對f這個Function做微分
link |
19:33.800
算它在Theta0這個地方
link |
19:35.800
微分的值
link |
19:37.800
那就得到G這個Vector的第i為GI
link |
19:41.800
所以G是一個Vector
link |
19:43.800
Theta-Theta0也是一個Vector
link |
19:46.800
我們把這個Vector做Transpose乘上G以後
link |
19:49.800
我們得到一個Scalar
link |
19:51.800
那這個G這個Vector
link |
19:54.800
有時候我們會把它寫成這個樣子
link |
19:56.800
用一個倒三角形
link |
19:58.800
就把這個倒三角形放在FunctionF前面
link |
20:02.800
代表Gradient
link |
20:03.800
那Gradient其實就是一個Vector
link |
20:06.800
那後面h是什麼呢
link |
20:08.800
這個h就是我們今天要介紹的Hesitant
link |
20:11.800
那Hesitant它是一個Matrix
link |
20:14.800
那假設現在這個Theta它是一個n維的向量
link |
20:18.800
那h就是一個n-by-n維的向量
link |
20:24.800
那這個h這個
link |
20:26.800
不是n-by-n維的向量
link |
20:28.800
n-by-n維的Matrix
link |
20:30.800
n-by-n維的矩陣
link |
20:32.800
那這個矩陣的第i一個Row
link |
20:36.800
第這個Column
link |
20:38.800
它裡面的值是
link |
20:40.800
你拿Theta的第id這個參數
link |
20:43.800
去對F做偏微分
link |
20:46.800
然後再拿第i的參數
link |
20:49.800
去對F做偏微分
link |
20:52.800
去在Theta0這個位置
link |
20:54.800
對Thetaj的偏微分
link |
20:56.800
還有再對Thetai的偏微分
link |
20:58.800
這個叫做hij
link |
21:02.800
好那其實我們知道呢
link |
21:05.800
假設今天某一個Function
link |
21:08.800
它的二次微分是continuous的
link |
21:12.800
那先對這一個參數做微分
link |
21:15.800
再對第i一個參數做微分
link |
21:17.800
等於先對第i一個參數做微分
link |
21:19.800
再對第j一個參數做微分
link |
21:22.800
假設你不知道這個在說什麼的話
link |
21:23.800
反正你就記得說
link |
21:24.800
先拿第j一個參數做微分
link |
21:27.800
然後再拿第i一個參數做微分
link |
21:29.800
其實跟先拿第i一個參數做微分
link |
21:31.800
再第j一個參數做微分
link |
21:33.800
其實是一樣的
link |
21:34.800
在我們這門課你會遇到的問題裡面
link |
21:36.800
它們都是一樣的
link |
21:38.800
所以今天hij等於hji
link |
21:42.800
也就是說
link |
21:43.800
hij這個matrix呢
link |
21:45.800
它是對稱
link |
21:47.800
講到這邊大家有問題要問嗎
link |
21:51.800
ok吼
link |
21:53.800
我們現在呢
link |
21:54.800
就定義了一個matrix呢
link |
21:55.800
它叫做hij
link |
21:57.800
那這個hij呢
link |
21:58.800
它長的是這一個樣子
link |
22:01.800
定義這個hij以後
link |
22:02.800
我們發現根據hij
link |
22:04.800
根據j
link |
22:05.800
我們其實可以來描述一個Function
link |
22:08.800
F of Theta
link |
22:09.800
但這個描述其實是一個approximate
link |
22:11.800
後面還有其他的項
link |
22:14.800
不過呢
link |
22:15.800
今天如果Theta跟Theta0非常接近的時候
link |
22:17.800
其他的項呢
link |
22:19.800
是可以忽略不計的
link |
22:23.800
link |
22:24.800
那今天這個h啊
link |
22:26.800
它其實決定了
link |
22:28.800
我們現在這個Function F的coverture
link |
22:32.800
什麼意思呢
link |
22:33.800
今天如果我們沒有考慮後面這個h這一項
link |
22:37.800
有包含h這一項
link |
22:39.800
我們只考慮前面這一項
link |
22:42.800
那如果我們現在的F of Theta呢
link |
22:45.800
它是藍色的這一條曲線
link |
22:47.800
那這邊呢
link |
22:48.800
是假設參數只有一個啦
link |
22:50.800
就叫做x
link |
22:51.800
但實際上你的參數是無窮
link |
22:53.800
是非常多
link |
22:54.800
有上百萬個
link |
22:55.800
所以其實是一個
link |
22:56.800
link |
22:57.800
你的參數其實是在一個非常高危的空間中
link |
22:59.800
不過這個圖呢
link |
23:00.800
是為了簡單起見
link |
23:01.800
所以就假設呢
link |
23:02.800
參數只有一個
link |
23:04.800
假設你的F of x是
link |
23:06.800
藍色的這一條線
link |
23:08.800
那如果你不考慮h這一項
link |
23:10.800
只考慮前面這兩項
link |
23:12.800
只考慮F of Theta0
link |
23:14.800
跟Gradient這一項的話
link |
23:16.800
那你得到的
link |
23:17.800
其實是
link |
23:18.800
綠色的這一條曲線
link |
23:21.800
那你會發現說
link |
23:22.800
實際上
link |
23:23.800
藍色的曲線
link |
23:25.800
不是藍色的曲線
link |
23:26.800
藍色的實線
link |
23:27.800
也就是F of Theta
link |
23:28.800
真正的樣子
link |
23:29.800
是比
link |
23:30.800
這個綠色的曲線還要低的
link |
23:32.800
為什麼
link |
23:33.800
因為我們少算了這一項
link |
23:35.800
所以
link |
23:36.800
藍色跟綠色的曲線
link |
23:38.800
它們之間的差異
link |
23:39.800
就主要就是來自於
link |
23:41.800
h所定義的這一項
link |
23:43.800
所以
link |
23:44.800
今天呢
link |
23:45.800
我們這邊畫了不同的x
link |
23:47.800
畫了不同的x
link |
23:48.800
那如果今天呢
link |
23:49.800
我們畫了不同的這個F of x
link |
23:51.800
畫了不同藍色的曲線
link |
23:53.800
那如果今天藍色的曲線
link |
23:54.800
跟綠色的曲線
link |
23:55.800
有差異的話
link |
23:56.800
這個差異呢
link |
23:57.800
來自於
link |
23:58.800
h這一項
link |
24:00.800
那它們的差異
link |
24:01.800
link |
24:02.800
Gradient沒有關係
link |
24:03.800
是來自於
link |
24:04.800
h所決定的
link |
24:05.800
Curvature
link |
24:07.800
那有了這個h
link |
24:08.800
以後有什麼用呢
link |
24:10.800
其實我們可以用一個
link |
24:11.800
新的Optimization的方法
link |
24:13.800
這個Optimization的方法
link |
24:14.800
叫做
link |
24:15.800
Newton's Method
link |
24:17.800
而這個Newton's Method
link |
24:18.800
什麼意思呢
link |
24:19.800
這個Newton's Method是說
link |
24:21.800
我們知道
link |
24:22.800
F of Theta
link |
24:23.800
可以寫成這個樣子
link |
24:24.800
寫出來以後
link |
24:26.800
你敢不敢直接
link |
24:27.800
在這個Function裡面
link |
24:28.800
找一個歸零點是零的位置
link |
24:29.800
一步
link |
24:30.800
就走到一個
link |
24:31.800
Local Minima
link |
24:32.800
或是Set of Point
link |
24:33.800
結束這樣子
link |
24:34.800
你可能會想說
link |
24:35.800
有這麼強大的招數
link |
24:37.800
當初都是用
link |
24:38.800
Gradient Descent的時候
link |
24:39.800
怎麼不用呢
link |
24:40.800
你想想看
link |
24:41.800
在做Gradient Descent的時候
link |
24:42.800
Gradient Descent是怎麼來的
link |
24:43.800
Gradient Descent是
link |
24:45.800
就回憶一下
link |
24:46.800
假設你有修過
link |
24:47.800
Machine Learning的話
link |
24:48.800
我們講說
link |
24:49.800
在做Gradient Descent的時候
link |
24:50.800
我們是不考慮
link |
24:51.800
h這一項的
link |
24:52.800
我們假設
link |
24:53.800
F of Theta
link |
24:54.800
就等於第一個式子
link |
24:55.800
F of Theta0
link |
24:56.800
加上
link |
24:57.800
第二個式子
link |
24:58.800
Theta-Theta0的Transpose
link |
24:59.800
乘上G
link |
25:00.800
是沒有後面h這一項的
link |
25:02.800
在這個Case裡面
link |
25:03.800
我們其實是拿
link |
25:04.800
某一條直線
link |
25:07.800
就右邊這個式子
link |
25:08.800
假設你沒有考慮
link |
25:09.800
h這一項
link |
25:10.800
只有考慮
link |
25:11.800
前面兩項的話
link |
25:12.800
它其實是一條直線
link |
25:13.800
你是拿一條直線
link |
25:14.800
來近似
link |
25:15.800
我們現在
link |
25:16.800
Optimize的對象
link |
25:17.800
F of Theta
link |
25:18.800
黑色的線是這個
link |
25:19.800
黑色的線
link |
25:20.800
是F of Theta
link |
25:21.800
而這前兩項
link |
25:22.800
是綠色這一條直線
link |
25:24.800
事實上
link |
25:25.800
根據這一條直線
link |
25:26.800
你是找不到
link |
25:27.800
所謂的Gradient
link |
25:28.800
等於0的位置的
link |
25:29.800
因為在這一條直線上
link |
25:30.800
Gradient
link |
25:31.800
其實一直都是
link |
25:32.800
定值
link |
25:33.800
但實際的Function
link |
25:34.800
Gradient不是定值
link |
25:35.800
那只是因為說
link |
25:36.800
我們忽略了
link |
25:37.800
其他的
link |
25:38.800
更高次的項
link |
25:39.800
我們只考慮了
link |
25:40.800
第一項跟第二項而已
link |
25:42.800
那今天
link |
25:43.800
如果我們使用了
link |
25:44.800
Hessian的時候呢
link |
25:45.800
當我們考慮了
link |
25:46.800
這三項
link |
25:47.800
它加起來會像是
link |
25:49.800
紅色的
link |
25:50.800
這一條曲線
link |
25:51.800
那在紅色
link |
25:52.800
這一條曲線上
link |
25:53.800
我們就可以看到
link |
25:54.800
Gradient的變化
link |
25:56.800
我們希望可以
link |
25:57.800
把這一條
link |
25:58.800
紅色的曲線
link |
25:59.800
畫出來以後
link |
26:00.800
右邊
link |
26:01.800
前右邊這三項
link |
26:02.800
合起來是紅色的
link |
26:03.800
這一條曲線
link |
26:04.800
能不能有一個方法
link |
26:05.800
一步
link |
26:06.800
就找出這個
link |
26:07.800
紅色曲線
link |
26:08.800
最低的地方
link |
26:09.800
它Gradient是0的地方
link |
26:10.800
其實是可以的
link |
26:12.800
怎麼做呢
link |
26:13.800
你就把
link |
26:14.800
這一個式子
link |
26:15.800
取一下Gradient
link |
26:17.800
我們要找它
link |
26:18.800
這個式子
link |
26:19.800
Gradient是0的地方
link |
26:20.800
你就先取個Gradient
link |
26:22.800
然後再令它等於0
link |
26:24.800
link |
26:25.800
然後再看那個
link |
26:26.800
θ應該長什麼樣
link |
26:28.800
所以我們就
link |
26:29.800
左右兩邊
link |
26:30.800
通通取Gradient
link |
26:31.800
所以左右兩邊
link |
26:32.800
通通加上三角形
link |
26:34.800
加上三角形
link |
26:35.800
加上
link |
26:36.800
這項就沒有畫在圖上
link |
26:39.800
是因為
link |
26:40.800
θ0其實是一個constant
link |
26:42.800
所以加上三角形以後
link |
26:44.800
對它做微分的話
link |
26:46.800
只是0
link |
26:47.800
所以θ0是一個constant
link |
26:48.800
所以不用考慮它
link |
26:50.800
這一項
link |
26:51.800
加個三角形
link |
26:52.800
這一項
link |
26:53.800
前面加一個三角形
link |
26:55.800
接下來你要做的事情
link |
26:57.800
就是把
link |
26:59.800
這一項
link |
27:00.800
跟這一項
link |
27:01.800
計算出來
link |
27:03.800
那詳細的細節呢
link |
27:05.800
我們就不要講了
link |
27:06.800
你就自己回去
link |
27:07.800
怒算一發
link |
27:08.800
你就會發現說
link |
27:09.800
它是長這個樣子
link |
27:10.800
怎麼怒算一發呢
link |
27:12.800
舉例來說我們用
link |
27:13.800
這個第一項為例
link |
27:14.800
我們知道說Gradient就是
link |
27:16.800
所謂的Gradient就是
link |
27:18.800
這Gradient是一個vector
link |
27:19.800
這個vector的定i為
link |
27:20.800
就是拿θ的定i的參數
link |
27:23.800
去對這個三角形後面的東西
link |
27:25.800
做偏微分
link |
27:27.800
你就
link |
27:28.800
拿θi去對它做偏微分
link |
27:30.800
然後每一維都偏微分
link |
27:31.800
你就知道它長什麼樣子
link |
27:32.800
這個也是一樣
link |
27:33.800
你就拿θi去對每一維
link |
27:34.800
做偏微分
link |
27:35.800
你就知道它長什麼樣子
link |
27:36.800
反正算出來
link |
27:37.800
前面這一項是G
link |
27:39.800
後面這一項是H這個metric
link |
27:42.800
乘上θ-θ0
link |
27:44.800
θ-θ0是一個vector
link |
27:47.800
H是一個metric
link |
27:49.800
H這個metric乘上θ-θ0
link |
27:51.800
也得到一個vector
link |
27:53.800
好最後我們
link |
27:55.800
如果你不相信的話
link |
27:57.800
就自己回去慢慢算
link |
27:59.800
這個一定沒有錯的
link |
28:04.800
link |
28:05.800
所以我們今天知道什麼
link |
28:07.800
我們今天知道說
link |
28:08.800
F of θ的Gradient
link |
28:10.800
其實可以寫成
link |
28:12.800
G加上H
link |
28:14.800
乘上θ-θ0
link |
28:16.800
其實G就是一個vector
link |
28:18.800
H就是一個metric
link |
28:19.800
θ是未知的
link |
28:21.800
θ是參數
link |
28:22.800
θ是未知的
link |
28:23.800
θ0是已知的
link |
28:25.800
我們接下來想要做什麼
link |
28:26.800
我們希望
link |
28:27.800
Gradient這一項等於0
link |
28:29.800
然後接下來就是要解這個式子
link |
28:31.800
G加H乘上θ-θ0等於0
link |
28:34.800
然後看看θ是多少的時候
link |
28:35.800
可以讓這個式子成立
link |
28:37.800
怎麼做呢
link |
28:38.800
接下來就是很簡單的數學
link |
28:39.800
把G挪到右邊去
link |
28:41.800
變成-G
link |
28:42.800
所以H乘上θ-θ0等於-G
link |
28:46.800
然後呢
link |
28:47.800
那個H
link |
28:49.800
把它乘上H的inverse
link |
28:51.800
就可以把它趕到右邊去
link |
28:53.800
左右兩邊
link |
28:54.800
都乘上H的inverse
link |
28:57.800
就可以把它趕到右邊去
link |
29:01.800
所以θ-θ0等於-H的inverse
link |
29:04.800
為乘上G
link |
29:07.800
這邊其實我會遇到一個問題
link |
29:09.800
H這個metric
link |
29:10.800
這個H這個metric
link |
29:11.800
它可不可以
link |
29:14.800
它是不是invertible的呢
link |
29:16.800
它是一個symmetry的metric
link |
29:18.800
你覺得它是invertible的
link |
29:20.800
給大家三秒鐘的時間想一下
link |
29:22.800
感覺它是invertible的
link |
29:24.800
同學舉手一下
link |
29:25.800
它一定是invertible的
link |
29:26.800
同學舉手一下
link |
29:28.800
有一些同學舉手
link |
29:30.800
你覺得它
link |
29:31.800
有可能沒有辦法找到
link |
29:32.800
它的inverse的同學舉手一下
link |
29:35.800
也有一些同學舉手
link |
29:37.800
覺得沒有
link |
29:38.800
其實H
link |
29:39.800
你有可能找不到它的inverse
link |
29:41.800
你舉個例子
link |
29:42.800
並不是所有symmetry的metric
link |
29:44.800
都有它的inverse啊
link |
29:45.800
對不對
link |
29:46.800
比如說
link |
29:47.800
都是0
link |
29:48.800
對不對
link |
29:49.800
你可以找到
link |
29:50.800
你可以找到它的反例
link |
29:51.800
它有可能
link |
29:52.800
沒有辦法找到inverse
link |
29:53.800
所以沒有辦法找到inverse怎麼辦
link |
29:55.800
那就不能用這一招
link |
29:56.800
這樣子懂嗎
link |
29:57.800
所以這一招是
link |
29:59.800
對啊就是這樣
link |
30:00.800
所以這一招是在
link |
30:01.800
你算出來的那個H
link |
30:03.800
可以算它的inverse的時候
link |
30:05.800
你才可以用這招
link |
30:07.800
就是假設說
link |
30:08.800
正好它可以算inverse
link |
30:10.800
算它的inverse
link |
30:12.800
好啦
link |
30:13.800
所以我們知道什麼
link |
30:14.800
我們知道說
link |
30:15.800
其實
link |
30:16.800
怎麼這樣找到一個set啊
link |
30:18.800
讓它的歸點等於0
link |
30:19.800
這個會讓歸點等於0的set啊
link |
30:21.800
它就等於
link |
30:23.800
set0
link |
30:24.800
減掉H的inverse
link |
30:26.800
乘上G
link |
30:27.800
好所以呢
link |
30:28.800
我們只要
link |
30:30.800
算出這個式子
link |
30:31.800
就你現在從
link |
30:32.800
某一個起始點set0
link |
30:34.800
你在set0的地方
link |
30:35.800
算出它的Hinverse
link |
30:36.800
跟算出它的G
link |
30:38.800
你接下來就可以找到一個set啊
link |
30:40.800
這個set啊
link |
30:41.800
它的歸點是0
link |
30:43.800
好這個跟
link |
30:44.800
Gradient descent
link |
30:45.800
有點像又有點不像
link |
30:47.800
Gradient descent做的事情是說
link |
30:49.800
我們一開始一個初始的值set0
link |
30:51.800
我們在這個set0的地方
link |
30:53.800
算出Gradient G
link |
30:54.800
G會乘上一個learning rate
link |
30:56.800
這個eta是一個scalar
link |
30:58.800
是一個這個
link |
31:00.800
常數啊一個learning rate
link |
31:01.800
把這個eta呢
link |
31:02.800
乘上G再減下去
link |
31:04.800
然後減很多次以後
link |
31:05.800
最後希望你可以找到一個
link |
31:07.800
Gradient是0的地方
link |
31:09.800
但是如果你用Newton法呢
link |
31:11.800
你用Newton's method
link |
31:12.800
不用
link |
31:13.800
直接一步
link |
31:14.800
就走到Gradient是0的地方了
link |
31:19.800
好那這邊啊
link |
31:20.800
如果我們把這兩個式子
link |
31:21.800
就是這個是Newton's method
link |
31:23.800
這個是Gradient descent
link |
31:24.800
做比較的話
link |
31:25.800
你會發現哪裡不一樣呢
link |
31:27.800
不一樣的地方在
link |
31:28.800
Gradient descent是乘上一個常數
link |
31:30.800
Newton's method
link |
31:31.800
是乘上一個H的inverse
link |
31:34.800
乘上這個H的inverse
link |
31:35.800
有什麼好處
link |
31:36.800
第一個事情是
link |
31:37.800
它改變了Gradient的方向
link |
31:39.800
也就是說G呢
link |
31:40.800
可能告訴你說往這邊走
link |
31:42.800
但H覺得說
link |
31:43.800
往那邊走不是最好的
link |
31:45.800
它把這個G
link |
31:46.800
再乘一個H的inverse以後
link |
31:48.800
它就轉向了
link |
31:50.800
它就轉向了
link |
31:51.800
然後接下來呢
link |
31:52.800
這個H的inverse
link |
31:53.800
它本身就可以當作
link |
31:54.800
這個step size來看
link |
31:56.800
所以就不用再調什麼step size了
link |
31:59.800
或者是如果
link |
32:00.800
舉一個比較具體的例子
link |
32:02.800
假設你今天在這種
link |
32:04.800
看起來像是
link |
32:05.800
橢圓形的這種
link |
32:07.800
Loss function的上面
link |
32:09.800
然後呢
link |
32:10.800
你從這個地方開始
link |
32:12.800
Gradient descent
link |
32:13.800
你發現你走的方向是
link |
32:15.800
這個樣子
link |
32:16.800
然後再慢慢繞進來
link |
32:17.800
有同學可能會說
link |
32:18.800
怎麼捨近求遠
link |
32:20.800
如果從這個地方開始
link |
32:21.800
走這個方向
link |
32:23.800
你最低點在中間嘛
link |
32:24.800
你走這個方向才是捷徑啊
link |
32:26.800
但是Gradient descent
link |
32:27.800
不知道這件事
link |
32:28.800
Gradient descent在走的時候
link |
32:30.800
它完全只能看Gradient
link |
32:32.800
對不對
link |
32:33.800
你要知道要開天眼
link |
32:34.800
你才可以看到
link |
32:35.800
Loss function的全局
link |
32:36.800
所以每次
link |
32:37.800
實際上你每次
link |
32:38.800
只能夠看到Gradient
link |
32:39.800
所以它在這邊
link |
32:40.800
它會覺得Gradient
link |
32:41.800
是建議它往這個方向走
link |
32:43.800
只要這邊才
link |
32:44.800
Gradient才建議它
link |
32:45.800
往左邊走
link |
32:46.800
但是如果你用牛頓法
link |
32:47.800
你就會發現說
link |
32:49.800
Gradient雖然建議
link |
32:50.800
往紅色的這個方向走
link |
32:52.800
但是呢
link |
32:53.800
加上了H inverse這項
link |
32:55.800
H inverse這項會改變
link |
32:56.800
你現在參數update的方向
link |
32:58.800
而且呢
link |
32:59.800
它等於用自動決定了
link |
33:00.800
Learning rate要有多大
link |
33:02.800
所以一步
link |
33:03.800
就走就會
link |
33:04.800
你如果用這個牛頓法
link |
33:06.800
它就一步從這個地方
link |
33:07.800
直接走到最低點這樣
link |
33:09.800
這個牛頓法
link |
33:10.800
聽起來呢
link |
33:11.800
非常的power
link |
33:13.800
其實非常的powerful
link |
33:14.800
聽起來非常的
link |
33:15.800
非常的強
link |
33:17.800
那這邊舉一個例子
link |
33:18.800
來跟大家講一下
link |
33:19.800
實際上牛頓法
link |
33:20.800
用起來像是什麼樣
link |
33:22.800
現在假設我們的參數
link |
33:24.800
只有一個就是x
link |
33:26.800
那這個arrow的surface
link |
33:27.800
長得像是
link |
33:28.800
黑色的這一條線
link |
33:30.800
那當你做牛頓法的時候
link |
33:32.800
看起來就是這個樣子
link |
33:34.800
你有一個
link |
33:35.800
你從某一個初始值開始
link |
33:37.800
這個初始值呢
link |
33:38.800
叫做x0
link |
33:40.800
然後接下來呢
link |
33:42.800
你會畫一條紅色的
link |
33:44.800
這個曲線
link |
33:46.800
這一條曲線其實是一個
link |
33:48.800
二次的曲線
link |
33:50.800
你會畫一個二次的曲線
link |
33:52.800
這個二次的曲線是什麼
link |
33:53.800
它就是
link |
33:55.800
右邊這三項的和
link |
33:56.800
就是這個二次的曲線
link |
33:58.800
你會想說
link |
33:59.800
怎麼不跟
link |
34:00.800
黑色的線一模一樣
link |
34:01.800
黑色的線是左邊
link |
34:03.800
這個
link |
34:04.800
那右邊這三項合起來
link |
34:05.800
是紅色的曲線
link |
34:06.800
那因為後面還有其他項嘛
link |
34:08.800
所以今天當
link |
34:10.800
theta跟theta0非常接近的時候
link |
34:12.800
紅色的線才會貼黑色的線
link |
34:14.800
又只有在x0附近
link |
34:15.800
紅線才會貼黑線
link |
34:17.800
如果離x0很遠
link |
34:18.800
紅線就不貼黑線了
link |
34:20.800
好那Newton's method
link |
34:21.800
它會一步
link |
34:23.800
就走到這個紅色曲線的
link |
34:25.800
最低點
link |
34:27.800
然後現在得到x1
link |
34:29.800
那在x1這個地方
link |
34:30.800
你會重新計算
link |
34:31.800
g跟h
link |
34:33.800
所以你又得到新的
link |
34:34.800
紅色的二次曲線
link |
34:36.800
你得到新的紅色的二次曲線
link |
34:38.800
以後Newton's method
link |
34:39.800
一步帶你到紅色的曲線的
link |
34:41.800
最低點
link |
34:42.800
也就是x2這樣
link |
34:43.800
所以跟gradient descent不一樣
link |
34:44.800
gradient descent每次
link |
34:45.800
走一小步
link |
34:47.800
但是如果你用Newton's method
link |
34:48.800
每次呢
link |
34:49.800
可以走一大步
link |
34:50.800
那這個呢
link |
34:51.800
就是引入Hessian這一招的
link |
34:53.800
妙用
link |
34:54.800
那如果你今天這個
link |
34:55.800
f of x啊
link |
34:56.800
它正好就是一個
link |
34:57.800
quadratic的function
link |
34:59.800
也就是
link |
35:00.800
你的紅色的曲線
link |
35:01.800
跟黑色的曲線
link |
35:02.800
正好是重合的
link |
35:04.800
那這樣你就很爽
link |
35:05.800
你就是
link |
35:06.800
update一次參數
link |
35:07.800
馬上就走到最低點
link |
35:08.800
這個optimization的process呢
link |
35:10.800
就結束了
link |
35:11.800
那你可能會想說
link |
35:12.800
哇!有這麼強的方法
link |
35:14.800
怎麼之前都不講這樣
link |
35:16.800
因為這招其實沒什麼用
link |
35:17.800
這樣子
link |
35:18.800
沒有啦
link |
35:19.800
在deep learning
link |
35:20.800
也不能說完全沒什麼用
link |
35:21.800
但在deep learning的
link |
35:22.800
optimization裡面
link |
35:24.800
這招其實是不好用的
link |
35:25.800
它不好用在哪裡
link |
35:26.800
第一個不好用的點是
link |
35:28.800
你要算h的inverse
link |
35:30.800
h那個function有多大呢
link |
35:32.800
你想想看喔
link |
35:34.800
h那個
link |
35:35.800
假設你的參數有n個
link |
35:37.800
h那個function
link |
35:38.800
h那個metric
link |
35:39.800
Hessian metric
link |
35:40.800
它是一個n by n的metric
link |
35:41.800
一個network
link |
35:42.800
你通常參數有100萬個
link |
35:44.800
所以你要算一個
link |
35:45.800
100萬乘100萬的metric
link |
35:46.800
再對它做inverse
link |
35:48.800
這個基本上是做不到的
link |
35:50.800
那你可能會說
link |
35:51.800
那也許我可以想一個
link |
35:52.800
什麼很特別的方法
link |
35:54.800
用某種efficient的
link |
35:55.800
加速的方法
link |
35:56.800
很快地把h inverse算出來
link |
35:58.800
就算你這樣做
link |
35:59.800
其實在做deep learning的時候
link |
36:01.800
h inverse
link |
36:02.800
這個Newton's method
link |
36:03.800
還有另外一個問題就是
link |
36:05.800
Newton's method
link |
36:07.800
它保證找到的
link |
36:08.800
是一個歸一點為零的地方
link |
36:10.800
它從來沒有說
link |
36:11.800
它找到的地方
link |
36:12.800
一定是local minima
link |
36:15.800
它有可能會去找
link |
36:17.800
global minima
link |
36:18.800
它有可能會去找
link |
36:20.800
saddle point
link |
36:21.800
因為Newton's method
link |
36:22.800
它實際上做的事情是
link |
36:24.800
你這邊呢
link |
36:25.800
有一個
link |
36:26.800
你要去maximize的
link |
36:29.800
loss function
link |
36:30.800
你要去maximize的function
link |
36:31.800
是黑色這條線
link |
36:33.800
然後呢
link |
36:34.800
從某個起始點開始
link |
36:35.800
它找一個二次的曲線
link |
36:38.800
跟這個起始點附近
link |
36:40.800
是最接近的
link |
36:42.800
如果你今天
link |
36:43.800
你的這個黑色的線
link |
36:44.800
長這個樣子
link |
36:45.800
它找出來的都是這樣
link |
36:47.800
它找出來的是這樣
link |
36:48.800
但你黑色的曲線
link |
36:49.800
如果長這個樣子
link |
36:50.800
它找出來的
link |
36:51.800
可能是這個樣子
link |
36:52.800
那你參數一update
link |
36:54.800
你其實loss是增加的
link |
36:56.800
因為Newton's method
link |
36:58.800
它想要做的事情是
link |
36:59.800
找一個gradient是零的點
link |
37:01.800
而在Deep Learning
link |
37:02.800
所定義出來的
link |
37:03.800
那個loss function裡面
link |
37:05.800
有很多gradient是零的點
link |
37:06.800
它不是一個local minima
link |
37:08.800
它是saddle point
link |
37:09.800
它是global
link |
37:10.800
它其實是一個maxima
link |
37:11.800
都是有可能的
link |
37:12.800
所以你用這個Newton's method
link |
37:14.800
引入了黑線
link |
37:15.800
其實通常就是
link |
37:16.800
讓你往那個saddle point
link |
37:18.800
去靠攏而已
link |
37:19.800
所以並不見得非常有用
link |
37:21.800
所以這一招呢
link |
37:22.800
就只是告訴大家說
link |
37:23.800
有這麼一招
link |
37:24.800
但它在Deep Learning
link |
37:25.800
沒有什麼用
link |
37:26.800
只是說假設
link |
37:27.800
有一些人告訴你說
link |
37:28.800
問你說
link |
37:29.800
怎麼不用Newton's method
link |
37:30.800
在Optimization
link |
37:31.800
這招聽起來很強
link |
37:32.800
就可以嗆爆他這樣子
link |
37:38.800
那今天要引入黑線的
link |
37:39.800
一個最重要的目的是說
link |
37:41.800
假設
link |
37:42.800
就之前在做
link |
37:43.800
gradient descent的時候
link |
37:44.800
我們只考慮前兩項
link |
37:45.800
因為我們假設
link |
37:46.800
後面這一項值很小
link |
37:48.800
它是沒有什麼影響力的
link |
37:50.800
但是
link |
37:51.800
現在假設我們
link |
37:53.800
在做gradient descent的時候
link |
37:55.800
隨著參數不斷的update
link |
37:56.800
我們已經到了某一個地方
link |
37:58.800
gradient值非常小的時候
link |
38:00.800
這個時候呢
link |
38:01.800
f of theta的特性
link |
38:02.800
就會變成
link |
38:03.800
由黑線dominate
link |
38:05.800
就假設
link |
38:06.800
g等於0的時候
link |
38:07.800
這個時候
link |
38:08.800
要知道
link |
38:09.800
f of theta長什麼樣子
link |
38:10.800
就要看這個
link |
38:11.800
黑線的metric
link |
38:12.800
h
link |
38:13.800
長什麼樣子了
link |
38:15.800
那我們知道說
link |
38:16.800
今天在g等於0的時候
link |
38:17.800
它是一個critical point
link |
38:19.800
critical point
link |
38:20.800
它可能是一個
link |
38:21.800
local minima
link |
38:22.800
它可能是一個
link |
38:23.800
local maxima
link |
38:24.800
它可能是一個
link |
38:25.800
theta point
link |
38:26.800
今天當一個critical point
link |
38:27.800
要決定
link |
38:28.800
它是哪一種case的時候
link |
38:30.800
你要憑藉的
link |
38:31.800
就是靠著分析h
link |
38:33.800
來知道這件事
link |
38:35.800
h的特性
link |
38:36.800
會告訴我們說
link |
38:38.800
現在是
link |
38:39.800
這三種case的
link |
38:41.800
哪一種
link |
38:42.800
那在講
link |
38:43.800
h如何告訴我們
link |
38:44.800
這件事之前呢
link |
38:45.800
我們需要很快的
link |
38:46.800
複習一下
link |
38:47.800
linear algebra
link |
38:49.800
我們就秒複習
link |
38:50.800
因為我相信說
link |
38:51.800
如果我問你說
link |
38:52.800
大家還記不記得
link |
38:53.800
eigenvalue
link |
38:54.800
不記得舉手一下
link |
38:55.800
一定是沒有人要舉手的
link |
38:56.800
對不對
link |
38:57.800
所以我們還是
link |
38:58.800
很快的秒複習一下
link |
38:59.800
什麼是eigenvalue
link |
39:01.800
什麼是eigenvector
link |
39:03.800
然後什麼是eigenvalue
link |
39:04.800
什麼是
link |
39:05.800
什麼是eigenvalue
link |
39:06.800
什麼是eigenvector呢
link |
39:08.800
假設你現在
link |
39:09.800
有一個vector叫做V
link |
39:10.800
你有一個scalar叫做λ
link |
39:12.800
你會發現
link |
39:13.800
把V乘上metric
link |
39:14.800
A是一個metric
link |
39:16.800
A是一個metric
link |
39:18.800
λ
link |
39:19.800
V跟A相乘
link |
39:20.800
會等於
link |
39:21.800
V從前面
link |
39:22.800
乘上一個scalarλ
link |
39:24.800
如果這件事情成立的話
link |
39:25.800
V呢
link |
39:26.800
就是一個eigenvector
link |
39:28.800
V就是A的
link |
39:29.800
metric A的eigenvector
link |
39:31.800
λ呢
link |
39:32.800
就是metric A的eigenvalue
link |
39:35.800
那每一個eigenvalue
link |
39:36.800
會對應到
link |
39:37.800
那eigenvalue
link |
39:38.800
會對應到一個eigenvector
link |
39:39.800
那這個λ呢
link |
39:40.800
它對應的eigenvector呢
link |
39:42.800
就是V
link |
39:43.800
這邊就舉一個
link |
39:44.800
很趨弱的例子
link |
39:45.800
假設有一個
link |
39:46.800
3乘以3的metric
link |
39:47.800
長這個樣子
link |
39:48.800
來把這個metric呢
link |
39:50.800
乘上一個vector
link |
39:51.800
叫做1-1-1
link |
39:53.800
來發現得到的結果是
link |
39:54.800
4-4-4
link |
39:56.800
那4-4-4
link |
39:57.800
正好是1-1-1的4倍
link |
39:59.800
那我們就知道說
link |
40:00.800
這一個metric
link |
40:02.800
這個3乘以3的metric
link |
40:03.800
有一個eigenvector
link |
40:04.800
叫做1-1-1
link |
40:06.800
那這個eigenvector
link |
40:07.800
它對應的eigenvalue呢
link |
40:09.800
叫做4
link |
40:10.800
link |
40:11.800
怎麼回事
link |
40:13.800
這邊要強調的一個點是
link |
40:15.800
這個zero vector啊
link |
40:16.800
不在考慮之內
link |
40:18.800
這樣子
link |
40:19.800
就eigenvector
link |
40:20.800
是不算zero vector的
link |
40:22.800
因為你知道zero vector
link |
40:23.800
乘上任何metric
link |
40:25.800
你得到的還是zero vector啊
link |
40:26.800
但是你不會說
link |
40:27.800
zero vector對應一個eigenvalue
link |
40:29.800
叫做zero這樣子
link |
40:31.800
好那另外一個
link |
40:32.800
要跟大家複習的東西
link |
40:33.800
叫做
link |
40:34.800
positive跟negative的definite
link |
40:38.800
這是什麼東西呢
link |
40:39.800
這個是symmetric matrix的
link |
40:41.800
這是那個
link |
40:42.800
對稱的矩陣的
link |
40:43.800
某一個特性
link |
40:45.800
某一個特性
link |
40:47.800
假設現在有一個
link |
40:49.800
對稱的矩陣呢
link |
40:50.800
它叫做a
link |
40:52.800
那如果這個a
link |
40:53.800
具有下面這個特性
link |
40:54.800
這個特性是說
link |
40:56.800
對所有不是0的vector x
link |
41:00.800
就我們不考慮zero vector
link |
41:02.800
對所有的vector x
link |
41:04.800
我們都把這個
link |
41:09.800
這邊有個地方呢
link |
41:10.800
寫錯了
link |
41:11.800
你發現是在哪
link |
41:12.800
你發現哪裡寫錯了嗎
link |
41:14.800
應該一個transpose這樣
link |
41:17.800
抱歉抱歉
link |
41:18.800
這個t前面
link |
41:19.800
都應該有一個transpose
link |
41:20.800
這樣乘起來
link |
41:21.800
才不會有問題
link |
41:22.800
懂嗎
link |
41:23.800
懂啊就是
link |
41:24.800
這個a是一個
link |
41:29.800
a是一個metric
link |
41:31.800
這個x是一個vector
link |
41:33.800
然後x的transpose啊
link |
41:35.800
它是一個躺下來的vector
link |
41:37.800
它們乘起來以後呢
link |
41:38.800
會得到一個scalar這樣
link |
41:40.800
一個數值這樣
link |
41:43.800
那假設這個數值
link |
41:44.800
不管代什麼樣的x
link |
41:46.800
都大於0的話
link |
41:47.800
意味著什麼呢
link |
41:49.800
如果都大於0的話
link |
41:52.800
就叫做positive definite
link |
41:55.800
就這個symmetric matrix
link |
41:56.800
它是一個positive definite的symmetric matrix
link |
42:00.800
那如果都小於0的話
link |
42:01.800
它就是一個
link |
42:02.800
negative definite的metric
link |
42:06.800
那今天啊
link |
42:08.800
假設一個metric
link |
42:10.800
它是positive definite的
link |
42:13.800
那if and only if
link |
42:15.800
它的所有的eigenvalue
link |
42:17.800
都是正的
link |
42:20.800
如果它是negative definite的
link |
42:22.800
那這個metric ar
link |
42:24.800
它所有的eigenvalue
link |
42:26.800
都是負的
link |
42:29.800
還有另外一個
link |
42:30.800
還有另外一個是這個定義
link |
42:32.800
是那個positive的semi definite
link |
42:35.800
那這個semi definite跟definite
link |
42:37.800
它唯一的差別
link |
42:38.800
只有一個等號而已
link |
42:40.800
如果對任何的x來說
link |
42:43.800
x transpose乘上a再乘上x
link |
42:45.800
都大於等於0
link |
42:46.800
那是positive semi definite
link |
42:48.800
如果大於0
link |
42:49.800
那是positive definite
link |
42:51.800
那如果今天是
link |
42:52.800
positive semi definite呢
link |
42:54.800
它就所有的eigenvalue
link |
42:56.800
是non-negative
link |
42:57.800
是非負的
link |
42:58.800
它可以是0
link |
43:00.800
這邊一定都要是
link |
43:01.800
如果是positive definite
link |
43:02.800
一定都是正的
link |
43:03.800
positive semi definite
link |
43:05.800
可以是正的跟0
link |
43:07.800
就是negative semi definite
link |
43:09.800
那意思就一樣
link |
43:11.800
小於等於0
link |
43:13.800
就是negative semi definite
link |
43:14.800
它所有的eigenvalue
link |
43:16.800
要嘛是負的
link |
43:18.800
要嘛是0
link |
43:19.800
總之就是非正的
link |
43:22.800
那有了這些東西以後
link |
43:24.800
接下來就是要分析說
link |
43:26.800
假設我們現在
link |
43:28.800
在走到了某一個critical point
link |
43:31.800
一個critical point
link |
43:32.800
它的f of theta
link |
43:34.800
可以寫成這個樣子
link |
43:36.800
我們現在把
link |
43:37.800
有歸零的那項拿掉了
link |
43:39.800
因為歸零等於0嘛
link |
43:40.800
critical point歸零等於0
link |
43:41.800
把歸零的那項拿掉
link |
43:42.800
所以我們現在只剩下
link |
43:43.800
1的theta-theta0的transpose
link |
43:46.800
乘上Hatrian matrix H
link |
43:48.800
再乘上theta-thetaD
link |
43:51.800
然後我發現呢
link |
43:52.800
我這邊又寫錯了
link |
43:54.800
這個應該有一個transpose
link |
43:56.800
假設我們把
link |
43:57.800
theta-theta0
link |
43:58.800
看作是一個vector
link |
44:01.800
把theta-theta0
link |
44:03.800
看作是一個vector x
link |
44:05.800
藍色的底線化的這一項
link |
44:07.800
它其實就是x的transpose
link |
44:09.800
乘上H乘上x
link |
44:13.800
link |
44:14.800
那如果今天H
link |
44:17.800
是positive definite
link |
44:20.800
如果
link |
44:21.800
中文翻成是翻那個
link |
44:23.800
鎮定啦
link |
44:24.800
如果它是鎮定的
link |
44:26.800
大家知道鎮定
link |
44:28.800
應該有聽過吧
link |
44:30.800
就假設H這個matrix
link |
44:32.800
是鎮定的
link |
44:33.800
它是positive definite的
link |
44:35.800
link |
44:36.800
它的
link |
44:37.800
這邊又
link |
44:38.800
就忘了寫transpose
link |
44:39.800
通通都
link |
44:40.800
可能從頭到尾都忘了
link |
44:41.800
加transpose這樣子
link |
44:43.800
link |
44:44.800
這樣子呢
link |
44:45.800
我們知道說
link |
44:46.800
任何的vector x
link |
44:48.800
x的transpose
link |
44:49.800
乘上H乘上x
link |
44:51.800
都會大於0
link |
44:53.800
那這件事情
link |
44:55.800
等同於
link |
44:56.800
這個matrix H
link |
44:58.800
它的所有eigenvalue
link |
45:00.800
通通都是正的
link |
45:02.800
那這件事情意味著什麼
link |
45:04.800
假設
link |
45:05.800
現在有一個黑懸Matrix H
link |
45:08.800
它是positive definite
link |
45:10.800
也就是說任何
link |
45:11.800
vector x
link |
45:12.800
左邊層右邊層
link |
45:13.800
都會大於0
link |
45:15.800
那意味著說
link |
45:16.800
藍色這一項
link |
45:17.800
總是正的
link |
45:18.800
對不對
link |
45:20.800
藍色這一項
link |
45:21.800
總是正的
link |
45:22.800
是什麼意思
link |
45:23.800
代表
link |
45:24.800
F of theta
link |
45:25.800
link |
45:26.800
在theta0附近
link |
45:27.800
F of theta
link |
45:28.800
一定會大於
link |
45:29.800
F of theta0
link |
45:30.800
如果F of theta一定會大於F of theta0
link |
45:32.800
意味著
link |
45:33.800
theta0呢
link |
45:34.800
是一個local minima
link |
45:36.800
就這樣
link |
45:37.800
所以你今天要走到一個地方
link |
45:38.800
你要檢查說
link |
45:39.800
它就走到一個critical point
link |
45:41.800
你要檢查說
link |
45:42.800
它是不是
link |
45:44.800
一個local minima
link |
45:46.800
怎麼辦
link |
45:47.800
檢查它的黑懸
link |
45:49.800
如果黑懸
link |
45:50.800
是positive definite的
link |
45:52.800
或者是
link |
45:53.800
它的所有eigenvalue
link |
45:54.800
都是positive
link |
45:55.800
這兩件事情是等價的
link |
45:57.800
那意味著說
link |
45:59.800
現在
link |
46:00.800
我們在一個
link |
46:01.800
我們現在的這個critical point
link |
46:02.800
是一個local minima
link |
46:04.800
因為當h是
link |
46:05.800
positive definite的時候
link |
46:06.800
這一項一定是正的
link |
46:07.800
意味著
link |
46:08.800
F of theta大於F of theta0
link |
46:10.800
代表theta0
link |
46:11.800
是local minima
link |
46:13.800
好那
link |
46:14.800
接下來呢
link |
46:15.800
只是把重複的事情再講一次
link |
46:16.800
假設h
link |
46:17.800
是negative definite
link |
46:19.800
link |
46:20.800
一定
link |
46:21.800
任何x
link |
46:22.800
左邊層
link |
46:23.800
右邊層
link |
46:24.800
一定小於0
link |
46:25.800
那麼
link |
46:26.800
意味著說
link |
46:27.800
這一項一定是負的
link |
46:28.800
因為h
link |
46:29.800
左邊不管層什麼
link |
46:30.800
右邊層什麼
link |
46:31.800
永遠都是小於0
link |
46:32.800
永遠都是負的
link |
46:33.800
那所以
link |
46:34.800
這個藍色這一項
link |
46:35.800
一定是負的
link |
46:36.800
藍色這一項一定是負的
link |
46:37.800
代表什麼
link |
46:38.800
代表說
link |
46:39.800
F of theta0
link |
46:41.800
加某一個負的東西
link |
46:42.800
會等於F of theta
link |
46:43.800
代表F of theta0
link |
46:44.800
總是大於F of theta
link |
46:46.800
F of theta0
link |
46:47.800
總是大於F of theta
link |
46:49.800
所以這個時候
link |
46:50.800
它是一個
link |
46:51.800
local maxima
link |
46:53.800
對不對
link |
46:54.800
F of theta0
link |
46:55.800
它是一個local maxima
link |
46:56.800
因為F of theta0
link |
46:57.800
總是大於F of theta
link |
46:58.800
所以它是一個
link |
47:00.800
它是一個
link |
47:01.800
local maxima
link |
47:03.800
那今天假設
link |
47:06.800
假設
link |
47:07.800
今天呢
link |
47:08.800
你找到一個x
link |
47:10.800
有時候
link |
47:11.800
你可以找到一些x
link |
47:13.800
左邊層
link |
47:14.800
右邊層
link |
47:15.800
大於0
link |
47:16.800
你找到一些x
link |
47:17.800
對h這個metric
link |
47:18.800
左邊層
link |
47:19.800
右邊層
link |
47:20.800
大於0
link |
47:21.800
你又找到另外一些x
link |
47:22.800
對這個h
link |
47:23.800
左邊層
link |
47:24.800
右邊層
link |
47:25.800
小於0
link |
47:26.800
這一項
link |
47:27.800
有時候正
link |
47:28.800
有時候負
link |
47:29.800
代表說
link |
47:30.800
現在theta0這一項
link |
47:32.800
它是一個saddle point
link |
47:33.800
因為它
link |
47:34.800
theta0這一項
link |
47:35.800
有時候比它
link |
47:36.800
附近的theta還要大
link |
47:37.800
有時候比它附近的theta還要小
link |
47:40.800
所以
link |
47:41.800
它有時候比旁邊大
link |
47:42.800
有時候比旁邊小
link |
47:43.800
所以
link |
47:44.800
它是一個
link |
47:45.800
saddle point
link |
47:47.800
這邊我們就遇到一個
link |
47:49.800
略棘手的問題
link |
47:51.800
這邊說的是
link |
47:54.800
positive definite
link |
47:56.800
假設
link |
47:58.800
是positive semi definite呢
link |
48:01.800
如果今天
link |
48:03.800
xxhx
link |
48:05.800
不是大於0
link |
48:07.800
而是總是
link |
48:09.800
大於
link |
48:10.800
等於0
link |
48:12.800
這個時候
link |
48:13.800
它仍然是一個
link |
48:15.800
local minima嗎
link |
48:17.800
給大家
link |
48:19.800
十秒鐘想一下
link |
48:21.800
有可能是一個local minima
link |
48:23.800
但是它一定是local minima嗎
link |
48:25.800
有可能是local minima
link |
48:27.800
但是一定是嗎
link |
48:29.800
你覺得它
link |
48:31.800
仍然一定是local minima嗎
link |
48:33.800
同學舉手一下
link |
48:35.800
你看
link |
48:36.800
仍然一定是
link |
48:37.800
有些人覺得一定是
link |
48:39.800
你覺得它
link |
48:40.800
有可能就不是local minima嗎
link |
48:43.800
你覺得它
link |
48:44.800
仍然一定是
link |
48:46.800
有可能就不是local minima的同學
link |
48:48.800
舉手一下
link |
48:50.800
link |
48:51.800
有比較多同學舉手
link |
48:52.800
其實正確答案就是
link |
48:54.800
它有可能不是local minima
link |
48:56.800
為什麼
link |
48:57.800
有的人會說
link |
48:58.800
這項總是大於等於0
link |
49:00.800
是不是意味著說
link |
49:03.800
f of theta
link |
49:05.800
總是大於等於
link |
49:07.800
f of theta0呢
link |
49:09.800
如果f of theta總是大於等於theta0
link |
49:12.800
它仍然是local minima嗎
link |
49:14.800
就是某一個point
link |
49:16.800
如果它跟旁邊的是一樣的
link |
49:17.800
那個還是local minima
link |
49:18.800
了解我的意思嗎
link |
49:20.800
那個minima的定義
link |
49:22.800
就是你有一個point
link |
49:24.800
它比它旁邊的鄰居
link |
49:27.800
大於等於
link |
49:28.800
就是minima了
link |
49:29.800
不一定要大於
link |
49:30.800
等於也算是
link |
49:31.800
所以
link |
49:32.800
如果從這個方向來看
link |
49:34.800
它仍然是一個local minima
link |
49:36.800
但實際上會遇到的問題是
link |
49:39.800
當今天這一項等於0的時候
link |
49:43.800
真正決定
link |
49:45.800
f of theta跟f of theta0
link |
49:47.800
誰比較大的
link |
49:48.800
就是剩下我們沒有考慮的那些項了
link |
49:52.800
而那些項是什麼
link |
49:53.800
我們不知道
link |
49:54.800
有可能
link |
49:55.800
這一項是0
link |
49:56.800
但剩下的項
link |
49:57.800
是負的啊
link |
49:59.800
對不對
link |
50:00.800
所以當
link |
50:01.800
H是semi-definite的時候
link |
50:03.800
我們就無法判斷
link |
50:04.800
它到底是不是local minima了
link |
50:07.800
好希望大家
link |
50:08.800
有聽懂我的意思
link |
50:10.800
所以
link |
50:11.800
今天positive semi-definite
link |
50:13.800
也是一樣的
link |
50:14.800
如果是
link |
50:15.800
如果是negative definite
link |
50:17.800
一定是
link |
50:19.800
local maxima
link |
50:20.800
如果是semi-definite
link |
50:22.800
我們就無法確定
link |
50:23.800
它是不是local maxima
link |
50:25.800
它有可能是
link |
50:26.800
但也有可能不是
link |
50:30.800
link |
50:31.800
link |
50:32.800
講了
link |
50:33.800
講了這麼多
link |
50:35.800
接下來要講什麼呢
link |
50:36.800
我們來講一個比較直觀的東西
link |
50:39.800
假設這個V
link |
50:41.800
假設V這個vector
link |
50:43.800
它是H的一個eigenvalue
link |
50:46.800
那我們把這個eigenvalue V
link |
50:50.800
左邊乘H
link |
50:51.800
右邊乘H
link |
50:53.800
會發生什麼事呢
link |
50:54.800
這邊我就記得要加一個transpose
link |
50:56.800
前面通通忘了加transpose
link |
50:57.800
不過這邊我就記得要加transpose
link |
50:59.800
好把V的transpose乘上H
link |
51:01.800
再乘上V
link |
51:02.800
也就把這個theta減theta0
link |
51:04.800
用V來代換
link |
51:06.800
用H的某一個eigenvector來代換的話
link |
51:08.800
會發生什麼事呢
link |
51:10.800
因為根據eigenvector的定義
link |
51:12.800
H乘上V
link |
51:13.800
等於λV
link |
51:14.800
這個是eigenvector的定義
link |
51:16.800
然後你可以把λ挪出去
link |
51:18.800
所以變成
link |
51:20.800
這個
link |
51:21.800
所以這個
link |
51:23.800
V的transpose乘上H乘上V
link |
51:26.800
等於V的transpose乘上λV
link |
51:29.800
等於λ乘上V的transpose跟V
link |
51:33.800
V的transpose乘上V呢
link |
51:35.800
其實就是V的two node
link |
51:38.800
也就是它長度的平方
link |
51:41.800
link |
51:42.800
那我們呢
link |
51:44.800
假設今天這個V呢
link |
51:46.800
是univector
link |
51:48.800
如果V是一個univector
link |
51:49.800
它長度是1的話
link |
51:51.800
那V的長度這一項呢
link |
51:53.800
就代1
link |
51:54.800
所以它就等於λ
link |
51:56.800
假設我們知道這件事以後
link |
51:57.800
這件事情告訴我們什麼
link |
51:59.800
這件事情告訴我們一個非常直觀的東西
link |
52:02.800
就是我們eigenvector和eigenvalue
link |
52:05.800
就是H的eigenvector跟eigenvalue
link |
52:07.800
在直觀上
link |
52:08.800
它到底代表了什麼意思
link |
52:10.800
就你剛才講一些什麼positive definite
link |
52:13.800
你可能沒聽得太懂這樣子
link |
52:15.800
但是我們其實可以很直觀的
link |
52:17.800
把eigenvector跟eigenvalue
link |
52:19.800
和這個F
link |
52:21.800
要長什麼樣子這件事
link |
52:23.800
把它連在一起
link |
52:24.800
怎麼把它連在一起呢
link |
52:27.800
假設這個位置
link |
52:29.800
是θ0
link |
52:31.800
我們從θ0這個地方
link |
52:34.800
link |
52:36.800
走移動V
link |
52:38.800
這一個
link |
52:40.800
向量
link |
52:41.800
我們從θ0這個地方
link |
52:43.800
移動V這個向量
link |
52:45.800
那我們得到的新的這個點
link |
52:47.800
就是θ減θ0
link |
52:50.800
也就是說θ減
link |
52:51.800
就假設這個新的點
link |
52:52.800
這邊忘了寫
link |
52:53.800
這邊是θ
link |
52:55.800
就這個點是θ
link |
52:57.800
那θ減θ0
link |
52:59.800
就是V
link |
53:00.800
那我們知道說
link |
53:01.800
左邊這邊代V
link |
53:02.800
右邊這邊代V
link |
53:03.800
得到的值是λ
link |
53:05.800
意味著說
link |
53:06.800
假設我們在θ0這個地方
link |
53:08.800
根據某一個eigenvector的方向
link |
53:10.800
去挪動
link |
53:12.800
那假設那個eigenvector
link |
53:13.800
它是個univector的話
link |
53:14.800
那我們增加的
link |
53:16.800
就是F of θ增加的量
link |
53:18.800
就是
link |
53:20.800
這邊前面應該加一個
link |
53:22.800
二分之一啦
link |
53:24.800
但是我忘了加二分之一
link |
53:26.800
但我想大家知道我的意思就好
link |
53:28.800
我叫大家知道我的意思就好
link |
53:30.800
所以今天從θ0這個地方
link |
53:33.800
往V這個方向去挪動
link |
53:36.800
那我們就會增加
link |
53:37.800
V這個eigenvector的eigenvalue
link |
53:40.800
也就是λ
link |
53:42.800
那現在假設我們找了兩個eigenvalue
link |
53:47.800
一個eigenvector
link |
53:49.800
一個eigenvector叫做V1
link |
53:51.800
一個eigenvector叫做V2
link |
53:54.800
那我們往V1這邊移動
link |
53:56.800
那F增加的量呢
link |
53:58.800
F of θ增加的量
link |
53:59.800
就會是V1的eigenvalue
link |
54:03.800
λ1
link |
54:05.800
那往V2這個eigenvector方向移動
link |
54:07.800
那增加的eigenvalue呢
link |
54:09.800
就會是λ2
link |
54:11.800
那如果我們今天往
link |
54:13.800
V1跟V2的
link |
54:16.800
這個linear combination的方向去走的話
link |
54:20.800
假設我們今天走的方向是X
link |
54:22.800
X是V1跟V2的linear combination
link |
54:26.800
也就是X等於A1V1加A2V2
link |
54:30.800
那往X這個方向移動
link |
54:32.800
F會增加多少呢
link |
54:35.800
F會增加多少呢
link |
54:37.800
我們要來
link |
54:38.800
我們可以來計算一下
link |
54:45.800
今天這個X等於
link |
54:48.800
A1V1加上A2V2
link |
54:52.800
A1跟A2都是scalar
link |
54:54.800
V1跟V2都是vector
link |
54:56.800
那X的transpose
link |
54:58.800
乘上H乘上X
link |
55:00.800
就是呢
link |
55:01.800
A1V1加A2V2
link |
55:06.800
這個有點無聊
link |
55:08.800
我看看我有沒有把它打出來
link |
55:10.800
有打出來這樣子
link |
55:12.800
所以這一項呢
link |
55:14.800
我們就直接從
link |
55:16.800
這邊開始算
link |
55:18.800
我們就直接從這邊開始算
link |
55:20.800
它等於什麼
link |
55:21.800
它等於
link |
55:22.800
第一項是
link |
55:24.800
A1的平方
link |
55:26.800
V1的transpose
link |
55:30.800
乘上H乘上V1
link |
55:34.800
然後再加一項
link |
55:35.800
這一項呢
link |
55:37.800
是我們取
link |
55:39.800
這一項
link |
55:41.800
跟H跟A2V2相乘
link |
55:44.800
我們會得到
link |
55:46.800
A1A2V1的transpose
link |
55:49.800
H乘上V2
link |
55:52.800
然後呢
link |
55:53.800
我們會得到
link |
55:55.800
我們如果取
link |
55:57.800
這三項的話
link |
55:59.800
我們得到的會是
link |
56:01.800
A1A2V2的transpose
link |
56:04.800
HV1
link |
56:06.800
然後最後一項呢
link |
56:07.800
是A2A2V2的transpose
link |
56:11.800
HV2這樣
link |
56:13.800
好有得到四項
link |
56:15.800
但是假設
link |
56:18.800
V1V2是orthogonal的
link |
56:21.800
假設V1V2是orthogonal
link |
56:23.800
你覺得假設V1V2是orthogonal
link |
56:25.800
是合理的嗎
link |
56:27.800
是合理的
link |
56:28.800
因為假設你翻一下
link |
56:29.800
現代課本的話
link |
56:30.800
你翻到symmetric matrix那一章
link |
56:32.800
第一頁就告訴你說
link |
56:34.800
symmetric matrix
link |
56:36.800
if and only if
link |
56:38.800
你可以找到一組
link |
56:40.800
eigenvector
link |
56:41.800
這組eigenvector
link |
56:43.800
是一個orthonormal的basis
link |
56:45.800
orthonormal basis是什麼
link |
56:47.800
意思是說
link |
56:48.800
這N個eigenvector
link |
56:51.800
它們是orthogonal
link |
56:53.800
它們的長度都是1
link |
56:54.800
然後它們都是orthogonal
link |
56:57.800
然後這N個eigenvector
link |
56:59.800
它們可以span整個Rn的空間
link |
57:03.800
那如果你不知道我在說什麼的話
link |
57:05.800
反正
link |
57:06.800
假設一個symmetric matrix
link |
57:09.800
一個對稱的矩陣
link |
57:10.800
eigenvector
link |
57:11.800
是orthogonal這件事情
link |
57:13.800
是沒有問題的
link |
57:14.800
如果它們是orthogonal的話
link |
57:16.800
那告訴我們什麼事
link |
57:18.800
告訴我們說
link |
57:19.800
這一項是0
link |
57:22.800
告訴我們說
link |
57:23.800
這一項也是0
link |
57:25.800
為什麼呢
link |
57:26.800
因為V1的乘Pose
link |
57:28.800
乘上h乘上V2
link |
57:30.800
等於V1的乘Pose
link |
57:32.800
乘上λ2V2
link |
57:36.800
對不對
link |
57:37.800
因為這個是eigenvalue的定義
link |
57:39.800
V1乘Pose乘上V2
link |
57:41.800
因為V1V2是orthogonal的
link |
57:42.800
所以它等於0
link |
57:44.800
所以最後
link |
57:45.800
我們只剩下第一項
link |
57:47.800
跟這一項
link |
57:49.800
這兩項要告訴我們什麼呢
link |
57:51.800
這一項是
link |
57:54.800
什麼
link |
57:55.800
這一項是λ1
link |
57:58.800
這一項
link |
58:01.800
是λ2
link |
58:02.800
所以呢
link |
58:03.800
今天
link |
58:04.800
假設X呢
link |
58:06.800
它是V1跟V2的linear combination
link |
58:09.800
那我們往X這個方向走
link |
58:12.800
我們走的
link |
58:13.800
我們走的那個
link |
58:15.800
我們往X方向走
link |
58:16.800
F of θ增加的量
link |
58:18.800
就是A1的平方
link |
58:19.800
就是這個係數的平方
link |
58:21.800
乘上λ1
link |
58:22.800
加上這個係數的平方
link |
58:24.800
乘上λ2
link |
58:25.800
就這樣子
link |
58:27.800
link |
58:28.800
這個假設你沒有聽懂的話
link |
58:30.800
link |
58:32.800
這整件事情到底告訴我們什麼
link |
58:34.800
這整件事情告訴我們說
link |
58:36.800
假設你現在在一個
link |
58:38.800
Critical point θ裡
link |
58:40.800
你往U這個方向
link |
58:42.800
你往某一個vector
link |
58:44.800
U這個方向
link |
58:45.800
挪動一步
link |
58:46.800
到底F of θ
link |
58:48.800
會增加多少呢
link |
58:50.800
假設U
link |
58:52.800
是Hatian這個H
link |
58:55.800
這個H這個matrix的
link |
58:57.800
Eigenvector的linear combination
link |
58:59.800
H的Eigenvector就是V1V2到Vn
link |
59:02.800
U可以寫成A1V1加A2V2加到AnVn
link |
59:06.800
你可能問說
link |
59:07.800
U一定可以寫成
link |
59:09.800
V1到Vn的linear combination嗎
link |
59:11.800
一定可以
link |
59:12.800
因為
link |
59:13.800
因為symmetry matrix就是這樣
link |
59:16.800
如果你不知道這是什麼的話
link |
59:17.800
反正你就記得說
link |
59:19.800
反正今天在θ0附近
link |
59:21.800
我不管隨便找一個方向U
link |
59:23.800
這個方向
link |
59:24.800
一定是Eigenvalue的linear combination
link |
59:28.800
不是Eigenvalue
link |
59:29.800
Eigenvector的linear combination
link |
59:31.800
然後接下來我們就知道說
link |
59:33.800
這個方向
link |
59:35.800
往U這個方向走
link |
59:36.800
到底會增加多少呢
link |
59:38.800
會增加
link |
59:39.800
這些次數
link |
59:40.800
A1A2到An的平方
link |
59:42.800
A1的平方乘上λ1
link |
59:45.800
加A2的平方乘上λ2
link |
59:47.800
加上An的平方乘上λn
link |
59:50.800
有了這個結論以後
link |
59:52.800
其實你只要記住這個結論
link |
59:54.800
用Eigenvalue和Eigenvector
link |
59:57.800
用Hatian的Eigenvalue和Eigenvector
link |
59:59.800
分析critical point這件事情
link |
01:00:01.800
就會變得非常直覺
link |
01:00:02.800
你只要記得說
link |
01:00:03.800
所謂的Hatian的Eigenvalue和Eigenvector
link |
01:00:05.800
告訴我們的事情是
link |
01:00:07.800
往Eigenvector的方向走過去
link |
01:00:09.800
我們會增加Eigenvalue那麼多的值
link |
01:00:13.800
然後往某一個不是Eigenvector的方向走過去
link |
01:00:16.800
也不用緊張
link |
01:00:17.800
因為那個Eigenvector
link |
01:00:18.800
因為那個方向會是Eigenvector的linear combination
link |
01:00:21.800
它是各個不同Eigenvector增加的量的和
link |
01:00:25.800
所以今天
link |
01:00:26.800
假設所有的Eigenvalue通通都是正的
link |
01:00:29.800
λ1到λn都是正的
link |
01:00:31.800
意味著說
link |
01:00:32.800
你不管往哪個方向走
link |
01:00:34.800
總是增加的
link |
01:00:36.800
所以它是一個local minima
link |
01:00:39.800
如果Eigenvalue通通是負的
link |
01:00:41.800
代表你不管往哪一個方向走
link |
01:00:43.800
它總是減少的
link |
01:00:45.800
所以它是一個local maxima
link |
01:00:47.800
所以剛才Eigenvalue、Eigenvector
link |
01:00:51.800
跟是不是local minima的關係
link |
01:00:54.800
就非常的清楚了
link |
01:00:57.800
那如果今天某一個
link |
01:00:59.800
有些Eigenvalue是正的
link |
01:01:01.800
有些Eigenvalue是負的
link |
01:01:03.800
是什麼意思
link |
01:01:04.800
代表說你往某些方向走
link |
01:01:06.800
function的值會增加
link |
01:01:09.800
你往某些方向走
link |
01:01:10.800
function的值會下降
link |
01:01:12.800
所以它是一個saddle point
link |
01:01:14.800
所以這個就是Hessian
link |
01:01:16.800
它的Eigenvector和Eigenvalue
link |
01:01:18.800
所告訴我們的事情
link |
01:01:21.800
好 後面是一些例子
link |
01:01:25.800
我們可以講完這些例子以後
link |
01:01:27.800
再下課
link |
01:01:28.800
那這些例子非常的簡單
link |
01:01:30.800
所以我們可以講得非常非常的快
link |
01:01:33.800
舉例來說
link |
01:01:34.800
這邊有一個function
link |
01:01:36.800
f of x,y等於x²加3y²
link |
01:01:39.800
這個function只有兩個參數x跟y
link |
01:01:41.800
那一般的deep learning
link |
01:01:43.800
它的參數好歹也有個上萬個
link |
01:01:45.800
所以這個是一個非常簡單的例子
link |
01:01:48.800
比一般的deep learning
link |
01:01:49.800
還要簡單得多
link |
01:01:50.800
假設我們現在考慮的function
link |
01:01:52.800
f of x,y等於x²加3y²
link |
01:01:56.800
我們來分析一下
link |
01:01:59.800
它的有哪些critical point
link |
01:02:02.800
那它的critical point是local minima
link |
01:02:05.800
還是local maxima
link |
01:02:06.800
還是saddle point
link |
01:02:07.800
當然從右邊這個圖示裡面
link |
01:02:09.800
你可以看出說
link |
01:02:10.800
這個function顯然
link |
01:02:11.800
它唯一的critical point
link |
01:02:12.800
就是落在原點的地方
link |
01:02:14.800
而原點這個地方
link |
01:02:15.800
顯然是一個local minima
link |
01:02:18.800
不過我們現在
link |
01:02:19.800
用Hessian matrix來分析一下
link |
01:02:22.800
怎麼分析
link |
01:02:23.800
我們把f of x,y對x做偏為分
link |
01:02:26.800
得到Lx
link |
01:02:27.800
對y做偏為分
link |
01:02:29.800
對y做偏為分
link |
01:02:30.800
得到6倍的y
link |
01:02:32.800
這邊算出來的是gradient
link |
01:02:35.800
接下來我們要算Hessian
link |
01:02:38.800
那什麼時候gradient會零
link |
01:02:40.800
x等於零,y等於零
link |
01:02:41.800
在原點的時候
link |
01:02:43.800
Hessian gradient會是零
link |
01:02:45.800
也就是走到一個critical point
link |
01:02:46.800
接下來我們要分析說
link |
01:02:47.800
這個critical point
link |
01:02:48.800
它是local minima
link |
01:02:49.800
還是local maxima
link |
01:02:51.800
怎麼做
link |
01:02:52.800
算出Hessian的matrix
link |
01:02:54.800
也就是說
link |
01:02:55.800
先把f of x,y
link |
01:02:56.800
對x做偏為分
link |
01:02:58.800
再對x再做一次偏為分
link |
01:03:00.800
對y做偏為分
link |
01:03:01.800
再對x做偏為分
link |
01:03:02.800
對x做偏為分
link |
01:03:03.800
再對y做偏為分
link |
01:03:04.800
對y做偏為分
link |
01:03:05.800
再對y做偏為分
link |
01:03:06.800
把它通通都算出來
link |
01:03:09.800
那x對f of x,y
link |
01:03:11.800
做偏為分是2x
link |
01:03:13.800
再對x做一次偏為分就是2
link |
01:03:15.800
那這一項
link |
01:03:17.800
對y做偏為分是6
link |
01:03:18.800
對x做偏為分是0
link |
01:03:20.800
那它是對稱的
link |
01:03:21.800
所以這邊是0
link |
01:03:22.800
這邊也是0
link |
01:03:23.800
然後對y做兩次偏為分
link |
01:03:25.800
得到6
link |
01:03:26.800
所以今天呢
link |
01:03:27.800
我們在原點這個地方
link |
01:03:30.800
我們的Hessian matrix是2006
link |
01:03:34.800
那2006這個Hessian matrix
link |
01:03:37.800
它是positive
link |
01:03:40.800
它是positive definite
link |
01:03:42.800
還是negative definite
link |
01:03:46.800
還是都不是呢
link |
01:03:47.800
那你是不是要算一下
link |
01:03:48.800
它的Eigenvalue
link |
01:03:50.800
大家記得Eigenvalue
link |
01:03:52.800
要怎麼找嗎
link |
01:03:55.800
你其實忘了對不對
link |
01:03:59.800
所以我們可以
link |
01:04:00.800
其實你可以用別的方法
link |
01:04:01.800
因為這個matrix還蠻簡單的
link |
01:04:03.800
所以我們用很trivial的方法
link |
01:04:05.800
來想想看
link |
01:04:07.800
來想想看
link |
01:04:09.800
它到底應該是local minima
link |
01:04:11.800
還是local maxima
link |
01:04:13.800
你想想看
link |
01:04:14.800
H2006這個matrix
link |
01:04:20.800
2006
link |
01:04:22.800
如果乘某一個vector
link |
01:04:24.800
AB
link |
01:04:26.800
再乘另外一個vector
link |
01:04:27.800
再乘同一個vector
link |
01:04:28.800
AB的transpose
link |
01:04:30.800
會等於多少呢
link |
01:04:31.800
等於AB的transpose乘上
link |
01:04:37.800
2A6B
link |
01:04:41.800
這個是B
link |
01:04:43.800
然後呢
link |
01:04:44.800
這邊是2倍的A平方
link |
01:04:46.800
加上6倍的B平方
link |
01:04:49.800
它一定大於0
link |
01:04:54.800
不是大於等於0喔
link |
01:04:56.800
因為AB不等於0
link |
01:05:00.800
在看那個positive
link |
01:05:02.800
是不是positive definite
link |
01:05:03.800
所以是不考慮zero vector的
link |
01:05:05.800
所以這一項一定大於0
link |
01:05:07.800
所以H是positive definite的
link |
01:05:11.800
因為它是positive definite的
link |
01:05:13.800
所以它是一個local minima
link |
01:05:17.800
就這樣子
link |
01:05:19.800
那其實其他
link |
01:05:20.800
我後面還放了其他的例子啦
link |
01:05:22.800
那你就自己看一下
link |
01:05:24.800
你自己算算看
link |
01:05:25.800
就是算來算去
link |
01:05:26.800
比如說這個
link |
01:05:28.800
H是-2006
link |
01:05:32.800
那你會算一下發現說
link |
01:05:34.800
它不是positive definite的
link |
01:05:37.800
也不是negative definite的
link |
01:05:40.800
它有正的eigenvalue
link |
01:05:43.800
也有負的eigenvalue
link |
01:05:45.800
所以它是一個saddle point
link |
01:05:49.800
這個你就自己算算看
link |
01:05:53.800
在下課之前呢
link |
01:05:55.800
要講一個非常重要的事情
link |
01:05:57.800
叫做degenerate
link |
01:05:59.800
有時候我們會遇到
link |
01:06:01.800
黑線是degenerate的狀況
link |
01:06:04.800
所以degenerate的意思是說
link |
01:06:06.800
發現至少有一個eigenvalue
link |
01:06:10.800
它是0
link |
01:06:11.800
至少有一個eigenvalue是0的意思
link |
01:06:13.800
是什麼意思
link |
01:06:14.800
代表說
link |
01:06:15.800
我們今天在我們要考慮的
link |
01:06:17.800
那個θ0的那個地方
link |
01:06:19.800
我們要考慮的那個preview point
link |
01:06:21.800
往某個方向走過去
link |
01:06:23.800
發現說它不增也不降
link |
01:06:25.800
我們說eigenvalue的意思就是說
link |
01:06:27.800
往那個eigenvector的方向走過去
link |
01:06:29.800
會增加那個eigenvalue的值
link |
01:06:31.800
eigenvalue是正的
link |
01:06:32.800
代表說往那個方向走
link |
01:06:33.800
function會增加
link |
01:06:34.800
eigenvalue是負的
link |
01:06:36.800
代表往那個方向走
link |
01:06:37.800
eigenvalue會下降
link |
01:06:38.800
所以當我們發現說
link |
01:06:39.800
有些eigenvalue是0
link |
01:06:40.800
代表說往某個方向走
link |
01:06:42.800
不增也不降
link |
01:06:46.800
這樣會造成什麼問題呢
link |
01:06:48.800
我們來舉一個例子
link |
01:06:52.800
假設有一個function
link |
01:06:53.800
f of x,y
link |
01:06:54.800
它是x²加y²
link |
01:06:58.800
那我們就做一下微分
link |
01:06:59.800
對x做微分得到2x
link |
01:07:01.800
對y微分得到4x的y³
link |
01:07:04.800
那我們發現說
link |
01:07:05.800
它有一個critical point
link |
01:07:06.800
落在x等於0,y等於0
link |
01:07:10.800
這個critical point
link |
01:07:11.800
它是local minima,local maxima
link |
01:07:15.800
還是saddle point呢
link |
01:07:17.800
不需要用任何
link |
01:07:18.800
不需要用hessian
link |
01:07:19.800
也不需要用什麼eigenvalue
link |
01:07:21.800
eigenvector
link |
01:07:22.800
憑著直覺
link |
01:07:23.800
你覺得它是local minima
link |
01:07:25.800
還是local maxima
link |
01:07:27.800
還是saddle point呢
link |
01:07:29.800
覺得它是local minima的同學
link |
01:07:31.800
舉手一下
link |
01:07:34.800
好,手放下
link |
01:07:35.800
覺得它是saddle point的同學
link |
01:07:36.800
舉手一下
link |
01:07:40.800
覺得它是local maxima的同學
link |
01:07:41.800
舉手一下
link |
01:07:43.800
沒有,好,所有
link |
01:07:44.800
大多數同學都覺得它是
link |
01:07:45.800
local minima
link |
01:07:46.800
因為很直覺嘛
link |
01:07:47.800
就是0,0
link |
01:07:49.800
這個function最小值就是0嘛
link |
01:07:51.800
就落在原點的地方
link |
01:07:52.800
我隨便給它一點x
link |
01:07:53.800
隨便給它一點y
link |
01:07:54.800
一定都比0還要大
link |
01:07:56.800
所以這個點
link |
01:07:57.800
原點的地方
link |
01:07:58.800
顯然是一個local minima
link |
01:07:59.800
它是長這樣子的一個
link |
01:08:00.800
它像一個碗這樣子的function
link |
01:08:02.800
它像一個碗這樣子的function
link |
01:08:04.800
好,那接下來
link |
01:08:05.800
假設我們
link |
01:08:06.800
沒有用這麼直觀的方法來想
link |
01:08:08.800
而是
link |
01:08:09.800
搞一下hessian
link |
01:08:10.800
搞一下hessian
link |
01:08:11.800
然後這個hessian說
link |
01:08:13.800
你就
link |
01:08:15.800
怒算一波
link |
01:08:16.800
這其實很簡單
link |
01:08:17.800
怒算一波發現
link |
01:08:18.800
它的h呢
link |
01:08:19.800
是2000
link |
01:08:22.800
h是2000是什麼意思啊
link |
01:08:24.800
h是2000的意思是說
link |
01:08:27.800
h是2000
link |
01:08:36.800
假設我們現在
link |
01:08:38.800
the critical point
link |
01:08:39.800
在這個地方
link |
01:08:40.800
我們往
link |
01:08:41.800
10這個位置走過去
link |
01:08:45.800
10就是開10這樣子
link |
01:08:48.800
這個真的太冷
link |
01:08:49.800
這個我現場講的
link |
01:08:50.800
這樣子
link |
01:08:54.800
太弱了
link |
01:08:56.800
這個假設它就是
link |
01:08:58.800
然後我們把
link |
01:09:00.800
10乘上2000
link |
01:09:05.800
這個乘上10
link |
01:09:07.800
這個算出來是多少呢
link |
01:09:09.800
算出來是
link |
01:09:11.800
這個是0啊
link |
01:09:14.800
算出來是2對不對
link |
01:09:17.800
算出來是2
link |
01:09:18.800
代表說
link |
01:09:19.800
往這個方向走
link |
01:09:20.800
我們會加2
link |
01:09:22.800
是增加的
link |
01:09:23.800
往這個方向走是增加的
link |
01:09:27.800
而如果我們往
link |
01:09:28.800
另外一個方向走
link |
01:09:29.800
我們往
link |
01:09:31.800
01這個方向走
link |
01:09:33.800
你會發現說
link |
01:09:34.800
如果把10換成01
link |
01:09:37.800
那我們發現說
link |
01:09:38.800
這邊是加0
link |
01:09:40.800
不增也不減
link |
01:09:43.800
那你們會說
link |
01:09:45.800
那往剩下的方向走
link |
01:09:47.800
都是2跟0的
link |
01:09:49.800
linear combination
link |
01:09:52.800
這個就是說
link |
01:09:53.800
往10的方向走是加2
link |
01:09:55.800
往01的方向走是加0
link |
01:09:57.800
其實這兩個vector
link |
01:09:58.800
就是它的eigenvector
link |
01:10:01.800
所以你今天往
link |
01:10:02.800
其餘的方向走
link |
01:10:03.800
都是2跟0的
link |
01:10:04.800
linear combination
link |
01:10:05.800
好像往每一個方向走的值
link |
01:10:07.800
都會增加
link |
01:10:09.800
所以它是一個local minima
link |
01:10:11.800
而得到的結果
link |
01:10:12.800
確實也是如此
link |
01:10:13.800
它是一個local minima
link |
01:10:14.800
但是現在
link |
01:10:15.800
我們換一個問題
link |
01:10:17.800
假設現在我們考慮的
link |
01:10:19.800
不是f of x y
link |
01:10:21.800
而是g of x y
link |
01:10:23.800
它是x²-y²
link |
01:10:26.800
我們可以看到
link |
01:10:27.800
f of x y它的h是
link |
01:10:32.800
我寫錯了對不對
link |
01:10:34.800
這個其實並不是負2
link |
01:10:36.800
它是2這樣子
link |
01:10:39.800
對不對
link |
01:10:40.800
因為前頁是2啊
link |
01:10:41.800
為什麼這邊會是負2呢
link |
01:10:43.800
真是抱歉啊
link |
01:10:44.800
真是抱歉
link |
01:10:45.800
這個負要拿掉
link |
01:10:46.800
這個負要拿掉
link |
01:10:48.800
這個g of x y
link |
01:10:51.800
g of x y
link |
01:10:52.800
它呢是x²-y²
link |
01:10:57.800
好那現在呢
link |
01:10:58.800
問大家說
link |
01:10:59.800
假設在原點的地方
link |
01:11:02.800
x²-y²
link |
01:11:04.800
它是local maxima
link |
01:11:05.800
local minima
link |
01:11:06.800
還是一個single point呢
link |
01:11:08.800
我們剛剛已經問過說
link |
01:11:09.800
在x²加y²
link |
01:11:10.800
在原點的地方
link |
01:11:11.800
它是一個local minima
link |
01:11:13.800
Hadrian好像也告訴我們說
link |
01:11:14.800
它是一個local minima
link |
01:11:16.800
但是如果我們考慮x²-y²呢
link |
01:11:19.800
它是local minima
link |
01:11:20.800
local maxima
link |
01:11:21.800
還是single point呢
link |
01:11:22.800
憑著直覺想一下
link |
01:11:24.800
覺得它是local minima的同學
link |
01:11:26.800
舉手一下
link |
01:11:28.800
覺得它是local maxima的同學
link |
01:11:30.800
舉手一下
link |
01:11:32.800
覺得它是single point的同學
link |
01:11:33.800
舉手一下
link |
01:11:34.800
好手放下
link |
01:11:35.800
所以多數同學覺得它是single point
link |
01:11:37.800
沒錯
link |
01:11:38.800
因為今天假設
link |
01:11:39.800
y固定是0增加x
link |
01:11:41.800
它的值增加
link |
01:11:42.800
x固定是0增加y
link |
01:11:44.800
那它的值減少
link |
01:11:45.800
所以它是一個single point
link |
01:11:47.800
但是如果你去算一下
link |
01:11:48.800
它的Hadrian的話
link |
01:11:50.800
會發現說
link |
01:11:51.800
這兩個matrix
link |
01:11:53.800
在原點的地方
link |
01:11:56.800
它們不只歸電都是0
link |
01:11:58.800
它們連Hadrian matrix
link |
01:11:59.800
都是一模一樣
link |
01:12:03.800
那剛才那個Hadrian matrix
link |
01:12:05.800
一模一樣的Hadrian matrix
link |
01:12:07.800
在這個function
link |
01:12:08.800
好像告訴我們說
link |
01:12:09.800
它是一個local minima
link |
01:12:11.800
但是我們剛才直覺的知道說
link |
01:12:13.800
Hg of xy它其實是一個single point
link |
01:12:15.800
不是local minima
link |
01:12:16.800
所以我們發現說
link |
01:12:18.800
H其實當它有
link |
01:12:21.800
zero vector的時候
link |
01:12:23.800
我們沒有辦法判斷說
link |
01:12:25.800
在那個zero eigenvalue的方向
link |
01:12:28.800
到底實際上是增加的
link |
01:12:30.800
還是減少的
link |
01:12:31.800
也就是說
link |
01:12:32.800
今天我們剛才說
link |
01:12:34.800
增加從0,1這個方向走
link |
01:12:38.800
從H這個Hadrian matrix看起來
link |
01:12:41.800
好像是加0
link |
01:12:43.800
但實際上其實並不是
link |
01:12:46.800
這邊要打一個問號
link |
01:12:48.800
之所以會覺得加0是說
link |
01:12:50.800
如果我們只考慮Hadrian那一項
link |
01:12:52.800
是加0
link |
01:12:53.800
但是其實後面還有其他項
link |
01:12:55.800
這只是一個approximation而已
link |
01:12:57.800
我們說F of theta
link |
01:12:59.800
等於某一項常數
link |
01:13:02.800
加上某一項跟歸電有關的項
link |
01:13:04.800
加上某一項跟Hadrian有關的項
link |
01:13:06.800
其實只是一個approximation而已
link |
01:13:08.800
後面還有其他的項
link |
01:13:10.800
只是那些項因為它的值太小了
link |
01:13:12.800
所以我們不考慮它
link |
01:13:13.800
但是今天既然連Hadrian那一項是0
link |
01:13:15.800
其他的項就會顯露出它的影響
link |
01:13:18.800
所以這個地方
link |
01:13:19.800
到底是加的還是減的
link |
01:13:21.800
就變成是不知道的
link |
01:13:22.800
所以今天當你發現說
link |
01:13:25.800
你的Hadrian matrix
link |
01:13:26.800
它的eigenvalue是0的時候
link |
01:13:28.800
它有是0的eigenvalue的時候
link |
01:13:30.800
你就要小心
link |
01:13:31.800
這個時候用eigenvalue
link |
01:13:33.800
用Hadrian matrix來判斷它是
link |
01:13:35.800
local minima
link |
01:13:36.800
local minima還是zero point
link |
01:13:38.800
這個問題是不適用的
link |
01:13:40.800
是不適用的
link |
01:13:43.800
其實還有其他的例子
link |
01:13:46.800
這個大家就自己看一下
link |
01:13:48.800
其他degenerate的例子
link |
01:13:49.800
比如說這個function
link |
01:13:51.800
它的Hadrian
link |
01:13:52.800
它在原點那個地方
link |
01:13:53.800
Hadrian算出來是000這樣
link |
01:13:56.800
是000
link |
01:13:58.800
但是它顯然是一個local maxima
link |
01:14:00.800
只是在這個地方
link |
01:14:01.800
它不知道怎麼
link |
01:14:02.800
它非常非常的平
link |
01:14:04.800
非常非常的平
link |
01:14:06.800
但這邊它很平
link |
01:14:07.800
平到就好像是說
link |
01:14:09.800
我們如果拿另外一個
link |
01:14:11.800
zero的function出來看
link |
01:14:13.800
它在原點這個地方
link |
01:14:14.800
Hadrian跟它其實是一模一樣
link |
01:14:16.800
也就是如果我們只看
link |
01:14:17.800
Gradient跟Hadrian的話
link |
01:14:19.800
會覺得說在這個地方
link |
01:14:21.800
它根本就只是一個平面而已
link |
01:14:24.800
它根本沒有任何的區度
link |
01:14:27.800
但是實際上
link |
01:14:28.800
如果你在考慮更高次的話
link |
01:14:29.800
它仍然是有變化的
link |
01:14:32.800
還有別的例子
link |
01:14:33.800
這個是一個
link |
01:14:35.800
這個例子
link |
01:14:37.800
這個function
link |
01:14:38.800
x三方減三xy平方
link |
01:14:40.800
它的Hadrian
link |
01:14:41.800
在原點的地方的Hadrian
link |
01:14:43.800
跟這一個function
link |
01:14:45.800
其實是一模一樣的
link |
01:14:47.800
都是zero vector
link |
01:14:48.800
但發現說這個地方
link |
01:14:50.800
它是一個local
link |
01:14:52.800
它是一個maxima
link |
01:14:54.800
這個地方
link |
01:14:55.800
它是一個很妙
link |
01:14:56.800
它是一個奇妙的saddle point
link |
01:14:58.800
那這個function
link |
01:15:00.800
有趣的地方是它是有名字的
link |
01:15:02.800
它叫做monkey saddle
link |
01:15:04.800
我以前一直不知道
link |
01:15:05.800
為什麼它叫做monkey saddle
link |
01:15:06.800
我以為是
link |
01:15:07.800
它扭曲的形狀
link |
01:15:08.800
看起來像是一個猴子
link |
01:15:10.800
但是怎麼看都不像
link |
01:15:11.800
直到我看到這個圖
link |
01:15:13.800
它其實是指
link |
01:15:14.800
一個猴子坐在這個function上面
link |
01:15:16.800
為什麼這個猴子
link |
01:15:17.800
可以坐在這個function上面呢
link |
01:15:19.800
因為一般的saddle point
link |
01:15:21.800
它是有兩個向下的方向
link |
01:15:23.800
那是給人的兩隻腳放的
link |
01:15:25.800
但是這一個
link |
01:15:26.800
它有三個向下的方向
link |
01:15:27.800
其中一個方向
link |
01:15:28.800
是給猴子的尾巴放的
link |
01:15:30.800
所以它叫做monkey saddle
link |
01:15:35.800
最後在下課之前
link |
01:15:37.800
有一件事情是要提醒大家的
link |
01:15:39.800
當你今天在training的時候
link |
01:15:41.800
你發現你的loss不再下降了
link |
01:15:44.800
並不代表你一定
link |
01:15:46.800
走到一個critical point
link |
01:15:47.800
剛才我們是假設
link |
01:15:48.800
你已經走到
link |
01:15:49.800
critical point規定是0的情況下
link |
01:15:51.800
然後來分析它的黑圈
link |
01:15:52.800
告訴你說
link |
01:15:53.800
它是local minima
link |
01:15:54.800
local maxima
link |
01:15:55.800
還是saddle point
link |
01:15:56.800
但是實際上
link |
01:15:57.800
你有可能
link |
01:15:58.800
你的training停下來了
link |
01:15:59.800
但是你的規定根本就不是0
link |
01:16:02.800
這個圖呢
link |
01:16:03.800
其實是出自
link |
01:16:04.800
Ian Goodfellow
link |
01:16:05.800
那個deep learning的教科書
link |
01:16:06.800
他自己training了一個network
link |
01:16:07.800
他發現
link |
01:16:08.800
當loss已經下降
link |
01:16:09.800
已經saturate
link |
01:16:10.800
loss沒有辦法再壓低了
link |
01:16:12.800
這個時候他算出來的
link |
01:16:14.800
在這些情況下
link |
01:16:15.800
他算出來的規定的null
link |
01:16:17.800
其實仍然很大
link |
01:16:18.800
也就是說
link |
01:16:19.800
它根本就不是走到saddle point
link |
01:16:21.800
所以它根本就不是
link |
01:16:23.800
它根本就不是走到
link |
01:16:24.800
它根本就不是走到saddle point
link |
01:16:27.800
這邊另外一個例子是來自於
link |
01:16:29.800
Benjo的投影片
link |
01:16:31.800
他也是做了跟
link |
01:16:32.800
Ian Goodfellow做的事情
link |
01:16:33.800
非常類似
link |
01:16:34.800
他有visualize說
link |
01:16:35.800
training某一個network
link |
01:16:36.800
loss持續的下降
link |
01:16:38.800
但是我們看一下
link |
01:16:39.800
他的gradient
link |
01:16:40.800
發現說
link |
01:16:41.800
這個gradient的值
link |
01:16:42.800
並沒有趨近於0
link |
01:16:43.800
而是上上下下不斷的跳
link |
01:16:45.800
然後他發現說
link |
01:16:46.800
gradient的值會
link |
01:16:48.800
在某一些區域
link |
01:16:49.800
逐漸變小
link |
01:16:50.800
然後再突然暴增
link |
01:16:52.800
再變小
link |
01:16:53.800
再暴增
link |
01:16:54.800
變小再暴增
link |
01:16:55.800
他認為說
link |
01:16:56.800
來自於說
link |
01:16:57.800
在這個變小的那個區域
link |
01:16:58.800
代表說
link |
01:16:59.800
現在逐漸靠近一個saddle point
link |
01:17:01.800
所以gradient越來越小
link |
01:17:02.800
然後這個暴增就是
link |
01:17:04.800
逃出了那個saddle point
link |
01:17:06.800
所以gradient就越來越大
link |
01:17:07.800
比方說
link |
01:17:08.800
你有一個那個
link |
01:17:09.800
安點的形狀
link |
01:17:10.800
來從某個角落
link |
01:17:11.800
這樣慢慢走下來
link |
01:17:12.800
越來越接近安點
link |
01:17:13.800
gradient越來越小
link |
01:17:14.800
但是接下來
link |
01:17:15.800
你再從另外一個方向
link |
01:17:16.800
就逃出去了
link |
01:17:17.800
所以gradient又變大
link |
01:17:18.800
這個是Benjo的猜測
link |
01:17:19.800
那其實我們在
link |
01:17:20.800
作業一之二裡面
link |
01:17:22.800
會請大家做這件事情
link |
01:17:23.800
看看Ian Goodfellow跟Benjo
link |
01:17:25.800
是不是在騙我們這樣子