吳恩達機器學習筆記
α解釋:

有一個比較奇怪的問題是:
假設你將θ1初始化在區域性最低點,它已經在一個區域性的最優處或者區域性最低點,區域性最優點的導數為零,因為導數是切線的斜率,梯度下降法更新θ1的值將什麼都不會做。

這也就解釋了即使學習速率α保持不變,梯度下降法也可以收斂到區域性最低點的原因。 移動的幅度會越來越小,直到最終幅度非常小,此時已經收斂到區域性極小值,所以沒必要減小α的值

可以用梯度下降法來嘗試最小化任何代價函式J,而不只是線性迴歸中的代價函式J。
第十二課:線性迴歸的梯度下降
本節課將梯度下降和代價函式結合,得到線性迴歸的演算法,它可以用直線模型來擬合數據。


通過上式計算出微分以後,即代價函式J的斜率後,接下來就是將它代入我們的梯度下降演算法:

不同於之前的梯度下降法坡度圖,線性迴歸的代價函式總是一個弓狀函式,術語叫做凸函式,這個函式沒有區域性最優解,只有一個全域性最優,當你計算這種代價函式的梯度下降,只要你使用線性迴歸,它總是會收斂到全域性最優,因為沒有其他的區域性最優解。

演算法的使用:假設函式和代價函式的變化:


上面提到的演算法也叫做Batch梯度下降演算法, batch:意味著每一步梯度下降,我們都遍歷了整個訓練集的樣本。 所以,在梯度下降中,當計算偏導數時,我們計算總和,在每一個單獨的梯度下降,我們最終計算m個樣本的總和。
在高等線性代數中,存在一種解法求解代價函式J最小值,而不需要使用像梯度下降的迭代演算法。它被稱為正規方程組方法,相比於正規方程組解法,梯度下降適用於更大的資料集。
第十四課:矩陣和向量
矩陣是指由數字組成的矩形陣列。並寫在方括號內。
實際上矩陣可以說是二維陣列的另一種說法。
矩陣的維數應該寫作:矩陣的行數乘以列數

如何表達矩陣的某個特定元素?

矩陣提供了一種很好的方式讓你快速整理、索引和訪問大量資料。
一個向量是一種特殊的矩陣,向量是隻有一列的矩陣。
四維向量,即這個向量中包含四個元素。
如何引用向量的元素:

除非特別指定,應該預設向量下標是從1開始。
注意,在書寫矩陣時,大多數人會使用大寫字母A、B、C、X來表示矩陣,而使用小寫字母a,b,x,y表示數字或是原始的數字或標量或向量。
第十五課:加法和標量乘法
如果你想讓兩個矩陣想,只需要將兩個矩陣的每一個元素都逐個相加。

只有相同維度的兩個矩陣才能相加。相加的結果與相加向量的維度相同。


第十五課:矩陣向量乘法
矩陣和向量相乘:



實際進行房屋價格的預測:

公式:prediction = Datametrix * parameters
第十七課:矩陣乘法
線上性迴歸中,迭代演算法可以用於同時解決引數θ0和θ1的計算問題,而不需要梯度下降法,而迭代演算法就必須要理解矩陣與矩陣之間的乘法。




通過矩陣乘法可以快速地得到12個基於3個假設對4個房屋預測得到的價格。且有很多線性代數庫可以幫你實現矩陣乘法,任何程式語言都有線性代數庫,且經過了高度優化,能夠高效實現矩陣乘法,包括你電腦支援的平行計算,當你的電腦有多個排程或者程序,而只有一個處理器時,我們稱之為計算機的SIMD並行,有非常不錯的免費庫,可以用來進行高效的矩陣間乘法運算,你可以基於眾多假設進行預測。
第十八課:矩陣乘法特徵
矩陣乘法的特性
矩陣乘法不符合交換律

矩陣乘法符合結合律

單位矩陣
單位矩陣的特徵:沿對角線上都是1,其餘位置都是0。
對於任何矩陣A,A乘以單位矩陣等於I乘以A等於A。

第十九課:逆和轉置
只有方陣才有逆矩陣。
如果矩陣A中所有的元素都為0,那麼這個矩陣仍然沒有逆矩陣。以及一些其他的類似的矩陣,它們都沒有逆矩陣。
用術語來說:不存在逆矩陣的矩陣,它的專有名詞是奇異矩陣,或者叫退化矩陣。

怎麼求逆矩陣?
你可以用筆算,但是有很多很好的軟體,能夠容易地對矩陣進行求逆運算,哈哈哈哈哈。
Octave:pinv(A)得到結果。
轉置矩陣

第二十八課:多功能
單一變數:

多變數:

