
導語:國際頂級會議WWW 2020将于4月20日至24日舉行。始于1994年的WWW會議,主要讨論有關Web的發展,其相關技術的标準化以及這些技術對社會和文化的影響,每年有大批的學者、研究人員、技術專家、政策制定者等參與。以下是螞蟻金服的資深技術專家對入選論文《A Generic Solver Combining Unsupervised Learning and Representation Learning for Breaking Text-Based Captchas》做出的深度解讀。
随着網際網路的高速發展,越來越多的自動化破解程式給網絡安全帶來不小的挑戰。驗證碼以其簡單高效的特征,目前已經成為了網際網路安全的基本保障程式。雖然目前已經有許多可供選擇的驗證碼方案,但由于使用者偏好和易于設計的特性,基于文本的驗證碼類型仍然是維護網際網路安全和防止惡意攻擊的最流行的安全機制之一。
而文本驗證碼的安全特征對驗證碼安全性方面起着十分重要的作用,是以作為學術研究去自動識别破解文本驗證碼,可以發現現有驗證碼所存在的漏洞,有利于網站開發人員設計出更加安全的驗證碼體系,保障網絡安全。
在過去的十多年裡,人們已經提出了多種驗證碼破解方法,其中許多方法需要針對不同的驗證碼類型使用獨特的濾波和分割方法來實作字元識别,這類方法的泛化性較差,且需要過多的人工參與。
随着更複雜的安全特性被引入到文本驗證碼中,這些方法也不再适用。而一些基于深度學習的驗證碼識别算法在準确性上取得了顯著的提高,但這些方法的主要問題是需要大規模的帶有标簽的訓練樣本參與訓練,而這通常需要耗費大量的人工成本。是以,基于深度學習類方法主要需要解決的是訓練樣本量不足的問題。
簡介
大規模帶有标簽驗證碼圖像難以收集,但是無标簽的圖像樣本卻是很容易大量采集得到。而在深度學習領域中,無監督學習和表征學習都可以減少對于标簽樣本的依賴,充分利用無标簽資料樣本去學習資料表征,提升深度學習方法的性能。
我們通過設計了一個結合無監督學習和表征學習的驗證碼識别方案,在不依賴人工參與和大規模帶标簽訓練樣本的前提下,實作文本驗證碼的自動識别。經過實驗測試發現,我們的方法僅僅使用500張帶有标簽的訓練樣本就可以破解大多數主流網站的驗證碼,這也說明了目前文本驗證碼的部分安全特征很容易破解。通過我們所提出的方法可以發現現有驗證碼的漏洞,并且分析不同安全特征的有效性,進而開發出更安全可靠的驗證碼。
解讀
2.1 方案概述
本方案的總體架構如圖1所示,主要包含了基于無監督學習的驗證碼分解器(Captcha decomposer)和基于自監督學習的驗證碼識别器(Captcha recognizer)。首先使用分解器将驗證碼分解為兩個基本圖層(背景層、字元層),然後在字元層上識别驗證碼字元。分解器以無監督的方式學習單個驗證碼圖像的内部統計資訊來去除背景層并保留有用字元資訊,削弱了驗證碼安全特征的影響,進而降低後續識别器的識别的難度。
圖1 整體架構圖
圖2描述了建構自監督識别器的步驟,該識别器由兩部分組成:特征提取器和分類器。特征提取器的訓練采用了表征學習方法,使用無标簽的資料樣本以自監督的方式進行訓練,使特征提取器能夠提取到有效的且具有判别力的字元特征。當特征提取器訓練好了之後,在後面接上分類器,使用少量帶有标簽的驗證碼圖檔以全監督的方式訓練分類器。
圖2 識别器訓練過程
2.2 驗證碼分解器
如圖3所示,驗證碼圖像一般由三部分組成:前景層、字元層和背景層,其中各層的安全特征是針對自動破解程式有效的對抗機制。其中,背景層幹擾對于識别準确率影響較為明顯,且難以去除。
圖3 文本驗證碼圖像示例
通過仔細研究驗證碼的組成結構,我們發現背景層一般都具有自相關性強的紋理,比如相同的背景顔色、有規律的網格線等等。而且背景層和字元層的紋理相關性很弱。基于這一發現,我們利用這種圖像先驗資訊以無監督的方式去分離驗證碼圖層。如圖4所示,我們提出使用兩個卷積網絡分别學習背景層紋理和字元層紋理,然後通過一個學習得到的權值掩膜來結合兩個紋理層輸出重建得到輸入驗證碼圖像。
圖4 無監督分解器結構圖
以圖像重建損失作為整個模型訓練的限制項,以引導網絡1和網絡2 分别學習得到圖像層中完全不同但是卻比較簡單的組成結構。當訓練完成後,掩膜乘以字元層紋理就是我們所需的字元資料層。分解器一共包含有三個生成網絡,通過無監督學習推理每張驗證碼圖檔的子層統計規律而實作圖像層的分離,而不是依賴于大規模的訓練樣本。圖5展示了我們圖層分離的一些例子。
圖5 圖層分離執行個體
2.3 驗證碼識别器
字元其實是一種局部相關性很強的資訊,我們通過使用字元上下區域間的關系建構預測任務實作自監督學習方案。如圖6所示,我們将無标簽驗證碼圖像均勻裁剪為個圖像塊。為了構成一個預測任務,我們采用一個自回歸模型有序地總結每一列的前四個特征向量,然後使用線性預測矩陣來預測該列後續的特征向量,然後評估預測的特征向量和所提取的特征向量的相似度。預測任務的正樣本是采用同一列中有序的圖像塊組合,而負樣本則由驗證碼圖像中的圖像塊随機組合所構成。通過這種驗證碼字元表征學習方法可以使得識别器真正得學習和認識每個字元。
圖6 特征提取器的自監督訓練方案
為了使特征提取器充分學習到字元的表征資訊和語義資訊而不是陷入到一些實驗捷徑中,我們提出了一種包含大量困難樣本的訓練方案。如圖7所示,我們人為合成一些包含有不同背景、字元顔色的正樣本,不同上下字元間隔、旋轉角度的負樣本,以及不同真實驗證碼圖像拼接所得到的負樣本。通過這些樣本有助于特征提取器在忽略其他與字元無關因素幹擾的情況下學習到有用字元語義資訊,提升模型的判别能力。
圖7 困難樣本執行個體
當訓練好特征提取器後,去掉自回歸模型,在後面接上一個字元識别分類器。如圖8所示,因為分類器的結構非常簡單、參數量少,使用少量帶有标簽的驗證碼圖檔就足夠訓練分類器網絡了。整個識别器網絡主要依靠無标簽的資料樣本和極少量的帶标簽樣本,這大大降低了模型對資料樣本采集的困難。
圖8 識别器網絡結構
前景
本論文所涉及到的技術不僅僅可以應用于驗證碼識别領域中。自監督識别器采用字元表征學習證明了,深度學習可以充分利用無标簽資料樣本,實作無标簽資料的有效利用。
在目前人工智能領域,仍然存在着很多應用方向,無法擷取大規模帶有标簽的資料樣本或者擷取帶有标簽資料樣本的代價高昂,例如無人駕駛領域等。針對這類難以獲得标簽樣本的任務,可以通過本文所提出的表征學習方案,在圖像關系或者字元關系上建構預測任務,形成自監督學習任務,訓練網絡模型。而無監督分解器依靠圖像内部統計規律的差異實作子圖層分離,不依賴于訓練樣本,這一方案可以輕松移植到目前大多數的驗證碼識别方案中,降低驗證碼圖像背景噪聲的影響。
除此之外,這一相關技術在各個圖像領域也具有廣泛的應用價值,例如在圖像去噪、去霧等圖像生成類任務領域,根據圖像層和噪聲層/含霧層統計分布的不同,實作圖層分離,得到幹淨的目标圖像;在圖像分割領域,根據各個子子產品的分布不同實作圖像語義分割等。我們希望我們的工作能夠啟發關于無監督學習和表征學習的改進方案,減少帶标簽樣本資料的依賴度,将神經網絡和圖像表征的力量結合起來,廣泛應用于人工智能類應用中。