論文題目:Yet Another Text Captcha Solver A Generative Adversarial Network Based Approach算法
論文原做者:GuixinYe,ZhanyongTang∗,DingyiFang,ZhanxingZhu,YansongFeng, Pengfei Xu, Xiaojiang Chen, and Zheng Wang安全
原文會議或期刊: CCS’18, October 15-19, 2018, Toronto, ON, Canada微信
原文連接:https://dl.acm.org/citation.cfm?doid=3243734.3243754網絡
原文主要內容:基於生成對抗網絡方法,構建了一個合成驗證碼的模型和一個消除驗證碼干擾特徵的模型,利用CNN(擴展的LeNet-5方法)識別消除干擾特徵的驗證碼,最終實現驗證碼識別準確率的較大提高框架
做者:苦瓜@DAS機器學習
某晚師兄在羣裏轉發了一篇微信文章,介紹我國西北大學教授在驗證碼識別領域的研究成果,因其在驗證碼識別領域有較大突破,論文發表在ACM CCS-18上,並得到了最佳論文提名,甚至被國外一些媒體進行了報道,文章寫道:「該項研究比2017年發表在Science上的研究成果平均高出20%」。當時我就震驚了,這麼🐮🍺的🐎?因而花了兩天時間讀完了這篇文章,發現:💉💧🐮🍺!ide
原文做者(如下均簡稱做者)在摘要部分開門見山,指出此次的識別模型與前人工做不一樣,不須要人工收集大量數據並打標籤,使用極小的數據集就能達到很是好的表現,並且一塊桌面級的GPU便可在0.05s之內準確秒殺文本驗證碼,最後但願做者的研究結果能激勵社會從新設計和實施文本驗證碼策略。學習
然後做者在引言(Introuduction)部分主要介紹了字體
本次使用的驗證碼來源——Alexa評出的2018年最受歡迎的50個網站中的32個使用文本驗證碼的網站,這些網站有不一樣的驗證碼安全方案。網站
在引言的最後,做者寫到,咱們這篇paper也沒幹什麼別的,大概三件事:
第一個,首次使用生成對抗網絡方法自動生成訓練數據,構建文本驗證碼求解器(Text-Based Solvers)
第二個,首次應用遷移學習訓練文本驗證碼求解器
第三個,提供一種新的看法——文本驗證碼的安全特徵(例如波浪文字、橫線和文字重疊等各類干擾)在深度學習方法面前很是脆弱。
做者在引言後寫了背景介紹,篇幅極短,主要介紹文中使用的六種被廣泛使用的驗證碼安全策略(如圖2-1)和生成對抗網絡是什麼(後文將詳細舉例說明,這裏不累述)。
然後便直接開始介紹文章的重點,整個模型的構建和每一個部分的詳細狀況。固然做者很是瞭解咱們想看到什麼,因此將模型的大概框架和每一個模塊都作了精美的圖用以解釋,而我我的也作了一些圖更清楚的介紹每一個模塊的輸入和輸出,以便讀者理清做者的模型先後關係。
② 用合成的驗證碼和乾淨的驗證碼訓練預處理模型,這個模型最終效果是輸入帶有安全特徵的驗證碼圖片,輸出一個自動去除了安全特徵並標準化字體樣式後的「乾淨驗證碼」。
③ 將合成驗證碼輸入到訓練好的預處理模型,產生大量」乾淨驗證碼「用於訓練基礎求解器
④ 將真實驗證碼輸入到訓練好的預處理模型,產生少許」乾淨驗證碼」,經過遷移學習微調基礎求解器,獲得最終的微調求解器。
看完整個得到求解器的過程後,也許你會有不少疑問,驗證碼合成器是怎麼作到生成與真實驗證碼極其類似的圖片的?,驗證碼合成器生成的乾淨驗證碼和預處理模型輸出的乾淨驗證碼有什麼區別,爲何要用遷移學習微調一次,不用行嗎?接下來讓咱們詳細解析各個模型,解開這些疑惑,看看做者的idea究竟有多巧妙
還記得咱們以前動機裏面提到了Science也有驗證碼領域的文章嗎,做者在原文中簡述道:science的文章展現出,構建一個基於CNN的有效驗證碼求解器須要超過230萬張不一樣的驗證碼,但對於這麼大的數據集,收集數據和打標籤工做是很是耗費人力的工程,因此咱們提出了一種最小化人力投入的方法——驗證碼合成器,讓機器自動合成百萬級數量的驗證碼,還都帶有標籤。
根據做者的描述和原文圖片,我作了一個更有容易理解先後關係的圖片(如圖2-3所示)
這裏從原文中截取一個樣例,展現驗證碼合成器的強大威力。
圖2-4中,每組對比圖的左邊是真實驗證碼圖片,右邊是合成圖片。
前面的驗證碼合成器,已是一個很是不錯的idea,做者立馬又拿出一個一樣厲害的武器——基於生成對抗網絡的預處理模型,目標是去除合成圖片的安全特徵,讓其迴歸到便於機器學習方法識別出文字的圖片。預處理模型具體流程以下圖所示(圖片來源於論文原文)
生成網絡:右下方藍色部分,採用Pix2Pix圖片轉化框架(一種能夠將圖片樣式進行的算法),目標是去除合成驗證碼的噪音、橫線等,而且將字體標準化(例如將中空的字體填滿,將文字間距拉大等),使之於徹底乾淨驗證碼類似。因此生成網絡的輸入是一個帶有安全特徵的驗證碼圖片,輸出是一個被去除了安全特徵的驗證碼圖片,例如圖中的安全驗證碼被去除了一些橫線和下方的可愛小熊圖案。
當終止條件達成後,就要進入驗證碼求解器,須要強調的是,全部驗證碼圖片輸入到驗證碼求解器前,都要通過預處理模型,去掉其安全特徵,提升識別準確率。
注意:訓練預處理模型這一步很是重要,是論文模型最終能吊打其餘驗證碼識別模型的一個關鍵點。
所謂驗證碼求解器(Captcha Solvers),意思就是輸入驗證碼圖片獲得其中文本的模型。這裏繼續使用原文精美的圖片來介紹。
求解器使用LeNet-5模型進行構建,LeNet-5是一種經典的CNN模型,做者通過實驗對比發如今目前的實驗條件下,其餘算法的效果與之差距不大,但LeNet-5簡單高效,而且在遷移學習時對數據集大小的要求最低。
(a)步驟——訓練基礎求解器
將大量的合成圖片通過預處理模型的處理後,去除了安全特徵,再輸入到基礎求解器進行訓練。
這一部分使用了20萬張合成驗證碼圖片,由於每張合成驗證碼圖片在合成時便可自動設置標籤,因此極大的減小的人力投入,另外加強了整個模型的自動化實現能力。
(b)步驟——遷移學習
做者在基礎求解器訓練完成後,考慮到基礎求解器的訓練數據所有來自於合成圖片,容易對合成圖片的特徵過擬合,另外遷移學習對LeNet-5模型後部分進行訓練,能夠提升模型的實施效果
原文引用參考文獻指出: The idea of transfer learning is that in neural network classification, information learned at the early layers of neural networks (i.e.closer to the input layer) will be useful for multiple classification tasks. The later the network layers are, the more specialized the layers become.
文章的實驗部分也提供數據進一步證實,微調參數後,對模型的識別準確率有較大的提高。
到這裏文章的模型詳情就介紹完畢了,下面給一張圖示例做者的模式識別驗證碼的完整過程
以前也提到了,做者的實驗對象是Alexa評出的2018年最受歡迎的50個網站中的32個,而這32個網站中有些網站使用了相同的驗證碼方案(例如Youtube使用Google的安全驗證碼方案,Live、Office和Bing使用的是Microsoft的安全驗證碼方案),因此不須要重複實驗,而各類驗證碼方案又又不一樣的字符集,因此做者整理數據後分別作了實驗。先展現一下做者的模型在各類安全驗證碼上的識別準確率和耗時,如圖3-1。
可見微調後,模型的識別準確率有較大的提高,且用時極低,如前面所言0.05s之內完成識別工做。那麼咱們再來看看這些驗證碼方案大概是什麼樣子的,以及驗證碼求解器犯的錯誤(如圖3-2所示)。
其實做者給出這張圖的意思是想說,他們設計的模型已經很是優秀了,這些識別錯誤的地方其實對人而言識別起來也是比較困難的。
做者主要從驗證碼識別準確率和驗證碼安全特徵去除效果兩個方面與前人的成果進行了對比
這裏與四個前人研究成果進行了對比,第一種是2011年發表在CCS,第二個是2016年發表在NDSS,第三個是2014年發表在USENIX WOOT,第四個是2017年發表在science,在下方表格中的順序依次爲左上、右上、左下、右下。
從圖中能夠看出做者的研究成果,相對於前人的方法有很是大的提高,在後面的實驗種,做者這套識別模型甚至與人的識別準確率不相上下。
其實去除驗證碼的安全特徵的想法並非做者獨創,但做者的預處理模型實現了更好的去除效果,而去掉安全特徵後,深度學習算法會更容易的識別出圖片種的文字,所以在最終的識別準確率上相對於其餘模型會有有較大提高。圖3-4和3-5展現了做者與其餘去除安全特徵模型的對比,圖3-6展現了預處理模型去除安全特徵和標準化字體的效果。
(a)是百度驗證碼方案的真實圖片,(b)(c)(d)是不一樣設置下的安全特徵過濾方案輸出效果,(e)是預處理模型的輸出,這裏差距明顯。
圖3-5是預處理模型與文獻[16]的模型除去安全特徵的對比。圖3-6則是是單獨列出的一些預處理模型的處理效果,其中每個組對比圖的左邊是合成驗證碼圖片,右邊是預處理模型去除安全特徵後的驗證碼圖片。能夠明顯看出,做者的預處理模型不光可以準確地消除安全特徵,還能填充中空的文字,而且還有爲各個字符增長間隔的能力。
這一小節主要介紹實驗思路,展現做者對本身的模型進行了哪些參數和閾值的思考。
做者對這三個問題分別進行了實驗,得出了相應的結果,500張圖片、從第二個卷積層到最後進行微調、閾值爲5%是最佳選擇。而安全特徵越多,驗證碼就越難以識別,但另外一方面,驗證碼的可用性也會下降。
圖3-10可見,雖然驗證碼安全特徵變複雜能夠下降模式的識別準確率,但驗證碼的可用性明顯下降。
上一小節中,做者的實驗已經證實:安全特徵越複雜,模型的的識別準確率會下降,但另外一方面,驗證碼越複雜,它看起來彷佛越不可用。做者指出,驗證碼應該被設計成能讓人輕鬆識別但機器卻很是困難。因而做者作了以下實驗,探索可用性和安全性的平衡點,實驗設置每張圖人最多可用觀察30秒,機器則只識別一次,而人觀察後還須要對每張圖得可用性進行評分,分值區間爲1-5。
從圖中可見,做者的識別模型在準確率上幾乎與人得識別準確率相差無幾,只有當安全特徵變得複雜時二者纔有必定差距,但此時驗證碼也變得對用戶不友好。
做者將相關工做介紹、討論和總結都放在了實驗部分的後面,通常來講相關工做的介紹都是放在引言以後,而文章結構這樣設計的緣由估計也是想盡快讓讀者瞭解到他們的模型是如何構建的,進一步引導出模型的設計有哪些思考。
文章的書寫仍是很流暢的,最關鍵的是提出了三個很是好的想法
雖然我也不熟悉驗證碼攻擊領域的研究現狀,但做者的idea、實驗設計、文章的書寫和精美簡潔的示例圖片都是很是棒的,特別是原文中的圖片,真的是製做精美,便於讀圖理解。
文章的一些小瑕疵可能在於寫做的邏輯,例如在介紹生成對抗網絡模型設計時,講述完模型的設計後立馬指出了最終效果,但以後卻在介紹模型迭代的終止條件是什麼,感受邏輯不太對勁。
整體而言,文章提出的驗證碼攻擊模型自動化部署方便,驗證碼識別準確率高,針對具體的某種驗證碼方案有極大殺傷力(例如,結合爬蟲對驗證碼不斷識別,由於耗時較短,計算代價也相對較小,因此可用對某些網站實施撞庫攻擊等)