梯度下降演算法的思維過程:
x為訓練資料輸入值。y為訓練資料輸出值。θ 為 x的係數,也就是要求的。
1.**公式 h(x) = ∑θixi 。「使 θ盡可能的準確」,可以理解為理想情況下對每一組樣本都有 ( h(x(i)) - y(i) )2 = 0 ,非理想情況下希望 j(θ) = ∑( ( h(x(i)) - y(i) )2 /2 )盡可能小。
2.梯度下降的思路是: 先取一組隨機的 θ 值,代入樣本資料,通過求導等計算算出能進一步減小j(θ) 的 θ 值。重新 對θ 賦值,再不斷進行這個步驟,直到 j(θ) 達到區域性最小。
3.這個對 θ 重新賦值的演算法是 「 θi := θi - ( aj(θ) / aθi )」 ,後面這一項的意思是 j(θ) 對 θi 求偏導 。假設只有乙個訓練樣本時,計算的結果為 : θi := θi - ( h(x) - y )* xi 。
4.當有m項訓練資料時,這個公式就變成了 θi := θi - a∑j:1->m( h(x(j)) - y(j) ) * xi
(j) 。這稱成為批量梯度下降公式。a表示下降的步長,通常是手工設定。
5.因為當m很大時,每一次下降都要對很大的樣本數進行求和,非常耗時,所以有了隨機梯度下降公式 : θi := θi - ( h(x(j)) - y(j) ) * xi
(j)。即每一次下降只使用乙個樣本。
為了簡化這個公式以及更加明確對這個它的理解,一下引入了矩陣來重新對它定義。先引入幾個公式和表示法。
符號:▽θ
▽θj(θ) = [ aj(θ)/aθ1 , aj(θ)/aθ2 ... aj(θ)/aθi ] 意思是,當 θ 為單行矩陣時,對 j(θ) 求導的結果也是乙個單行矩陣,矩陣的每一項就是這個式子對當前的 θ 求偏導。
推廣到多行矩陣m*n,這個公式表示為:
▽θf(x) =
af(x)/ax11 ... af(x)/ax1n
af(x)/axm1 ... af(x)/axmn
tr(a)
tr(a) = ∑aii 意思是,對某一矩陣求對角線和。a必須為方矩陣,這稱為矩陣的跡。
公式
tr(a) = tr(at) ; tr(ab) = tr(ba) ; tr(abc) = tr(cab) = tr( bca );
當a是實數時,tr(a) = a;
▽a tr(ab) = bt; ▽a tr(abatc) = cab + ctabt;
有了這些公式,下面就能開始使用向量來表示j(θ)了。以下是具體的思路:
1.用 x 來表示訓練資料的輸入值,這也被稱為design matrix;
x =
x1(1) ... xn
(m)xm
(1) ...
xn(m)
2.用 θ (列向量) 右乘 x。就得到了
xθ =
x(1)θ = h(x(1))
x(m)θ = h(x(m))
用 y 表示 輸出值得列向量。則
xθ - y =
h(x(1)) - y(1)
h(x(m)) - y(m)
3.最厲害的一步來了,利用上面的式子,j(θ) 可以表示成
j(θ) = ( ∑j:1->m( h(x(j)) -y(j) )2 )/2 = (xθ - y)t(xθ - y) / 2;
4.換個思路來看梯度下降,其實就是求乙個θ值,使得該點上任何方向的偏導都為0。也就是▽θj(θ) = 0。這裡的0是乙個向量。
5.將式子展開,再利用前面的公式,最後得到神奇的:
xtxθ = xty 即 θ = (xtx)-1xty
總結:1.有很多公式需要自己證明。
2.引入向量和矩陣是為了簡化運算。完全去掉梯度下降的迭代過程。
3.最後的結果應該是對h(x)有一定限制的,例如只適合線性的?我需要去驗證一下。
機器學習筆記 梯度下降
梯度下降是乙個用來求函式最小值的演算法,我們將使用梯度下降演算法來求出代價函式 j 0,1 的最小值。梯度下降背後的思想是 開始時我們隨機選擇乙個引數的組合 0,1,n 計算代價函式,然後我們尋找下乙個能讓代價函式值下降最多的引數組合。我們持續這麼做直到到到乙個區域性最小值 local minimu...
機器學習 梯度下降
參照 機器學習 這本書的第4.4.3節。一.解決目標及情景假設 當給定一些資料,輸入x向量已知,輸出y也已知,設計乙個線性函式y h x 去擬合這些資料。既然是線性函式,在此不妨設為h x w0 x0 w1 x1。此時我們遇到的問題就是如何確定w0和w1這兩個引數,即w w0,w1 這個向量。既然是...
機器學習 梯度下降
梯度下降法 如果讀者對方向導數和梯度的定義不太了解,請先閱讀上篇文章 方向導數與梯度 前些時間接觸了機器學習,發現梯度下降法是機器學習裡比較基礎又比較重要的乙個求最小值的演算法。梯度下降演算法過程如下 1 隨機初始值 2 迭代 在這裡,簡單談一下自己對梯度下降法的理解。首先,要明確梯度是乙個向量,是...