摘要:成本函數(shù)成本對(duì)于線性回歸,成本函數(shù)是表示每個(gè)預(yù)測(cè)值與其預(yù)期結(jié)果之間的聚合差異的某些函數(shù)對(duì)于邏輯回歸,是計(jì)算每次預(yù)測(cè)的正確或錯(cuò)誤的某些函數(shù)。成本函數(shù)的變換涉及到預(yù)測(cè)結(jié)果和實(shí)際結(jié)果之間數(shù)值距離的任何函數(shù)都不能作為成本函數(shù)。
矩陣和多特征線性回歸
快速回顧
之前文章的前提是:給定特征——任何房屋面積(sqm),我們需要預(yù)測(cè)結(jié)果,也就是對(duì)應(yīng)房?jī)r(jià)($)。為了做到這一點(diǎn),我們:
我們找到一條「最擬合」所有數(shù)據(jù)點(diǎn)的直線(線性回歸)?!缸顢M合」是當(dāng)線性回歸線確保實(shí)際數(shù)據(jù)點(diǎn)(灰色點(diǎn))和預(yù)測(cè)值(內(nèi)插在直線上的灰色點(diǎn))之間的差異最小,即最小化多個(gè)藍(lán)線之和。
使用這條直線,我們可以預(yù)測(cè)任何房屋的價(jià)格。
使用單一特征線性回歸進(jìn)行預(yù)測(cè)
多特征線性回歸概述
實(shí)際上,任何預(yù)測(cè)都依賴于多個(gè)特征,于是我們從單特征的線性回歸進(jìn)階到 帶有兩個(gè)特征的線性回歸;之所以選擇兩個(gè)特征,是為了讓可視化和理解簡(jiǎn)明些,但這個(gè)思想可以推廣到帶有任何數(shù)量特征的線性回歸。
我們引進(jìn)一個(gè)新的特征——房間數(shù)量。當(dāng)收集數(shù)據(jù)點(diǎn)時(shí),現(xiàn)在我們需要在現(xiàn)有特征「房屋面積」之上收集新特征「房間數(shù)」的值,以及相應(yīng)的結(jié)果「房屋價(jià)格」。
我們的圖表變成了 3 維的。
結(jié)果「房屋價(jià)格」以及 2 個(gè)特征(「房間數(shù)」,「房屋面積」)的數(shù)據(jù)點(diǎn)空間
然后,我們的目標(biāo)變成:給定「房間數(shù)」和「房屋面積」,預(yù)測(cè)「房屋價(jià)格」(見下圖)。
由于缺少數(shù)據(jù)點(diǎn),有時(shí)無(wú)法對(duì)給定的 2 個(gè)特征進(jìn)行預(yù)測(cè)
在單一特征的情形中,當(dāng)沒有數(shù)據(jù)點(diǎn)時(shí),我們需要使用線性回歸來(lái)創(chuàng)建一條直線,以幫助我們預(yù)測(cè)結(jié)果房屋價(jià)格。在 2 個(gè)特征的情形中,我們也可以使用線性回歸,但是需要?jiǎng)?chuàng)建一個(gè)平面(而不是直線),以幫助我們預(yù)測(cè)(見下圖)。
使用線性回歸在 2 個(gè)特征空間中的創(chuàng)建一個(gè)平面來(lái)做預(yù)測(cè)
多特征線性回歸模型
回憶單一特征的線性回歸(見下圖左邊),線性回歸模型結(jié)果為 y,權(quán)重為 W,房屋大面積為 x,偏差為 b。
對(duì)于 2 個(gè)特征的回歸(參見下圖右側(cè)),我們引入另一個(gè)權(quán)重 W2,另一個(gè)自變量 x2 來(lái)代表房間數(shù)的特征值。
單特征 vs. 2 個(gè)特征的線性回歸方程
如之前討論的那樣,當(dāng)我們執(zhí)行線性回歸時(shí),梯度下降算法能幫助學(xué)習(xí)系數(shù) W、W2 和 b 的值。
Tensorflow 的多特征線性回歸
1.快速回顧
單特征線性回歸的 TF 代碼由 3 部分組成(見下圖):
構(gòu)建模型(藍(lán)色部分)
基于模型構(gòu)建成本函數(shù)(紅色部分)
使用梯度下降(綠色部分)最小化成本函數(shù)
用于單特征線性回歸的 Tensorflow 代碼
2.Tensorflow 的 2 個(gè)特征的線性回歸
TF 代碼中 2 個(gè)特征的線性回歸方程(如上所述)的變化(相比單特征)用紅色顯示。
注意,增加新特征的這種方式效率低;隨著特征數(shù)量的增長(zhǎng),所需的變量系數(shù)和自變量的數(shù)量會(huì)增加。實(shí)際的模型有更多的特征,這惡化了這個(gè)問題。那么,如何能有效地表示特征呢?
解決方法:矩陣
首先,讓我們將表征兩個(gè)特征的模型推廣到表征 n 個(gè)特征的模型:
復(fù)雜的 n 特征公式可以用矩陣簡(jiǎn)化,矩陣被內(nèi)置于 TF 中,這是因?yàn)椋?/p>
數(shù)據(jù)可以用多維表示,這契合我們表征具有 n 個(gè)特征的數(shù)據(jù)點(diǎn)(左下方,也稱為特征矩陣)以及具有 n 個(gè)權(quán)重模型(右下,也稱為權(quán)重矩陣)的方式
單個(gè)數(shù)據(jù)點(diǎn)的 n 個(gè)特征與模型的矩陣形式的 n 個(gè)權(quán)重
在 TF 中,它們將被寫為:
x = tf.placeholder(tf.float,[1,n])
W = tf.Variable(tf.zeros [n,1])
注意:對(duì)于 W,我們使用 tf.zeros,它將所有 W1,W2,...,Wn 初始化為零。
在數(shù)學(xué)上,矩陣乘法是向量乘法的加總;因此自然地,特征(中間的一個(gè))和權(quán)重(右邊的)矩陣之間的矩陣乘法給出(左邊的)結(jié)果,即等于 n 個(gè)特征的線性回歸公式的第一部分(如上所述),沒有截距項(xiàng)。
特征和權(quán)重矩陣之間的矩陣乘法給出結(jié)果(未添加截距項(xiàng))
在 TF 中,這種乘法將表示為:
y = tf.matmul(x, W)
多行特征矩陣(每行表示數(shù)據(jù)點(diǎn)的 n 個(gè)特征)之間的矩陣乘法返回多行結(jié)果,每行代表每個(gè)數(shù)據(jù)點(diǎn)的結(jié)果/預(yù)測(cè)(沒有加入截距項(xiàng));因此一個(gè)矩陣乘法就可以將線性回歸公式應(yīng)用于多個(gè)數(shù)據(jù)點(diǎn),并對(duì)應(yīng)地產(chǎn)生多個(gè)預(yù)測(cè)(每個(gè)數(shù)據(jù)點(diǎn)對(duì)應(yīng)一個(gè)結(jié)果)(見下文)
注意:特征矩陣中的 x 表示變的更復(fù)雜,即我們使用 x1.1、x1.2,而不是 x1、x2 等,因?yàn)樘卣骶仃嚕ㄖ虚g矩陣)從表示 n 個(gè)特征(1 行 x,n 列)的單個(gè)數(shù)據(jù)點(diǎn)擴(kuò)展到表示具有 n 個(gè)特征(m 行 x,n 列)的 m 個(gè)數(shù)據(jù)點(diǎn)。因此,我們擴(kuò)展 x
具有模型權(quán)重的多行矩陣乘法產(chǎn)生矩陣的多個(gè)行結(jié)果
在 TF 中,它們將被寫為:
x = tf.placeholder(tf.float,[m,n])
W = tf.Variable(tf.zeros [n,1])
y = tf.matmul(x,W)
最后,向結(jié)果矩陣添加常數(shù),也就是將常數(shù)添加到矩陣中的每一行
在 TF 中,用矩陣表示 x 和 W,無(wú)論模型的特征數(shù)量或要處理的數(shù)據(jù)點(diǎn)數(shù)量,矩陣都可以簡(jiǎn)化為:
b = tf.Variable(tf.zeros[1])
y = tf.matmul(x, W) + b
Tensorflow 的多特征備忘單
我們做一個(gè)從單一特征到多特征的線性回歸的變化的并行比較:
Tensorflow 中的單特征與 n 個(gè)特征的線性回歸模型
總結(jié)
在本文中,我們介紹了多特征線性回歸的概念,并展示了我們?nèi)绾螌⒛P秃?TF 代碼從單特征的線性回歸模型擴(kuò)展到 2 個(gè)特征的線性回歸模型,并可以推廣到 n 特征線性回歸模型。最后我們?yōu)槎嗵卣鞯?TF 線性回歸模型提供了一張備忘單。
邏輯回歸
邏輯回歸綜述
我們已經(jīng)學(xué)會(huì)了如何使用 Tensorflow(TF)去實(shí)現(xiàn)線性回歸以預(yù)測(cè)標(biāo)量值得結(jié)果,例如給定一組特征,如住房大小,預(yù)測(cè)房?jī)r(jià)。
然而,有時(shí)我們需要對(duì)事物分類(classify)而不是去預(yù)測(cè)一個(gè)具體的數(shù)值,例如給定一張含有數(shù)字(0-9 十個(gè)數(shù)字中的一個(gè))的圖片,我們需要將其分類為 0,1,2,3,4,5,6,7,8,9 十類?;蛘?,我們需要將一首歌曲進(jìn)行歸類,如歸類為流行,搖滾,說(shuō)唱等。集合 [0,1,2,...,9]、[流行,搖滾,說(shuō)唱,等等] 中的每一個(gè)元素都可以表示一個(gè)類。在計(jì)算機(jī)中,我們通常用數(shù)字對(duì)抽象名詞進(jìn)行表示,比如,pop = 0, rock = 1, 等等。為了實(shí)現(xiàn)分類,我們使用 TF 來(lái)實(shí)現(xiàn)邏輯回歸。
在本文中,我們將使用邏輯回歸將數(shù)字圖片歸類為 0,1,2,3,4,5,6,7,8,9 這十類。
邏輯回歸的細(xì)節(jié)
線性回歸中的許多概念仍然用于邏輯回歸之中。我們可以再次使用公式 y = W.x + b,但是有一些不同的地方。讓我們看看線性回歸和邏輯回歸的公式:
線性回歸與邏輯回歸的區(qū)別與相似
區(qū)別:
結(jié)果(y):對(duì)于線性回歸,結(jié)果是一個(gè)標(biāo)量值(可以是任意一個(gè)符合實(shí)際的數(shù)值),例如 50000,23.98 等;對(duì)于邏輯回歸,結(jié)果是一個(gè)整數(shù)(表示不同類的整數(shù),是離散的),例如 0,1,2,... 9。
特征(x):對(duì)于線性回歸,特征都表示為一個(gè)列向量;對(duì)于涉及二維圖像的邏輯回歸,特征是一個(gè)二維矩陣,矩陣的每個(gè)元素表示圖像的像素值,每個(gè)像素值是屬于 0 到 255 之間的整數(shù),其中 0 表示黑色,255 表示白色,其他值表示具有某些灰度陰影。
成本函數(shù)(成本):對(duì)于線性回歸,成本函數(shù)是表示每個(gè)預(yù)測(cè)值與其預(yù)期結(jié)果之間的聚合差異的某些函數(shù);對(duì)于邏輯回歸,是計(jì)算每次預(yù)測(cè)的正確或錯(cuò)誤的某些函數(shù)。
相似性:
訓(xùn)練:線性回歸和邏輯回歸的訓(xùn)練目標(biāo)都是去學(xué)習(xí)權(quán)重(W)和偏置(b)值。
結(jié)果:線性回歸與邏輯回歸的目標(biāo)都是利用學(xué)習(xí)到的權(quán)重和偏置值去預(yù)測(cè)/分類結(jié)果。
協(xié)調(diào)邏輯回歸與線性回歸
為了使邏輯回歸利用 y = W.b + x,我們需要做出一些改變以協(xié)調(diào)上述差異。
1.特征變換,x
我們可以將二維的圖片特征(假設(shè)二維特征有 X 行,Y 列)轉(zhuǎn)換成一維的行向量:將第一行以外的其它行數(shù)值依順序放在第一行后面。
轉(zhuǎn)換圖像特征以適用于邏輯回歸公式
2.預(yù)測(cè)結(jié)果轉(zhuǎn)換,y
對(duì)于邏輯回歸,y 不能作為標(biāo)量,因?yàn)轭A(yù)測(cè)可能最終為 2.3 或 11,這不在可能的類 [0,1,...,9] 中。
為了解決這個(gè)問題,y 應(yīng)該被轉(zhuǎn)換成列向量,該向量的每個(gè)元素代表邏輯回歸模型認(rèn)為屬于某個(gè)特定類的得分。在下面的示例中,預(yù)測(cè)結(jié)果為類"1",因?yàn)樗哂休^高得分。
每個(gè)類的分?jǐn)?shù)和具有較高分?jǐn)?shù)的類成為被預(yù)測(cè)的類
對(duì)于給定的圖片,為求這個(gè)分?jǐn)?shù)向量,每個(gè)像素都會(huì)貢獻(xiàn)一組分?jǐn)?shù)(針對(duì)每一類),分?jǐn)?shù)表示系統(tǒng)認(rèn)為這張圖片屬于某類的可能性,每個(gè)像素分?jǐn)?shù)之和成為預(yù)測(cè)向量。
每個(gè)像素提供一個(gè)分?jǐn)?shù)向量;每個(gè)類別有一個(gè)分?jǐn)?shù),最后變成預(yù)測(cè)向量。所有預(yù)測(cè)向量的總和變成最終預(yù)測(cè)。
3.成本函數(shù)的變換
涉及到預(yù)測(cè)結(jié)果和實(shí)際結(jié)果之間數(shù)值距離的任何函數(shù)都不能作為成本函數(shù)。對(duì)于數(shù)字圖片「1」,這樣的成本函數(shù)將使預(yù)測(cè)值「7」(7-1=6)更嚴(yán)重地懲罰預(yù)測(cè)值「2」(2-1=1),盡管兩個(gè)預(yù)測(cè)結(jié)果都是錯(cuò)誤的。
我們即將使用的成本函數(shù),交叉熵(H),用以下幾個(gè)步驟實(shí)現(xiàn):
1. 將實(shí)際圖片的類向量(y")轉(zhuǎn)化成 one-hot 向量,這是一個(gè)概率分布。
2. 將預(yù)測(cè)類 (y) 轉(zhuǎn)化成概率分布。
3. 使用交叉熵函數(shù)去計(jì)算成本函數(shù),這表示的是兩個(gè)概率分布函數(shù)之間的差異。
第一步:One-hot 向量
由于我們已經(jīng)將預(yù)測(cè) (y) 轉(zhuǎn)換成分?jǐn)?shù)向量,因此,我們也應(yīng)該將實(shí)際圖片類(y』)轉(zhuǎn)換成相同維數(shù)的向量;one-hot 向量是將對(duì)應(yīng)于實(shí)際類的的元素為設(shè)為 1,其它元素為 0。下面,我們展示表示 0-9 十個(gè)類中一個(gè)類的 one-hot 向量。
圖片類和它們的 one-hot 向量表示
假設(shè)實(shí)際圖像上是數(shù)字「1」(y"),它的 one-hot 向量是 [0,1,0,0,0,0,0,0,0,0],假設(shè)其預(yù)測(cè)向量 (y) [1.3, 33, 2, 1.2, 3.2, 0.5, 3, 9.2, 1],繪制比較如下:
真實(shí)圖片 one—hot 向量(頂)預(yù)測(cè)類別概率
第二步:用 softmax 實(shí)現(xiàn)概率分布
為了在數(shù)學(xué)上比較這兩個(gè)「圖」的相似性,交叉熵是一個(gè)好方法。(這里是一個(gè)很棒但比較長(zhǎng)的解釋,如果你對(duì)細(xì)節(jié)感興趣的話。https://colah.github.io/posts/2015-09-Visual-Information/)
然而,為了利用交叉熵,我們需要將實(shí)際結(jié)果向量(y")和預(yù)測(cè)結(jié)果向量(y)轉(zhuǎn)換為「概率分布」,「概率分布」意味著:
每個(gè)類的概率/分?jǐn)?shù)值在 0-1 之間;
所以類的概率/分?jǐn)?shù)和必須是 1;
實(shí)際結(jié)果向量(y")如果是 one-hot 向量,滿足了上述限制。
為預(yù)測(cè)結(jié)果向量(y), 使用 softmax 將其轉(zhuǎn)換為概率分布:
softmax 函數(shù),這里 i 是表示 0, 1, 2, …, 9 十類
這個(gè)過(guò)程只需要簡(jiǎn)單的兩步,預(yù)測(cè)向量(y)中的每個(gè)分量是 exp(y_i) 除以所有分量的 exp() 的和。
注意:softmax(y)圖形在形狀上與 prediction (y) 相似,但是僅僅有較大的較大值和較小的最小值
使用 softmax 前后預(yù)測(cè)(y)曲線
第三步:交叉熵
現(xiàn)在,我們將預(yù)測(cè)向量分?jǐn)?shù)概率分布(y")和實(shí)際向量分?jǐn)?shù)概率分布 (y) 運(yùn)用交叉熵。
交叉熵公式:
交叉熵作為我們想最小化的成本函數(shù)
為了快速理解這個(gè)復(fù)雜的公式,我們將其分為 3 部分(見下文)。注意,本文中的符號(hào),我們使用 y_i 表示 y 的第 i 個(gè)分量。
交叉熵(H)公式可視為三個(gè)部分:紅,藍(lán),綠
藍(lán):實(shí)際圖像類(y")對(duì)應(yīng)的 one-hot 圖,參看 one-hot 向量部分:
紅:由預(yù)測(cè)向量元素(y)經(jīng)過(guò)softmax(y),-og(softmax(y)一系列變化而來(lái):
綠:每一圖片類別 i,其中,i = 0, 1, 2, …, 9, 紅藍(lán)部分相乘的結(jié)果
以下圖例會(huì)進(jìn)一步簡(jiǎn)化理解。
藍(lán)色制圖只是真實(shí)圖片類別(y")one-hot 向量。
每個(gè)預(yù)測(cè)向量元素,y,轉(zhuǎn)換成 -log(softmax(y),就得到紅圖:
預(yù)測(cè)類別向量(y)一系列轉(zhuǎn)換后,得到紅圖
如果你想完全地理解第二個(gè)變換 -log(softmax(y)) 與 softmax(y) 為什么成反比,請(qǐng)點(diǎn)擊 video or slides(參見文末資源部分).
交叉熵(H),這個(gè)綠色的部分是每個(gè)類別的藍(lán)色值和紅色值的乘積和,然后將它們做如下相加:
交叉熵是每個(gè)圖像類的藍(lán)色值和紅色值的乘積之和。
由于這張藍(lán)色圖片對(duì)應(yīng)一個(gè) one-hot 向量,one-hot 向量?jī)H僅有一個(gè)元素是 1,它對(duì)應(yīng)一個(gè)正確的圖片類,交叉熵的其它所有元素乘積為 0,交叉熵簡(jiǎn)化為:
將所有部分放到一起
有了三個(gè)轉(zhuǎn)換后,現(xiàn)在,我們就可以將用于線性回歸的技術(shù)用于邏輯回歸。下面的代碼片段展示的是本系列文章第三部分線性回歸代碼和代碼適用邏輯回歸所需要的變化之間的對(duì)比。
邏輯回歸的目標(biāo)是最小化交叉熵(H),這意味著我們只需要最小化 -log(softmax(y_i)項(xiàng);因?yàn)樵擁?xiàng)與 softmax(y_i)成反比,所以我們實(shí)際上是較大化該項(xiàng)。
使用反向傳播去最小化交叉熵 (H ) 將改變邏輯回歸的權(quán)重 W 和偏置 b。因此,每張圖片的像素值將會(huì)給出對(duì)應(yīng)圖片類較高分?jǐn)?shù)/概率!(較高分?jǐn)?shù)/概率對(duì)應(yīng)于正確的圖片類)
將線性回歸方法用于邏輯回歸之中,「total_class」是欲分類問題的總類數(shù)量,例如,在上文手寫數(shù)字體識(shí)別例子中,total_class=10。
1. 將特征變換成一維特征;
2. 將預(yù)測(cè)結(jié)果向量、實(shí)際結(jié)果向量變化成 one-hot 向量;
3. 將成本函數(shù)從平方誤差函數(shù)變化到交叉熵。
總結(jié)
線性回歸對(duì)基于給定特征的預(yù)測(cè)(數(shù)值)是有幫助的,邏輯回歸根據(jù)輸入特征實(shí)現(xiàn)分類是有幫助的。
我們展示了如何調(diào)整線性回歸 y = W.x + b 實(shí)現(xiàn)邏輯回歸:(1)轉(zhuǎn)換特征向量;2)轉(zhuǎn)換預(yù)測(cè)/結(jié)果向量;(3)轉(zhuǎn)換成本函數(shù)。
當(dāng)你掌握了 one-hot 向量,softmax,交叉熵的知識(shí),你就可以處理谷歌上針對(duì)「初學(xué)者」的圖片分類問題。
資源:
針對(duì)初學(xué)者的圖像識(shí)別的谷歌代碼:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/mnist/mnist_softmax.py
slideshare 上的幻燈片:http://www.slideshare.net/KhorSoonHin/gentlest-introduction-to-tensorflow-part-3
油管上的視頻:https://www.youtube.com/watch?v=F8g_6TXKlxw
原文鏈接:https://medium.com/all-of-us-are-belong-to-machines/gentlest-intro-to-tensorflow-4-logistic-regression-2afd0cabc54#.glculhxzi
歡迎加入本站公開興趣群商業(yè)智能與數(shù)據(jù)分析群
興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價(jià)值的辦法,實(shí)際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)挖掘工具,報(bào)表系統(tǒng)等全方位知識(shí)
QQ群:81035754
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/4462.html
摘要:但是服務(wù)通常由服務(wù)提供者來(lái)管理的。小結(jié)通過(guò)上述的例子,基本上可以理解服務(wù)容器和服務(wù)提供者的使用。懂得了服務(wù)容器和服務(wù)提供者,理解門面也就不難了。 自動(dòng)依賴注入 什么是依賴注入,用大白話將通過(guò)類型提示的方式向函數(shù)傳遞參數(shù)。 實(shí)例 1 首先,定義一個(gè)類: /routes/web.php class Bar {} 假如我們?cè)谄渌胤揭褂玫?Bar 提供的功能(服務(wù)),怎么辦,直接傳入?yún)?shù)即...
摘要:在我以為我和緣分尚淺的時(shí)候,搬來(lái)救兵,智能指針橫空出世,打敗了內(nèi)存泄漏,拯救了我們的關(guān)系。智能指針引入了智能指針的概念,使用了引用計(jì)數(shù)的想法,讓程序員不再需要關(guān)心手動(dòng)釋放內(nèi)存。它還增加了一個(gè)成員函數(shù)用于交換兩個(gè)智能指針的值。 ...
摘要:用離散信一文清晰講解機(jī)器學(xué)習(xí)中梯度下降算法包括其變式算法無(wú)論是要解決現(xiàn)實(shí)生活中的難題,還是要?jiǎng)?chuàng)建一款新的軟件產(chǎn)品,我們最終的目標(biāo)都是使其達(dá)到最優(yōu)狀態(tài)。 提高駕駛技術(shù):用GAN去除(愛情)動(dòng)作片中的馬賽克和衣服 作為一名久經(jīng)片場(chǎng)的老司機(jī),早就想寫一些探討駕駛技術(shù)的文章。這篇就介紹利用生成式對(duì)抗網(wǎng)絡(luò)(GAN)的兩個(gè)基本駕駛技能: 1) 去除(愛情)動(dòng)作片中的馬賽克 2) 給(愛情)動(dòng)作片中...
閱讀 945·2021-11-18 10:02
閱讀 1829·2019-08-30 15:56
閱讀 2624·2019-08-30 13:47
閱讀 2695·2019-08-29 12:43
閱讀 922·2019-08-29 11:19
閱讀 1859·2019-08-28 18:23
閱讀 2726·2019-08-26 12:23
閱讀 3081·2019-08-23 15:29