目錄:
1.機器學習介紹
2.機器學習中單變量的線性迴歸
線性迴歸基於輸入值預測實值輸出。通過將線性迴歸在房價預測中的應用,即預測值與實際值之間的差值,提出了成本函數的概念。
3.參數學習方法——梯度下降法介紹
- 什麼是機器學習?
1.較老的,非正式的定義:"the field of study that gives computers the ability to learn without being explicitly programmed."
2.一個更現代的定義: "A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E."
通常,任何機器學習問題都可以分配到兩個廣泛的分類之一:監督學習和無監督學習
- 什麼是監督學習
在有監督的學習中,我們得到一個數據集,並且已經知道我們的正確輸出應該是什麼樣的,並且認為輸入和輸出之間存在關係。
- 監督學習問題分為“迴歸”和“分類”問題
1.在迴歸問題中,我們試圖在連續輸出中預測結果,這意味著我們正在嘗試將輸入變量映射到某個連續函數。
2.在分類問題中,我們試圖在離散輸出中預測結果。 換句話說,我們正在嘗試將輸入變量映射到離散類別。
解析:
給出房地產市場房屋面積的數據,請嘗試預測房價。
給出房地產市場房屋面積的數據,請嘗試預測房子“賣得多於還是低於要價”。
這是兩種不同的類別。
- 什麼是無監督學習?
無監督學習使我們能夠在很少或根本不知道我們的結果應該是什麼樣的情況下處理問題。我們可以從數據中導出結構,我們不一定知道變量的影響。我們可以通過基於數據中變量之間的關係對數據進行聚類來推導出這種結構。在無監督學習的情況下,沒有基於預測結果的反饋。
雞尾酒會問題和基因自動分組。
- 模型表示
為了建立未來使用的符號,我們定義了輸入變量(輸入要素)x(i)、試圖預測的“輸出”或目標變量y(i)、訓練示例(x(i),y(i)) 、數據集(x(i),y(i));i=1,...,m
請注意,符號中的上標“(i)”只是訓練集的索引,與取冪無關。
我們還將使用X來表示輸入值的空間,並使用Y來表示輸出值的空間。
為了更加正式地描述監督學習問題,我們的目標是,在給定訓練集的情況下,學習函數h:X→Y,使得h(x)是y的對應值的“好”預測器。 由於歷史原因,該函數h被稱為假設。 從圖中可以看出,這個過程是這樣的:
當我們試圖預測的目標變量是連續的時,例如在我們的住房示例中,我們將學習問題稱為迴歸問題。 當y只能承受少量離散值時(例如,如果給定生活區域,我們想要預測住宅是房屋還是公寓),我們將其稱為分類問題。
- 代價函數
我們可以使用代價函數來衡量我們的假設函數的準確性。這需要假設的所有結果與來自x和實際輸出y的輸入的平均差異(實際上是平均值的更高版本)。
如果把代價函數通過幾何進行表述:訓練數據集分散在x-y平面上。 我們正在努力做一條直線,使它通過這些分散的數據點。
1.代價函數描述(一)
對於一個簡單的模型(θ0 = 0)描述:
當θ1 = 1時,我們得到的斜率為1,它遍歷模型中的每個數據點。當θ1 = 0.5時,發現從我們的擬合到數據點的垂直距離增加。
繪製其他幾個點會產生如下圖(J(θ1)函數圖):
因此,為了最小化代價函數,應該選取θ1 = 1。
2.代價函數解釋(二)
對於θ0 != 0的情況:
首先,用等高線圖(雙變量函數的輪廓線在同一行的所有點處具有恆定值)描述二維模型。
沿著'圓'得到的是相同的代價函數值 J(θ0,θ1), 例如,上面綠線上的三個綠點具有相同的值。取另一個h(x)並繪製其等高線圖,可得到以下圖表:
當θ0 = 360,θ1 = 0,得到的新圖標在等高線圖中靠近中心,減少了成本函數誤差。下面給出假設函數可以正好地擬合數據圖。
上圖最小化了代價函數,此時θ0 = 250,θ1 = 0.12,在我們的圖表右側繪製這些值似乎將我們的觀點置於最內圈“圓圈”的中心。
- 梯度下降
所以我們有
假設函數,我們有一種方法可以衡量它與數據的匹配程度。現在我們需要估計假設函數中的參數。這就是梯度下降的地方。我們不是繪製x和y本身,而是我們的假設函數的參數範圍以及選擇一組特定參數所產生的代價。
我們把0θ畫在x軸、θ1畫在y軸上,在垂直z軸上表示代價函數。 我們的圖上的點將是代價函數的結果,使用我們的假設和那些特定的θ參數。
當我們的代價函數位於圖中凹坑的最底部時,即當它的值最小時,我們就知道我們已經成功了。 紅色箭頭顯示圖表中的最小點。
我們這樣做的方法是採用我們的代價函數的導數(一個函數的切線)。 切線的斜率是該點的導數,它將為我們提供朝向的方向。 我們在最陡下降的方向上降低成本函數。
每個步驟的大小由參數α確定,該參數稱為學習率。例如,上圖中每個“星”之間的距離表示由參數α確定的步長。 較小的α將導致較小的步長,較大的α將導致較大的步長。
採取步驟的方向由J(θ0, θ1)的偏導數確定。根據圖表的開始位置,可能會在不同的點上結束。上圖顯示了兩個不同的起點,最終出現在兩個不同的地方。
梯度下降算法是:
重複直到收斂!
注意:在每次迭代j中,應該同時更新參數θ0, θ1...θn,在第j次迭代計算另一個參數之前更新特定參數將導致錯誤的實現。
- 梯度下降
我們現在令θ0 = 0,只使用一個參數θ1,繪製其代價函數以實現梯度下降。單個參數公式是:
無論偏導數的大小,即斜率正負,θ1最終都將收斂到最小值。
另外,我們應該調整參數α以確保梯度下降算法在合理的時間內收斂。 沒有收斂或太多時間來獲得最小值意味著我們的步長是錯誤的。
參數α過小將導致收斂緩慢。過大將導致無法收斂(發散)。
- 為什麼最終會收斂?
當我們接近凸函數的底部時,偏導數(斜率)變成0,從而得到:
即隨著梯度下降的不斷進行,學習速率α(偏導項)會自動變小,所以迭代過程中不需要調整參數α。
- 線性迴歸的梯度下降
當特別應用於線性迴歸的情況時,可以導出梯度下降方程的新形式。 我們可以替換我們的實際代價函數和我們的實際假設函數,並將等式修改為(求偏導):
求偏導過程(推導):
所有這一切的要點是,如果我們開始猜測我們的假設,然後重複應用這些梯度下降方程,我們的假設將變得越來越準確。
因此,這只是原始代價函數J的梯度下降。該方法在每個步驟中查看整個訓練集中的每個示例,並稱為*批量梯度下降。
請注意,雖然梯度下降一般易受局部最小值的影響,但我們在線性迴歸中提出的優化問題只有一個全局,而沒有其他局部最優。 因此,梯度下降總是收斂(假設學習率α不是太大)到全局最小值。 實際上,J是凸二次函數。下面是梯度下降的示例,因為它是為了最小化二次函數而運行的。
上面顯示的橢圓是二次函數的輪廓。 還示出了梯度下降所採用的軌跡,其在(48,30)處初始化。 圖中的x(由直線連接)標記了當它收斂到其最小值過程中漸變下降經歷的連續值θ。
本系列筆記每週首發於微信公眾號:“duodewei”
歡迎關注,共同對AI感興趣的同學交流學習!
閱讀更多 多德偉 的文章