weka分类器怎么设置样本类别_【程序喵笔记】小样本学习1.0
小樣本學習
前幾天接觸小樣本學習 Few-Shot Learning,感覺很是有意思??吹絊husen Wang老師的講解,感覺很棒~持續學習~
學會學習 Lean to learn
小朋友去動物園,見到未知的動物,他雖然不知道類別,但是給他看一些卡片,讓他比比看哪個長得像,他們很快的判斷出所見動物的類別,這就是人類的學習。
如果機器也可以學習呢?給一張圖片(Query),這張圖訓練集并沒有出現啊,但是不要慌,有卡片(Support Set)來讓模型做選擇題,依次比較相似度。學會完成多選一的選擇題就是元學習(Meta Learning)需要學到的模型,也就是讓機器學會學習。
比較:大樣本與小樣本學習
傳統監督學習
訓練集樣本大,機器根據訓練集中的圖片,并泛化到測試集,給出圖片,識別出具體的類別。
小樣本學習
小樣本直接訓練神經網絡會產生過擬合。小樣本學習是元學習(Meta Learning) 的一種,希望模型學會學習,并不是讓模型區分訓練集未出現的新樣本,而是是讓機器學會學習事物的異同,給定圖片,判斷是否為同一類別。
小樣本學習基礎
基本概念
(1)k-way n-shot Support Set
k-way: support set 中類別數n-shot: 每一類的樣本數很明顯,way越大,選擇變多,準確率會下降,shot越大,樣本數增多,準確率會增加。
(2)余弦相似度
衡量兩個向量之間的的相似度,兩個向量分別為x和w,他們的二范數(長度)為1,兩向量的內積為余弦相似度,可以理解為x在w上投影的長度
如果兩個向量長度不一致,需要將兩向量歸一化,取內積:
(3)softmax
softmax函數是常見激活函數,將向量映射為概率分布,常作為網絡最后一層,輸出的每個概率值表示對每個類別的Confidence(置信度)。讓大的值變大,小的值變小,也就平和一點的max。
softmax 分類器,輸入為特征值(全連接層輸出的),輸出為k維(k是類別數)的概率,W和b維參數,反向傳播會訓練。
數據集
(1)Omniglot
- 手寫數據集,50種不同語言的1632個類別,每個類別有20個樣本,樣本尺寸為105*105。
- 訓練集:964類,19280個樣本
- 測試集:659類,13180個樣本
(2)Mini-ImageNet
- Matching Networks for One Shot Learning(MAML)論文中提出,從ImageNet提取100類,每個類別600樣本,樣本尺寸為84*84
- 訓練集:64類,38400個樣本
- 驗證集:16類,9600個樣本
- 測試集:20類,1200個樣本
網上只有從ImagNet上的原圖和CSV文件,我按照MAML的方法生成的數據集,并上傳到網盤:
鏈接:https://pan.baidu.com/s/1nt2WTIXM-bx3s0s51_v_eg 提取碼:obg7
基本思想
預訓練:孿生網絡
Siamese Network, Siamese意思是連體嬰兒,也就是網絡的頭不一樣,但是腳連在一起,Siamese Network為孿生網絡/連體網絡。該網絡最主要目的:構建卷積神經網絡來比較樣本之間的異同,訓練網絡有兩種方法:
成對相似度
Pairwise Similarity,數據集取兩個樣本
1.訓練數據集
訓練集來自很大樣本數據集,訓練數據分為正樣本,同一類抽取兩張不同圖片,標簽為1,兩樣本相同;負樣本,不同類別抽取兩張圖片,標簽為0,兩樣本不同。
2.孿生網絡結構
(1)提取特征的CNN
輸入是圖片,輸出是特征向量,有卷積池化層的卷積神經網絡就是 f
(2)整體網絡結構
訓練集樣本(兩張圖片)輸入到CNN,分別提取出特征向量,兩個特征向量相減的絕對值為Z,用來比較兩個特征區別,再用全連接層處理 Z得到一個值,最后用sigmoid將其轉換到[0,1]區間,這就是樣本的sim。
3.訓練網絡
(1)前向傳播
前向傳播就是計算損失,有了樣本的sim,結合正負樣本標簽Target,就可以計算損失。
(2)反向傳播
反向傳播更新卷積神經網絡f和全連接層 Dense Layer的參數
4.直接預測
query 和 support set都是訓練集中沒出現的類別。query 和 support set每一張作為樣本,輸入網絡,分別得到sim,最大的為 query的類別。
三重損失
Triplet Loss,數據集取三個樣本
1.訓練數據集
在大規模數據集中,某一類別取一個樣本為 Anchor,同一類別再取一個樣本為Positive,不同類別取一個樣本為Negative,這樣構成了一組數據。
2.孿生網絡結構
同樣有一個卷積神經網絡作為特征提取,Positive和Negative分別與Anchor的特征向量求差的二范數的平方,記作距離d
3.訓練網絡
(1)前向傳播
距離表現在特征空間上,希望同一類離得近,不同類離得遠。
所以,引入一個超參數,使得負樣本距離遠大于正樣本距離加一個超參數,這樣損失定義為
(2)反向傳播
由于并沒有加入全連接層,所以在反向傳播時只需要更新卷積神經網絡f的參數
4.直接預測
query 和 support set都是訓練集中沒出現的類別。query 和 support set每一張作為樣本,輸入網絡得到向量特征,計算兩樣本的距離(差的二范數的平方),距離最小的為 query的類別。
分類器
希望用support set實現一個分類器,來預測query是哪一類別的概率。先看一下基本分類器(直接分類不訓練)和使用Fine Tuning的分類器(需要用support set訓練)
基本分類器
預訓練生成的特征提取網絡記為f,提取 support set每個樣本特征,如果是few-shot 提取后每類取均值(這是最簡單的方法),然后歸一化為[0,1]區間。
同理,提取query 的特征,將所有向量映射到特征空間
support set三個特征記做M,構建softmax分類器 p = softmax(W*x + b),賦值W=M, b=0,x為query的特征q。這樣就可以做預測,顯示query屬于每一類的概率 p,概率最大為所屬的類別。
Fine Tuning
基本分類器中的W,b是固定的,如果使用support set訓練W,b進行微調(Fine Tuning),當然也可以訓練特征提取的CNN。
前向傳播
訓練數據是來自support set中的有標簽的樣本,樣本為x,標簽為y:
計算每一個樣本的損失:預測值和和真實標簽求交叉熵。累加 support set所有樣本的損失
反向傳播
反向傳播更新softmax分類器中的W和b,也可以更新特征提取網絡f
細節
(1)初始化
按照基本分類器賦值W=M, b=0,作為softmax分類器的初始化
(2)正則化
增加正則化可以使訓練效果更好,在損失計算后面增加正則化(Regularization)
使用熵正則化
很明顯,如果各個類別概率很相近,那么他們的熵會很大,我們希望各個概率差距大,熵小一點。
(3)引入余弦相似度
分類器原先公式為
把內積替換成余弦相似度 :
相關推薦
【程序喵讀論文】分類網絡進階版
【程序喵讀論文】圖像分類網絡
【程序喵筆記】Jupyter 實用篇
? 掃碼關注毛毛喵??
一只寫程序的喵
科研&生活
總結
以上是生活随笔為你收集整理的weka分类器怎么设置样本类别_【程序喵笔记】小样本学习1.0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工行6222是什么卡?
- 下一篇: tnsnames.ora配置未生效_1分