week 1
- 什么是機(jī)器學(xué)習(xí)?
它包含兩個(gè)定義:
1.較老的,非正式的定義:"the field of study that gives computers the ability to learn without being explicitly programmed."
2.一個(gè)更現(xiàn)代的定義: "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."

通常,任何機(jī)器學(xué)習(xí)問題都可以分配到兩個(gè)廣泛的分類之一:
監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)
- 什么是監(jiān)督學(xué)習(xí)
在有監(jiān)督的學(xué)習(xí)中,我們得到一個(gè)數(shù)據(jù)集,并且已經(jīng)知道我們的正確輸出應(yīng)該是什么樣的,并且認(rèn)為輸入和輸出之間存在關(guān)系。
- 監(jiān)督學(xué)習(xí)問題分為“回歸”和“分類”問題。
1.在回歸問題中,我們?cè)噲D在連續(xù)輸出中預(yù)測(cè)結(jié)果,這意味著我們正在嘗試將輸入變量映射到某個(gè)連續(xù)函數(shù)。
2.在分類問題中,我們?cè)噲D在離散輸出中預(yù)測(cè)結(jié)果。 換句話說,我們正在嘗試將輸入變量映射到離散類別。

解析:
給出房地產(chǎn)市場(chǎng)房屋面積的數(shù)據(jù),請(qǐng)嘗試預(yù)測(cè)房?jī)r(jià)。
給出房地產(chǎn)市場(chǎng)房屋面積的數(shù)據(jù),請(qǐng)嘗試預(yù)測(cè)房子“賣得多于還是低于要價(jià)”。
這是兩種不同的類別。
- 什么是無(wú)監(jiān)督學(xué)習(xí)?
無(wú)監(jiān)督學(xué)習(xí)使我們能夠在很少或根本不知道我們的結(jié)果應(yīng)該是什么樣的情況下處理問題。我們可以從數(shù)據(jù)中導(dǎo)出結(jié)構(gòu),我們不一定知道變量的影響。我們可以通過基于數(shù)據(jù)中變量之間的關(guān)系對(duì)數(shù)據(jù)進(jìn)行聚類來推導(dǎo)出這種結(jié)構(gòu)。在無(wú)監(jiān)督學(xué)習(xí)的情況下,沒有基于預(yù)測(cè)結(jié)果的反饋。

雞尾酒會(huì)問題和基因自動(dòng)分組。
- 模型表示
為了建立未來使用的符號(hào),我們定義了輸入變量(輸入要素)x(i)、試圖預(yù)測(cè)的“輸出”或目標(biāo)變量y(i)、訓(xùn)練示例(x(i),y(i)) 、數(shù)據(jù)集(x(i),y(i));i=1,...,m
請(qǐng)注意,符號(hào)中的上標(biāo)“(i)”只是訓(xùn)練集的索引,與取冪無(wú)關(guān)。
我們還將使用X來表示輸入值的空間,并使用Y來表示輸出值的空間。
為了更加正式地描述監(jiān)督學(xué)習(xí)問題,我們的目標(biāo)是,在給定訓(xùn)練集的情況下,學(xué)習(xí)函數(shù)h:X→Y,使得h(x)是y的對(duì)應(yīng)值的“好”預(yù)測(cè)器。 由于歷史原因,該函數(shù)h被稱為假設(shè)。 從圖中可以看出,這個(gè)過程是這樣的:

當(dāng)我們?cè)噲D預(yù)測(cè)的目標(biāo)變量是連續(xù)的時(shí),例如在我們的住房示例中,我們將學(xué)習(xí)問題稱為回歸問題。 當(dāng)y只能承受少量離散值時(shí)(例如,如果給定生活區(qū)域,我們想要預(yù)測(cè)住宅是房屋還是公寓),我們將其稱為分類問題。
- 代價(jià)函數(shù)
我們可以使用代價(jià)函數(shù)來衡量我們的假設(shè)函數(shù)的準(zhǔn)確性。這需要假設(shè)的所有結(jié)果與來自x和實(shí)際輸出y的輸入的平均差異(實(shí)際上是平均值的更高版本)。

如果把代價(jià)函數(shù)通過幾何進(jìn)行表述:訓(xùn)練數(shù)據(jù)集分散在x-y平面上。 我們正在努力做一條直線,使它通過這些分散的數(shù)據(jù)點(diǎn)。
1.代價(jià)函數(shù)描述(一)
對(duì)于一個(gè)簡(jiǎn)單的模型(θ0 = 0)描述:

當(dāng)θ1 = 1時(shí),我們得到的斜率為1,它遍歷模型中的每個(gè)數(shù)據(jù)點(diǎn)。當(dāng)θ1 = 0.5時(shí),發(fā)現(xiàn)從我們的擬合到數(shù)據(jù)點(diǎn)的垂直距離增加。

繪制其他幾個(gè)點(diǎn)會(huì)產(chǎn)生如下圖(J(θ1)函數(shù)圖):

因此,為了最小化代價(jià)函數(shù),應(yīng)該選取θ1 = 1。
2.代價(jià)函數(shù)解釋(二)
對(duì)于θ0 != 0的情況:
首先,用等高線圖(雙變量函數(shù)的輪廓線在同一行的所有點(diǎn)處具有恒定值)描述二維模型。