假設形式變化:
內積就是θ轉置乘以X,即用引數向量θ以及特徵向量X的內積來表示假設,這就是多特徵量情況下的假設形式,也可以成為所謂的多元線性迴歸,多元就是表達用多個特徵量或者變數來預測y值。
第二十九課:多元梯度下降法

和之前的單一引數演算法是同樣的,或者說是類似的:

上述就實現了多元線性迴歸模型!
個人認為你在求偏導數的時候,對於單一變數和多元變數,偏導數對應的係數是一樣的,只是表達方式不同,一個是單純的上標,而多元變數在上標的基礎上對應了一個下標,這是多特徵變數對應每個變數的標記方法。
第三十課:多元梯度下降法演練
本節課重點講述特徵縮放的方法。
如果你有一個機器學習問題,這個問題有多個特徵,如果你能確保這些特徵都處在一個相近的範圍,能夠確保不同特徵的取值在相近的範圍內,這樣梯度下降法就能更快地收斂。
具體地說,假如你有一個具有兩個特徵的問題,兩個值的比例為2000:5,那麼在畫出代價函式J(θ)的等值線就會呈現出一種非常歪斜且橢圓的形狀,且這個橢圓會非常之細長,如果在這個影象上進行梯度下降的話,你的梯度最終可能需要花很長一段時間,並且可能來回波動,最終要經過很長時間才能收斂到全域性最小值。
在這種情況下,一種有效的方法就是進行特徵縮放。梯度下降演算法就會找到一條更直接的路通向全域性最小,即更快收斂。

總的來說,不用過於擔心,你的特徵是否在完全相同的範圍或區間內,只要它們足夠接近的話,梯度下降法就會正常地工作。

除了將特徵除以最大值之外,在特徵縮放中,有時候我們也會進行均值歸一化。
U1是訓練集中特徵X1的平均值!S1是該特徵值的範圍(最大值-最小值/變數的標準差)!

只要將特徵轉化為相近似的範圍都是可以的,特徵縮放其實並不需要太精確,只是為了讓梯度下降能夠執行的更快而已,收斂所需的迭代次數更少。
第三十一課:多元梯度下降法II學習率

梯度下降演算法所做的事就是為你找到一個θ值,並且希望它能夠最小化代價函式J(θ)。下圖中,X軸表示的是迭代次數。每一步迭代之後J(θ)都應該下降。所以通過這條曲線可以幫助你判斷梯度下降演算法是否已經收斂。對於每一個特定的問題,梯度下降演算法所需的迭代次數可能相差很大。
另外,也可以進行一些自動的收斂測試,也就是讓一種演算法來告訴你梯度下降演算法是否已經收斂,自動收斂測試,如果代價函式J(θ)一步迭代後的下降小於一個很小的值,這個測試就判斷函式已經收斂,但是通常選擇一個合適的閾值是非常困難的。因此,為了檢查梯度下降演算法是否已經收斂,還是更傾向於左邊的這種曲線圖,而不是依靠自動收斂測試。

看這種曲線圖還可以告訴你或提前警告你演算法沒有正常工作。
學習率過大


第三十二課:特徵和多項式迴歸
一些可供選擇的特徵以及如何得到不同的學習演算法,這些演算法往往是非常有效的。
使用多項式迴歸能夠用線性迴歸的方法來擬合非常複雜的函式甚至是非線性函式。

通過定義新的特徵可能會得到一個更好的模型。與選擇特徵的想法密切相關的概念被稱為多項式迴歸。
例如,在房屋面積和房屋價格的曲線圖中,如果我們選擇二次函式擬合,前半段擬合的很好,但是明顯房屋價格不會隨著房屋面積的增大而下降,所以這裡新建一個三次函式的模型,那麼如何將新模型與資料進行擬合呢?使用多元線性迴歸的辦法我們可以對演算法做一個簡單的修改來實現它。

但是除了轉而建立一個三次模型以外,你也許有其他可選的特徵,這裡有很多可能的選項,還可能選擇其他的合理選擇的演算法模型。如何將一個多項式,二次函式或者是三次函式擬合到你的資料上,還討論了你可以自己選擇使用哪些特徵。後面的課程將會學到如何讓演算法自己選擇模型,因此,你可以讓演算法觀察給出的資料,並自動為你選擇到底應該選擇一個二次函式或者一個三次函式,還是別的函式。但是之前,你需要了解,你可以自由選擇使用什麼特徵,並且通過設計不同的特徵,你能夠用更復雜的函式擬合數據,而不是一條直線去擬合,特別是,你可以使用多項式函式,有時如果從合適的角度來尋找特徵,你就能得到一個更符合你的資料的模型。

第三十三課:正規方程
...未完待續