天天看點

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

When gradient is small

Critical Point

Training Fails because

​ 現在我們要講的是Optimization的部分,是以我們要講的東西基本上跟Overfitting沒有什麼太大的關聯,我們隻讨論Optimization的時候,怎麼把gradient descent做得更好,那為什麼Optimization會失敗呢?

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 你常常在做Optimization的時候,你會發現,随著你的參數不斷的update,你的training的loss不會再下降,但是你對這個loss仍然不滿意,就像我剛才說的,你可以把deep的network,跟linear的model,或比較shallow network 比較,發現說它沒有做得更好,是以你覺得deepnetwork,沒有發揮它完整的力量,是以Optimization顯然是有問題的

​ 但有時候你會甚至發現,一開始你的model就train不起來,一開始你不管怎麼update你的參數,你的loss通通都掉不下去,那這個時候到底發生了什麼事情呢?

​ 過去常見的一個猜想,是因為我們現在走到了一個地方,這個地方參數對loss的微分為零,當你的參數對loss微分為零的時候,gradient descent就沒有辦法再update參數了,這個時候training就停下來了,loss當然就不會再下降了。

​ 講到gradient為零的時候,大家通常腦海中最先浮現的,可能就是local minima,是以常有人說做deep learning,用gradient descent會卡在local minima,然後是以gradient descent不work,是以deep learning不work。

​ 但是如果有一天你要寫,跟deep learning相關paper的時候,你千萬不要講卡在local minima這種事情,别人會覺得你非常沒有水準,為什麼

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 因為不是隻有local minima的gradient是零,還有其他可能會讓gradient是零,比如說 saddle point,所謂的saddle point,其實就是gradient是零,但是不是local minima,也不是local maxima的地方,像在右邊這個例子裡面 紅色的這個點,它在左右這個方向是比較高的,前後這個方向是比較低的,它就像是一個馬鞍的形狀,是以叫做saddle point,那中文就翻成鞍點

​ 像saddle point這種地方,它也是gradient為零,但它不是local minima,那像這種gradient為零的點,統稱為critical point,是以你可以說你的loss,沒有辦法再下降,也許是因為卡在了critical point,但你不能說是卡在local minima,因為saddle point也是微分為零的點

​ 但是今天如果你發現你的gradient,真的很靠近零,卡在了某個critical point,我們有沒有辦法知道,到底是local minima,還是saddle point?其實是有辦法的

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 為什麼我們想要知道到底是卡在local minima,還是卡在saddle point呢

  • 因為如果是卡在local minima,那可能就沒有路可以走了,因為四周都比較高,你現在所在的位置已經是最低的點,loss最低的點了,往四周走 loss都會比較高,你會不知道怎麼走到其他的地方去
  • 但saddle point就比較沒有這個問題,如果你今天是**卡在saddle point的話,saddle point旁邊還是有路可以走的,**還是有路可以讓你的loss更低的,你隻要逃離saddle point,你就有可能讓你的loss更低

​ 是以鑒别今天我們走到,critical point的時候,到底是local minima,還是saddle point,是一個值得去探讨的問題,那怎麼知道今天一個critical point,到底是屬於local minima,還是saddle point呢?

Warning of Math

​ 這邊需要用到一點數學,以下這段其實沒有很難的數學,就隻是微積分跟線性代數,但如果你沒有聽懂的話,以下這段skip掉是沒有關係的

​ 那怎麼知道說一個點,到底是local minima,還是saddle point呢?

​ 你要知道我們loss function的形狀,可是我們怎麼知道,loss function的形狀呢,network本身很複雜,用複雜network算出來的loss function,顯然也很複雜,我們怎麼知道loss function,長什麼樣子,雖然我們沒有辦法完整知道,整個loss function的樣子

Tayler Series Approximation

