上一篇以無機率的方式介紹怎麼做一個簡單的分類,而我們現在介紹一些有機率想法在裡面的方式。
前一篇我們給一筆資料 x 他就告訴我是+1或是-1,進而告訴你預測是哪一個類別。而現在我們要做的是,我們也是拿到一筆資料 x,我們告訴你它屬於哪一個類別的機率是多少!
首先先介紹兩個函數
sigmoid function
它可以把一個任意的實數值變成0~1之間的值,當我們只有兩個類別的時候,一個類別機率就是用這個function表得,令一個類別就剩下的機率。
softmax function
分母是所有類別都要累加起來的意思,用式子這個來表達資料是第k個類別的機率
接著我們以二元分類為例來解釋。我們這邊要用的手法就如同之前的Regression,設計一個error function然後最小化。首先我們要定義error function,一般來說,error function會是 -log likelihood,就像之前提過的機率再探curve fitting裡面描述的。
所以這邊我先寫下likelihood
因此我們的error function可以寫成
這個error function被稱作cross entropy error
我們試著把這個error function對 w 微分
推導上面這個微分我們會用到對sigmoid的微分,簡單的chain rule可以得到
由於sigmoid function並非線性函數,因此這次我們不能直接令他是 0 去求 w,我們要利用迭代的方式去最佳化 w,這邊我們採用牛頓法來做這件事情,所謂牛頓法就是利用一二階微分去迭代求解,也就是一次又一次的利用泰勒展開去逼近最佳解。所以我們這邊的把遞迴式寫成
裡面那個 H 指的是E(w)的海森矩陣,也就是二次微分的矩陣。而那個三角形就是梯度,也就是一次微分。
把各項整理完之後可以得到
而在大於兩個類別的情況,也是類似的推導,明天將跟大家介紹在三個類別的情況下,可以怎麼實作這個演算法!