優Tech分享|基於數據安全保護的人臉識別方法

以前人臉識別在很多人的印象中,僅存在於虛擬的科幻電影中。但如今隨著技術的快速發展,人臉識別技術已走進每家每戶,平時進小區、過安檢、用一下手機……都免不了需要「刷」臉。人臉識別技術給我們的生活製造了許多便利,但與此同時,也給我們帶來了諸多安全挑戰。

人臉數據作為個人資訊的重要載體,「如何在人臉識別技術落地的過程中,安全有效地保護數據安全」成為大家需要探討的問題。針對人臉識別訓練的數據安全問題,騰訊優圖實驗室研發了一種基於聯邦學習的人臉識別訓練框架,通過引入局部聯邦動量和聯邦驗證,可以有效提升聯邦範式下的人臉識別效果,不僅能夠解決數據孤島問題,同時還具有模型品質無損、確保數據安全的優勢。

近日,騰訊優圖實驗室優Tech分享系列以「基於數據安全保護的人臉識別方法」為主題,分別從人臉識別數據安全背景、人臉識別技術介紹、基於聯邦學習的人臉識別訓練等角度,進行了詳細講解。

01

人臉識別數據安全背景

近年來關於「人臉數據泄露事件」偶有發生,相關事件引起了社會大眾的廣泛關注,也推動了相關法律法規的完善和落地。

 數據安全保護相關法律法規

圖片

數據安全保護相關的法律法規一直在不斷演進中,影響比較大的是歐盟2018年提出的《通用數據保護條例》,簡稱為「GDPR」。中國於今年11月正式出台《個人資訊保護法》,為保護個人資訊權益提供了明確的法律依據。

02

人臉識別技術介紹

 人臉識別技術流程

人臉識別應用通常由如下幾個流程組成,輸入一張圖片後,首先會經過人臉檢測、人臉配准、人臉活體、人臉識別提特徵四個步驟,然後再去做1v1以及1vN的比對。

  • 人臉檢測:直接輸出一個人臉檢測框的位置;

  • 人臉配准:輸出人臉五點坐標,並且將影像做相應的處理;

  • 人臉活體:判斷這張照片是不是真人的照片;

  • 人臉識別提特徵:圖片輸入網路中得到特徵向量;

  • 1v1比對:將兩張圖片的特徵做比對;

  • 1vN比對:將一張圖片與庫內所有的特徵做比對,檢索出TOPk。

圖片

 人臉識別模型訓練與部署

人臉識別的流程核心在於人臉提特徵模型,目前主流的人臉識別訓練方法以數據集中式訓練為主,通過對損失函數進行優化來提升模型的效果,需要收集數據,然後進行訓練,隨著監管力度的不斷加強,這種集中式訓練的方法未來很難持續。

圖片

03

基於聯邦學習的人臉識別訓練

 聯邦學習介紹

聯邦學習是一種新型範式的分散式訓練,傳統的分散式訓練中經常會使用到的一種架構為PS架構。PS架構中,worker節點每一步都需要向參數伺服器傳送梯度,參數伺服器平均梯度後將參數更新,然後轉發給worker節點再進行訓練,worker節點與參數伺服器通常在同一個網路域中,且每個worker數據上都有訓練數據的副本。但是在聯邦訓練的架構中,worker節點與參數伺服器是不同域的,這就造成了一些與分散式訓練的區別:

  • 聯邦學習的worker節點是不穩定的;

  • PS參數伺服器和worker的通訊代價是比較高的,因為是跨域的,會限制通訊效率;

  • 不同worker數據是非獨立同分布的,不同數據分布的差異性會影響模型的收斂速度。

聯邦學習目前的研究方向主要為以下三個方面:

01

聯邦學習中的通訊與效率問題:第一張為聯邦學習與傳統集中式訓練隨著epoch數變化的趨勢圖,可以看出聯邦學習的同步次數比較少,所以聯邦學習收斂速度相比集中學習慢一些,表現出的loss高一些;

02

聯邦學習中的隱私保護問題:在聯邦學習中,儘管傳輸的是梯度或者是模型參數,但是這部分資訊仍然有可能泄露數據資訊,為了解決這樣的隱私保護問題,可以通過添加一些雜訊來保護相關模型的梯度;

