吳恩達(dá)機器學(xué)習(xí) 章節(jié)2:單變量線性回歸

前文


本文是對吳恩達(dá)老師的 機器學(xué)習(xí) 章節(jié)2 教學(xué)視頻 進行學(xué)習(xí)時,所記錄的學(xué)習(xí)筆記。

以下是本章主要講的內(nèi)容:

1.模型、代價函數(shù)、假設(shè)函數(shù)是什么、干什么、怎么工作的。

2.監(jiān)督學(xué)習(xí)算法、梯度下降算法的工作過程。

3.批量梯度下降算法的細(xì)節(jié)以及如何使用。


本章總結(jié)

學(xué)習(xí)了機器學(xué)習(xí)的基礎(chǔ)概念還有第一個算法并且了解了其工作的整體過程。


正文



2.0?目錄


2.1?模型描述

? ? ? ? 2.1.1?模型概述

? ? ? ? 2.1.2?監(jiān)督學(xué)習(xí)算法的工作過程

2.2?代價函數(shù)

? ? ? ? 2.2.1?代價函數(shù)概述

? ? ? ? 2.2.2?詳細(xì)闡述

2.3 梯度下降

? ??????2.3.1 梯度下降概述

? ??????2.3.2 詳細(xì)闡述

? ??????2.3.3 梯度下降算法的同步更新問題

? ??????2.3.4 梯度下降算法中對學(xué)習(xí)率α乘導(dǎo)數(shù)項的理解

2.4 線性回歸的梯度下降


2.1 模型描述


首先我們通過一個線性回歸算法的例子來了解模型是什么,監(jiān)督學(xué)習(xí)的過程是什么樣子的。

然后我們會不斷用小例子深入了解相關(guān)知識。


2.1.1模型概述

模型:我們假設(shè)輸入與輸出存在某個函數(shù)關(guān)系式,這個關(guān)系式這就是模型。

我們先看一個小例子:

預(yù)測房價問題 (回歸問題)

首先我們把數(shù)據(jù)做成圖像,其中:

????????橫軸是不同房屋平方英尺數(shù)。

????????縱軸是不同房子的價格。

這是一個監(jiān)督學(xué)習(xí)算法例子,也是一個回歸過程的例子。


模型擬合圖像

我們先了解兩個概念:

假設(shè):指通過學(xué)習(xí)后得到的一個預(yù)測結(jié)果的規(guī)律,即預(yù)測模型。

真相或真實:我們通過機器學(xué)習(xí)所得到的是一個假設(shè)的規(guī)律,真相或真實指的是真正的規(guī)律。

在上一個圖像中,假設(shè)就是那條直線,直線所代表的函數(shù)就是假設(shè)函數(shù)。

訓(xùn)練集列表

在監(jiān)督學(xué)習(xí)里還有這幾個概念:

學(xué)習(xí)或訓(xùn)練:從數(shù)據(jù)中學(xué)得模型的過程。

訓(xùn)練數(shù)據(jù):訓(xùn)練過程中使用的數(shù)據(jù)。

訓(xùn)練樣本:訓(xùn)練數(shù)據(jù)中的每一個樣本。

訓(xùn)練集:訓(xùn)練樣本所組成的集合。

屬性或特征:反應(yīng)樣本某一個性質(zhì)或表現(xiàn)的事項。

屬性值:落實到每一個樣本的某一個屬性的具體值。


以預(yù)測房價問題為例:

????????房價就是訓(xùn)練集

????????m表示訓(xùn)練樣本的數(shù)量

????????x代表輸入標(biāo)量或者特征

????????y代表輸出變量或者說是要預(yù)測的值

????????(x,y)代表一個訓(xùn)練樣本

????????(x^(i),y^(i))表示第i個訓(xùn)練樣本?i指樣本索引


2.1.2監(jiān)督學(xué)習(xí)算法的工作過程

監(jiān)督學(xué)習(xí)算法的工作過程

1.向?qū)W習(xí)算法提供訓(xùn)練集

2.學(xué)習(xí)算法會輸出一個函數(shù)通常以h表示,h代表假設(shè)函數(shù)

