天天看點

Meta-learning(元學習)和 3D-CNN 總結Meta-learning and 3D-CNN 總結

Meta-learning and 3D-CNN 總結

##Meta-learning

**Meta-learning(元學習)**方法是近期的研究熱點,加州伯克利大學在這方面做了大量工作。這周閱讀了相關論文,總結一下自己的知識。

論文題目:

1.Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks ;

2.One-Shot Visual Imitation Learning via Meta-Learning。

Model-Agnostic Meta-learning 算法提出的初衷是因為目前深度學習所需要的樣本量大,而且學習速度慢,在某一個特定的任務訓練好參數以後,面對一個新的任務,即使這個任務跟之前的任務具有相關性,但它的魯棒性也不好,需要重新訓練。特别是在應用到機器人模仿學習時(目前自己的研究方向),需要在不同的場景下執行新的任務,但這些任務很多是具有相關性的。是以伯克利分校提出了這樣一種算法:通過少量的任務集樣本去訓練好網絡,然後在面對一個新的任務時,能夠很快的訓練好參數,完成學習過程。這個過程就像人類面對新的任務時,也是由之前的經驗來應對新的場景,具有先驗知識。

Meta-learning(元學習)和 3D-CNN 總結Meta-learning and 3D-CNN 總結

算法核心思想,如下圖所示:

Meta-learning(元學習)和 3D-CNN 總結Meta-learning and 3D-CNN 總結

算法個人了解:

1.這是屬于監督學習的範圍,通過梯度下降來更新參數θ;任務集Ti, fθ表示輸入x到輸出a的映射;

2.這個算法由兩個循環構成,内循環的流程是對任務集中每一個任務Ti,使用訓練樣本更新參數θ,是以會有i個θ;

3.外循環的流程是将每一個訓練好的θ,一共有i個,使用每個任務的測試資料,進行綜合更新,損失函數是将每個任務的損失函數累加起來。得到一個新的θ。

4.可以通過形象的比喻就是:你的人生在某一個條件或場景下,你的選擇有一個最優的選擇,往往人生有時候需要面對不同的場合,要綜合考慮很多限制條件,你隻能選擇一條最适中的路,但是在面對新的機遇時,你不要重頭開始,總能很快的到達目的地。

這個算法因為是無特定模型的,是以可以應用到很多算法上面,如監督回歸,增強學習等。應用到不同方法時隻是損失函數不同,核心思想不變。

Meta-learning(元學習)和 3D-CNN 總結Meta-learning and 3D-CNN 總結

元學習的算法思想總結到這裡,論文中有具體實驗結果,可以到文中細讀。

##3D CNN介紹

因為需要通過demo來進行模仿學習,提取視訊中的特征,是以也總結一下3D CNN 的算法。參考論文題目:3D Convolutional Neural Networks for Human Action Recognition。

采用2D CNN對視訊進行操作的方式,一般都是對視訊的每一幀圖像分别利用CNN來進行識别,這種方式的識别沒有考慮到時間次元的幀間運動資訊。下面是傳統的2DCNN對圖像進行采用2D卷積核進行卷積操作:

Meta-learning(元學習)和 3D-CNN 總結Meta-learning and 3D-CNN 總結

使用3D CNN能更好的捕獲視訊中的時間和空間的特征資訊,以下是3D CNN對圖像序列(視訊)采用3D卷積核進行卷積操作:

Meta-learning(元學習)和 3D-CNN 總結Meta-learning and 3D-CNN 總結

對連續的三幀圖像進行卷積操作,這樣卷積層中的每一個特征将與多個相鄰的連續幀相連,注意:卷積核提取特征時可以采用多種卷積核,每個權值不同,提取多種特征;也可以使用一個卷積核,共享權值。

##3D CNN 結構

Meta-learning(元學習)和 3D-CNN 總結Meta-learning and 3D-CNN 總結

輸入層(input):連續的大小為60*40的視訊幀圖像作為輸入。

