解决Few-shot问题的两大方法:元学习与微调
基于元學習(Meta-Learning)的方法:
Few-shot問題或稱為Few-shot學習是希望能通過少量的標注數(shù)據(jù)實現(xiàn)對圖像的分類,是元學習(Meta-Learning)的一種。
Few-shot學習,不是為了學習、識別訓練集上的數(shù)據(jù),泛化到測試集,而是為了讓模型學會學習。也就是模型訓練后,能理解事物的異同、區(qū)分不同的事物。如果給出兩張圖片,不是為了識別兩張圖片是什么,而是讓模型知道兩張圖片是相同的事物還是不同的事物。
Few-shot可以被定義為K-way,N-shot問題,表示支持集有k個類別,每個類別有n個樣本。不同于訓練深度深度神經(jīng)網(wǎng)絡每個類有大量樣本的數(shù)據(jù)集,F(xiàn)ew-shot的訓練數(shù)據(jù)集規(guī)模很小
Meta-Learning的核心思想就是先學習到一個先驗知識(prior),這需要經(jīng)歷多個task的訓練,每個task的分為支持集(support set)和查詢集(query set),支持集包含了k個類、每個類n張圖,模型需要對查詢集的樣本進行歸類以訓練模型的學習能力。
經(jīng)過了很多個task學習先驗知識,才能解決新的task,新的task涉及的類,不包含在學習過的task! 我們把學習訓練的task稱為meta-training task,新的task稱為meta-testing task。最后的評價指標就是根據(jù)紅色部分表現(xiàn)結果。
| meta training task | |
|---|---|
| support | query |
| support | query |
| ... | |
| support | query |
| meta testing task | |
|---|---|
| support | query |
需要注意查詢集和測試集的區(qū)別,因為在Few-shot訓練過程也有查詢集,在Few-shot測試中,接觸的支持集和測試集都是全新的類。
Supervised Learning vs. Few-shot Learning
| 傳統(tǒng)監(jiān)督學習 | Few-shot 學習 |
|---|---|
| 測試樣本未在訓練集中見過 | 查詢樣本沒見過 |
| 測試樣本的類在訓練集中見過 | 查詢樣本的類屬于未知 |
基于微調(Fine-Tuning)的方法:
基于微調的Few-shot方法封為三個步驟:
- 預訓練:使用模型在大規(guī)模的數(shù)據(jù)集進行預訓練作為特征提取器\(f\)。
- 微調:在支持集上訓練分類器。
- Few-shot預測:
- 將支持集上的圖像通過分類器轉為特征向量;
- 對每一個類的特征向量求平均,得到類的特征向量:\(\mu_1,\dots,\mu_k\);
- 將查詢的特征與\(\mu_1,\dots,\mu_k\)比較。
先省略第二步的微調,看看一般的預訓練Few-shot預測。
以上圖為例,將每一個類的平均特征堆疊得到矩陣\(M\in\mathbb{R}^{3\times n}\),這里\(n\)表示特征數(shù)。
\[M =\begin{bmatrix} \mu_1 \\ \mu_2 \\ \mu_3 \end{bmatrix}\tag{1} \]將查詢的圖片提取特征、做歸一化得到\(q\in\mathbb{R}^{1\times n}\),并進行預測。
\[p = \mathrm{Softmax}(Mq) \tag{2} = \mathrm{Softmax}(\begin{bmatrix} \mu_1^Tq \\ \mu_2^Tq \\ \mu_3^Tq \end{bmatrix}) \]本例中,輸出的第一類的概率最大。
歸納一下上述使用預訓練模型預測查詢集圖像的步驟:
- 設置查詢集的標記樣本:\((x_j,y_j)\)。
- 用預訓練模型提取特征:\(f(x_j)\)。
- 進行預測:\(p_j = \mathrm{Softmax}(W\cdot f(x_j)+b)\)。
以上固定了\(W=M, b=2\)。但可以在支持集進行訓練,微調\(W\)和\(b\)。于是設置損失函數(shù)去學習\(W\)和\(b\),由于支持集較小,需要加入正則項防止過擬合:
\[\min\sum_j\mathrm{CrossEntropy}(y_j,p_j)+\mathrm{Regularization}\tag{3} \]大量實驗證明,微調確實能提高精度。以下是一些常用的技巧:
- 對于預測分類器\(p=\mathrm{Softmax}=(W\cdot f(x)+b)\),可以進行初始化\(W=M,b=0\)。
- 對于正則項的選擇可以考慮Entropy Regularization,相關的解釋可以參考文獻[3]。
- 將余弦相似度加入Softmax分類器,即:
其中\(\mathrm{sim}=\frac{w^Tq}{\lVert w\rVert_2\cdot \lVert q\rVert_2}\)。
對比
基于兩種方式解決Few-shot問題的對比
| 元學習(Meta-Learning) | 微調(Fine-Tuning) | |
|---|---|---|
| 策略 | 基于元學習的方法旨在通過在元任務上訓練來使模型學會更好地適應新任務。它們通常涉及在多個元任務(task)上進行訓練,以使模型能夠從不同任務中學到共性。 | 基于微調的方法通常涉及在一個預訓練的模型上進行微調,以適應特定的 few-shot 任務。在訓練階段,模型通常會使用大規(guī)模的數(shù)據(jù)集進行預訓練,然后在少量訓練數(shù)據(jù)上進行微調。 |
| 適用性 | 基于元學習的方法特別適用于 few-shot 任務,因為它們的目標是使模型從少量示例中快速學習。它們在少量數(shù)據(jù)和新任務上通常表現(xiàn)出色。 | 基于微調的方法在具有大量預訓練數(shù)據(jù)的情況下通常表現(xiàn)出色。它們適用于很多不同類型的任務,但在數(shù)據(jù)稀缺或新領域的 few-shot 問題上可能表現(xiàn)不佳。 |
| 泛化能力 | 基于元學習的方法旨在提高模型在新任務上的泛化能力,因為它們通過從多個元任務中學習共性來實現(xiàn)這一目標。它們在適應新任務和未見數(shù)據(jù)上的表現(xiàn)通常較好。 | 基于微調的方法通常在預訓練領域上有較強的泛化能力,但在新任務上的泛化能力可能有限,特別是當訓練數(shù)據(jù)非常有限時。 |
參考文獻
- Few-shot learning(少樣本學習)入門
- Few-shot learning(少樣本學習)和 Meta-learning(元學習)概述
- 小樣本學習 Few-Shot Learning
總結
以上是生活随笔為你收集整理的解决Few-shot问题的两大方法:元学习与微调的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ALSA Compress-Offloa
- 下一篇: 3.1 IDA Pro编写IDC脚本入门