[
Youtube 影片38 Logistic Regression :: Logistic Regression Problem]
前面一個學習筆記 21 介紹了迴歸分析的方法,可以找到最好的W (WLin)
圖一、前情題要
如果今天我們要把這個系統應用到醫院的疾病判斷系統
我們先從二元判斷這件事情開始,我們在乎的是錯誤率是多少
圖二、心臟病的二元分類問題
在這邊我們與前一個想關注的問題不一樣
我們在意的是病患的心臟病發的
機率是多少
意思是被標記為 o 的病患,判定正確的機率是多少 (還記得目標分布Target Distribution嗎?)
如果計算出的數值越高的話,就有越高的機率被評為 o
所以這邊用了一個詞叫作
Soft Binary Classification
圖三、心臟病的發生機率問題
今天我們比較希望能夠得到一個有不同資料所計算出來的數值
但是實際上很有可能只能夠拿到 o 或 x 的二元資訊
圖四、理論與實際資料的差別
那轉念一想,我們是不是能夠將圖四中的實際資料,看作有雜訊的資料呢 ?
意思是,雖然我們的目標分布不一樣,但是二元分類的結果卻相同
問題來了,
那我們要怎麼找出合適的Hypothsis來分辨這些ox資料的實際目標分布呢?
圖五、含有雜訊的資料
聰明的人想到一個辦法,就是這邊要介紹的 Logistic Hypothesis
( 在樣型識別中會學到的 Sigmoid )
加入x0項之後,將這些x們與權重w進行計算,叫作風險分數 (risk score)
再把風險分數變成估測某件事情發生的機率,便能夠達成前一個問題所問的事情
那怎麼求得 Logistic hypothesis 呢 ?
圖六、Logistic hypothesis
圖七中顯示的就是 Logistic hypothesis 的公式
是一個平滑,嚴格遞增,長得有點像s曲現的函數,稱作 Sigmoid 函數
得到了這個 Logistic hypothesis,我們就能夠將它應用在 h(x)上
圖七、Logistic Function
課後練習
Ans : 從選項裡面找到能夠與 Simoid 輸出一樣結果的,就是答案
-----------------------------------------------------------------------------------------------
[
Youtube 影片39 Logistic Regression :: Logistic Regression Error]
圖八中,這三個不同的模型,都是為了要達到資料分類的目的
那今天就是要求出 logistic regression 的錯誤衡量方式 err
圖八、三個學過的模型
如果今天有一組資料 D,這些資料產生的機率 f 是多少 ?
圖九、可能性
圖十、 條件機率用 1- f(x) 取代
又因為 f 和 p是密不可分的,所以可以將條件機率的部分 P(o或x
| xn) 換成 1 - f(xn)
由於 f 的取得可能有困難,因此我們
假裝 h 是 f (雖然不是真的取代,但不妨試試)
來看看 h 產生與f結果一模一樣的機率有多少 ?
如果今天 h 跟 f 很接近的話,他們一模一樣的機率就很高
圖十一、用 h 假裝取代 f
從所有的 h 找可能性最高的來當 g
由於Logistic函數的對稱性,可以將 1-h(x) 改寫成 h(-x)
那麼我們能夠把原本探討可能性的式子,變成所有項的相乘
灰色的部分得話,是因為相同,所以顯示的是圖十二與圖十三中不一樣的部分
圖十二、可能性的計算方式
將可能性計算公式 Likelihood(h) 進行改寫,將 1-h(x) 改寫成 h(-x)
就可以得到連乘的式子結果,可能性正比於所有項的相乘
圖十三、可能性的計算方式改寫
推導 Cross Entropy Error
想要知道
最大的可能性,我們取 Likelihood 公式的最大值
圖十四、Cross entropy error公式 -1
將 h 換成 w,針對有興趣的權重進行計算
圖十五、Cross entropy error公式 -2
那能不能為了方便微分等,將連乘換成連加呢?
當然可以,取 log 即可
圖十六、Cross entropy error公式 -3
將 yn wT xn 代入
θ (s) 中,便可得到新的 pointwise 的式子,叫作 cross entropy error
由於這邊有一個負號,因此從求取 最大值 變成求取 最小值
至於為什麼叫 cross entropy 可以參考相關數學書籍,老師不在此介紹
圖十七、Cross entropy error公式-4
課後練習
Ans :
複習
符號函數,這邊符號函數應該加入 wTx > 0 / wTx < 0 比較精確
-----------------------------------------------------------------------------------------------
[Youtube 影片40 Logistic Regression :: Gradient of Logistic Regression Error]
承前一講,我們在這邊的目標是最小化Ein(w)
最小化Ein(w):Ein(w)是連續可微分的凸函數,透過微分為零的點找到 Ein(w) 的最低點
而微分就相當於求 Ein(w) 的Gradient
圖十八、最小化Ein(w)
利用微積分的鏈鎖律,並將ln()中的式子以符號代換。
以這些符號代表的目的是為了方便運算用
圖十九、Ein(w)的Gradient
以下是推導過程,並得到與 θ() 函數有關連的式子
圖二十、Ein(w) Gradient的推導過程
求得Ein(w) Gradient 最小值(谷底),意思就是要找到使Gradient為零的w
從梯度的公式可以看得出來,它是一個以θ為權重的-YnXn總合
那θ的總和怎樣會是零呢?
其中一個可能是它們全部都是零 (只是其中一種)
而θ怎樣會是零呢?
很簡單,就是它們的YnXTX遠大於零(θ 的函式可以複習上面教過得內容)
因此w和x正負號會相同,因此這些資料會是線性可分割的資料(情況較為簡單的狀況)
但是請記住,真實世界的問題沒有這麼簡單!
因此還是要乖乖的去找θ權重總合真的為零的解是多少
而且很抱歉,沒有closed-form的解答,沒有一個簡單的公式可以求得...
圖二十一、關於θ權重的總和
只好回頭到先前學過的PLA去尋求解答
先從一個起點出發,並看它哪裡有錯誤,並對它進行修正
一直進行PLA的步驟直到結束為止
圖二十二、複習PLA
為了方便討論,將前兩個步驟簡化成一個步驟
如果是錯的,就加上後面ynxn那項
圖二十三、PLA 步驟合併
更新後的式子中,可以將ynxn那項看作一個常數項乘上一個向量
常數項可以看作我們執行一次PLA,它會走幾步
向量項則能夠決定要往那個方向走
它會反覆執行好幾次,這個執行好幾次的過程,就是稱作循序的(iterative)最佳化方法
圖二十四、iterative optimization approach
課後練習
Ans :
如果忘記了,就再次複習θ函數吧:P
-----------------------------------------------------------------------------------------------
[Youtube 影片41 Logistic Regression :: Gradient Descent]
尋求最低點的方法其中之一就是
梯度下降演算法
PLA 則是透過 v 來對權重 w 進行更新的動作,v決定方向,η (唸作eta)決定跨多大步
如果貪心的話,為了快點達到谷底,我們可以讓下降速度最快
意思就是透過調整 η (eta),讓 ηv 項最大化,使得Ein(w)變得最小
圖二十五、尋找最低點
問題來了,Ein(wt+ ηv) 依然是
非線性的問題,並沒有比較好解
於是,我們可以透過局部相似(local approximation)讓原本討厭的非線性問題變成
線性
那,我們是不是可以探討在向量 v 上是線性呢?
如果只看局部
一小段線段, η (eta) 很小
可以將原本的式子變成以前學過得線性方程式 y = b + ax 的形式
斜率 a 就相當於∇Ein(wt)
透過探討一小段線段,我們可以把原本的式子變成泰勒展開式,變成線性的問題
圖二十七、線性相似方法
我們先將不重要的部份先用灰色的值表示,Ein(wt)是常數,η是使用者自己決定的已知數
需要探討的只有後面 vT ∇Ein(wt)這項 (∇唸作nabla) (vT為向量)
又v要求為單位向量,因此需要經過normalized
如果兩個向量方向相反,內積最小
所謂的梯度下降演算法,就是往斜率變化的反方向進行移動
只要能夠求出斜率,就能夠使用梯度下降演算法
因為一次又想要移動很多步,所以會稱作greedy
Gradient Descent
圖二十八、梯度下降演算法
Choice of η
η (eta)該怎決定呢?
先來看不好的case,一步走很小以及一步走很大的案例
太小步的話,走得會太慢,反之,則可能會非常不穩定
比較聰明的方式是坡度大的時候,走大步一點 ; 坡度小的時候,就走小步一點
因此,η應該要與 ∇Ein(wt) 正相關
圖二十九、 η 的選擇
將原來的式子進行調整一下
紫色的 η 稱作fixed learning rate,以大小適中的紫色的 η 進行學習,稱作 fixed learning
圖三十、fixed learning rate (紫色 η )
實務上不需要一定非要等到∇Ein(wt) = 0才可以,大約等於零的話就可以停止了 :)
概念上與 pocket 演算法接近
圖三十一、
課後練習
Ans :
t = 0的時候,θ(...) = θ(yn * 0 * xn) = θ(0) = 1/2,如下圖所示
-----------------------------------------------------------------------------------------------