字典學習(Dictionary Learning)

字典學習——Dictionary Learning

我主要從一下幾個方面分享一下。

  1. 什麼是字典學習
  2. 字典學習的理論依據及公式
  3. 字典學習的應用

1、什麼是字典學習?

在人類發展的近幾千年歷史中,文字對人類文明的推動起着舉足輕重的作用。人類用文字記述了千年的歷史,用文字留下了各種思想火花,用文字抒發了各種各樣的情感等等。但是這一切的內容,只需要一本字典就能表述完。因爲人在這環節中的功能,無非就是使用字典當中的字詞進行了適當的排列了而已。

基於這種思想,先前的大佬提出了字典學習——Dictionary Learning。

字典學習的目標,就是提取事物最本質的特徵(類似於字典當中的字或詞語)。如果我們能都獲取這本包括最本質的特徵的字典,那我們就掌握了這個事物的最本質的內涵。換言之,字典學習將我們的到的對於物體的信息降維,減少了該物體一些無關緊要信息對我們定義這個物體的干擾。

 

2、字典學習的理論依據及公式

  • 稀疏模型

稀疏模型的作用如下:

稀疏模型將大量的冗餘變量去除,只保留與響應變量最相關的解釋變量,簡化了模型的同時卻保留了數據集中最重要的信息,有效地解決了高維數據集建模中的諸多問題——百度百科

可以發現,稀疏模型所能達到的效果與我們字典學習的目標一致。都是要將冗餘的無關緊要的信息除去,將最重要的、本質的信息得以保留。也正因如此,所以“字典”的衡量標準也就產生了。字典創建的好不好,就要看它這個模型夠不夠稀疏。

ps:稀不稀疏,就是說你提取的特徵是不是夠關鍵,是不是夠本質。 

  • 公式 

 

 

x:輸入的圖像(維度爲 

D:字典模型(維度爲

α:疏鬆矩陣(維度爲K)

 

我們的目的就是:

各分向量平方之後開方。

 

  • 模型建立

我們可以將求D的問題看成一個優化問題,第一項是確保D和 能夠很好地重構 (失真少),第二項是確保儘量稀疏(字典構建耦合性小,類似於在字典中我們解釋一個字或詞語儘可能的少用其他的詞語)。

 

  • 初始化

從樣本集X中隨機挑選n個樣本,作爲D的初始值;並且初始化α爲0

  • 求解xi

爲了簡單起見,我們抽出一個樣本進行討論,假定樣本爲x向量,稀疏代碼爲α向量。現在x和D算是已知的,求解α,同時滿足α儘量的稀疏,也就是非零元素儘量的少。假設D爲[d1,d2,d3,d4,d5],其中有5個原子。首先求出離x距離最近的原子,假設是d3。那麼我們就可以求出一個初步的α爲[0,0,c3,0,0],c3是一個未知係數,代表原子的權重。假定x=c3*d3。可求得c3的值。接着我們用求出的c3求殘差向量x'=x-c3*d3(此處),x'是一個預設的閾值向量,當x'小於閾值的話,則停止計算,如果不小於的話,轉到下一步。 計算剩餘的原子d1,d2,d4,d5中與殘差向量x'距離最近的,假設是d1,那麼更新α爲[c1,0,c3,0,0],假設x=c1*d1+c3*d3,求解出c1,然後更新殘差向量x'=x-c1*d1-c3*d3(此處)。判斷是否小於閾值,如果不滿足,再繼續求下一個最近的原子的係數。求解原子係數的數量也可以指定爲一個常量,例如3,那就代表迭代3次。

  • 更新字典

通過上一個步驟可以求出所有的  ,接着就可以更新字典D了。
保持α不變,使用相同步驟更新D。再保持D不變,使用相同步驟更新α。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章