<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Few-shot Learning 小白入門筆記

          共 4579字,需瀏覽 10分鐘

           ·

          2021-08-19 17:59

          點擊上方機器學(xué)習(xí)與生成對抗網(wǎng)絡(luò)”,關(guān)注星標(biāo)

          獲取有趣、好玩的前沿干貨!


          知乎作者受限玻爾茲曼機

          https://zhuanlan.zhihu.com/p/396593319

          編輯|人工智能前沿講習(xí)

          最近想搞一搞Few shot leanring,于是在B站上聽了王老師的課,感覺深受啟發(fā),寫一寫課程筆記,也希望分享給想入門的朋友。筆記中增加了一些我個人的理解,希望各位大佬指導(dǎo)。
          王老師的課程:

          https://www.bilibili.com/video/BV1V44y1r7cx


          01

          小樣本學(xué)習(xí)要解決什么問題?
          舉一個例子,假如有如圖的兩類動物,左邊一類是犰狳,右邊一類是穿山甲,現(xiàn)在請你仔細(xì)區(qū)分一下它們。但是我并不告訴你到底什么是犰狳,什么是穿山甲?,F(xiàn)在,我新給你一個圖像,請你判斷是犰狳還是穿山甲。
          它顯然是穿山甲。這是人的能力,僅僅從一個很小的甚至為1的樣本量就可以進行同類或異類的區(qū)分。我們希望機器也能夠具有這樣僅僅根據(jù)很小的樣本量就可以區(qū)分同類和異類的能力。但是這樣小的樣本不可能用來訓(xùn)練一個深度神經(jīng)網(wǎng)絡(luò),那該怎么辦呢?
          我們首先回顧一下傳統(tǒng)的強監(jiān)督分類問題。簡化來說,我們有一個訓(xùn)練集,訓(xùn)練集中包含很多類別,每個類別下有很多同類樣本?,F(xiàn)在來了一個測試圖片,注意這個測試圖片本身是訓(xùn)練集沒有見過的,但是!他的類別一定在訓(xùn)練集中有。比如下圖所示:測試圖片是一個哈士奇,但是在訓(xùn)練集中是有哈士奇這一類,所以網(wǎng)絡(luò)已經(jīng)見過很多的哈士奇了。
          對于小樣本問題,我們還是有訓(xùn)練集,這個訓(xùn)練集和之前傳統(tǒng)的強監(jiān)督的差不多。但是現(xiàn)在這個測試圖像(FSL中叫做Query)訓(xùn)練集既沒見過,他的類別訓(xùn)練集中也沒有!比如下圖,訓(xùn)練集中有哈士奇,大象,虎哥,鸚鵡和車五類,測試圖片卻是一個兔子。但是呢,我們有一些數(shù)量很少的卡片,叫做Support Set,它里面包含幾個類別(標(biāo)注),每個類別下有很少量的圖片。已知Query一定來自Support Set中的一類。但是Support Set本身又無法支持網(wǎng)絡(luò)的訓(xùn)練。現(xiàn)在我們想要讓機器和人一樣只根據(jù)數(shù)量很少的樣本就能夠判斷Query是Support Set中的哪一類。這就是小樣本學(xué)習(xí)要解決的問題。


          02

          小樣本學(xué)習(xí)的幾個概念
          小樣本學(xué)習(xí)的數(shù)據(jù)集包含三個,一個是Training Set,一個是Support Set,另一個是Query。我剛學(xué)到這里時,對Training Set非常疑惑,既然Query的類別Training Set中都沒有,那么為什么我們還需要Training Set?其實我們需要在Training Set上訓(xùn)練網(wǎng)絡(luò)能夠區(qū)分同類和異類的能力,這種能力的訓(xùn)練是需要大量樣本的。后面就知道啦。
          現(xiàn)在我們來看Support Set,Support Set中有k類樣本,每類中有n個樣本,我們將類別數(shù)叫做k-way,將每類中的樣本數(shù)叫做n-shot。如圖中這個就是4-way,2-shot。顯然,當(dāng)way越多n越少的時候,就越困難。注意,當(dāng)每類下就一個樣本時,叫做one-shot,這個是最困難的,也是目前比較火的。


          03

          怎么解決?
          那我們怎么來解決這個問題呢?最主要的思路也很簡單,那就是看Query和Support Set中的哪一類更像唄!用學(xué)術(shù)語言來說,就是Learn a similarity function。那就得先讓網(wǎng)絡(luò)知道什么是像!但是Support Set中就那么幾個,網(wǎng)絡(luò)學(xué)不會啊。這個時候之前說的Training Set就派上用場了。原來我們不是用它來訓(xùn)練一個分類器來分哪一個是虎哥,哪一個是大象,我們是要用它來讓網(wǎng)絡(luò)學(xué)習(xí)什么是像,什么是不像!具體來看就是學(xué)習(xí)下面的這個sim函數(shù),當(dāng)兩張圖像是同一類時,sim=1,是不同類的時候sim=0。學(xué)會了像以后,就讓網(wǎng)絡(luò)來看Query和Support Set中的哪一個最像,那么Query就屬于Support Set中的哪一類。這個問題就解決啦。


          04

          讓網(wǎng)絡(luò)學(xué)習(xí)什么是像,什么是不像
          讓網(wǎng)絡(luò)學(xué)會什么是像,什么是不像,這是最基本的想法也是最重要的一環(huán)。以下簡單介紹幾種經(jīng)典的方法。

          Learning Pairwise Similarity Scores

          這個思想比較簡單,既然Training Set中有很多類,每類中也有很多樣本,那么就來構(gòu)造正負(fù)樣本對來讓網(wǎng)絡(luò)學(xué)習(xí)哪些是像的,哪些是不像的。如圖所示,訓(xùn)練集中包含五類,我們使用類中的樣本構(gòu)造正樣本,即他們是相似的;用類間的樣本構(gòu)造負(fù)樣本,即他們是不相似的。我們給正樣本給予標(biāo)簽1,負(fù)樣本給予標(biāo)簽0??梢钥吹剑@樣構(gòu)造的話,我們的映射關(guān)系,就是輸入是一個圖像對,標(biāo)簽是0或者1。我們?nèi)绾卧O(shè)計網(wǎng)絡(luò)結(jié)構(gòu)呢?
          答案是使用孿生網(wǎng)絡(luò)Siamese Network,它的輸入是兩個圖像,并按照完全相同(共享)的權(quán)重將兩幅圖像映射到embedding中。然后我們將這兩個圖像在特征空間的embedding求一個距離,或者做差之后通過全連接層進一步映射,最后通過sigmoid函數(shù)和我們的標(biāo)簽結(jié)合起來。這樣網(wǎng)絡(luò)就可以端到端的來學(xué)習(xí)什么是像啦。
          然后呢,我們將Quary與Support Set中的每一個樣本均進行以上測試,最后sigmoid輸出的sim值越接近1,就說明Quary和這個樣本越像,最后找到那個最像的就可以啦!

          Triplet Loss

          之前我們構(gòu)造樣本對每次都是一個正樣本對一個負(fù)樣本對這樣來構(gòu)造,這樣其實并不能很明顯的進行對比。于是三個樣本的構(gòu)造方法就出現(xiàn)了。首先我們在測試集中的某一類中選擇一個錨點樣本,比如那個虎哥。然后我們在虎哥所在的這一類中,再選一個虎弟作為正樣本;然后不在虎這一類里面選了,再到其他類里面選一個作為負(fù)樣本。這樣我們就選好了三個樣本。
          然后我們依然使用孿生網(wǎng)絡(luò)來進行特征提取,只不過現(xiàn)在在一次訓(xùn)練的過程中,我們計算兩個正樣本之間的特征距離和兩個負(fù)樣本之間的特征距離,接下來就是定義損失函數(shù)了。對于正樣本們,我們當(dāng)然希望它們在特征空間的距離盡可能地靠近,近成0了那最好;對于負(fù)樣本對,我們盡可能地希望它們在特征空間的距離盡可能遠(yuǎn)離,那么多遠(yuǎn)就算遠(yuǎn)了呢,我們需要給定一個條件。因此我們定義一個α,當(dāng)兩個負(fù)樣本之間的距離比正樣本之間的距離遠(yuǎn)到α的時候,我們就認(rèn)為足夠了,loss=0,這樣正樣本之間的距離太遠(yuǎn)了不行,負(fù)樣本之間的距離太近了也不行。所以這種思想是一種對比的思想,將相似的樣本在特征空間拉近,而將不相似的樣本在特征空間推遠(yuǎn)。
          之后我們來進行預(yù)測,我們分別計算Quary和每個樣本之間的距離,選距離最小的那個作為最終的決策類。

          Pretraining and Finetuning

          我們之前的思路是在訓(xùn)練集上讓網(wǎng)絡(luò)學(xué)會什么是像,然后直接測試Quary和Support Set。其實Support Set在訓(xùn)練集中也沒有,甚至連類別都沒有見過,網(wǎng)絡(luò)可能會有點害怕。那么能不能讓網(wǎng)絡(luò)也見見Support Set呢,答案是可以的!而且能漲好多點!
          首先我們從余弦相似度說起,已知兩個單位向量,它們之間的余弦相似度就是它們的內(nèi)積,當(dāng)夾角越小的時候,兩個向量更像。因此余弦相似度可以表示兩個向量的相似程度,常常用在特征空間。當(dāng)兩個向量不是單位向量時,需要先對其進行歸一化,然后再求內(nèi)積。

          我們再來說Softmax函數(shù)。Softmax函數(shù)可以將一組數(shù)轉(zhuǎn)化為每個數(shù)對應(yīng)的概率值,概率和為1。當(dāng)然,這樣轉(zhuǎn)化會使本來大的數(shù)更大,但是卻比直接max要溫和。那么所謂的softmax分類器,無非就是將一個d1的輸入向量左乘一個kd的權(quán)重矩陣,再加一個偏置,得到對應(yīng)k類的概率值。這個權(quán)重是根據(jù)loss計算的。
          好啦,下面我們開始具體說。我們還是在大型的訓(xùn)練集上訓(xùn)練我們的網(wǎng)絡(luò)。只不過不直接在Support Set上進行測試。我們將Support Set中的每一類樣本使用訓(xùn)練好的網(wǎng)絡(luò)進行特征提取,如果每一類中有一些樣本,那么我們對他們的embedding進行平均。之后我們進行歸一化,這是為了后面更好的計算余弦相似度。這樣一來我們得到了Support Set中這些類的平均歸一化embedding。
          接下來我們也對Query提取embedding,并使用之前Support Set提取的embedding初始化權(quán)重矩陣M。我們可以看出M中的每一行其實都代表Support Set中每一類的特征。接下來我們使用Support Set中的樣本根據(jù)softmax分類器進行fintuning。我們使用M來直接初始化softmax的權(quán)重矩陣W,這是因為Support Set中的樣本數(shù)量太少了,如果隨機初始化參數(shù),則效果并不好。其實不難發(fā)現(xiàn),我們直接求Q與M的內(nèi)積再接softmax就可以得到Q屬于M中的哪一類的概率,由于沒有進行fintuning,它的結(jié)果還是差一些。
          我們使用M作為初始化權(quán)重矩陣,之后使用交叉熵函數(shù)對Support Set中的所有樣本進行fintuning。

          Trick

          在fintuning的過程中,我們有三個非常好用的Trick。
          第一個是我們剛才說過的,在finetuning的時候使用Support Set中每類樣本的特征組成的矩陣M進行初始化待訓(xùn)練權(quán)重W,這是因為Support Set中的樣本數(shù)量太少了,如果隨機初始化參數(shù),則效果可能不佳。
          第二個是使用熵進行正則化。我們知道對于softmax,如果他輸出每一類的概率都差不多,那么說明分類器沒有學(xué)好,基本是在瞎猜的狀態(tài),此時它的熵就會很大;但是如果有一類輸出的概率特別大,其他預(yù)測概率都很小,那么說明神經(jīng)網(wǎng)絡(luò)此時很有把握,這時它的熵就會很小。我們希望fintuning中神經(jīng)網(wǎng)絡(luò)能給出更有把握的結(jié)果,因此加入熵正則化,可以明顯提高性能。

          第三個是使用余弦相似度與softmax分類器的組合。我們知道softmax分類器中是權(quán)重W與Q相乘來運算的,而我們這里將這個W替換為余弦相似度的計算,也可以提高性能。





          猜您喜歡:


          等你著陸!【GAN生成對抗網(wǎng)絡(luò)】知識星球!  

          CVPR 2021 | GAN的說話人驅(qū)動、3D人臉論文匯總

          CVPR 2021 | 圖像轉(zhuǎn)換 今如何?幾篇GAN論文

          【CVPR 2021】通過GAN提升人臉識別的遺留難題

          CVPR 2021生成對抗網(wǎng)絡(luò)GAN部分論文匯總

          經(jīng)典GAN不得不讀:StyleGAN

          最新最全20篇!基于 StyleGAN 改進或應(yīng)用相關(guān)論文

          超100篇!CVPR 2020最全GAN論文梳理匯總!

          附下載 | 《Python進階》中文版

          附下載 | 經(jīng)典《Think Python》中文版

          附下載 | 《Pytorch模型訓(xùn)練實用教程》

          附下載 | 最新2020李沐《動手學(xué)深度學(xué)習(xí)》

          附下載 | 《可解釋的機器學(xué)習(xí)》中文版

          附下載 |《TensorFlow 2.0 深度學(xué)習(xí)算法實戰(zhàn)》

          附下載 | 超100篇!CVPR 2020最全GAN論文梳理匯總!

          附下載 |《計算機視覺中的數(shù)學(xué)方法》分享

          瀏覽 100
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99这里只有精品国产 | 黄色视频在线观看完整版 | 伊人日日| 色色色综合色 | 免费观看黃色A片 |