3.把輸入變量x輸入假設(shè)函數(shù)里來然后對輸出變量進行預(yù)測

如何表示假設(shè)函數(shù)h?

假設(shè)函數(shù):hθ(x)=θ0+θ1*x

此函數(shù)被稱為:一元線性回歸或者單變量線性回歸,它是一個預(yù)測y是一個關(guān)于x的線性函數(shù)。

θ0與θ1被稱為:模型參數(shù)。



2.2 代價函數(shù)


2.1.1? 代價函數(shù)概述

代價函數(shù):又叫損失函數(shù)或成本函數(shù),它是將一個或多個變量的事件閾值映射到直觀地表示與該事件。?在統(tǒng)計中,通常使用代價函數(shù)來進行參數(shù)估計,并且所討論的事件是數(shù)據(jù)實例的估計值和真值之間的差異的一些函數(shù)。

訓(xùn)練集列表和假設(shè)函數(shù)h

現(xiàn)在有圖片中的訓(xùn)練集和假設(shè)函數(shù),接下來我們討論如何選擇這些模型參數(shù)θ0、θ1。

參數(shù)θ0、θ1的值不同時??

由上圖我們可以看出:不同的模型參數(shù)得到不同的假設(shè)和假設(shè)函數(shù)。

在線性回歸中我們有以下的一個訓(xùn)練集:

我們需要從訓(xùn)練集中得出模型參數(shù)θ0、θ1的值 ,好讓直線更好的與數(shù)據(jù)點擬合。

在上圖中,圖中的假設(shè)函數(shù)所選擇的模型參數(shù)θ0、θ1的值就很合適,這會使代價函數(shù)的值很小并且其模型所做出的預(yù)測會更貼合真實。


解決最小化的問題

由以上可知,在線性回歸中,其實我們需要解決一個最小化的問題!

我們要寫出關(guān)于模型參數(shù)θ0、θ1值的最小化,并且需要想辦法讓h(x)和y之間的差異盡量的小。

對于上文h(x)這個假設(shè)函數(shù)來講,我們需要做的就是盡量減少假設(shè)輸出與樣本結(jié)果之間差的平方(即求均方差代價函數(shù)得最小值)。

注意:因為數(shù)學(xué)輸入板無法輸入代表代價函數(shù)的大寫J所以有時候我會拿大寫T來代替J。


2.2.2 詳細(xì)闡述


均方差代價函數(shù)

盡量減少上圖所示的求均方差代價函數(shù)的值,這個表達(dá)式因θ0和θ1的變化而變化,其中m為訓(xùn)練集的樣本容量。

假設(shè)函數(shù)

換句話來講也就是找到上圖所示的假設(shè)函數(shù)中模型參數(shù)θ0和θ1的最小值。


接下來我們進行詳細(xì)說明,首先我們定義一個代價函數(shù)如下:

代價函數(shù)

這是一個關(guān)于θ0和θ1對J(θ0,θ1)求最小值的代價函數(shù),也被稱為平方誤差函數(shù)或者平方誤差代價函數(shù) 。

我們選擇此種函數(shù)是因為,它對于大多數(shù)問題特別是回歸問題很合適。他是最常用的手段,在后續(xù)我們會討論其他的代價函數(shù)。


因為使用簡化的代價函數(shù)可以更好地讓我們理解代價函數(shù)的概念,所以接下來我們用例子來理解上面的知識。


例一:假設(shè)θ0=0


所有我們需要的式子

假設(shè)θ0=0,訓(xùn)練集如下:

訓(xùn)練集


代價函數(shù)

如果θ1=1時的代價函數(shù) J(θ1)=0

假設(shè)函數(shù)
代價函數(shù)

如果θ1=0.5時的代價函數(shù) J(θ1)=3.5/6≈0.58

假設(shè)函數(shù)


代價函數(shù)

如果θ1=0時的代價函數(shù) J(θ1)=14/6≈2.3

如果繼續(xù)不斷的設(shè)定θ1的值來求代價函數(shù),我們會得到代價函數(shù)J(θ1)的圖像如下。


代價函數(shù)

總結(jié):

