無約束最優化三

2021-06-28 11:12:52 字數 3833 閱讀 2511

2.2 a_k步長的選擇

了解了a_k的合理性之後,就相當於獲得了標尺,在此基礎上我們可以選擇合適的策略來求取a_k。所有的line search過程在計算每一步的a_k時,均需要提供乙個初始點a_0,然後再此基礎上生成一系列的,直到a_i滿足2.1節所規定的條件為止,此時該a_k即被確定為a_i,或者未找到乙個合適的a_k。這裡我們僅介紹目前常用的策略平方插值和立方插值法。因此本節內容分為兩部分,2.2.1節介紹選擇a_k常用的平方插值和立方插值法,2.2.2節介紹由x_k點到x_k+1點,方向確定為p_k後,步長a_k具體計算過程。

2.2.1 平方立方插值法

當給定乙個初始步長a_0,若該初始步長滿足wolfe conditions(或strong wolfe conditions),則a_k被確定為a_0,當前點x_k步長計算過程結束,否則,我們可以在此基礎上,利用已知的三個資訊ø(a_0)、ø(0)、ø』(0),構建乙個二次(平方)插值多項式來擬合ø(a_k)。該二次插值多項式如下所示:

觀察上面的二次插值多項式可知,其滿足如下插值條件:

ø_q(0) = ø(0) ø_q』(0) = ø』(0) ø_q(a_0) = ø(a_0)

對二次插值多項式(15)求導並令其為零,即可獲得使得該多項式取得最小值的a值,如下所示:

若a_1滿足wolfe conditions(或strong wolfe conditions),則a_k 被確定為a_1。否則在此基礎上構建乙個三次(立方)插值多項式,並求得使得該多項式取最小值的a值,該a值的計算公式如下所示:

(17)

若a_i+1滿足wolfe conditions(或strong wolfe conditions),則a_k 被確定為a_i+1,否則一直使用三次插值多項式進行插值擬合。並且選擇使用a_i+1對應的ø (a_i+1)和ø』(a_i+1)替換a_i-1或a_i相應的值,一旦確定好a_i-1或a_i中的一種後,每次都替換對應的值,如替換a_i-1,則每次都使用新的a_i+1對應的值替換a_i-1,直到找到滿足wolfe conditions(或strong wolfe conditions)的a_i+1為止,此時a_k被確定為a_i+1,或者沒有找到合適的a_i+1。

這裡有必要簡略解釋一下為何只使用到三次插值多項式,而沒有使用更高階的插值多項式。原因是三次插值多項式對函式某個點處的具體值有較好的擬合效果,同時又有較好的抗過擬合作用。

最後有必要解釋一下初始步長a_0的選擇,對於newton或quasi-newton methods來說,初始步長a_0總是確定為1,該選擇確保當滿足wolfe conditions(或strong wolfe conditions),我們總是選擇單位1步長,因為該步長使得newton或quasi-newton methods達到較快的收斂速度。計算第零步長時,將初始步長a_0使用如下公式確定:

第1步及其以後的初始步長a_0,直接設定為1。

2.2.2 步長a_k計算

本節主要做乙個總結,即綜合前面步長需要滿足的條件及步長迭代計算公式給出步長計算的具體過程。下面假設我們處於x_k點,因此要從該點選擇乙個滿足wolfe (或strong wolfe) conditions的步長a_k,以便走到下一點x_k+1。因此我們選擇初始點a_0 = 1,newton或quasi-newton method中初始步長總是選擇為1。因此有:

1) 初始化 a_xlefta_yleft0 ø(a_x) 、 ø(a_y) 、ø』(a_x) 、 ø』(a_y)、a_min、a_max

2) 初始化 a_ilefta_0、ø』(a_i)、ø(a_i)

3) 若ø(a_i) > ø(a_x)

說明步長a_i選擇的過大,因此使得ø(a_i)滿足wolfe(或strong wolfe) conditions的步長a_k應位於a_x和a_i之間,使用平方和立方插值法對a_x和a_i分別進行插值,求取兩個新的步長a_quadratic和a_cubic,並取兩者之中和a_x較接近的步長,這裡假設為a_quadratic,將新的步長設為a_qudratic,同時進行以下操作:

