這裡我相信題主對梯度下降法的整體理念是認可的,只是不清楚這個更新公式的實質含義。
首先這個梯度更新公式確實不是推導而是創造出來的,所以只能從概念上去理解。
設想下有個函式,你的目標是:找到一個引數 使得它的值 最小。但它很複雜,你無法找到這個引數的解析解,所以你希望透過梯度下降法去猜這個引數。 問題是怎麼猜?
對於多數有連續性的函式來說,顯然不可能把每個 都試一遍。所以只能先隨機取一個 ,然後看看怎麼調整它最有可能使得 變小。把這個過程重複n遍,自然最後得到的 的估值會越來越小。
現在問題是怎麼調整?既然要調整,肯定是基於當前我們擁有的那個引數 ,所以有了:
那現在問題是每次更新的時候這個 應該取什麼值?
我們知道關於某變數的(偏)導數的概念是指當(僅僅)該變數往正向的變化量趨向於0時的其函式值變化量的極限。 所以現在若求 關於的導數,得到一個值比如:5,那就說明若現在我們把 往正向(即增大)一點點, 的值會變大,但不一定是正好+5。同理若現在導數是-5,那麼把 增大一點點 值會變小。 這裡我們發現不管導數值 是正的還是負的(正負即導數的方向),對於 來說, 的最終方向(即最終的正負號,決定是增(+)還是減(-))一定是能將Y值變小的方向(除非導數為0)。所以有了:
但是說到底, 的絕對值只是個關於Y的變化率,本質上和 沒關係。所以為了抹去 在幅度上對 的影響,需要一個學習率來控制: 。所以有了:
而這裡的 就是你1式中的那個偏導,而對於2式,就是有多少個引數,就有多少個不同的 。
現在分析在梯度下降法中最常聽到的一句話:“梯度下降法就是朝著梯度的反方向迭代地調整引數直到收斂。” 這裡的梯度就是 ,而梯度的反方向就是 的符號方向---梯度實際上是個向量。所以這個角度來說,即使我們只有一個引數需要調整,也可以認為它是個一維的向量。 整個過程你可以想象自己站在一個山坡上,準備走到山腳下(最小值的地方),於是很自然地你會考慮朝著哪個方向走,方向由 的方向給出,而至於一次走多遠,由 來控制。 這種方式相信你應該能理解其只能找到區域性最小值,而不是全域性的。
參考:
[機器學習] ML重要概念:梯度(Gradient)與梯度下降法(Gradient Descent)
五步解析機器學習難點—梯度下降
這裡我相信題主對梯度下降法的整體理念是認可的,只是不清楚這個更新公式的實質含義。
首先這個梯度更新公式確實不是推導而是創造出來的,所以只能從概念上去理解。
設想下有個函式,你的目標是:找到一個引數 使得它的值 最小。但它很複雜,你無法找到這個引數的解析解,所以你希望透過梯度下降法去猜這個引數。 問題是怎麼猜?
對於多數有連續性的函式來說,顯然不可能把每個 都試一遍。所以只能先隨機取一個 ,然後看看怎麼調整它最有可能使得 變小。把這個過程重複n遍,自然最後得到的 的估值會越來越小。
現在問題是怎麼調整?既然要調整,肯定是基於當前我們擁有的那個引數 ,所以有了:
那現在問題是每次更新的時候這個 應該取什麼值?
我們知道關於某變數的(偏)導數的概念是指當(僅僅)該變數往正向的變化量趨向於0時的其函式值變化量的極限。 所以現在若求 關於的導數,得到一個值比如:5,那就說明若現在我們把 往正向(即增大)一點點, 的值會變大,但不一定是正好+5。同理若現在導數是-5,那麼把 增大一點點 值會變小。 這裡我們發現不管導數值 是正的還是負的(正負即導數的方向),對於 來說, 的最終方向(即最終的正負號,決定是增(+)還是減(-))一定是能將Y值變小的方向(除非導數為0)。所以有了:
但是說到底, 的絕對值只是個關於Y的變化率,本質上和 沒關係。所以為了抹去 在幅度上對 的影響,需要一個學習率來控制: 。所以有了:
而這裡的 就是你1式中的那個偏導,而對於2式,就是有多少個引數,就有多少個不同的 。
現在分析在梯度下降法中最常聽到的一句話:“梯度下降法就是朝著梯度的反方向迭代地調整引數直到收斂。” 這裡的梯度就是 ,而梯度的反方向就是 的符號方向---梯度實際上是個向量。所以這個角度來說,即使我們只有一個引數需要調整,也可以認為它是個一維的向量。 整個過程你可以想象自己站在一個山坡上,準備走到山腳下(最小值的地方),於是很自然地你會考慮朝著哪個方向走,方向由 的方向給出,而至於一次走多遠,由 來控制。 這種方式相信你應該能理解其只能找到區域性最小值,而不是全域性的。
參考:
[機器學習] ML重要概念:梯度(Gradient)與梯度下降法(Gradient Descent)
五步解析機器學習難點—梯度下降