對于每一個θ1來說都有一個與其他值不同的假設(shè)函數(shù),其假設(shè)函數(shù)就是hθ(x)。

對于每一個θ1來說都有其對應(yīng)代價函數(shù)J(θ1)的值,并且代價函數(shù)T(θ1)的值越小,預(yù)測也就越準(zhǔn)確。

學(xué)習(xí)算法的優(yōu)化目標(biāo)是通過選擇θ1的值來使T(θ1)的值更小

對于上一個例子我們可以看到,當(dāng)θ1=1時T(θ1)的值達(dá)到了最小為0,? 我們看θ1=1時的假設(shè)函數(shù)hθ(x)的圖像是完全吻合訓(xùn)練數(shù)據(jù)的,并且已經(jīng)完美的擬合了它。

所以說我們就是要最小化代價函數(shù)J(θ1)的值,來找到一條最符合數(shù)據(jù)的直線。


例二:假設(shè)θ0,θ1都存在


所有我們需要的式子

以下是房價數(shù)據(jù)集

房價數(shù)據(jù)集


θ0=50?θ1=0.06時假設(shè)函數(shù)如下

假設(shè)函數(shù)

其用等高線圖表達(dá)代價函數(shù)的三維圖如下

代價函數(shù)
假設(shè)函數(shù)和代數(shù)函數(shù)等高線圖

說明:簡單來說每一個橢圓都對應(yīng)了一系列J(θ0,θ1)相同值的點。?

如果θ0取800、θ1取-1.5、情況如下:

假設(shè)函數(shù)和代數(shù)函數(shù)等高線圖

我們可以發(fā)現(xiàn)在代價函數(shù)J(θ0,θ1)的圖像里,(θ0,θ1)這一點離橢圓中心即代價函數(shù)J(θ0,θ1)值最小的那個點比較遠(yuǎn)。并且,從假設(shè)函數(shù)也可以看出其擬合效果并不好。

如果θ0取360、θ1取0、情況如下:

假設(shè)函數(shù)和代數(shù)函數(shù)等高線圖

此時函數(shù)的擬合效果跟上一次比好了些,但是仍然沒有接近我們的理想狀態(tài),依然需要一定的代價。

讓我們再舉一個例子如下:

假設(shè)函數(shù)和代數(shù)函數(shù)等高線圖

最后一個例子如下:

假設(shè)函數(shù)和代數(shù)函數(shù)等高線圖

由上圖所見,此點相當(dāng)接近最小值了。這表明函數(shù)對數(shù)據(jù)的擬合已經(jīng)挺不錯了。

小節(jié)總結(jié):

根據(jù)以上兩個例子,我們就可以更好的理解假設(shè)函數(shù)和代價函數(shù)的意義了。

可以說為了使假設(shè)函數(shù)所做出的預(yù)測更接近真實,我們可以利用代價函數(shù)幫助假設(shè)函數(shù)找到使J(θ0,θ1)的值最小的模型參數(shù)θ0和θ1的值。

接下來我們將討論找到這個最小值的一種算法,即梯度下降算法。


2.3 梯度下降



2.3.1 梯度下降概述

梯度下降:是一種求代價函數(shù)最小值的算法。

梯度下降是常用算法,它應(yīng)用于機器學(xué)習(xí)的眾多領(lǐng)域。

利用梯度下降求最小化不只有代價函數(shù)J(θ0,θ1)。

接下來我們舉例利用梯度下降算法來求得代價函數(shù)J的最小值。


梯度下降算法思路?

開始時我們隨機選擇一個參數(shù)的組合(θ0,θ1,...,θn),計算代價函數(shù),然后我們尋找下一個能讓代價函數(shù)值下降最多的參數(shù)組合。我們持續(xù)這么做直到到到一個局部最小值,因為我們并沒有嘗試完所有的參數(shù)組合,所以不能確定我們得到的局部最小值是否便是全局最小值,選擇不同的初始參數(shù)組合,可能會找到不同的局部最小值。


2.3.2 詳細(xì)闡述

接下來我們舉例說明梯度下降算法如何工作的


代價函數(shù)

