1. 程式人生 > 實用技巧 >Federated Learning for Vision-and-Language Grounding Problems

Federated Learning for Vision-and-Language Grounding Problems

轉載自此處

文章背景

這篇文章的背景是這樣的,首先我的每個客戶端輸入的都是影象,這些影象可以是不同型別的,作者在實驗中是用了兩個不同的資料集來表示這一點。其次是每個客戶端的任務也可以是不同的,比如一部分做視覺問答,另一部分做影象描述。因為他們的任務不一樣,所以傳統的聯邦學習方法就不適用了。作者的方法概括的說就是讓服務端去學習一個對應於不同任務的影象表示。具體的我們看下面這張圖,可以簡單的分為三個階段,首先第一個階段客戶端在自己的模型上得到一個原始影象表示,也就是一個向量。然後把這個向量傳送給服務端。第二個階段服務端通過聚合不同客戶端傳來的資訊加工得到一個更好的影象表示,再把這個表示傳送給客戶端,最後第三個階段客戶端就可以用這個影象表示來做自己的任務。

在這裡插入圖片描述

階段一

我們看第一個階段,這個階段提取輸入影象的一個表示,它用到的網路都是預先訓練好的,所以不展開講。作者提取了兩種特徵,一種是從Fast R-CNN的全連線層中提取到的視覺特徵,這裡d表示的是隱藏層神經元的個數,N表示的是候選區域的個數。另外一種是文字特徵,這裡解釋一下這個網路,他的功能是從原來的影象中框出M個候選區域,類似於下面這樣,然後他從1000個單詞中找出和這個區域最匹配的單詞,每個單詞都是用d維的詞向量表示的。假設客戶端輸入一張影象的話,那麼經過這個階段,客戶端就得到了兩個向量組,一個是表示這個框中影象的I,另一個是表示這些單詞的T,其實就是兩個序列或者說兩個矩陣。每一個客戶端都會得到這樣的兩個矩陣,然後他們傳送給服務端,服務端需要對些矩陣進行加工,這就是第二個階段。

在這裡插入圖片描述

階段二

第二個階段也可以分為三個步驟

Aligning Module

首先第一個步驟Aligning Module,這個我不知道怎麼翻譯,他的出發點是這樣的。這個I中的一個向量表示了影象的某一個區域,我需要結合語義來得到一個更好的表示,同樣的T中的單詞需要對應於區域來避免歧義的產生。比如mouse這個單詞,需要對應到影象後才知道是老鼠或者滑鼠。具體的方法的話,作者是用了下面的這個公式,我們一步步的看,首先是MHA的計算,根據這個公式計算得到一個Attention矩陣,這裡I就是影象矩陣,T就是文字矩陣,用影象矩陣點積文字矩陣的轉置,然後進行縮放,再經過softmax輸出後與文字矩陣做點積。我說一下自己對這個公式的理解,分子中的這個點積操作得到的是兩個矩陣之間的相似度,這個相似度除了點積之外還有其他的一些計算方法,作者選取點積是因為這個更快而且不佔記憶體空間。這個相似度就是對於當前模型來說,每一個影象區域對於每一個單詞的重要程度,最後點積T就是把這個資訊融入到了文字特徵中,同樣的如果換成下面的TII的話,就是把這個資訊融入到了影象特徵中。最後,做多次Attention計算,將每一次得到的矩陣進行通道維度的拼接,就是完整的MHA操作。然後是最外面一層的FFN,這個就比較簡單了,他的公式是這樣的,就是一個兩層的前饋神經網路,中間用了Relu啟用函式。

在這裡插入圖片描述
更加直觀的理解這個過程的話我們可以看下面這張圖,他要做的就是影象和文字資訊的結合,比如,下面這個高亮的人用這些詞表示,高亮的狗用這些詞來表示。所以經過這個Aliging Module的步驟,我們得到的還是兩個矩陣。
在這裡插入圖片描述

Integrating Module

然後我們看第二步,這一步的公式就是下面這個,乍一看這個不是和之前那個一模一樣嗎,只不過輸入變成了三個一樣的矩陣,那麼這個公式是什麼意思呢?我們說前一步是結合了影象和文字的資訊,那這一步的目標是得到區域之間或者單詞之間的一個關係,這是一個自注意力機制。更直觀一點的話我們可以看下面這張圖,假設我輸入的是兩個一模一樣的句子,那最後得到的就是單詞之間的一些句法特徵或語義特徵,比如他會注意到its指代的物件就是下面的Law,以及和它相互依賴的application。這一步的輸出也是兩個矩陣。
在這裡插入圖片描述

Mapping Module

最後第三步,看這個公式一樣的也是一個兩層的前饋神經網路,值得注意的是,它是一個分叉的結構,這個分叉的數量取決於客戶端所作的任務的種類。也就是說,給視覺問答和影象描述的兩個任務的影象表示是不一樣的。
在這裡插入圖片描述

階段三

之前說的所有的這三步,都是在對客戶端得到的影象表示進行一個加工,最後的輸出也是矩陣的形式。光有這個矩陣是不能進行反向傳播的,所以需要把這個矩陣回傳的客戶端,然後讓他們用這個矩陣去做各自的一個下游任務,通過這個下游任務來評判得到的這個矩陣的好壞。所以他的整個流程應該是這樣的,客戶端通過兩個預訓練好的模型得到影象的兩種表示,然後傳給服務服務端,服務端加工後得到另外的兩種影象表示並傳回給客戶端,客戶端用這兩個表示作為輸入傳入自己的網路做對應的任務,然後每一個客戶端根據自己任務的評判指標去更新自己的網路以及服務端的網路,直到他達到一個收斂的狀態。
在這裡插入圖片描述

實驗

總體效果

作者首先模擬了聯邦學習的三種情況,這裡下面的表是第一種垂直情況的,就是每個客戶端使用不同的資料集做相同的任務,我們可以看到對於baseline來說的話不管是什麼資料集都是作者提出的這種要好。其他的兩種情況也都是這樣的,這就說明作者提出的這個方法是確實有效的,這是他的一個總體情況。
在這裡插入圖片描述

細緻分析

此外作者還對模型的每一部分做了分析。分別用Aligning和Integrating去做影象描述和視覺問答,以這張圖為例,在做影象描述的時候,Aligning會注意到這是個紅色的杯子以及桌子的材質,而Integrating則是注意到了與杯子相鄰的菠蘿。更通用的說,Aligning偏向於物體的顏色或者某種屬性,這個是物體本身固有的,而Integrating更偏向於和當前物體有關的其他的一些物體。同樣的,在視覺問答中,Aligning偏向於回答在哪裡或者是什麼這種問題,而Integrating對物體的數量特別的敏感。
在這裡插入圖片描述
這和我們之前的分析是一致的,Aligning得到的是影象和文字間的關係,也就是圖中紅色的框對應蛋糕,紅色,而藍色的框對應胡蘿蔔、蔬菜。而Integrating則是會從蛋糕出發,找到一些和他相關的區域,或者是一些和他相關的單詞。所以Aligning對視覺問答的提升較大而Integrating對影象描述的提升會較大,另外同時使用這兩個會在不同的任務上得到更好的效果。
在這裡插入圖片描述

可能存在的問題

最後是我自己覺得他可能存在的問題。這裡服務端雖然沒有直接獲取客戶端輸入的影象,但是卻可以得到所有輸入影象的兩種表示,而每個客戶端得到這兩種表示的網路模型是完全固定的。如果這個模型被獲取到,或者是通過反向計算得到輸入的影象,就會造成客戶端資料的洩露。