​ 但是如果給定某一組參數,比如說藍色的這個 θ ′ θ' θ′,在 θ ′ θ' θ′附近的loss function,是有辦法被寫出來的,它寫出來就像是這個樣子

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 是以這個 L ( θ ) L(θ) L(θ)完整的樣子寫不出來,但是它在 θ ′ θ' θ′附近,你可以用這個式子來表示它,這個式子是,Tayler Series Appoximation泰勒級數展開,這個假設你在微積分的時候,已經學過了,是以我就不會細講這一串是怎麼來的,但我們就隻講一下它的概念,這一串裡面包含什麼東西呢?

  • 第一項是 L ( θ ′ ) L(θ') L(θ′),就告訴我們說,當 θ θ θ跟 θ ′ θ' θ′很近的時候, L ( θ ) L(θ) L(θ)應該跟 L ( θ ′ ) L(θ') L(θ′)還蠻靠近的
  • 第二項是 ( θ − θ ′ ) T g (θ-θ')^Tg (θ−θ′)Tg
    李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small
    g g g是一個向量,這個g就是我們的gradient,我們用綠色的這個g來代表gradient,這個gradient會來彌補, θ ′ θ' θ′跟 θ θ θ之間的差距,我們雖然剛才說 θ ′ θ' θ′跟 θ θ θ,它們應該很接近,但是中間還是有一些差距的,那這個差距,第一項我們用這個gradient,來表示他們之間的差距,有時候gradient會寫成 ∇ L ( θ ′ ) ∇L(θ') ∇L(θ′),這個地方的 g g g是一個向量,它的第i個component,就是θ的第i個component對L的微分,光是看g還是沒有辦法,完整的描述L(θ),你還要看第三項
  • 第三項跟Hessian有關,這邊有一個$H $
    李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small
    這個 H H H叫做Hessian,它是一個矩陣,這個第三項是,再 ( θ − θ ′ ) T H ( θ − θ ′ ) (θ-θ')^TH(θ-θ') (θ−θ′)TH(θ−θ′),是以第三項會再補足,再加上gradient以後,與真正的L(θ)之間的差距.H裡面放的是L的二次微分,它第i個row,第j個column的值,就是把θ的第i個component,對L作微分,再把θ的第j個component,對L作微分,再把θ的第i個component,對L作微分,做兩次微分以後的結果 就是這個 H i j H_i{_j} Hi​j​

​ 如果這邊你覺得有點聽不太懂的話,也沒有關係,反正你就記得這個 L ( θ ) L(θ) L(θ),這個loss function,這個error surface在 θ ′ θ' θ′附近,可以寫成這個樣子,這個式子跟兩個東西有關係,跟gradient有關係,跟hessian有關係,gradient就是一次微分,hessian就是裡面有二次微分的項目

Hession

​ 那如果我們今天走到了一個critical point,意味著gradient為零,也就是綠色的這一項完全都不見了

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ g g g是一個zero vector,綠色的這一項完全都不見了,隻剩下紅色的這一項,是以當在critical point的時候,這個loss function,它可以被近似為 L ( θ ′ ) L(θ') L(θ′),加上紅色的這一項

​ 我們可以根據紅色的這一項來判斷,在 θ ′ θ' θ′附近的error surface,到底長什麼樣子

​ 知道error surface長什麼樣子,我就可以判斷

​ θ ′ θ' θ′它是一個local minima,是一個local maxima,還是一個saddle point

​ 我們可以靠這一項來了解,這個error surface的地貌,大概長什麼樣子,知道它地貌長什麼樣子,我們就可以知道說,現在是在什麼樣的狀态,這個是Hessian

​ 那我們就來看一下怎麼根據Hessian,怎麼根據紅色的這一項,來判斷θ’附近的地貌

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 我們現在為了等一下符号友善起見,我們把 ( θ − θ ′ ) (θ-θ') (θ−θ′)用 v v v這個向量來表示

  • 如果今天對任何可能的 v v v, v T H v v^THv vTHv都大於零,也就是說 現在θ不管代任何值,v可以是任何的v,也就是θ可以是任何值,不管θ代任何值,紅色框框裡面通通都大於零,那意味著說 L ( θ ) > L ( θ ′ ) L(θ)>L(θ') L(θ)>L(θ′)。 L ( θ ) L(θ) L(θ)不管代多少 隻要在 θ ′ θ' θ′附近, L ( θ ) L(θ) L(θ)都大於 L ( θ ′ ) L(θ') L(θ′),代表 L ( θ ′ ) L(θ') L(θ′)是附近的一個最低點,是以它是local minima
  • 如果今天反過來說,對所有的 v v v而言, v T H v v^THv vTHv都小於零,也就是紅色框框裡面永遠都小於零,也就是說 θ θ θ不管代什麼值,紅色框框裡面都小於零,意味著說 L ( θ ) < L ( θ ′ ) L(θ)<L(θ') L(θ)<L(θ′),代表 L ( θ ′ ) L(θ') L(θ′)是附近最高的一個點,是以它是local maxima
  • 第三個可能是假設, v T H v v^THv vTHv,有時候大於零 有時候小於零,你代不同的v進去 代不同的θ進去,紅色這個框框裡面有時候大於零,有時候小於零,意味著說在θ’附近,有時候L(θ)>L(θ’) 有時候L(θ)<L(θ’),在L(θ’)附近,有些地方高 有些地方低,這意味著什麼,這意味著這是一個saddle point

​ 但是你這邊是說我們要代所有的 v v v,去看 v T H v v^THv vTHv是大於零,還是小於零.我們怎麼有可能把所有的v,都拿來試試看呢,是以有一個更簡便的方法,去确認說這一個條件或這一個條件,會不會發生.

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 這個就直接告訴你結論,線性代數理論上是有教過這件事情的,如果今天對所有的v而言, v T H v v^THv vTHv都大於零,那這種矩陣叫做positive definite 正定矩陣,positive definite的矩陣,它所有的eigen value特征值都是正的

​ 是以如果你今天算出一個hessian,你不需要把它跟所有的v都乘看看,你隻要去直接看這個H的eigen value,如果你發現

  • 所有eigen value都是正的,那就代表說這個條件成立,就 v T H v v^THv vTHv,會大於零,也就代表說是一個local minima。是以你從hessian metric可以看出,它是不是local minima,你隻要算出hessian metric算完以後,看它的eigen value發現都是正的,它就是local minima。
  • 那反過來說也是一樣,如果今天在這個狀況,對所有的v而言, v T H v v^THv vTHv小於零,那H是negative definite,那就代表所有eigen value都是負的,就保證他是local maxima
  • 那如果eigen value有正有負,那就代表是saddle point,

​ 那假設在這裡你沒有聽得很懂的話,你就可以記得結論,你隻要算出一個東西,這個東西的名字叫做hessian,它是一個矩陣,這個矩陣如果它所有的eigen value,都是正的,那就代表我們現在在local minima,如果它有正有負,就代表在saddle point。

​ 那如果剛才講的,你覺得你沒有聽得很懂的話,我們這邊舉一個例子

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 我們現在有一個史上最廢的network,輸入一個x,它隻有一個neuron,乘上 w ₁ w₁ w₁,而且這個neuron,還沒有activation function,是以x乘上 w ₁ w₁ w₁以後 之後就輸出,然後再乘上 w ₂ w₂ w₂ 然後就再輸出,就得到最終的資料就是y.總之這個function非常的簡單

y = w ₁ × w ₂ × x y= w₁×w₂×x y=w₁×w₂×x

​ 我們有一個史上最廢的training set,這個data set說,我們隻有一筆data,這筆data是x,是1的時候,它的level是1 是以輸入1進去,你希望最終的輸出跟1越接近越好

​ 而這個史上最廢的training,它的error surface,也是有辦法直接畫出來的,因為反正隻有兩個參數 w₁ w₂,連bias都沒有,假設沒有bias,隻有w₁跟w₂兩個參數,這個network隻有兩個參數 w₁跟w₂,那我們可以窮舉所有w₁跟w₂的數值,算出所有w₁ w₂數值所代來的loss,然後就畫出error surface 長這個樣

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 四個角落loss是高的,好 那這個圖上你可以看出來說,有一些critical point,這個黑點點的地方(0,0),原點的地方是critical point,然後事實上,右上三個黑點也是一排critical point,左下三個點也是一排critical point

​ 如果你更進一步要分析,他們是saddle point,還是local minima的話,那圓心這個地方,原點這個地方 它是saddle point,為什麼它是saddle point呢

​ 你往左上這個方向走 loss會變大,往右下這個方向走 loss會變大,往左下這個方向走 loss會變小,往右下這個方向走 loss會變小,它是一個saddle point

​ 而這兩群critical point,它們都是local minima,是以這個山溝裡面,有一排local minima,這一排山溝裡面有一排local minima,然後在原點的地方,有一個saddle point,這個是我們把error surface,暴力所有的參數,得到的loss function以後,得到的loss的值以後,畫出error surface,可以得到這樣的結論

​ 現在假設如果不暴力所有可能的loss,如果要直接算說一個點,是local minima,還是saddle point的話 怎麼算呢

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 我們可以把loss的function寫出來,這個loss的function 這個L是

L = ( y ^ − w 1 w 2 x ) 2 L=(\hat{y}-w_1 w_2 x)^2 L=(y^​−w1​w2​x)2

​ 正确答案 ŷ減掉model的輸出,也就是w₁ w₂x,這邊取square error,這邊隻有一筆data,是以就不會summation over所有的training data,因為反正隻有一筆data,x代1 ŷ代1,我剛才說過隻有一筆訓練資料最廢的,是以隻有一筆訓練資料,是以loss function就是 L = ( y ^ − w 1 w 2 x ) 2 L=(\hat{y}-w_1 w_2 x)^2 L=(y^​−w1​w2​x)2,那你可以把這一個loss function,它的gradient求出來,w₁對L的微分,w₂對L的微分寫出來是這個樣子

∂ L ∂ w 1 = 2 ( 1 − w 1 w 2 ) ( − w 2 ) \frac{∂L}{∂w_1 }=2(1-w_1 w_2 )(-w_2 ) ∂w1​∂L​=2(1−w1​w2​)(−w2​)

∂ L ∂ w 2 = 2 ( 1 − w 1 w 2 ) ( − w 1 ) \frac{∂L}{∂w_2 }=2(1-w_1 w_2 )(-w_1 ) ∂w2​∂L​=2(1−w1​w2​)(−w1​)

​ 這個東西

KaTeX parse error: Undefined control sequence: \ at position 36: …ac{∂L}{∂w_1 }\\\̲ ̲\frac{∂L}{∂w_2 …

​ 就是所謂的g,所謂的gradient,什麼時候gradient會零呢,什麼時候會到一個critical point呢?

​ 舉例來說 如果w₁=0 w₂=0,就在圓心這個地方,如果w₁代0 w₂代0,w₁對L的微分 w₂對L的微分,算出來就都是零 就都是零,這個時候我們就知道說,原點就是一個critical point,但它是local maxima,它是local maxima,local minima,還是saddle point呢,那你就要看hessian才能夠知道了

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 當然 我們剛才已經暴力所有可能的w₁ w₂了,是以你已經知道說,它顯然是一個saddle point,但是現在假設還沒有暴力所有可能的loss,是以我們要看看能不能夠用H,用Hessian看出它是什麼樣的critical point,那怎麼算出這個H呢

​ H它是一個矩陣,這個矩陣裡面元素就是L的二次微分,是以這個矩陣裡面第一個row,第一個coloumn的位置,就是w₁對L微分兩次,第一個row 第二個coloumn的位置,就是先用w₂對L作微分,再用w₁對L作微分,然後這邊就是w₁對L作微分,w₂對L作微分,然後w₂對L微分兩次,這四個值組合起來,就是我們的hessian,那這個hessian的值是多少呢

​ 這個hessian的式子,我都已經把它寫出來了,你隻要把w₁=0 w₂=0代進去,代進去 你就得到在原點的地方,hessian是這樣的一個矩陣

KaTeX parse error: Undefined control sequence: \ at position 27: …trix} {0}&-2\\\̲ ̲{-2}&0 \end{bma…

​ 這個hessian告訴我們,它是local minima,還是saddle point呢,那你就要看這個矩陣的eigen value,算一下發現,這個矩陣有兩個eigen value,2跟-2 eigen value有正有負,代表saddle point

​ 是以我們現在就是用一個例子,跟你操作一下 告訴你說,你怎麼從hessian看出一個點,它一個critical point 它是saddle point,還是local minima,

Don’t afraid of saddle point

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 如果今天你卡的地方是saddle point,也許你就不用那麼害怕了,因為如果你今天你發現,你停下來的時候,是因為saddle point 停下來了,那其實就有機會可以放心了

​ 因為H它不隻可以幫助我們判斷,現在是不是在一個saddle point,它還指出了我們參數,可以update的方向,就之前我們參數update的時候,都是看gradient 看g,但是我們走到某個地方以後,發現g變成0了 不能再看g了,g不見了 gradient沒有了,但如果是一個saddle point的話,還可以再看H,怎麼再看H呢,H怎麼告訴我們,怎麼update參數呢

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 我們這邊假設 μ \mu μ是H的eigenvector特征向量,然後 λ λ λ是u的eigen value特征值。

​ 如果我們把這邊的 v v v換成 μ \mu μ的話,我們把 μ \mu μ乘在H的左邊,跟H的右邊,也就是 μ T H μ \mu^TH\mu μTHμ, H μ H\mu Hμ會得到 λ μ λ\mu λμ,因為 μ \mu μ是一個eigen vector。H乘上eigen vector特征向量會得到特征向量λ eigen value乘上eigen vector即 λ μ λ\mu λμ

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 是以我們在這邊得到uᵀ乘上λu,然後再整理一下,把uᵀ跟u乘起來,得到‖u‖²,是以得到λ‖u‖²

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 假設我們這邊v,代的是一個eigen vector,我們這邊θ減θ’,放的是一個eigen vector的話,會發現說我們這個紅色的項裡面,其實就是λ‖u‖²

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 那今天如果λ小於零,eigen value小於零的話,那λ‖u‖²就會小於零,因為‖u‖²一定是正的,是以eigen value是負的,那這一整項就會是負的,也就是u的transpose乘上H乘上u,它是負的,也就是紅色這個框裡是負的

​ 是以這意思是說假設 θ − θ ′ = μ θ-θ'=\mu θ−θ′=μ,那這一項 ( θ − θ ′ ) T H ( θ − θ ′ ) (θ-θ')^TH(θ-θ') (θ−θ′)TH(θ−θ′)就是負的,也就是 L ( θ ) < L ( θ ′ ) L(θ)<L(θ') L(θ)<L(θ′)

​ 也就是說假設 θ − θ ′ = μ θ-θ'=\mu θ−θ′=μ,也就是,你在θ’的位置加上u,沿著u的方向做update得到θ,你就可以讓loss變小

​ 因為根據這個式子,你隻要θ減θ’等於u,loss就會變小,是以你今天隻要讓θ等於θ’加u,你就可以讓loss變小,你隻要沿著u,也就是eigen vector的方向,去更新你的參數 去改變你的參數,你就可以讓loss變小了

​ 是以雖然在critical point沒有gradient,如果我們今天是在一個saddle point,你也不一定要驚慌,你隻要找出負的eigen value,再找出它對應的eigen vector,用這個eigen vector去加θ’,就可以找到一個新的點,這個點的loss比原來還要低

​ 舉具體的例子

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 剛才我們已經發現,原點是一個critical point,它的Hessian長這個樣,那我現在發現說,這個Hessian有一個負的eigen value,這個eigen value等於-2,那它對應的eigen vector,它有很多個,其實是無窮多個對應的eigen vector,我們就取一個出來,我們取 [ 1   1 ] \begin{bmatrix}{1} \\\ {1}\end{bmatrix} [1 1​]是它對應的一個eigen vector,那我們其實隻要順著這個u的方向,順著 [ 1   1 ] \begin{bmatrix}{1} \\\ {1}\end{bmatrix} [1 1​]這個vector的方向,去更新我們的參數,就可以找到一個,比saddle point的loss還要更低的點

​ 如果以今天這個例子來看的話,你的saddle point在(0,0)這個地方,你在這個地方會沒有gradient,Hessian的eigen vector告訴我們,隻要往 [ 1   1 ] \begin{bmatrix}{1} \\\ {1}\end{bmatrix} [1 1​]的方向更新,你就可以讓loss變得更小,也就是說你可以逃離你的saddle point,然後讓你的loss變小,是以從這個角度來看,似乎saddle point并沒有那麼可怕

​ 如果你今天在training的時候,你的gradient你的訓練停下來,你的gradient變成零,你的訓練停下來,是因為saddle point的話,那似乎還有解

​ 但是當然實際上,在實際的implementation裡面,你幾乎不會真的把Hessian算出來,這個要是二次微分,要計算這個矩陣的computation,需要的運算量非常非常的大,更遑論你還要把它的eigen value,跟 eigen vector找出來,是以在實作上,你幾乎沒有看到,有人用這一個方法來逃離saddle point

​ 等一下我們會講其他,也有機會逃離saddle point的方法,他們的運算量都比要算這個H,還要小很多,那今天之是以我們把,這個saddle point跟 eigen vector,跟Hessian的eigen vector拿出來講,是想要告訴你說,如果是卡在saddle point,也許沒有那麼可怕,最糟的狀況下你還有這一招,可以告訴你要往哪一個方向走.

Saddle Point v.s. Local Minima

​ 講到這邊你就會有一個問題了,這個問題是,那到底saddle point跟local minima,誰比較常見呢,我們說,saddle point其實并沒有很可怕,那如果我們今天,常遇到的是saddle point,比較少遇到local minima,那就太好了,那到底saddle point跟local minima,哪一個比較常見呢?這邊我們要講一個不相幹的故事,先講一個故事

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 這個故事發生在1543年,1543年發生了什麼事呢,那一年君士坦丁堡淪陷,這個是君士坦丁堡淪陷圖,君士坦丁堡本來是東羅馬帝國的領土,然後被鄂圖曼土耳其帝國佔領了,然後東羅馬帝國就滅亡了,在鄂圖曼土耳其人進攻,君士坦丁堡的時候,那時候東羅馬帝國的國王,是君士坦丁十一世,他不知道要怎麼對抗土耳其人,有人就獻上了一策,找來了一個魔法師叫做狄奧倫娜

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 這是真實的故事,出自三體的故事,這個狄奧倫娜這樣說,狄奧倫娜是誰呢,他有一個能力跟張飛一樣,張飛不是可以萬軍從中取上将首級,如探囊取物嗎,狄奧倫娜也是一樣,他可以直接取得那個蘇丹的頭,他可以從萬軍中取得蘇丹的頭,大家想說狄奧倫娜怎麼這麼厲害,他真的有這麼強大的魔法嗎,是以大家就要狄奧倫娜,先展示一下他的力量,這時候狄奧倫娜就拿出了一個聖杯,大家看到這個聖杯就大吃一驚,為什麼大家看到這個聖杯,要大吃一驚呢,因為這個聖杯,本來是放在聖索菲亞大教堂的地下室,而且它是被放在一個石棺裡面,這個石棺是密封的,沒有人可以打開它.

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 但是狄奧倫娜他從裡面取得了聖杯,而且還放了一串葡萄進去,君士坦丁十一世為了要驗證,狄奧倫娜是不是真的有這個能力,就帶了一堆人真的去撬開了這個石棺,發現聖杯真的被拿走了,裡面真的有一串新鮮的葡萄,就知道狄奧倫娜真的有,這個萬軍從中取上将首級的能力,那為什麼迪奧倫娜可以做到這些事呢,那是因為這個石棺你覺得它是封閉的,那是因為你是從三維的空間來看,從三維的空間來看,這個石棺是封閉的,沒有任何路可以進去,但是狄奧倫娜可以進入四維的空間,從高維的空間中,這個石棺是有路可以進去的,它并不是封閉的,至於狄奧倫娜有沒有成功刺殺蘇丹呢,你可以想像一定是沒有嘛,是以君坦丁堡才淪陷,那至於為什麼沒有,大家請見於三體這樣 就不雷大家,

​ 總之這個從三維的空間來看,是沒有路可以走的東西,在高維的空間中是有路可以走的,error surface會不會也一樣呢

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 是以你在一維的空間中,一維的一個參數的error surface,你會覺得好像到處都是local minima,但是會不會在二維空間來看,它就隻是一個saddle point呢,常常會有人畫類似這樣的圖,告訴你說Deep Learning的訓練,是非常的複雜的,如果我們移動某兩個參數,error surface的變化非常的複雜,是這個樣子的,那顯然它有非常多的local minima,我的這邊現在有一個local minima,但是會不會這個local minima,隻是在二維的空間中,看起來是一個local minima,在更高維的空間中,它看起來就是saddle point,在二維的空間中,我們沒有路可以走,那會不會在更高的次元上,因為更高的次元,我們沒辦法visualize它,我們沒辦法真的拿出來看,會不會在更高維的空間中,其實有路可以走的,那如果次元越高,是不是可以走的路就越多了呢,是以 今天我們在訓練,一個network的時候,我們的參數往往動輒百萬千萬以上,是以我們的error surface,其實是在一個非常高的次元中,對不對,我們參數有多少,就代表我們的error surface的,次元有多少,參數是一千萬 就代表error surface,它的次元是一千萬,竟然次元這麼高,會不會其實,根本就有非常多的路可以走呢,那既然有非常多的路可以走,會不會其實local minima,根本就很少呢,

​ 而經驗上,如果你自己做一些實驗的話,也支援這個假說

李宏毅2021機器學習筆記——Local Minimum And Saddle PointWhen gradient is small

​ 這邊是訓練某一個network的結果,每一個點代表,訓練那個network訓練完之後,把它的Hessian拿出來進行計算,是以這邊的每一個點,都代表一個network,就我們訓練某一個network,然後把它訓練訓練,訓練到gradient很小,卡在critical point,把那組參數出來分析,看看它比較像是saddle point,還是比較像是local minima

  • 縱軸代表training的時候的loss,就是我們今天卡住了,那個loss沒辦法再下降了,那個loss是多少,那很多時候,你的loss在還很高的時候,訓練就不動了 就卡在critical point,那很多時候loss可以降得很低,才卡在critical point,這是縱軸的部分
  • 橫軸的部分是minimum ratio,minimum ratio是eigen value的數目分之正的eigen value的數目,又如果所有的eigen value都是正的,代表我們今天的critical point,是local minima,如果有正有負代表saddle point,那在實作上你會發現說,你幾乎找不到完全所有eigen value都是正的critical point,你看這邊這個例子裡面,這個minimum ratio代表eigen value的數目分之正的eigen value的數目,最大也不過0.5到0.6間而已,代表說隻有一半的eigen value是正的,還有一半的eigen value是負的,

​ 是以今天雖然在這個圖上,越往右代表我們的critical point越像local minima,但是它們都沒有真的,變成local minima,就算是在最極端的狀況,我們仍然有一半的case,我們的eigen value是負的,這一半的case eigen value是正的,代表說在所有的次元裡面有一半的路,這一半的路 如果要讓loss上升,還有一半的路可以讓loss下降。

​ 是以從經驗上看起來,其實local minima并沒有那麼常見,多數的時候,你覺得你train到一個地方,你gradient真的很小,然後是以你的參數不再update了,往往是因為你卡在了一個saddle point。

繼續閱讀