20200827 -
今天編寫文章《dga生成與檢測 - **《deepdga: adversarially-tuned domain generation and detection》閱讀》時,那篇**最後的實驗中提到了增強機器學習模型的內容,順著這個思路在谷歌上進行了簡單的搜尋,找到了兩篇材料,本篇文章就對這兩篇文章的內容進行簡單的記錄。
(1)protecting the protector: hardening machine learning defenses against adversarial attacks
(2)hardening neural networks for computer security against adversarial attack
上述文章都提到了對抗樣本的概念,而且都是針對對抗樣本的攻擊來提高機器學習模型的效能。
文章1是微軟的部落格文章,通過列舉了一些防禦對抗樣本攻擊的措施,比如利用多層攻擊、利用雲服務等,這裡不再具體描述,文章很簡潔,可以直接去原文檢視。
這裡重點來說一說第二篇文章。
文章2中提出了相應的案例,通過在某個pe檔案上新增了一些字串,逃避了檢測系統的檢測,而且能夠達到100%,這個數值挺吸引人的。但我個人覺得很不可思議,有幾點疑惑:
1)攻擊者知道檢測模型的具體引數嗎?如果知道完全引數或者完全的檢測流程,那麼能構造這麼精巧的攻擊就不奇怪了,但是如果不知道,或者僅僅知道一部分,那就非常厲害了。個人感覺應該也是測試出來的。
2)檢測模型為什麼會這麼容易就被繞過呢?
這些疑惑,我沒有從文中得到解答,可能得等以後繼續思考了。
一般而言,檢測乙個惡意樣本首先要進行特徵的提取,在這個過程之後,才會有相應的模型檢測過程。那麼,僅僅簡單的通過插入字串,而且保持了原有樣本的功能性(文中提到),還能繞過檢測,個人感覺應該是知道了可能的模型引數,知道如果是某種型別就不會被檢測一樣。回到特徵的問題,這種通過修改樣本之後,繞過檢測肯定是一些重要特徵發生了變化,導致它到了正常樣本的區域。
那麼,如果要提高這種攻擊樣本的檢測能力,必須時保證整體的檢測模型(包括前面的特徵提取部分)能夠免除這種雜訊的影響。也就是說,它對於這部分的修改,特徵對於這部分內容的代表性不受影響。
文章2提出的解決方案就是,建立乙個被新增了字串的轉殖樣本,這個樣本與原始樣本的功能性一樣,只是新增了新的東西。
然後,在訓練的過程中,講這兩個樣本同時輸入(個人理解),然後在網路中,新增相應的懲罰向。這種方案很像之前的時候看到的那種孿生網路的形式。一旦兩個樣本發生了這種不同,就進行相應的懲罰。
這裡僅僅記錄這篇文章的思路,不進行具體展開。
雖然從文章2的描述中看來,對於這種新增字串的方式效果不錯。但是也引發我另外的思考,這種形式真的是對所有的對抗樣本都有效嗎?這個不好說。因為你構造樣本的時候,就是構造的這種,如果他修改了其他的特徵呢?所以這就是問題。
但這引出了另外的乙個重要的問題,那就是找出具備區分性的特徵,或者說,找到不受這種小干擾的特徵組合,保持原有的樣本的代表性特徵,這種方式才是最關鍵的。但是,實際情況可能更複雜。
對抗機器學習模型
隨著ai時代機器學習模型在實際業務系統中愈發無處不在,模型的安全性也變得日漸重要。機器學習模型很可以會遭到惡意攻擊,比較直接就能想到的如 人臉識別模型的攻擊。訓練出具有對抗性的機器學習模型,在業務系統存在著越來越重要的實際意義。機器學習模型攻擊要做的事情如下圖所示 假設我們有乙個network用來做...
如何評估機器學習模型的效能
機器學習的模型效能評估,主要是確定在trainingset中的誤差,更重要的是在測試集的誤差,對新模型的學習能力,也就是所謂的泛化能力。因此資料集的確定尤為重要,將樣本資料集分為trainingset 和 testingset,資料集的劃分要注意如下兩個方面 1 盡量保證trainingset 和 ...
機器學習模型效能提公升方案
機器學習最有價值的部分是 建模。這是在歷史資料上訓練模型並對新資料進行 的模型的開發。關於 建模的首要問題是 如何獲得更好的結果?這份備忘單包含了多年以來我的最佳應用程式,以及我對頂尖的機器學習從業人員和比賽獲勝者的學習所總結出的最佳建議。有了本指南,您不僅會得到解脫和提公升的效能,甚至可以在 問題...