机器学习(十五)——loss function比较、独立成分分析
http://antkillerfarm.github.io/
PCA算法推導(續)
對u求導可得:
?uL(u)=Σu?λu
這里的矩陣求導步驟,參見《機器學習(九)》中的公式5.12的推導過程。
令導數為0可得,當λ為Σ的特征值的時候,該代價函數得到最優解。
注:這里的推導過程,求解的是1維的PCA,但結論對于k維的PCA也是成立的。
一個n階矩陣有n個特征值,這些特征值可按絕對值大小排序,絕對值越大的,越重要。其中最大的k個特征值,被稱作k principal components,這就是主成分分析(Principal components analysis,PCA)算法的命名來歷。
我們以最大的k個特征值所對應的特征向量,構建樣本空間Y:
y(i)=???????uT1x(i)uT2x(i)?uTkx(i)???????∈Rk(1)
可以看出PCA算法實際上是個降維(dimensionality reduction)算法。
PCA的用途
為了便于理解PCA算法,我們以如下圖片的處理過程為例,進行說明。
第一排從左往右依次為:原圖(450*333)、k=1、k=5;第二排從左往右依次為:k=20、k=50。
從中可以看出,k=50時,圖像的效果已經和原圖相差無幾。而原圖是個450*333的高階矩陣。
在圖像處理領域,奇異值不僅可以應用在數據壓縮上,還可以對圖像去噪。如果一副圖像包含噪聲,我們有理由相信那些較小的奇異值就是由于噪聲引起的。當我們強行令這些較小的奇異值為0時,就可以去除圖片中的噪聲。
PCA的一個很大的優點是,它是完全無參數限制的。在PCA的計算過程中完全不需要人為的設定參數或是根據任何經驗模型對計算進行干預,最后的結果只與數據相關,與用戶是獨立的。
但是,這一點同時也可以看作是缺點。如果用戶對觀測對象有一定的先驗知識,掌握了數據的一些特征,卻無法通過參數化等方法對處理過程進行干預,可能會得不到預期的效果,效率也不高。
PCA和ALS的聯系與區別
令:
Yk×m=[y(1)?y(m)]
則由公式1可得:
Yk×m=UTn×kXn×m
變換可得:
Xn×m≈Un×kYk×m
由于PCA是個降維算法,因此這個變換實際上也是個近似變換。
從上面可以看出,PCA和ALS實際上都是矩陣的降維分解算法。它們的差別在于:
1.PCA的U矩陣是單位正交矩陣,而ALS的分解矩陣則沒有這個限制。
2.ALS從原理上雖然也是矩陣的奇異值或特征值的應用,然而其求解過程,卻并不涉及矩陣的奇異值或特征值的運算,因此運算效率非常高。
3.ALS是個迭代算法,容易掉入局部最優陷阱中。
PCA和特征選擇的區別
兩者雖然都是降維算法,但特征選擇是在原有的n個特征中選擇k個特征,而PCA是重建k個新的特征。
loss function比較
這里m代表了置信度,越靠近右邊置信度越高。
其中藍色的階躍函數又被稱為Gold Standard,黃金標準,因為這是最準確無誤的分類器loss function了。分對了loss為0,分錯了loss為1,且loss不隨到分界面的距離的增加而增加,也就是說這個分類器非常魯棒。但可惜的是,它不連續,求解這個問題是NP-hard的,所以才有了各種我們熟知的分類器。
其中紅色線條就是SVM了,由于它在m=1處有個不可導的轉折點,右邊都是0,所以分類正確的置信度超過一定的數之后,對分界面的確定就沒有一點貢獻了。
黃色線條是Logistic Regression的損失函數,與SVM不同的是,它非常平滑,但本質跟SVM差別不大。
綠色線條是boost算法使用的損失函數。
黑色線條是ELM(Extreme learning machine)算法的損失函數。它的優點是有解析解,不必使用梯度下降等迭代方法,可直接計算得到最優解。但缺點是隨著分類的置信度的增加,loss不降反升,因此,最終準確率有限。此外,解析算法相比迭代算法,對于大數據的適應較差,這也是該方法的局限所在。
參見:
https://www.zhihu.com/question/28810567
獨立成分分析
這一節我們將講述獨立成分分析(Independent Components Analysis,ICA)算法。
首先,我們介紹一下經典的雞尾酒宴會問題(cocktail party problem)。
假設在party中有n個人,他們可以同時說話,我們也在房間中放置了n個聲音接收器(Microphone)用來記錄聲音。宴會過后,我們從n個麥克風中得到了m組數據x(i),其中的i表示采樣的時間順序。由于宴會上人們的說話聲是混雜在一起的,因此,采樣得到的聲音也是混雜不清的,那么我們是否有辦法從混雜的數據中,提取出每個人的聲音呢?
為了更為正式的描述這個問題,我們假設數據s∈Rn是由n個獨立的源生成的。我們接收到的信號可寫作:x=As。其中,A被稱為混合矩陣(mixing matrix)。在這個問題中,s(i)是一個n維向量,s(i)j表示第j個說話者在i時刻的聲音。同理,x(i)j表示第j個麥克風在i時刻的記錄下的數據。
我們把W=A?1稱作unmixing matrix。我們的目標就是找到W,然后利用s=Wx,求得s。我們使用wTi表示W矩陣的第i行,因此:s(i)j=wTjx(i)。
ICA的不確定性
不幸的是,在沒有源和混合矩陣的先驗知識的情況下,僅憑x(i)是沒有辦法求出W的。為了說明這一點,我們引入置換矩陣的概念。
置換矩陣(permutation matrix)是一種元素只由0和1組成的方塊矩陣。置換矩陣的每一行和每一列都恰好只有一個1,其余的系數都是0。它的例子如下:
P=???010100001???;P=[0110];P=[1001]
在線性代數中,每個n階的置換矩陣都代表了一個對n個元素(n維空間的基)的置換。當一個矩陣乘上一個置換矩陣時,所得到的是原來矩陣的橫行(置換矩陣在左)或縱列(置換矩陣在右)經過置換后得到的矩陣。
ICA的不確定性(ICA ambiguities)包括以下幾種情形:
1.無法區分W和WP。比如改變說話人的編號,會改變s(i)的值,但卻不會改變x(i)的值,因此也就無法確定s(i)的值了。
2.無法確定W的尺度。比如x(i)還可以寫作x(i)=2A?(0.5)s(i),因此在不知道A的情況下,同樣無法確定s(i)的值。
3.信號不能是高斯分布的。
假設兩個人發出的聲音信號符合多值正態分布s~N(0,I),這里的I是一個2階單位陣,則E[xxT]=E[AssTAT]=AAT。
假設R是正交矩陣,A′=AR,x′=A′s,則:
E[xxT]=E[A′ssT(A′)T]=E[ARssT(AR)T]=ARRTAT=AAT
可見,無論是A還是A’,觀測值x都是一個N(0,AAT)的正態分布,也就是說A的值無法確定,那么W和s也就無法求出了。
密度函數和線性變換
在討論ICA的具體算法之前,我們先來回顧一下概率和線性代數里的知識。
假設我們的隨機變量s有概率密度(probability density)函數ps(s)。為了簡單,我們再假設s是實數,還有一個隨機變量x=As,A和x都是實數。令px是x的概率密度,那么怎么求px呢?
令W=A?1,則s=Wx。然而px(x)≠ps(Wx)。
這里以均勻分布(Uniform)為例討論一下。令s~Uniform[0,1],則ps(s)=1。令A=2,則W=0.5,x=2s~Uniform[0,2],因此px(x)=ps(Wx)∣W∣。
累積分布函數
累積分布函數(cumulative distribution function,CDF)是概率論中的一個基本概念。它的定義如下:
F(z0)=P(z≤z0)=∫z0?∞pz(z)dz
可以看出:
pz(z)=F′(z)
ICA算法
ICA算法歸功于Bell 和 Sejnowski,這里使用最大似然估計來解釋算法。(原始論文中使用的是一個復雜的方法Infomax principal,這在最新的推導中已經不需要了。)
注:Terrence (Terry) Joseph Sejnowski,1947年生,美國科學家。普林斯頓大學博士,導師是神經網絡界的大神John Hopfield。ICA算法和Boltzmann machine的發現人。
Tony Bell的個人主頁:
http://cnl.salk.edu/~tony/index.html
我們假定每個si有概率密度ps,那么給定時刻原信號的聯合分布就是:
p(s)=∏i=1nps(si)
因此:
p(x)=∏i=1nps(wTix)?|W|(2)
為了確定si的概率密度,我們首先要確定它的累計分布函數F(x)。而這需要滿足兩個性質:單調遞增和在[0,1]區間。
我們發現sigmoid函數很適合,它的定義域負無窮到正無窮,值域0到1,緩慢遞增。因此,可以假定s的累積分布函數符合sigmoid函數:
g(s)=11+e?s
求導,可得:
ps(s)=g′(s)=g(s)(1?g(s))
這里的推導參見《機器學習(一)》的公式7。
注:如果有其他先驗信息的話,這里的g(s)也可以使用其他函數。否則的話,sigmoid函數能夠在大多數問題上取得不錯的效果。
公式2的對數似然估計函數為:
?(W)=∑i=1m??∑j=1mlogg′(wTjx(i))+log|W|??(3)
因為:
(logg′(s))′=(log[g(s)(1?g(s))])′=(logg(s))′+(log(1?g(s)))′=g′(s)g(s)+(1?g(s))′(1?g(s))=g(s)(1?g(s))g(s)?g(s)(1?g(s))(1?g(s))=1?2g(s)
又因為《機器學習(九)》的公式5.11,可得公式3的導數為:
?W?(W)=????????1?2g(wT1x(i))1?2g(wT2x(i))?1?2g(wTnx(i))????????x(i)T+(WT)?1
最后,用通常的隨機梯度上升算法,求得?(W)的最大值即可。
注意:我們計算最大似然估計時,假設了x(i)和x(j)之間是獨立的,然而對于語音信號或者其他具有時間連續依賴特性(比如溫度)上,這個假設不能成立。但是在數據足夠多時,假設獨立對效果影響不大。
總結
以上是生活随笔為你收集整理的机器学习(十五)——loss function比较、独立成分分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(十四)——协同过滤的ALS算法
- 下一篇: 数学狂想曲(三)——统计杂谈, PID算