2021 2022學年第一學期寒假學習記錄16

2022-09-18 08:00:40 字數 4015 閱讀 1615

2022.01.16,今天是服務外包競賽:隨便拿個獎隊的專案進行的第十六天,今天根據專案要求繼續學習matlab數字影象處理

機器學習演算法中經常碰到非線性優化問題,如 sparse filtering 演算法,其主要工作在於求解乙個非線性極小化問題。在具體實現中,大多呼叫的是成熟的軟體包做支撐,其中最常用的乙個演算法是 l-bfgs。

l_bfgs演算法是擬牛頓演算法中廣泛使用的一種優化演算法。牛頓演算法具有標準形式:。擬牛頓法是在牛頓法的基礎上發展來的。牛頓法的基本思想是在現有極小值點估計值的附近對目標函式進行二階泰勒展開,進而找到極小點的下乙個估計值。因而,牛頓法具有二次收斂性;然而,牛頓法要求海森矩陣為正定陣,同時對海森矩陣的計算也意味著很大的計算代價,包括對海森矩陣求逆的過程。

隨後,擬牛頓演算法應運而生,擬牛頓法屬於梯度法的一種,具有下面形式:,其中是正定矩陣。該方法在迭代過程中通過對迭代方向的調整,使其接近牛頓下降方向。它的特點是:收斂速度快,避免牛頓法的二次微分計算。相對於共軛梯度法,它的不足在於,在計算迭代方向的矩陣向量乘法中,需要儲存矩陣。並被證明在解決有約束、無約束以及大規模優化問題上比牛頓法更有效。擬牛頓演算法的基本思想是不通過求偏導而直接構造出可近似海森矩陣(或海森矩陣的逆矩陣)的對稱正定矩陣,在「擬牛頓條件」下優化目標函式。不同的擬牛頓演算法則對應不同的構造海森矩陣或其逆矩陣的方式。

擬牛頓條件:

假定在第k次迭代後,使用二次模型對目標函式在處進行近似,為求導操作:

(26)

這裡表示求導,和分別對應和。為n*n對稱正定矩陣,並且在每次迭代中會進行更新。

對上式求極值點可得:

(27)

(28)緊接著,使用相似的方法,在處對該目標函式使用二次模型進行近似,可以得到:

(29)

接下來將建立點處和點處的關係,即上式在處和處的梯度值應該和目標函式一致。因此,可以得到以下的關係:

(30)

(31)

令,將得到以下關係式:

(32)

這就是割線方程,描述了目標函式自變數偏移量和梯度變化量之間的關係,也就是擬牛頓演算法需要滿足的條件。其中是對目標函式相應的海森矩陣的近似,假定對海森矩陣的逆矩陣進行近似,則可以得到另一等價的割線方程:

(33)

bfgs演算法是通過近似海森矩陣來實現的,同時是對稱正定矩陣。接下來給出的構造方法。

bfgs演算法:

採用直接法進行構造,並定義矩陣的更新方式:

(34)

為了保證矩陣的對稱正定特性,對按以下方式進行定義:

(35)

將上式和割線方程聯立可得:

(36)

括號中表示數值結果,並非向量結果。在這裡,假定括號中數值分別是1和-1;之後,確定和的數值,可得:

(37)

再令,並進一步得到和的數值:

(38)

最終得出了的更新方程:

(39)

對上式應用sherman–morrison–woodbury公式將得到該方程的另一表示:

(40)

以上就是bfgs演算法的海森矩陣(或其逆矩陣)的估計值的更新方程。

l_bfgs演算法

l-bfgs演算法是在bfgs演算法的基礎上得到的,由於原始的bfgs演算法需要儲存n*n的矩陣,該儲存量隨n成平方規模增長,為了減少儲存量,減小記憶體開銷,適應大規模的優化問題,l_bfgs演算法應運而生。l_bfgs演算法是對bfgs演算法的近似,其核心思想是不再儲存完整的n*n矩陣,而是僅僅保留m個最近的n維向量和,這樣儲存量就由降低至。與此同時,演算法效能也接近原始bfgs演算法(選取合適的m值,依問題而定)。

緊接著,將給出l_bfgs演算法的具體原理。根據bfgs演算法中的更新方程,可以根據公式展開得到與的關係,如下:

(41)

