基礎知識:
在sparse coding(可參考deep learning:二十六(sparse coding簡單理解),deep learning:二十九(sparse coding練習))模型中,學習到的基是超完備集的,也就是說基集中基的個數比資料的維數還要大,那麼對乙個資料而言,將其分解為基的線性組合時,這些基之間本身就是線性相關的。如果我們想要得到線性無關的基集,那麼基集中元素的個數必須小於或等於樣本的維數,本節所講的ica(independent component analysis,獨立成分分析)模型就可以完成這一要求,它學習到的基之間不僅保證線性無關,還保證了相互正交。本節主要參考的資料見:independent component analysis
ica模型中的目標函式非常簡單,如下所示:
它只有一項,也就是資料x經過w線性變換後的係數的1範數(這裡的1範數是對向量而言的,此時當x是向量時,wx也就是個向量了,注意矩陣的1範數和向量的1範數定義和思想不完全相同,具體可以參考前面一篇文章介紹的範數問題deep learning:二十七(sparse coding中關於矩陣的範數求導)),這一項也相當於sparse coding中對特徵的稀疏性懲罰項。於係數性不同的是,這裡的基w是直接將輸入資料對映為特徵值,而在sparse coding中的w是將特徵係數對映重構出原始資料。
當對基矩陣w加入正交化約束後,其表示式變為:
所以針對上面的目標函式和約束條件,如果要用梯度下降的方法去優化權值的話,則需要執行下面2個步驟:
首先給定的學習率alpha是可以變化的(可以使用線性搜尋演算法來加速梯度下降過程,具體的每研究過,不了解),而wx的1範數關於w的導數可以利用bp演算法思想將其轉換成乙個神經網路模型求得,具體可以參考文章deriving gradients using the backpropagation idea。此時的目標函式為:
最後的導數結果為:
另外每次用梯度下降法迭代權值w後,需要對該w進行正交化約束,即上面的步驟2。而用具體的數學表示式來表示其更新方式描述為:
由於權值矩陣為正交矩陣,就意味著:
在使用ica模型時,對輸入資料進行zca白化時,需要將分母引數eplison設定為0,原因是上面w權值正交化更新公式已經代表了zca whitening。這是網頁教程中所講的,真心沒看懂。
另外,pca whitening和zca whitening都是白化操作,即去掉資料維度之間的相關性,且保證特徵間的協方差矩陣為單位矩陣。
演算法(三十三)
1 判定字串b是否可由字串a變換的來 比如 abccd acbcd 可以。public boolean fun string a,string b for int i 0 i2.給定形如pattern aabbc city 北京 北京 上海 上海 蓬萊 兩個字串,這樣的pattern和city之間是...
三十三 JWT簡介
json web token 縮寫 jwt 是目前最流行的跨域認證解決方案,本文介紹它的原理和用法。div div id more class asset more 一 跨域認證的問題 網際網路服務離不開使用者認證。一般流程是下面這樣。1 使用者向伺服器傳送使用者名稱和密碼。2 伺服器驗證通過後,在...
CUDA學習(三十三)
最大化指令吞吐量 為了最大化指令吞吐量,應用程式應 在本節中,吞吐量以每個多處理器每個時鐘週期的操作次數給出。對於32的變形大小,一條指令對應於32個操作,所以如果n是每個時鐘週期的運算元,則指令吞吐量是每個時鐘週期n 32條指令。所有的吞吐量都是針對乙個多處理器的。它們必須乘以裝置中的多處理器數量...