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