<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 小白入門筆記

          共 4349字,需瀏覽 9分鐘

           ·

          2021-08-23 16:47

          點(diǎn)擊上方“程序員大白”,選擇“星標(biāo)”公眾號(hào)

          重磅干貨,第一時(shí)間送達(dá)

          知乎作者受限玻爾茲曼機(jī)

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

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

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

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


          01

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


          02

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


          03

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


          04

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

          Learning Pairwise Similarity Scores

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

          Triplet Loss

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

          Pretraining and Finetuning

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

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

          Trick

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

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




          “拍一拍” 能撤回了 ?。。?/a>

          5款Chrome插件,第1款絕對(duì)良心!

          為開(kāi)發(fā)色情游戲,這家公司赴日尋找AV女優(yōu)拍攝,期望暴力賺錢結(jié)果...

          拼多多終于釀成慘劇

          華為阿里下班時(shí)間曝光:所有的光鮮,都有加班的味道


          關(guān)


          ,學(xué),西學(xué)學(xué)運(yùn)營(yíng)護(hù)號(hào),樂(lè)質(zhì),結(jié)識(shí),關(guān)[]學(xué)習(xí)進(jìn)


          瀏覽 80
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  夏目あきら被续侵犯7天 | 日撸夜撸在线看 | 久久久大学生毛片 | 91蜜桃婷婷狠狠久久综合 | 成人网站在线精品国产免费 |