a_y left a_i

ø(a_y) left ø(a_i)

ø』(a_y) left ø』(a_i)

a_i+1 left a_quadrati

同時在此情況下,說明a_k位於a_x和a_y之間

4) 若ø』(a_i)* ø』(a_x) < 0

說明步長a_i選擇的過大,因此使得ø(a_i)滿足wolfe(或strong wolfe) conditions的步長a_k應位於a_x和a_i之間,使用平方和立方插值法對a_x和a_i分別進行插值,求取兩個新的步長a_quadratic和a_cubic,並取兩者之中和a_i較接近的步長,這裡假設為a_quadratic,將新的步長設為a_qudratic,同時進行以下操作:

a_y left a_x

ø(a_y) left ø(a_x)

ø』(a_y) left ø』(a_x)

a_x left a_i

ø(a_x) left ø(a_i)

ø』(a_x) left ø』(a_i)

a_i+1 left a_quadrati

同時在此情況下,說明a_k位於a_x和a_y之間

5) 若|ø』(a_i)|

說明步長a_i選擇的過小,因此使得ø(a_i)滿足wolfe(或strong wolfe) conditions的步長a_k應位於a_i和a_y之間,使用平方和立方插值法對a_x和a_i分別進行插值,求取兩個新的步長a_quadratic和a_cubic,並取兩者之中和a_i較接近的步長,這裡假設為a_quadratic,將新的步長設為a_qudratic,同時進行以下操作:

a_x left a_i

ø(a_x) left ø(a_i)

ø』(a_x) left ø』(a_i)

a_i+1 left a_quadrati

同時在此情況下,說明a_k位於a_x和a_y之間

6) 若|ø』(a_i)| ≥|ø』(a_x) |

說明步長a_i選擇的過小,若之前已經確定出了a_k所屬的範圍a_x和a_y,則使得ø(a_i)滿足wolfe(或strong wolfe) conditions的步長a_k應位於a_i和a_y之間,使用立方插值法對a_i和a_y進行插值,求取新的步長a_cubic,新的步長設為a_cubic;否則若a_x小於a_i,說明的新的步長不夠大,因此將新的步長設定為a_max,若a_x大於等於a_i,則說明新的步長不夠小,將其設為a_min,同時進行以下操作:

a_x left a_i

ø(a_x) left ø(a_i)

ø』(a_x) left ø』(a_i)

if 之前已經確定出了a_k所屬的範圍a_x和a_y

a_i+1 left a_cubic

else if a_x < a_i

a_i+1 left a_max

else if a_x ≥ a_i

a_i+1 left a_min

7) 計算判斷若a_i+1使得以下兩式(strong wolfe condition)均成立:

則找到合理的步長a_k,將其設定為a_i+1

a_k left a_i+1

則x_k點步長a_k計算結束。

否則轉到2)繼續計算合理步長。

未完待續:無約束最優化四

注:這個系列的作者是我的師兄jianzhu,他在中文分詞、語言模型方面的研究很深入,如果大家對於srilm的源**感興趣,可以參考他個人部落格上寫的「srilm閱讀文件系列」,很有幫助。

無約束最優化二

2.1 a k合理性討論 如下將要討論關於a k需要滿足的兩個條件,當a k滿足這兩個條件後,就可以認為從x k點移動到x k 1點的步長已經確定下來了。第乙個條件為sufficient decrease condition,從直觀角度來看,該條件主要要用保證x k 1點的函式值要小於x k點的函式...

無約束最優化四

3 quasi newton method 在第2節中我們了解了步長的概念,以及從x k走到x k 1點使用line search方法計算步長的方法。不過我們在那裡忽略了乙個重要的概念,即 方向 從第2節,我們了解到從每一點x k走到下一點x k 1時,需要給出要走的 方向 只有 方向 確定好之後,...

無約束最優化方法 牛頓法

無約束最優化演算法 newton法原理及c 程式設計實現 2012 12 14 13 04 6536人閱讀收藏 舉報 演算法 27 作者同類文章x 無約束最優化方法 牛頓法 牛頓法 newton smethod 又稱為牛頓 拉弗森方法 newton raphson method 它是一種在實數域和複...