硬線層(hardwired,H1):每幀提取5個通道資訊(灰階gray,橫坐标梯度(gradient-x),縱坐标梯度(gradient-y),x光流(optflow-x),y光流(optflow-y))。前面三個通道的資訊可以直接對每幀分别操作擷取,後面的光流(x,y)則需要利用兩幀的資訊才能提取,是以

H1層的特征maps數量:(7+7+7+6+6=33),特征maps的大小依然是60* 40;

卷積層(convolution C2):以硬線層的輸出作為該層的輸入,對輸入5個通道資訊分别使用大小為7* 7 * 3的3D卷積核進行卷積操作(7* 7表示空間次元,3表示時間次元,也就是每次操作3幀圖像),同時,為了增加特征maps的個數,在這一層采用了兩種不同的3D卷積核,是以C2層的特征maps數量為:

(((7-3)+1)* 3+((6-3)+1)* 2)* 2=23* 2

這裡右乘的2表示兩種卷積核。

特征maps的大小為:((60-7)+1)* ((40-7)+1)=54 * 34

降采樣層(sub-sampling S3):在該層采用max pooling操作,降采樣之後的特征maps數量保持不變,是以S3層的特征maps數量為:23 *2

特征maps的大小為:((54 / 2) * (34 /2)=27 *17

卷積層(convolution C4):對兩組特征maps分别采用7 6 3的卷積核進行操作,同樣為了增加特征maps的數量,文中采用了三種不同的卷積核分别對兩組特征map進行卷積操作。這裡的特征maps的數量計算有點複雜,請仔細看清楚了

我們知道,從輸入的7幀圖像獲得了5個通道的資訊,是以結合總圖S3的上面一組特征maps的數量為((7-3)+1) * 3+((6-3)+1) * 2=23,可以獲得各個通道在S3層的數量分布:

前面的乘3表示gray通道maps數量= gradient-x通道maps數量= gradient-y通道maps數量=(7-3)+1)=5;

後面的乘2表示optflow-x通道maps數量=optflow-y通道maps數量=(6-3)+1=4;

假設對總圖S3的上面一組特征maps采用一種7 6 3的3D卷積核進行卷積就可以獲得:

((5-3)+1)* 3+((4-3)+1)* 2=9+4=13;

三種不同的3D卷積核就可獲得13* 3個特征maps,同理對總圖S3的下面一組特征maps采用三種不同的卷積核進行卷積操作也可以獲得13*3個特征maps,

是以C4層的特征maps數量:13* 3* 2=13* 6

C4層的特征maps的大小為:((27-7)+1)* ((17-6)+1)=21*12

降采樣層(sub-sampling S5):對每個特征maps采用3 3的核進行降采樣操作,此時每個maps的大小:7* 4

在這個階段,每個通道的特征maps已經很小,通道maps數量分布情況如下:

gray通道maps數量= gradient-x通道maps數量= gradient-y通道maps數量=3

optflow-x通道maps數量=optflow-y通道maps數量=2;

卷積層(convolution C6):此時對每個特征maps采用7* 4的2D卷積核進行卷積操作,此時每個特征maps的大小為:1*1,至于數量為128是咋來的,就不咋清楚了,估計是經驗值。

對于CNNs,有一個通用的設計規則就是:在後面的層(離輸出層近的)特征map的個數應該增加,這樣就可以從低級的特征maps組合産生更多類型的特征。

通過多層的卷積和降采樣,每連續7幀圖像就可以獲得128維的特征向量。輸出層的單元數與視訊動作數是相同的,輸出層的每個單元與這128維的特征向量采用全連接配接。在後面一般采用線性分類器對128維的特征向量進行分類,實作行為識别,3DCNN模型中所有可訓練的參數都是随機初始化的,然後通過線上BP算法進行訓練。

下面是3DCNN各通道數量變化情況以及特征maps大小變化情況:

Meta-learning(元學習)和 3D-CNN 總結Meta-learning and 3D-CNN 總結

3D CNN參考了博文:3D CNN架構結構各層計算。

不得任意轉載,如有需要注明出處。

繼續閱讀