沿著'圓'得到的是相同的代價(jià)函數(shù)值 J(θ0,θ1), 例如,上面綠線上的三個(gè)綠點(diǎn)具有相同的值。取另一個(gè)h(x)并繪制其等高線圖,可得到以下圖表:

當(dāng)θ0 = 360,θ1 = 0,得到的新圖標(biāo)在等高線圖中靠近中心,減少了成本函數(shù)誤差。下面給出假設(shè)函數(shù)可以正好地?cái)M合數(shù)據(jù)圖。

上圖最小化了代價(jià)函數(shù),此時(shí)θ0 = 250,θ1 = 0.12,在我們的圖表右側(cè)繪制這些值似乎將我們的觀點(diǎn)置于最內(nèi)圈“圓圈”的中心。
- 梯度下降
所以我們有假設(shè)函數(shù),我們有一種方法可以衡量它與數(shù)據(jù)的匹配程度。現(xiàn)在我們需要估計(jì)假設(shè)函數(shù)中的參數(shù)。這就是梯度下降的地方。
我們不是繪制x和y本身,而是我們的假設(shè)函數(shù)的參數(shù)范圍以及選擇一組特定參數(shù)所產(chǎn)生的代價(jià)。
我們把0θ畫在x軸、θ1畫在y軸上,在垂直z軸上表示代價(jià)函數(shù)。 我們的圖上的點(diǎn)將是代價(jià)函數(shù)的結(jié)果,使用我們的假設(shè)和那些特定的θ參數(shù)。

當(dāng)我們的代價(jià)函數(shù)位于圖中凹坑的最底部時(shí),即當(dāng)它的值最小時(shí),我們就知道我們已經(jīng)成功了。 紅色箭頭顯示圖表中的最小點(diǎn)。
我們這樣做的方法是采用我們的代價(jià)函數(shù)的導(dǎo)數(shù)(一個(gè)函數(shù)的切線)。 切線的斜率是該點(diǎn)的導(dǎo)數(shù),它將為我們提供朝向的方向。 我們?cè)谧疃赶陆档姆较蛏辖档统杀竞瘮?shù)。每個(gè)步驟的大小由參數(shù)α確定,該參數(shù)稱為學(xué)習(xí)率。例如,上圖中每個(gè)“星”之間的距離表示由參數(shù)α確定的步長(zhǎng)。 較小的α將導(dǎo)致較小的步長(zhǎng),較大的α將導(dǎo)致較大的步長(zhǎng)。采取步驟的方向由J(θ0, θ1)的偏導(dǎo)數(shù)確定。根據(jù)圖表的開始位置,可能會(huì)在不同的點(diǎn)上結(jié)束。上圖顯示了兩個(gè)不同的起點(diǎn),最終出現(xiàn)在兩個(gè)不同的地方。
梯度下降算法是:

重復(fù)直到收斂
注意:在每次迭代j中,應(yīng)該同時(shí)更新參數(shù)θ0, θ1...θn,在第j次迭代計(jì)算另一個(gè)參數(shù)之前更新特定參數(shù)將導(dǎo)致錯(cuò)誤的實(shí)現(xiàn)。

- 梯度下降
我們現(xiàn)在令θ0 = 0,只使用一個(gè)參數(shù)θ1,繪制其代價(jià)函數(shù)以實(shí)現(xiàn)梯度下降。單個(gè)參數(shù)公式是:

無(wú)論偏導(dǎo)數(shù)的大小,即斜率正負(fù),θ1最終都將收斂到最小值。

另外,我們應(yīng)該調(diào)整參數(shù)α以確保梯度下降算法在合理的時(shí)間內(nèi)收斂。 沒有收斂或太多時(shí)間來獲得最小值意味著我們的步長(zhǎng)是錯(cuò)誤的。

參數(shù)α過小將導(dǎo)致收斂緩慢。過大將導(dǎo)致無(wú)法收斂(發(fā)散)。
- 為什么最終會(huì)收斂?
當(dāng)我們接近凸函數(shù)的底部時(shí),偏導(dǎo)數(shù)(斜率)變成0,從而得到:


即隨著梯度下降的不斷進(jìn)行,學(xué)習(xí)速率α(偏導(dǎo)項(xiàng))會(huì)自動(dòng)變小,所以迭代過程中不需要調(diào)整參數(shù)α。
- 線性回歸的梯度下降
當(dāng)特別應(yīng)用于線性回歸的情況時(shí),可以導(dǎo)出梯度下降方程的新形式。 我們可以替換我們的實(shí)際代價(jià)函數(shù)和我們的實(shí)際假設(shè)函數(shù),并將等式修改為(求偏導(dǎo)):

求偏導(dǎo)過程(推導(dǎo)):