上圖是一個用等高線圖表達(dá)某個代價函數(shù)的三維圖,假如說我們首先找到了圖中的一個點,A點。(如下圖)

A到B

然后我們以A點環(huán)繞360度找到更低的那個方向,再先前走一步。然后如此類推,直到走到不能再向下的B點時,此時B點就是局部最低點。

當(dāng)我們把出發(fā)點換成點C時(如下圖),按階梯下降算法會達(dá)到局部最低點點D。

C到D


批量梯度下降算法的公式:

梯度下降算法

梯度下降算法會j減去被減數(shù)項并且更新參數(shù)θj,然后反復(fù)執(zhí)行此過程,直到收斂到三維圖的底部位置。

被減數(shù)項

現(xiàn)在我們詳細(xì)說一下此公式的細(xì)節(jié):

:=?????代表一個賦值運算符。

α? ? ? 被稱為學(xué)習(xí)率的數(shù)字,用來控制我們向下的步子大小。

(for j=0 and j=1)????當(dāng)此種情況出現(xiàn)時,我們將更新θ0和θ1,因為已經(jīng)找到代價函數(shù)的最小值或者最大值了。


對于表達(dá)式和更新方程,我們需要同時更新θ0和θ1。

實現(xiàn)過程是首先進行計算學(xué)習(xí)速率乘以代價函數(shù)的導(dǎo)數(shù)(如下圖中的這一項)這一部分,然后更新θ0和θ1在開始接著計算。

學(xué)習(xí)速率乘以代價函數(shù)的導(dǎo)數(shù)


總結(jié):可以說,在批量梯度下降中,我們每一次都同時讓所有的參數(shù)減去學(xué)習(xí)速率乘以代價函數(shù)的導(dǎo)數(shù)。


2.3.3 梯度下降算法的同步更新問題

梯度下降算法最重要的一點是同步更新,同步更新時需要注意同步更新是否“同步”的問題。

正確的同步更新

上圖是正確的同步更新。

錯誤的同步更新

上圖是錯誤的同步,錯誤在于提前更新了另一個值,這使得模式參數(shù)θ0和θ1不是同一對。所以,我們在計算的過程中要注意是否做到同步更新。


2.3.4 梯度下降算法中對學(xué)習(xí)率α乘導(dǎo)數(shù)項的理解

批量梯度下降公式:

批量梯度下降

公式中的減項:

減數(shù)項

公式中的減項其實是由學(xué)習(xí)率α乘導(dǎo)數(shù)項所組成。接下來我們通過幾個例子來理解這部分的含義。

理解導(dǎo)數(shù)項

例三:假設(shè)θ0為零,θ1為圖像中的值。

斜率為正數(shù)

取這個紅點的切線的斜率,這條直線的斜率正好是這個三角形的高度除以這個水平長度。根據(jù)斜率的定義我們在上面的圖像中可以判斷出它是一個正斜率,所以導(dǎo)數(shù)也是正數(shù)。

因此,當(dāng)我們進行對θ1的更新后,等于θ1減去一個正數(shù)乘以學(xué)習(xí)率α。θ1在更新后,我們可以發(fā)現(xiàn)θ1一定會向左側(cè)圖像最低點移動。然后此過程不斷反復(fù),最后會固定在我需要的最低點,它也是我們要求的值。

例四:假設(shè)θ0為零,θ1為圖像中的值。

斜率為負(fù)數(shù)

此例子與上例正好相反。在斜率為負(fù)時θ1更新后,我們可以發(fā)現(xiàn)θ1一定會向右側(cè)圖像最低點移動。然后此過程不斷反復(fù),最后會固定在我需要的最低點,它也是我們要求的值。

理解學(xué)習(xí)率α

學(xué)習(xí)率α用來控制我們向下的步子大小。

第一種情況:學(xué)習(xí)率α太小

我們可以想象到,如果學(xué)習(xí)率α太小那么在圖像上θ1的移動就會很慢。我們可能需要很長時間才能接近最低點,學(xué)習(xí)率α越小浪費的時間也就越多。

學(xué)習(xí)率α太小和太大

