日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何通过Meta Learning实现域泛化(Domain Generalization)?

發布時間:2024/10/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何通过Meta Learning实现域泛化(Domain Generalization)? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?作者 |?丘明姍

單位 |?華南理工大學

研究方向 |?領域泛化

域泛化(Domain Generalization)中有很多工作是用 meta learning 做的。Meta learning 在 few shot 中很常用,它的目的也是提升模型的泛化性,所以我們來看看 DG 中采用 meta learning 的工作。


Revisit Meta Learning

Meta learning 的motivation 就是讓模型學會學習。一個學會了如何學習的模型,自然就有好的泛化性。

以 few shot learning 背景為例,我們只有少量的樣本來訓練一個任務。直接用少量的樣本訓練模型顯然會過擬合,那怎么辦?Meta learning 給出的策略就是采用公用大型數據集和已有的少樣本共同訓練模型。它將數據集分成兩類,大型數據集的樣本稱為 support sets,少樣本稱為 query sets;將訓練分成兩個階段,一次學習稱為一個 epoch(整個數據集),首先在 support sets 上訓練并更新一次梯度,接著用 query sets 基于 support sets 更新的模型再求一次梯度,本輪 epoch 的梯度更新與 query sets 上梯度更新方向一致。

可以這么理解,support sets 的作用就是讓模型有一個好的初始化,接著再用 query sets 對模型進行 fine-tune,使模型真正適用于任務場景。顯然,大型數據集和擁有的少樣本數據來自不同 domain,存在 distribution shift,大型數據集訓練的模型在任務上只能得到次優的效果。而通過一次次 query sets 的"fine-tune",模型就能很好地適應任務場景。?

這么一看,是不是跟 DG 要做的很像?所以,DG 也這么干了。但是 DG 的場景會更困難一些,因為 DG 在訓練時根本不知道目標域數據,就沒法用目標域數據作為 query sets。因此 DG 退而求其次的策略是將源域數據劃分成 support sets 和 query sets(DG 的論文里一般稱為 meta-training sets 和 meta-testing sets),核心依然是模擬 distribution shifts,訓練出對 distribution shift robust 的模型,就認為模型擁有了泛化到目標域的能力。


Meta Learning與Domain Alignment對比

Domain Alignment 專注于特征的學習,學到 domain agnostic 的特征。因此它會通過 loss 或者是 domain 判別器等其他各種手段對提取的特征施加約束,認為成功實現分布對齊的模型就是泛化性好的模型。它只是簡單通過不同源域的訓練數據來模擬 distribution shift。?

Meta learning 主要是對輸入數據的設計,強調數據的 distribution shift,并通過兩次梯度更新使模型 robust,認為學到 distribution shift 的模型就是泛化性好的模型。但沒有對數據作顯式對齊。?

