ML學習小筆記 Gradien Descent

2022-03-08 18:38:05 字數 1870 閱讀 6039

關於本課程的相關資料

根據前面所為,當我們得到loss方程的時候,我們希望求得最優的loss方程。為此,我們可以採用了一種方法----gradien descent

為什麼可以使用這種方法呢,我們先保留這個疑問,先看一下什麼是gradien descent。

如下圖,我們假定某個loss方程有兩個引數,同時我們假定了乙個learning rate。每次update 引數與其偏微分learning rate的差

那麼這樣做會有什麼問題呢?如何優化這種做法呢?

如下圖,當我們取的learning rate太大或者太小都會出現:梯度下降的效果達不到我們預期的目標。所以我們必須仔細考慮好learning rate

所以我們希望可以做到以下兩點:

learning rate cannot be one-size-fits-all

所以我們是否能夠給不同的引數以不同的learning rate以達到我們的目的?

為此:我們可以使用一種叫adagrad的方法。

我們最開始引數更新的方法如下圖:

其中:

為了使得learning rate的變化達到我們理想的效果,adagrad在每次引數update的時候將變換後的learning rate除以所有前面引數偏微分的均方根,如下圖所示:

其中:

這樣化簡可以得到adagrad後的式子:

那麼是如何想到用adagrad這樣乙個方法的呢?

我們每次從樣本中隨機選出乙個,求得其loss方程,然後再不斷進行迭代。

這樣因為部分樣本跨度較大,使得迭代過程中,我們更快接近最優的loss方程,如下圖所示:

feature scaling的做法是讓特徵值的分布都比較接近,如下圖所示:

這樣就會加速我們接近最優解:

而我們的做法就是,求得某個特徵值在所有樣本下的平均值和標準差,然後update特徵值:

gradien descent從**來?

我們在loss方程中位於某個點,為了達到最優的loss方程,我們可以每次往前跨出一步。所以我們可以在該點附近畫乙個圈圈,然後選擇圈圈內最優的點,然後再迭代。

利用泰勒公式,將當前的loss方程化簡:

此時我們為了是loss方程最優(即最小),我們就要選取適當的

值。由於s為常量,我們不用考慮,則只需要考慮:

根據數學知識,我們知道兩個向量相乘,值要最小,那麼這兩個向量應該為相反向量,即為(u,v)向量的相反向量

同時,在滿足:

的條件下,我們很容易得到:

而這個式子就是gradient descent,其中的係數n就決定了這個相反向量的長度,也就是learning rate,也就是和步長;負號則是表示(u,v)向量的相反。

現在讓我們回到泰勒公式成立的條件,當我們的半徑d足夠小的時候,泰勒公式的一階展開式:

才會足夠準確。

所以如果我們只是一階展開,我們的步子就不能太大。如果我們的模型足夠複雜,我們的步子就可以往前多邁一些。

因此,learning rate便決定著整個推導的條件是否足夠準確,當我們的learning rate太離譜的時候,我們很難得到所期望的結果

找個女孩子跨年有沒有啊???

ML學習筆記(一)

fashion mnist model tf.keras.sequential tf.keras.layers.flatten input shape 28 28 tf.keras.layers.dense 128,activation relu tf.keras.layers.dropout 0....

ML讀書筆記(整合學習)

a.boosting 級聯順序訓練,不能model並行 只能每個弱分類器內部data並行 樣本有權重 弱分類器有權重 bagging 可並行訓練 偏差 由於分類器的表達能力有限導致的系統性錯誤,表現在訓練誤差不收斂 例如假設錯誤,比如資料本來符合二次函式,而建模用了一次函式 在訓練集上即可體現出來 ...

ML 學習筆記 吳恩達

吳恩達ml logistic介紹代價函式的時候,有點迷糊。見下圖 因為這它定義了乙個叫cost 的函式,我就突然把這個函式與之前線性回歸 linear regression 的cost 函式搞混了,然後引發了我的疑惑。首先我們在做線性回歸 是要先確定 函式h hypthesis 然後將整個資料集代入...