我們用符號b來代表這個不斷被應用的矩陣。
當反覆的應用b在特徵向量上時,如果特徵值|v| < 1,那麼特徵向量就意味著縮短,反之就是延長 。當乙個特徵向量不斷收縮的時候,就可以意味著收斂,哪怕另外的向量是向外延展的。想想向量加法就知道了。
記得上一節裡求梯度的時候,對於正定對稱a,得到f'(x) = ax - b麼,通過ax = b這個式子,我們想著往x成為乙個特徵向量上靠,最好是能從這個式子里弄出個x迭代的關係,迭代的關係裡還有矩陣與x的反覆應用。我們可以通過這樣變形,
(d + e)x = b,這裡d只擁有a的對角元素,e擁有其它元素。再進一步的變形
dx = -ex + b => (這樣做是因為對角陣很好求逆)
x = -d''ex + d''b => (''再次用來表示求逆)
x = bx + z =>(b和z只是記號)
x(i+1) = bx(i) + z
(這樣就滿足要求了,x再變成特徵向量線性組合的形式, 很好很強大)想法是好,但是有一點不得不說明,就是b經常不是對稱的,甚至在確定性上也保證不了(就算a是對稱的),這就決定了此方法好歸好,但不一定收斂 哦。
上面是引子, 下邊才是本篇的重點。
如此變產生這樣乙個想法,要是我們能夠在 那幾個正交方向上每次只 進行一步 ,一步完成那方向上應該移動的貼近解x的距離,那該有多好(直接由x【最優點】往那些方向上引垂線)。想法是絕妙,但是是空想,要是你知道了x,那問題不就直接解決了是吧。所以問題需要變通,轉換成a正交。所謂a正交,是指d(i)'ad(j) = 0,就稱向量d(i)和d(j)是a正交的,也就是共軛。
我們利用共軛其實是利用這樣乙個特點,a * x 這種形式可以看作是對x進行線性變換(變形 ),x'ax對應的形式正是橢圓(橢球)。我們講x'ax=0,如果a是單位對角矩陣,那麼x'與x是正交的。說到底,d(i)'與d(j)是共軛的,正是因為他們在未變形的空間是正交的 。我們也是利用這樣乙個特點,來達到每次方向上只走一次,且一次便是該方向上的最優點。我盤算了一下,如果簡單上一張圖在這裡也會顯得比較突兀,文件裡的圖太大,還要縮小畫布,mspaint又做不了此事,還是免了。
在此之前,可能要插上一點內容,當我們在最速下降過程中應用特徵向量時,定義能量模(energe norm)||e||(a) = (e'ae)1/2.這裡的1/2是開平方的意思。我們用特徵向量來表示e(i),詳細的也不列了,貼圖不方便,這裡面又表示式子很困難。 最小化這個模和最小化f(x)是等價的。因為f(x+e) = f(x) + 1/2 * e'ae. (x+p)是函式上任意一點。看待這個能量模的時候同樣可以用空間變形的角度,能量模相等的同心圓在變形後成為同心橢圓線 ,這些都是函式對映的等值線。a正交的向量正是未變形空間切線與半徑的關係。
詳細講很痛苦,必不可少列出些代數式式子變化和一些trick,其實最根本,自認為最有益的東西已經在上面講出來了,再講下去只是生成共軛梯度方向上的一些讓人欣慰的變化,就此打住。
共軛梯度下降法在神經網路中加快訓練速度有些幫助,假設誤差曲面是二次型的。
最速下降法 and 共軛梯度法
註明 程式中呼叫的函式jintuifa.m golddiv.m我在之前的筆記中已貼出 最速下降法 最速下降法求解f 1 2 x1 x1 9 2 x2 x2的最小值,起始點為x0 9 1 演算法根據最優化方法 天津大學出版社 97頁演算法3.2.1編寫 v1.0 author liuxi bit fo...
梯度下降與共軛梯度法求解最優化應用
使用梯度下降與共軛梯度法求解 python原始碼 from numpy import import matplotlib.pyplot as plt def opt330 x ndarray,r int,alpha float,beta float,alg str,maxiter int 2000 ...
筆記 梯度下降法
詳解機器學習中的梯度消失 原因及其解決方法 導數 方向導數和梯度 要了解梯度下降演算法是什麼首要知道梯度是什麼,導數和方向導數又是了解梯度的前提。導數導數反映的是函式y f x 在某一點處沿x軸正方向的變化率,如果f x 0,說明f x 的函式值在x點沿x軸正方向是趨於增加的 如果f x 0,說明f...