前言:Hello 大家好,我是小花,又和大家見面了,前面的文章一直是對機器學習的基本分類,回歸,聚類算法進行學習。那時候我記得給了大家很多特征,當時我說,特征的好壞決定了機器學習算法的效果。那么接下來,我將會帶着大家研究研究機器學習的特征。
這是我在ICML上看到的一篇文章,作者是華盛頓大學的一個教授,文章名:deep canonical correlation analysis。就是深度典型相關分析。目的是解決多視圖學習的非線性問題。前面我的文章對這個有介紹:
多視圖學習:http://www.cnblogs.com/xiaohuahua108/p/6014188.html
典型相關分析:http://www.cnblogs.com/xiaohuahua108/p/6086959.html
估計看到這里的小伙伴估計就要問了,等等,非線性問題,不是你在說SVM算法的時候,用核解決的么。哈哈,真聰明,我在把連接給大家。
核的介紹:http://www.cnblogs.com/xiaohuahua108/p/6146118.html
核的思想:將數據映射到更高維的空間,希望在這個更高維的空間中,數據可以變得更容易分離或更好的結構化。對這種映射的形式也沒有約束,這甚至可能導致無限維空間。然而,這種映射函數幾乎不需要計算的,所以可以說成是在低維空間計算高維空間內積的一個工具。
那小伙伴肯定說把核函數加到CCA上不就完美解決了非線性問題了么,那這個深度網絡的CCA難道比核方法好?我們稍后再說。
核CCA,既然大家都想到了,核加CCA。那么我就把KCCA的優化表達式給大家:
那既然選擇了這個Deep CCA,那這個是不是比KCCA好呢。大家應該知道,核方法的應用主要在於核選取的不可知性,還有計算量比較大。說了這么多,我們先來介紹這個方法吧。
深度網絡就是超過兩層的神經網絡。如下圖:
二:深度典型相關分析
大家都知道,典型相關分析是一個物體的不同視圖,然后通過求兩個視圖的最大相關性,然后把它們融合在一個子空間。但是這是傳統的線性問題,如果數據是非線性的,用傳統的CCA去算的話,效果可想而知不好。而神經網絡解決非線性問題的時候,就是通過嵌入每個層次的非線性函數來解決的,Deep CCA就是先用深度神經網絡分別求出兩個視圖的經過線性化的向量,然后求出兩個投影向量的最大相關性,最后求出新的投影向量。用這個投影向量加入到機器學習算法進行分類,聚類回歸。
三 操作流程
如下圖,假設我們輸入層有C1個單元,輸出層有σ個單元。
那么第一個視圖的第一層輸出為: 其中s是一個非線性函數。
為權重的一般性寫法。v代表第幾個視圖,d代表網絡的層次。
第二層輸出為:
,,,
最后輸出為:。
第二個視圖的輸出為:
那么現在我們的優化目標就和CCA一樣,只是把原先直接輸入的特征集用深度網絡訓練一遍,然后在用CCA求出投影向量。
優化目標就是: 其中
分別為第一視圖與第二個視圖的參數集合。
我們為了求出,用反向傳播的理論。
假設H1作為被深度網絡訓練之后的樣本,同理H2也是。當然為了計算方便,我們把數據中心化分別為中心化之后的數據。
那么視圖一和視圖二之間的協方差陣為:(計算參照於秀林版的多元統計分析)
視圖一的協方差矩陣為: 為了讓矩陣有逆,類似於嶺回歸。其中r1是正則化參數,我一直認為叫正規化參數比較好理解。關於參數的選舉我以后開一篇博客詳細介紹下。
同理,視圖二的協方差矩陣為:
由於我們知道,整個相關性等於矩陣.如果我們讓K=σ,那么相關性就是矩陣T的跡范數也就是:
更具反向傳播,以及奇異值分解,那么,
那么:
其中:
同理也就知道了。
至於后面的我就不說了,就是求出參數帶進去算就可以了。
四 幾個細節
因為是整個樣本的相關系,不是分成一些數據點相關系的和。目前還不知道如何用隨機優化方法一個一個地處理數據點。本篇文章采取的是一個基於最小批租的方法(Le, Q. V., Ngiam, J., Coates, A., Lahiri, A., Prochnow,B., and Ng, A. Y. On optimization methods for deeplearning. In ICML, 2011),但是比L-BFGS 方法要好,該方法來自(Nocedal, J. and Wright, S. J. Numerical Optimization.Springer, New York, 2nd edition, 2006)。
一開始訓練的參數不是一個隨機的初始化的參數,一般要先進行預訓練。本文采取的初始參數方法是來自(Vincent, P., Larochelle, H., Bengio, Y., and Manzagol, P.-A.Extracting and composing robust features with denoisingautoencoders. In ICML. ACM)它是一個噪聲的自編碼技術。
另外在數據集進行處理的時候,加上一個方差為的高斯噪聲作為樣本集
。然后被重建的樣本集為
,然后用L-BFGS方法重建初始數據加上二次懲罰系數:
,然后W,b被用來做DCCA的優化,然后作為下一層的預訓練。
五 sigmoid函數的選擇問題
任何一個非線性的sigmid都可以決定每個神經元的輸出,但是這篇文章使用一個新的以立方根為基礎的sigmid函數,設。則sigmoid函數為:
。這個函數與傳統的logistic和雙曲正切非線性函數相比,S函數有一個s形狀,和在x=0的時候有一個單位斜率,與雙曲切面相比,他是一個新奇的功能,但是logistic和雙曲切面值變化特別快。如下圖:
另外一個是實現簡單:這個s函數的導數很簡單,實現起來比較方便。
六 總結
好了,本文說完了。可能理解有些偏頗,希望大家指正,哈哈。