如何通过Meta Learning实现域泛化(Domain Generalization)?
?作者 |?丘明姍
單位 |?華南理工大學(xué)
研究方向 |?領(lǐng)域泛化
域泛化(Domain Generalization)中有很多工作是用 meta learning 做的。Meta learning 在 few shot 中很常用,它的目的也是提升模型的泛化性,所以我們來看看 DG 中采用 meta learning 的工作。
Revisit Meta Learning
Meta learning 的motivation 就是讓模型學(xué)會學(xué)習(xí)。一個學(xué)會了如何學(xué)習(xí)的模型,自然就有好的泛化性。
以 few shot learning 背景為例,我們只有少量的樣本來訓(xùn)練一個任務(wù)。直接用少量的樣本訓(xùn)練模型顯然會過擬合,那怎么辦?Meta learning 給出的策略就是采用公用大型數(shù)據(jù)集和已有的少樣本共同訓(xùn)練模型。它將數(shù)據(jù)集分成兩類,大型數(shù)據(jù)集的樣本稱為 support sets,少樣本稱為 query sets;將訓(xùn)練分成兩個階段,一次學(xué)習(xí)稱為一個 epoch(整個數(shù)據(jù)集),首先在 support sets 上訓(xùn)練并更新一次梯度,接著用 query sets 基于 support sets 更新的模型再求一次梯度,本輪 epoch 的梯度更新與 query sets 上梯度更新方向一致。
可以這么理解,support sets 的作用就是讓模型有一個好的初始化,接著再用 query sets 對模型進行 fine-tune,使模型真正適用于任務(wù)場景。顯然,大型數(shù)據(jù)集和擁有的少樣本數(shù)據(jù)來自不同 domain,存在 distribution shift,大型數(shù)據(jù)集訓(xùn)練的模型在任務(wù)上只能得到次優(yōu)的效果。而通過一次次 query sets 的"fine-tune",模型就能很好地適應(yīng)任務(wù)場景。?
這么一看,是不是跟 DG 要做的很像?所以,DG 也這么干了。但是 DG 的場景會更困難一些,因為 DG 在訓(xùn)練時根本不知道目標域數(shù)據(jù),就沒法用目標域數(shù)據(jù)作為 query sets。因此 DG 退而求其次的策略是將源域數(shù)據(jù)劃分成 support sets 和 query sets(DG 的論文里一般稱為 meta-training sets 和 meta-testing sets),核心依然是模擬 distribution shifts,訓(xùn)練出對 distribution shift robust 的模型,就認為模型擁有了泛化到目標域的能力。
Meta Learning與Domain Alignment對比
Domain Alignment 專注于特征的學(xué)習(xí),學(xué)到 domain agnostic 的特征。因此它會通過 loss 或者是 domain 判別器等其他各種手段對提取的特征施加約束,認為成功實現(xiàn)分布對齊的模型就是泛化性好的模型。它只是簡單通過不同源域的訓(xùn)練數(shù)據(jù)來模擬 distribution shift。?
Meta learning 主要是對輸入數(shù)據(jù)的設(shè)計,強調(diào)數(shù)據(jù)的 distribution shift,并通過兩次梯度更新使模型 robust,認為學(xué)到 distribution shift 的模型就是泛化性好的模型。但沒有對數(shù)據(jù)作顯式對齊。?
其實,meta learning 可以看做是一個訓(xùn)練 trick,它可以和所有 DG 方法結(jié)合使用。因為 meta learning 對模型結(jié)構(gòu),loss 都沒有任何要求(也稱為 model agnostic),只需要對訓(xùn)練數(shù)據(jù)和訓(xùn)練過程做簡單的調(diào)整,就可以套在任何模型上了。因此,要是你發(fā)現(xiàn)自己的 DG 模型效果不夠滿意,可以考慮疊加這個 buff(感覺我在教壞人-_-
DG中的Meta Learning
下面就來看幾篇 DG 中的論文,了解它們是怎么使用這個 trick 的。
3.1 Meta Learning實現(xiàn)DG
本文給出的方法很簡單,但是它對 meta learning 的 insight 做了很好的解釋。
論文標題:
Learning to Generalize: Meta-Learning for Domain Generalization
論文鏈接:
https://arxiv.org/abs/1710.03463
訓(xùn)練時共有 個源域,每次訓(xùn)練采用一個源域作為 meta-testing set,另外的源域作為 meta-training set,得到目標函數(shù):
有意思的點是作者對上述目標函數(shù)做 Taylor 展開,得到了以下的形式:
這揭示了目標函數(shù)一是要最小化在 meta-training set 和 meta-testing set 上的誤差(上式第一第二項),二是使 meta-training set 和 meta-testing set 的優(yōu)化方向最大程度地相似(上式第三項)。顯然,如果目標函數(shù)是 ,模型很可能偷懶,找一個容易使該式最小化的源域的梯度方向進行優(yōu)化,從而過擬合這個源域。而 meta leanring 的目標函數(shù)函數(shù)加上了這個正則化約束,就促使模型考慮所有源域的梯度方向。因此作者還給出下面兩種改進的 meta learning 目標函數(shù),可以替代上式的點積計算相似度。
第一種改進是將點積替換成余弦相似度。第二種是退化為用 meta-training set 的方向優(yōu)化 meat-testing set,這種方式關(guān)鍵是需要模型有好的初始化。
3.2 解決DG中的Batch Normalization問題
論文標題:
MetaNorm: Learning to Normalize Few-Shot Batches Across Domains
論文鏈接:
https://openreview.net/forum?id=9z_dNsC4B5t
這篇文章的 motivation 是解決 DG 中的 BN 問題,它也用了 meta leanring 的 trick。?
我們都知道,當網(wǎng)絡(luò)層數(shù)很多時,每一層參數(shù)的更新會導(dǎo)致上一層輸入數(shù)據(jù)分布變化,也就是發(fā)生 iternal covariate shift,這樣很容易導(dǎo)致梯度消失或梯度爆炸。BN 可以調(diào)整數(shù)據(jù)接近獨立同分布,使訓(xùn)練更穩(wěn)定。BN 用訓(xùn)練數(shù)據(jù)計算均值和方差來實現(xiàn)正則化,這在訓(xùn)練和測試數(shù)據(jù)是獨立同分布時顯然沒問題,但 DG 的訓(xùn)練和測試數(shù)據(jù)不同分布,這么做就行不通了。?
這時要怎么辦?思路依然很簡單,就是分布對齊。這篇文章首先用下面的公式推斷 domain-specific 統(tǒng)計量。
接著最小化所有 domain-specific 統(tǒng)計量的 KL 散度。
數(shù)據(jù)依然是分成 meta-training set 和 meta-testing set 兩部分。在 meta-training 階段的目標是最小化交叉熵損失和 KL 散度,meta-testing 階段不再最小化 KL 散度,只是最小化正則化數(shù)據(jù)的交叉熵。
3.3 語義空間對齊
論文標題:
Domain Generalization via Model-Agnostic Learning of Semantic Features
論文鏈接:https://proceedings.neurips.cc/paper/2019/hash/2974788b53f73e7950e8aa49f3a306db-Abstract.html
以往 DG 中都是實現(xiàn)特征空間對齊,目的是 domain invariant。本文還進行了另一種對齊:語義空間對齊,目的是保持多個源域在語義空間上 class 之間的關(guān)系。因為 DG 場景沒有任何有標簽的目標域數(shù)據(jù)可以提供語義空間的信息,為了提升預(yù)測的準確率,一種思路就是不妨也將源域的語義空間信息也遷移到目標域上。下面這篇 DA 的研究也提到了語義空間對齊的好處。
論文標題:
Simultaneous Deep Transfer Across Domains and Tasks
論文鏈接:
https://openaccess.thecvf.com/content_iccv_2015/html/Tzeng_Simultaneous_Deep_Transfer_ICCV_2015_paper.html
Recall that in this setting, we have access to target labeled data for only half of our categories. We use soft label information from the source domain to provide information about the held-out categories which lack labeled target examples.
一個好的特征空間自然是不同 domain 的數(shù)據(jù)盡量混在一起難以區(qū)分,不同 class 的數(shù)據(jù)盡量形成良好的聚簇。作者就此分別對語義空間和特征空間采用了不同的操作。?
首先是語義空間。對于每個 domain,計算特征空間中屬于同一 class 的樣本的均值,作為這個 class 的 'concept',并通過 softmax 得到這個 class 的軟標簽。
接著聚合同一個 domain 的所有軟標簽向量,得到軟標簽混淆矩陣。我們希望訓(xùn)練過程中不同 domain 的 inter-class 關(guān)系能夠被保持,因此操作還是進行 domain 的對齊,也就是最小化不同 domain 混淆矩陣的對稱 KL 散度。
接著是特征空間對齊。同樣是借鑒對比損失的思想,計算下面的 triplet loss,使 positive sample 與 anchor 的距離小于 negative sample 與 anchor 的距離。
本文的訓(xùn)練數(shù)據(jù)同樣被分為 meta-training set 和 meta-testing set 來模擬 distribution shift。
總結(jié)
Meta learning 就是通過對已有的數(shù)據(jù)作簡單的劃分模擬 distribution shift,使模型學(xué)得更 robust。它是一種訓(xùn)練的思路,可以和任何 DG 的模型結(jié)構(gòu)結(jié)合來增強泛化性。?
但是 meta learning 同樣存在一些缺陷。一是雖然可能訓(xùn)練得到的模型對 distribution shift 不那么敏感,但仍不能避免模型對源域數(shù)據(jù)過擬合。二是模型每一層更新都要求兩次梯度,計算效率自然會慢。
獨家定制「煉丹貼紙」
限量 200 份!
掃碼回復(fù)「貼紙」?
立即免費參與領(lǐng)取
👇👇👇
🔍
現(xiàn)在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關(guān)注」訂閱我們的專欄吧
·
總結(jié)
以上是生活随笔為你收集整理的如何通过Meta Learning实现域泛化(Domain Generalization)?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕403怎么装系统 华硕403如何安装
- 下一篇: u盘分区有的不显示出来怎么办 U盘分区不