机器学习基石HOW部分(2)
機(jī)器學(xué)習(xí)基石HOW部分(2)
標(biāo)簽:機(jī)器學(xué)習(xí)基石
第十章
gradient descent on cross-entropy error to get good logistic hypothesis
從方程的形式、誤差的衡量方式、如何最小化Ein的角度出發(fā)
之前提過(guò)的二元分類(lèi)器如PLA,其目標(biāo)函數(shù)為, f(x)=sign(wTx)∈?1,+1,輸出要么是-1要么是+1,是一個(gè)“硬”的分類(lèi)器。而Logistic Regression是一個(gè)“軟”的分類(lèi)器,它的輸出是y=+1的概率,因此Logistic Regression的目標(biāo)函數(shù)是 f(x)=P(+1|x)∈[0,1]。
方程的形式
logistic hypothesis: h(x)=θ(wTx)
logistic regression:h(x)=11+exp(?wTx)
有一組病人的數(shù)據(jù),我們需要預(yù)測(cè)他們?cè)谝欢螘r(shí)間后患上心臟病的“可能性”,就是我們要考慮的問(wèn)題。
通過(guò)二值分類(lèi),我們僅僅能夠預(yù)測(cè)病人是否會(huì)患上心臟病,不同于此的是,現(xiàn)在我們還關(guān)心患病的可能性,即 f(x) = P(+1|x),取值范圍是區(qū)間 [0,1]。
然而,我們能夠獲取的訓(xùn)練數(shù)據(jù)卻與二值分類(lèi)完全一樣,x是病人的基本屬性,y 是+1(患心臟病)或-1(沒(méi)有患心臟病)。輸入數(shù)據(jù)并沒(méi)有告訴我們有關(guān)“概率” 的信息。
在二值分類(lèi)中,我們得到一個(gè)”score” 后(s=∑i=0dwixi=wTx),通過(guò)取符號(hào)運(yùn)算sign 來(lái)預(yù)測(cè)y 是+1 或 -1。而對(duì)于當(dāng)前問(wèn)題,我們?nèi)缤軌驅(qū)⑦@個(gè)score 映射到[0,1] 區(qū)間,問(wèn)題似乎就迎刃而解了。
誤差的衡量
Cross Entropy Error:err(w,x,y)=ln(1+exp(?ywx))
為什么不用上一章用到的平方誤差,其實(shí)是因?yàn)?span id="MathJax-Element-9-Frame" class="MathJax">Ein(w)=∑err就是一個(gè)關(guān)于w的非凸函數(shù)(non-convex),非凸函數(shù)由于存在很多個(gè)局部最小點(diǎn),因此很難去做最優(yōu)化(解全局最小)。所以L(fǎng)ogistic Regression沒(méi)有使用平方誤差來(lái)定義error,而是使用極大似然法來(lái)估計(jì)模型的參數(shù)。
極大似然法基本思想:當(dāng)從模型總體隨機(jī)抽取n組樣本觀(guān)測(cè)值后,最合理的參數(shù)估計(jì)量應(yīng)該使得從模型中抽取該n組樣本觀(guān)測(cè)值的概率最大,而不是像最小二乘估計(jì)法旨在得到使得模型能最好地?cái)M合樣本數(shù)據(jù)的參數(shù)估計(jì)量。
講講從視頻中理解到的likelihood。一開(kāi)始不懂,后來(lái)來(lái)來(lái)回回看了三遍,就完全理解了。
target function是f(x) = P(+1|x)
那么P(y|x)當(dāng)y=+1和-1的時(shí)候,就有
現(xiàn)在假設(shè)有一個(gè)數(shù)據(jù)集D,D=(x1,+1),(x2,?1),……,(xN,?1).
f生成這個(gè)數(shù)據(jù)集的可能性是
因?yàn)?span id="MathJax-Element-13-Frame" class="MathJax">P(y|x)可以寫(xiě)成f(x)和1-f(x)的形式。
所以上式又可以變成
h生成這個(gè)數(shù)據(jù)集的likelihood是
假如h≈f,那根后兩個(gè)式子可以得出 likelihood(h)≈ probability using f
g就是取likelihood最大的h。
logistic:h(x)=θ(wTx)那么就有1?h(x)=h(?x)
likelihood可以這樣表達(dá):
likelihood(logistic h) ∝∏n=1Nh(ynxn)
令上式最大,就可以得到最小的Ein,得到最好的g。
上面提到了h(x)=θ(wTx),那likelihood(logistic h)∝∏n=1Nθ(ynwTxn)
我們不喜歡連乘,我們喜歡累加。我們不喜歡求最大值,我們熱愛(ài)求最小值。
于是,把最大值取個(gè)對(duì)數(shù),再添個(gè)負(fù)號(hào),我們就可以愉快的求累加項(xiàng)的最小值了。
因?yàn)?span id="MathJax-Element-26-Frame" class="MathJax">θ(s)=11+exp(s)所以
minw1N∑n=1N11+exp(ynwTxn)=minw1N∑n=1Nerr(w,xn,yn)logistic regression的誤差衡量–cross-entropy error終于出現(xiàn)了err(w,x,y) = ln(1 + exp(?ywx))
如何最小化Ein
Ein(w)=1N∑n=1Nln(1+exp(ynwTxn))
可以看出cost function是連續(xù),可微的凸函數(shù)。按照之前Linear Regression的邏輯,由于它是凸函數(shù),如果我們能解出一階微分(梯度)為0的點(diǎn),這個(gè)問(wèn)題就解決了。
對(duì)權(quán)值向量w的單個(gè)分量求偏微分過(guò)程
最終出來(lái)?Ein(w)=1N∑Nn=1θ(?ynwTxn)(?ynxn)
離目標(biāo)又近了一步,只要把上面式子=0,然后就可以得到最小的Ein了。
壞了,這個(gè)不是線(xiàn)性的。
和之前的Linear Regression不同,它不是一個(gè)線(xiàn)性的式子,要求解?Ein(w)=0這個(gè)式子,是困難的。那么該使用何種方法實(shí)現(xiàn)Ein(w)最小化呢?
這里可以使用類(lèi)似PLA當(dāng)中的,通過(guò)迭代的方式來(lái)求解,這種方法又稱(chēng)為梯度下降法(Gradient Descent)。
For t = 0,1,…
when stop, return last w as g
其中η為每步更新的大小(step size),v是單位向量,表示每次更新的方向。
就好像有一個(gè)小球,從山上往下滾。當(dāng)小球滾到谷底的時(shí)候,我們就有了最小的Ein。
小球滾動(dòng),需要我們明確兩點(diǎn),一是滾動(dòng)的方向,二是滾動(dòng)的步長(zhǎng)。
方向很容易就可以確定了。因?yàn)槲覀円∏驖L到谷底,當(dāng)然方向要向著谷底啊。但是我們不知道谷底在哪里,所以就需要小球往海拔低的方向,也就是,小球在每一點(diǎn)的方向就是該點(diǎn)一階微分后的向量所指的方向:
步長(zhǎng)η比較難決定,太小了,更新太慢,太大了,一下子越過(guò)谷底,往對(duì)面走了。
一個(gè)比較好的做法是讓η與 ||▽Ein(wt)|| 成一定的比例,讓新的和||▽Ein(wt)||成比例的斜體的 η 來(lái)代替原來(lái)粗體的 η
我們稱(chēng)這個(gè)斜體的η為 fixed learning rate
wt+1←wt?η ?Ein(wt)||?Ein(wt)||
wt+1←wt?η?Ein(wt)
最后再來(lái)完整的梳理下梯度下降法(Gradient Descent):
??initialize w0
??For t = 0, 1, …
??1. compute
?????Ein(w)=1N∑Nn=1θ(?ynwTxn)(?ynxn)
??2. update by
????wt+1←wt?η?Ein(wt)
??…until Ein(wt+1)=0or enough iterations
??return last wt+1 as g
?
轉(zhuǎn)載于:https://www.cnblogs.com/huang22/p/5401163.html
總結(jié)
以上是生活随笔為你收集整理的机器学习基石HOW部分(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 09-完整性约束
- 下一篇: 介绍一个对陌生程序快速进行性能瓶颈分析的