很自然的,考慮l_bfgs演算法,如果k<=m-1,那麼用來計算的公式成立,無需修改;如果k>m-1(即k>=m)時,僅僅保留最近的m個向量和m個向量,則用來計算的公式變為:

(42)

那麼可以將上述兩種情況進行綜合,令,則有:

(43)

在每步迭代中得到後,在處建立相應的二次模型,根據極值點條件:

(44)

將成為處下一步進行搜尋的方向,根據jorge nocedal stephen j. wright 《numerical optimization》書中的介紹,這裡給出乙個計算的高效的演算法:

以上給出了l_bfgs演算法的原理和演算法流程,這部分將給出在具體優化過程中該演算法的應用。通常,需要將l_bfgs演算法和線搜尋方向配合起來使用,以達到不錯的效果,其收斂性也能得到一定的保證。l-bfgs可以被用來求解大型的無約束優化問題(machine learning中的很多問題都可以用其求解,如logistic regress等)。

這裡首先給出一種廣泛使用的非精確一維線搜尋演算法---wolfe非精確線搜尋。非精確線搜尋演算法是指對目標函式來說,給出在點處沿著下降方向的步長值,使在處的函式值相比處的函式值有一定的下降。而不同的非精確一維線搜尋演算法通過構造不同的測試條件來達到使函式值取得一定下降的目的,本文僅給出滿足(強)wolfe條件的一維非精確線搜尋演算法。

下面給出滿足wolfe條件的可接受步長區間的圖:

圖7 wolfe條件的可接受步長區間的圖

(1)                                  (45)

(2)                                       (46) 

強wolfe條件:(2)                  (47)

這裡條件1用來使處的函式值有一定的下降值,條件2用來限定處的斜率應大於處斜率的倍;而強wolfe條件(2)的進一步限定了處斜率值,使可接受步長落在某個波谷中。

當然,在該演算法具體的實現中,僅僅有這些是不夠的,當每次迭代步長落在不滿足(強)wolfe條件的地方,需要使用插值演算法給出新的步長值,這樣才能夠達到滿意的結果。

下面給出wolfe非精確一維線搜尋演算法的流程:

根據割線方程,和應為對稱正定矩陣,這在時成立。當目標函式為凸函式,成立;然而對非凸函式來說,該不等式不一定成立,但是,如果線搜尋演算法滿足wolfe或強wolfe條件,將成立。此外,線搜尋演算法中初始步長的選擇也尤為重要。

translate with

xenglish

arabic

hebrew

polish

bulgarian

hindi

portuguese

catalan

hmong daw

romanian

chinese simplified

hungarian

russian

chinese traditional

indonesian

slovak

czech

italian

slovenian

danish

japanese

spanish

dutch

klingon

swedish

english

korean

thai

estonian

latvian

turkish

finnish

lithuanian

ukrainian

french

malay

urdu

german

maltese

vietnamese

greek

norwegian

welsh

haitian creole

persian

translate with

copy the url below

back

embed the snippet below in your site

" readonly>

enable collaborative features and customize widget: bing webmaster portal

back

2021 2022學年第一學期寒假學習記錄11

2022.01.11,今天是服務外包競賽 隨便拿個獎隊的專案進行的第十一天,今天根據專案要求繼續學習matlab數字影象處理 1 實驗目的 學習常見的數學形態 算基本方法,了解腐蝕 膨脹 開運算 閉運算取得的效果,培養處理實際影象的能力,並為課堂教學提供配套的實踐機會。2 實驗要求 利用matlab...

2021 2022學年第一學期寒假學習記錄12

2022.01.12,今天是服務外包競賽 隨便拿個獎隊的專案進行的第十二天,今天根據專案要求繼續學習matlab數字影象處理 clf 為 清除figure視窗中的內容,並不關閉figure視窗 figure 為 開啟乙個新的figure視窗 close 為 關閉乙個figure視窗 close al...

2021 2022學年第一學期寒假學習記錄17

2022.01.17,今天是服務外包競賽 隨便拿個獎隊的專案進行的第十七天,今天根據專案要求繼續學習matlab數字影象處理 mnist資料集是由google實驗室的corinna cortes和紐約大學柯朗研究所的yann lecun建有乙個手寫數字資料庫,訓練庫有60,000張手寫數字影象,測試...