其實,meta learning 可以看做是一個訓練 trick,它可以和所有 DG 方法結合使用。因為 meta learning 對模型結構,loss 都沒有任何要求(也稱為 model agnostic),只需要對訓練數據和訓練過程做簡單的調整,就可以套在任何模型上了。因此,要是你發現自己的 DG 模型效果不夠滿意,可以考慮疊加這個 buff(感覺我在教壞人-_-



DG中的Meta Learning

下面就來看幾篇 DG 中的論文,了解它們是怎么使用這個 trick 的。

3.1 Meta Learning實現DG

本文給出的方法很簡單,但是它對 meta learning 的 insight 做了很好的解釋。

論文標題:

Learning to Generalize: Meta-Learning for Domain Generalization

論文鏈接:

https://arxiv.org/abs/1710.03463

訓練時共有 個源域,每次訓練采用一個源域作為 meta-testing set,另外的源域作為 meta-training set,得到目標函數:

有意思的點是作者對上述目標函數做 Taylor 展開,得到了以下的形式:

這揭示了目標函數一是要最小化在 meta-training set 和 meta-testing set 上的誤差(上式第一第二項),二是使 meta-training set 和 meta-testing set 的優化方向最大程度地相似(上式第三項)。顯然,如果目標函數是 ,模型很可能偷懶,找一個容易使該式最小化的源域的梯度方向進行優化,從而過擬合這個源域。而 meta leanring 的目標函數函數加上了這個正則化約束,就促使模型考慮所有源域的梯度方向。因此作者還給出下面兩種改進的 meta learning 目標函數,可以替代上式的點積計算相似度。

第一種改進是將點積替換成余弦相似度。第二種是退化為用 meta-training set 的方向優化 meat-testing set,這種方式關鍵是需要模型有好的初始化。

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。?

我們都知道,當網絡層數很多時,每一層參數的更新會導致上一層輸入數據分布變化,也就是發生 iternal covariate shift,這樣很容易導致梯度消失或梯度爆炸。BN 可以調整數據接近獨立同分布,使訓練更穩定。BN 用訓練數據計算均值和方差來實現正則化,這在訓練和測試數據是獨立同分布時顯然沒問題,但 DG 的訓練和測試數據不同分布,這么做就行不通了。?

這時要怎么辦?思路依然很簡單,就是分布對齊。這篇文章首先用下面的公式推斷 domain-specific 統計量。

接著最小化所有 domain-specific 統計量的 KL 散度。

數據依然是分成 meta-training set 和 meta-testing set 兩部分。在 meta-training 階段的目標是最小化交叉熵損失和 KL 散度,meta-testing 階段不再最小化 KL 散度,只是最小化正則化數據的交叉熵。

3.3 語義空間對齊

論文標題:

Domain Generalization via Model-Agnostic Learning of Semantic Features

論文鏈接:https://proceedings.neurips.cc/paper/2019/hash/2974788b53f73e7950e8aa49f3a306db-Abstract.html

以往 DG 中都是實現特征空間對齊,目的是 domain invariant。本文還進行了另一種對齊:語義空間對齊,目的是保持多個源域在語義空間上 class 之間的關系。因為 DG 場景沒有任何有標簽的目標域數據可以提供語義空間的信息,為了提升預測的準確率,一種思路就是不妨也將源域的語義空間信息也遷移到目標域上。下面這篇 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 的數據盡量混在一起難以區分,不同 class 的數據盡量形成良好的聚簇。作者就此分別對語義空間和特征空間采用了不同的操作。?

首先是語義空間。對于每個 domain,計算特征空間中屬于同一 class 的樣本的均值,作為這個 class 的 'concept',并通過 softmax 得到這個 class 的軟標簽。

接著聚合同一個 domain 的所有軟標簽向量,得到軟標簽混淆矩陣。我們希望訓練過程中不同 domain 的 inter-class 關系能夠被保持,因此操作還是進行 domain 的對齊,也就是最小化不同 domain 混淆矩陣的對稱 KL 散度。

接著是特征空間對齊。同樣是借鑒對比損失的思想,計算下面的 triplet loss,使 positive sample 與 anchor 的距離小于 negative sample 與 anchor 的距離。

本文的訓練數據同樣被分為 meta-training set 和 meta-testing set 來模擬 distribution shift。

總結

Meta learning 就是通過對已有的數據作簡單的劃分模擬 distribution shift,使模型學得更 robust。它是一種訓練的思路,可以和任何 DG 的模型結構結合來增強泛化性。?

但是 meta learning 同樣存在一些缺陷。一是雖然可能訓練得到的模型對 distribution shift 不那么敏感,但仍不能避免模型對源域數據過擬合。二是模型每一層更新都要求兩次梯度,計算效率自然會慢。

獨家定制「煉丹貼紙」

限量 200 份!

掃碼回復「貼紙」?

立即免費參與領取

👇👇👇

🔍

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

·

總結

以上是生活随笔為你收集整理的如何通过Meta Learning实现域泛化(Domain Generalization)?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。