所有這一切的要點(diǎn)是,如果我們開始猜測(cè)我們的假設(shè),然后重復(fù)應(yīng)用這些梯度下降方程,我們的假設(shè)將變得越來越準(zhǔn)確。
因此,這只是原始代價(jià)函數(shù)J的梯度下降。該方法在每個(gè)步驟中查看整個(gè)訓(xùn)練集中的每個(gè)示例,并稱為*批量梯度下降。 請(qǐng)注意,雖然梯度下降一般易受局部最小值的影響,但我們?cè)诰€性回歸中提出的優(yōu)化問題只有一個(gè)全局,而沒有其他局部最優(yōu)。 因此,梯度下降總是收斂(假設(shè)學(xué)習(xí)率α不是太大)到全局最小值。 實(shí)際上,J是凸二次函數(shù)。下面是梯度下降的示例,因?yàn)樗菫榱俗钚』?二次函數(shù)而運(yùn)行的。

上面顯示的橢圓是二次函數(shù)的輪廓。 還示出了梯度下降所采用的軌跡,其在(48,30)處初始化。 圖中的x(由直線連接)標(biāo)記了當(dāng)它收斂到其最小值過程中漸變下降經(jīng)歷的連續(xù)值θ。
- 矩陣和向量
矩陣是二維數(shù)組;向量是一個(gè)包含一列和多行的矩陣,因此,向量是矩陣的子集。
符號(hào)和術(shù)語(yǔ):
1.Aij指矩陣A的第i行和第j列中的元素。
2.具有'n'行的向量被稱為'n'維向量。
3.vi指向量的第i行中的元素。
4.通常,我們所有的向量和矩陣都是1索引的。 請(qǐng)注意,對(duì)于某些編程語(yǔ)言,數(shù)組是0索引的。
5.矩陣通常用大寫名稱表示,而向量是小寫。
6.“標(biāo)量”表示對(duì)象是單個(gè)值,而不是向量或矩陣。
7.R是指一組標(biāo)量實(shí)數(shù)。
8.Rn指實(shí)數(shù)的n維向量集。
9.運(yùn)行下面的單元格以熟悉Octave / Matlab中的命令。 隨意創(chuàng)建矩陣和向量,并嘗試不同的東西。
% The ; denotes we are going back to a new row.
A = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12]
% Initialize a vector
v = [1;2;3]
% Get the dimension of the matrix A where m = rows and n = columns
[m,n] = size(A)
% You could also store it this way
dim_A = size(A)
% Get the dimension of the vector v
dim_v = size(v)
% Now let's index into the 2nd row 3rd column of matrix A
A_23 = A(2,3)
- 加法和標(biāo)量乘法
加法和減法是逐元素的,因此您只需添加或減去每個(gè)相應(yīng)的元素:

減去矩陣:

要添加或減去兩個(gè)矩陣,它們的尺寸必須相同。
在標(biāo)量乘法中,我們簡(jiǎn)單地將每個(gè)元素乘以標(biāo)量值:

在標(biāo)量除法中,我們只需將每個(gè)元素除以標(biāo)量值:

- 矩陣向量乘法
我們將矢量列映射到矩陣的每一行,將每個(gè)元素相乘并對(duì)結(jié)果求和。

結(jié)果是一個(gè)向量。 矩陣的列數(shù)必須等于向量的行數(shù)。
m×n矩陣乘以n×1向量導(dǎo)致m×1向量。
- 矩陣 - 矩陣乘法
我們將兩個(gè)矩陣乘以幾個(gè)向量乘法并將結(jié)果連接起來。

m×n矩陣乘以n×o矩陣得到m×o矩陣。 在上面的例子中,3×2矩陣乘以2×2矩陣產(chǎn)生3×2矩陣。
為了乘以兩個(gè)矩陣,第一矩陣的列數(shù)必須等于第二矩陣的行數(shù)。
- 矩陣乘法屬性
1.矩陣不是可交換的:AB ≠ B
2.矩陣是關(guān)聯(lián)的:(AB)C = A(BC)
單位矩陣乘以相同維度的任何矩陣時(shí),得到原始矩陣。 這就像是將數(shù)字乘以1。單位矩陣在對(duì)角線上只有1個(gè)(左上角到右下角),而0在其他地方。

當(dāng)在一些矩陣(A * I)之后乘以單位矩陣時(shí),方形單位矩陣的維度應(yīng)該與其他矩陣的列匹配。 當(dāng)在一些其他矩陣(I * A)之前乘以單位矩陣時(shí),方形單位矩陣的維度應(yīng)該與其他矩陣的行匹配。
- 反轉(zhuǎn)和轉(zhuǎn)置
矩陣A的逆矩陣表示為 A-1。乘以單位矩陣的逆結(jié)果。
非方矩陣不具有逆矩陣。 我們可以用pinv(A)函數(shù)計(jì)算八度矩陣的逆,用Matlab和inv(A)函數(shù)計(jì)算矩陣的逆。 沒有逆的矩陣是奇異的或簡(jiǎn)并的。
矩陣的轉(zhuǎn)置就像將矩陣沿順時(shí)針方向旋轉(zhuǎn)90°然后將其反轉(zhuǎn)。我們可以使用轉(zhuǎn)置(A)函數(shù)或A'計(jì)算matlab中矩陣的轉(zhuǎn)置:


即:

A*inv(A) = I