最優化 梯度下降法

2021-08-26 20:18:09 字數 1334 閱讀 2374

最優化問題就是求解函式極值的問題, 包括極大值和極小值, 幾乎所有機器學習演算法歸根到底都是在求解最優化問題。在高等數學/微積分中有求極值統一的思路:找函式導數等於0的點,只要函式可導我們就可以用這種方法。在機器學習中我們一般求函式的極小值,若求極大值我們只需要整體加負號。有些時候我們會對優化變數x有約束, 包括等式約束和不等式約束, 他們定義了優化變數的可行域。我們的目標即乙個優化的問題的全域性極小值x*對於可行域裡所有的x,有f(x*)<=f(x),即全域性極小值不大於任意一點的函式值。但是, 有些函式有多個函式極小值,即使我們找到了導數等於0的所有點, 還需要比較這些點的函式值。

梯度是導數多元函式的推廣, 它是多元函式對各個自變數偏導數形成的向量。 

可導函式在某一點處取得極值的必要條件是梯度為 0,梯度為 0 的點稱為函式的駐點, 這是疑似極值點。需要注意的是,梯度為 0 只是函式取極值的必要條件而不是充分條件,即 梯度為 0 的點可能不是極值點。至於是極大值還是極小值,要看二階導數/hessian 矩陣,hessian 矩陣我們將在後面的 文章中介紹,這是由函式的二階偏導數構成的矩陣。這分為下面幾種情況:如果 hessian 矩陣正定,函式有極小值; 如果 hessian 矩陣負定,函式有極大值;如果 hessian 矩陣不定,則需要進一步討論。這和一元函式的結果類似,hessian 矩陣可以看做是一元函式的二階導數對多元函式的推廣。一元函式的極值判別法為,假設在某點處導數等於 0,則:如果二階導數大於 0,函式有極小值;如果二階導數小於 0,函式有極大值;如果二階導數等於 0,情況不定。

對於有指數函式,對數函式,三角函式的方程,我們稱為超越 方程,求解的難度十分的大。精確的求解不太可能,因此只能求近似解,這稱為數值計算。工程上實現時通常採用的是迭代法,它從乙個初始點 x0 開始,反覆使用某種規則從 xk 移動到下乙個點 xk+1 ,構造這樣乙個數列,直到收斂到梯度為 0 的點處。這些規則一般會利用一階導數資訊即梯度;或者二階導數資訊即 hessian 矩陣。這樣迭 代法的核心是得到這樣的由上乙個點確定下乙個點的迭代公式。

這個過程就像我們處於山上的某一位置,要到山底找水喝,因此我們必須到達最低點處:此時我們沒有全域性資訊,根本就不知道**是地勢最低的點,只能想辦法往山下走,走 一步看一步。剛開始我們在山上的某一點處,每一步,我們都往地勢更低的點走,以期望能走到山底。

只要沒有到達梯度為 0 的點,則函式值會沿著序列 xk 遞減,最終會收斂到梯度為 0 的點,這就是梯度下降法。迭代終止的條件是函式的梯度值為 0(實際實現時是接近於 0), 此時認為已經達到極值點。注意我們找到的是梯度為 0 的點,這不一定就是極值點,後面會 說明。梯度下降法只需要計算函式在某些點處的梯度,實現簡單,計算量小。

梯度下降法 求解最優解

import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import math from mpl toolkits.mplot3d import axes3d 設定在jupyter中matplotlib的...

數值優化 梯度下降法

ng的課件1,引出常用的優化方法梯度下降法 gradient descent 對於ordinary least squares regression,cost function為 求最小值,意味著求導數為0的位置 考慮只有乙個樣本 這叫做lms update rule least mean squa...

梯度下降法及其優化

1 梯度下降 2 面對的主要困難 3 分類 隨機梯度下降法 sgd 每次只使用乙個樣本 小批量隨機梯度下降法 mini batch sgd 使用小批量樣本 4 普通的小批量sgd 以下簡稱為sgd 的困難 其他困難 1 為什麼不使用牛頓法?2 動量法 momentum 適用於隧道型曲面 乙個方向很陡...