03

聯邦學習中的抗魯棒性問題:聯邦學習有很多節點,因為這些節點本身是不太可控的,如果說節點的數據雜訊很大,或者被人「投毒」,傳到雲端server,可能會影響聯邦訓練整體的性能,可以採用的方法是對傳過來的模型參數做一些驗證,從而識別「投毒」。

圖片

 聯邦平均演算法

圖片

  • 這裡有三個客戶端,每個客戶端只訓練本地的數據,並且周期性的會向參數伺服器上傳輸本地骨幹網路的參數;

  • 因為本地數據的獨立性,每個客戶還需要維護獨立的分類器,這個分類器的參數是不會上傳給伺服器端的;

  • 參數伺服器會周期性的聚合所有客戶端的骨幹參數,並計算平均;

  • 參數伺服器計算完平均模型後下發參數至客戶端,然後繼續進行訓練。

聯邦平均是一個比較簡單的框架,經過實驗發現,通過相同的epoch訓練之後,聯邦平均演算法相比傳統的集中式訓練,其loss會更高,並且相關的測試精度也明顯低一些。部分研究工作解釋為這是一個Client-drift的問題,即客戶端漂移,聯邦學習每個客戶端的數據是非獨立同分布的,各個客戶端在本地訓練的過程中,每個方向要與集中式訓練,或者與最優的方向存在一定的偏差。聯邦學習只是簡單的平均,與理想的優化方向是存在一定的偏差,所以才會導致性能的下降。

 局部聯邦動量

圖片

針對Client drift問題,優圖提出了一種局部聯邦動量方法。如上圖所示,在服務端計算聯邦動量估計全局模型更新的方向,並在在客戶端Local訓練的過程中加入聯邦動量來「糾正」Local SGD訓練中的客戶端漂移,從而加快模型的收斂速度。

 聯邦驗證

圖片

這裡使用了三個數據集訓練得到模型,做網格搜索,驗證不同權重下組合的測試效果,發現不同的訓練階段中最優的點(紅色代表效果最優)權重的組合不一樣。在訓練的過程中,聯邦是簡單平均的思路,權重比較固定,如果用靜態的固定方法,每一步則不是最優。

針對上述現象,優圖提出了聯邦驗證方法,對不同的權重組合進行驗證,從中尋找出最好的權重。這個框架核心的模組包括了客戶端的訓練器、參數伺服器以及驗證器。將參數伺服器產生的權重組合發給驗證器進行驗證,從中選擇最優權重組合,重新聚合,再返回給客戶端進行訓練。

圖片

如果驗證器由單驗證器擴展到多驗證器,考慮到不同驗證集指標數值範圍是不一樣的,因此需要對不同驗證集的分數進行規一化。此外,在搜索的過程中會出現一些比較極端的情況,對模型精度有比較大的影響,所以這裡引入一個平滑的係數來平滑權重。

除此之外,權重搜索和模型評估是會增加整個系統的耗時,如果採用同步框架,計算效率非常低。這裡實現了一種非同步的聯邦驗證機制。右下角可以看到,帶「A」的是非同步的框架,「R」代表隨機搜索,「B」代表貝葉斯搜索,非同步與同步在幾個測試集上的表現比較一致,甚至在部分數據集上非同步效果略好一些。但是在時間上,非同步的時間明顯低於同步的時間。

圖片

以下是部分實驗結果:

圖片

  • 第一個實驗是驗證權重搜索策略的有效性,單驗證器實驗中對應的驗證集上結果是最優的。

  • 第二個是多驗證器實驗,除了在驗證集上測試外,測試集IJBB和IJBC的結果驗證了方法的泛化效果,隨機搜索和貝葉斯搜索在精度上沒有明顯的差異,但是相比聯邦平均有很大的提升。此外,聯邦動量加聯邦驗證兩個方法的效果是可以疊加的,甚至在部分指標上可以超過集中式訓練的效果。

  • 第三個實驗是關於分數歸一化的退化實驗,驗證了分數歸一化的有效性。

  • 第四個實驗是訓練方數增加實驗,對原有的三個數據集進行了拆分,將聯邦的方數增加至12方,繼續驗證了方法的有效性。