論文筆記 CLAD: Robust Audio Deepfake Detection Against Manipulation Attacks with Contrastive Learning
前言
深偽音頻檢測(Audio Deepfake Detection,以下簡稱 ADD)是在做真實人聲與合成人聲的檢測任務,是一個二元分類任務。
目前在 ADD 任務遇到最大的問題莫過於訓練與測試的資料集太舊,無法與時俱進,現在有 Codec, Diffusion Model 生成的合成人聲,第二問題是模型泛化能力,假如訓練在已知的資料集上,在未知的資料集表現不見得好。
論文簡介
本篇論文基於前言之任務所提出的架構,主要是使用對比式學習訓練模型,此外也有對音頻做加工,例如:噪音注入、音量調整、回音等等,這些加工當作是合成人聲的變化攻擊,為什麼會說是攻擊是因為有心人士有可能利用這些技巧躲過監測合成人聲的模型。
方法介紹
他們的模型架構是這樣的音頻進來後經過加工處理,通常會轉成 16Khz、取 64600 個採樣數,約莫 4 秒時間,如果音頻時間不足採樣點,以音頻片段填充直至指定採樣數,以上是 ADD 任務統一的處理方式,再來是加噪、聲量調大的加工,依照實驗組不同,加工不會一次全處理,有些實驗組是專門看加入噪音檢測會不會變差,有些組是看聲音調大會不會影響檢測結果。
音頻會經過 Encoder,論文程式碼預設是一個叫 AASIST 檢測模型(論文連結:https://arxiv.org/pdf/2110.01200),Encoder 會輸出音頻高維的表徵,他們用這個高維表徵來計算對 Contrastive Learning Loss、Length Loss,同時將負向樣本(合成人聲)儲存到一個 Queue。
最後高維表徵會餵給一個一層的 Fully connected layer network的分類器,會輸出兩維的機率,分別是合成人聲、真實人聲,分類器是用 Cross Entropy Loss。
以下特別講一下 Contrastive Learning Loss、Length Loss。
Contrastive Learning Loss
N 是 batch size,q 是正向樣本(真實人聲)、k+也是(真實人聲),kj 是負向樣本(合成人聲)、t 是溫度係數,從公式可以看得出分子是真實人聲與真實人聲乘積,而分母則是一個正向樣本與 j 個負向樣本的乘積加總,他們的概念是這樣讓真實人聲與真實人聲盡可能越靠近越好,也就是分母越大越好,讓真實人聲與合成人聲盡可能越靠遠越好,也就是分子越小越好。
那 j 個負向樣本(合成人聲)是怎麼來的?是每一次取批次樣本的時候將負向樣本存到一個 Queue,當 Queue 滿到一定水位會清楚一部分負向樣本,這樣最大的好處是因為下一次批次取樣有可能忘記前一個批次學到什麼負向樣本,這個概念是從 Momentum Contrast for Unsupervised Visual Representation Learning(MOCO) (論文連結:https://arxiv.org/abs/1911.05722)這篇論文所提出的。
Length Loss
因為怕只有一個 Contrastive Learning Loss 稍嫌不足,他們提出另一個 loss,他們規範了一個範圍,讓真實人聲的向量長度(Norm)不要超過這個範圍,讓合成人聲超過,如下圖( C )。
N 是 batch size,y 是標籤,1 代表真實人聲,0 代表合成人聲,w 是真假樣本調節權重,margin 是向量長度半徑距離,如果真實樣本稀少,則 w 值應往上加,公式主要分兩部份,先說明前半部,當 yi 為 1 時,計算該真實樣本的 loss,yi * w * ||qi|| ,目的是使其往中心靠攏,後半部則是 yi 為 0 時才會計算,margin 跟合成人聲樣本向量長度相減,如果結果值大於 0 則取其當作是 loss,反之為 0,最主要目的是使其向量長度超出 margin。
方法評估
他們使用的是 Asvspoof 2019 LA 的資料集,評估模型,有做跟其他 baseline 模型比較、替換不同 Encoder 模型評比、以及替換不同 Loss 的消融實驗
替換不同 Loss 的消融實驗
Vanilla 上游模型的 Encoder 不使用 Loss function, CL 只採用 Contrastive Learning、LL 只採用 Length Loss、CLAD 兩者 loss function 都用。
評比指標是 FAR ,即接受合成人聲為真實人聲的比率,該指標越低越好。
下面的表格我們可以看見不同的 loss 訓練的模型測試在同一資料集但音頻資料不同的加工上,我們直接看 None 那一欄,光是 LL 的 FAR 2%,勝過 CL的 4.36%,兩者加起來則可以下降到 1.11%。
他們將 Encoder 輸出的最後一層拿出來,降維後,做圖在二維向量空間,橘色點點是真實音頻,藍色正三角形是合成音頻,左邊的圖是沒有 length loss 訓練的模型,右邊有,可以看得出來很明顯右邊就很好分類,真實音頻幾乎匯集在一處,所以下游分類器就很好分類。
與其他 baseline 模型實驗
資料集: Asvspoof 2019 LA
Baseline 模型:
- RawNet2:一種基於卷積神經網絡的 Baseline 方法。
- AASIST:專為音頻深偽檢測設計的模型。
- Res-TSSDNet:另一種針對深偽音頻的檢測方法。
- SAMO:近期的深偽檢測方法。
- CLAD:本文提出的方法。
攻擊方式:
- None:無操作,直接測試原始音頻。
- Volume Control:調整音量(0.5、0.1)。
- White Noise:添加白噪聲,噪聲強度以 dB 為單位。
- Environmental Noise:各種環境噪聲(WD、FS、BR 等,分別表示風、呼吸、雨聲等)。
- Time Stretch:時間伸縮,調整音頻播放速度。
- Add Echoes:添加回聲。
- Fade:不同類型的音量漸入漸出。
- Resample:重採樣(改變音頻採樣率)。
可以從表看出來 CLAD 在不同的攻擊手法下優於 baseline,在白噪聲、環境噪聲(如風聲、雨聲)和時間伸縮等操作下,FAR 接近或低於 1%,顯示其極高的 robustness,CLAD 的 F1 分數幾乎在所有操作場景中最高,尤其是在難度較大的攻擊(如時間伸縮和重採樣)下,保持了超過 95% 的準確率。
我的想法
- 我覺得比較可惜的是用的資料集太舊,因為後續其實推出更多演算法,如 Codec、Diffusion Model 可以合成人聲,我認為應該也需要測試在這些資料集上。
- 實驗做得蠻完整的,跟別的 baseline 比較之外,也有做消融實驗來解釋為什麼模型表現很好的原因。
- 我學到最多莫過於他們設計兩個 loss function,第一個對比式學習,原來可以用 Queue 來儲存負向樣本,來提高正向樣本的相似度,第二個 Length loss,雖然我先前也有看過有人用相似的概念,他們一樣拿模型最後一層的高維表徵,他們訓練方式讓真實樣本靠近錨點範圍,讓合成樣本遠離,而這篇論文是採用向量距離是否超過 margin。
- 雖然這篇論文有提供程式碼, BUT 唯獨缺少訓練程式碼,所以我需要重新搭建實驗場景,跑同一個資料集,不過這個過程是我學習最多。