第二種情況:學(xué)習(xí)率α太大

當(dāng)學(xué)習(xí)率α太大時,θ1邁的步子也會很大。所以θ1會反復(fù)邁過最低點,出現(xiàn)無法收斂到最低點的情況。


例五:假設(shè)θ0為零,θ1為圖像中的局部最低點。

θ1為圖像中的局部最低點

我們可以看到如果θ1在最低點,那么此處斜率一定為0,因此減項也為零。那么批量梯度下降公式的結(jié)果即使在更新下去,值也永遠(yuǎn)是θ1在最低點的值即θ1保持不變,這也代表著已經(jīng)在局部最低點了。


例六: 假設(shè)θ0為零時, 理解導(dǎo)數(shù)的變化。

導(dǎo)數(shù)的變化

我們從右向左看θ1從右側(cè)高點向最低點的變化可以發(fā)現(xiàn),θ1的邁步幅度是由大到小的。在上例中邁步的幅度并不是因為我們不斷改變學(xué)習(xí)率的值,而是因為導(dǎo)數(shù)本身會因為θ1在圖像中的位置而變化。當(dāng)θ1越接近最低點時,其導(dǎo)數(shù)也會越小,所以θ1更新的幅度就會更小。

總結(jié)一下,隨著梯度下降法的運行,你移動的幅度會自動變得越來越小,直到最終移動幅度非常小,你會發(fā)現(xiàn),已經(jīng)收斂到局部極小值。這是因為當(dāng)我們接近局部最低點時,很顯然在局部最低時導(dǎo)數(shù)等于零,所以當(dāng)我們接近局部最低時,導(dǎo)數(shù)值會自動變得越來越小,所以梯度下降將自動采取較小的幅度,這就是梯度下降的做法。所以實際上沒有必要再另外減小。


2.4 線性回歸的梯度下降


以下是之前學(xué)習(xí)的模型和公式:

模型和公式

接下來我們將梯度下降算法應(yīng)用到最小化平方差代價函數(shù),首先我們將導(dǎo)數(shù)項領(lǐng)出來處理一下。

導(dǎo)數(shù)項

當(dāng)我們通過上面的過程得出導(dǎo)數(shù)項結(jié)果的時候,就可以把導(dǎo)數(shù)項結(jié)果代入到下面的梯度下降算法中來了。在此過程中注意同步更新的問題!

代入梯度下降算法


例七:實際應(yīng)用的例子


假設(shè)θ0,θ1都存在,橫坐標(biāo)是建筑面積,縱坐標(biāo)是房價,我們有其假設(shè)函數(shù)和代價函數(shù)的圖像如下。

下圖為θ0為900,θ1為-0.1時的圖像,h(x) = -900 - 0.1x。

第一個點

然后我們使用梯度下降算法找最低點。

在下圖中我們到達(dá)第二個點,左側(cè)是第二個點的假設(shè)函數(shù)圖像。

第二個點
第三個點
第六個點
第八個點
最后一個點

在這個過程中我們可以發(fā)現(xiàn),隨著梯度下降算法對模型參數(shù)的更新,假設(shè)函數(shù)也隨之不斷變化越來越符合數(shù)據(jù),直到梯度下降算法使模型參數(shù)在代價函數(shù)圖像中達(dá)到最低點即全局最小值時,假設(shè)函數(shù)很好的擬合了數(shù)據(jù)。


小總結(jié):

批量梯度下降”指的是在梯度下降的每一步中,我們都用到了所有的訓(xùn)練樣本,在梯度下降中,在計算微分求導(dǎo)項時,我們需要進行求和運算,所以,在每一個單獨的梯度下降中,我們最終都要計算這樣一個東西,這個項需要對所有個訓(xùn)練樣本求和。因此,批量梯度下降法這個名字說明了我們需要考慮所有這一"批"訓(xùn)練樣本,而事實上,有時也有其他類型的梯度下降法,不是這種"批量"型的,不考慮整個的訓(xùn)練集,而是每次只關(guān)注訓(xùn)練集中的一些小的子集。在后面的課程中,我們也將介紹這些方法。



結(jié)束

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容