自序
自序
這不是我第一次寫序了,但是真拿起筆還是覺得挺難寫的。記得我寫第一本書時,女兒還在蹣跚學步,拿著我的書時還分不清書的前後正反,但是現在她已經在幼兒園學會做月餅了。據說現在人工智慧的知識已經寫入高中教材了,這方面我倒是對閨女比較有信心,至少在人工智慧方面她啟蒙得比較早。
機緣巧合,我負責了一個AI模型安全的開源項目AdvBox。雖然我之前接觸過AI安全,但是主要集中在AI賦能傳統安全的領域,簡單講就是我之前寫的《Web安全之機器學習入門》這類書里介紹的如何將AI技術應用到傳統安全領域。相對傳統安全領域,AI模型的安全是一個陌生但更加有趣的領域。從簡單的把貓變成狗,到稍微複雜點的用奇怪的「鳥叫蟲鳴」就可以喚醒智能音箱、點外賣,再到更加酷炫的換臉和欺騙無人車,這都是對抗樣本的典型應用。開發和運營AdvBox是我工作的一部分,也是我生活的一部分,我寫了個小腳本每天爬GitHub上的排名併發送郵件給我,每天早上我都會刷刷郵箱看一下最新排名。AdvBox的關注數也從零一直慢慢爬到業內關注的一個排名。為了更好地運營AdvBox,我組建了QQ群和微信群,在回答用戶問題的過程中,我發現其實很多問題非常基礎:從TensorFlow/PyTorch的使用到深度學習的基礎知識,從對抗樣本的基本原理到圖像處理中的一些小技巧。於是我想到了可以寫一本書來介紹這方面的基礎知識。
很多人在網上抱怨,2018年是比較艱難的一年,我也有同樣的感受。工作繁忙了許多,而且換了新環境,許多東西需要再去適應。這本書從構思到基本寫完,花了將近一年的時間,幾乎佔據了我全部的休息時間,確實挺不容易。其實我也反思過幾次,為啥不去做些輕車熟路的事,非要去折騰些BIG4的論文里介紹的東西,非要在一個新成果剛發布就可能要過時的賽道去追逐。如果非要找個理由的話,我個人的感受是:容易的事輪不到我,早已是千軍萬馬過獨木橋了;困難的事堅持做,沒準就走下去了。
本書的定位是學習對抗樣本的入門書籍,因此也簡單介紹了相關領域的背景知識便於讀者理解,使用的數據集和場景是比較典型的圖像分類、目標識別等領域。第1章介紹了深度學習的基礎知識,重點介紹了與對抗樣本相關的梯度、優化器、反向傳遞等知識點。第2章介紹了如何搭建學習對抗樣本的軟硬體環境,雖然GPU不是必需的,但是使用GPU可以更加快速地驗證你的想法。第3章概括介紹了常見的深度學習框架,從TensorFlow、Keras、PyTorch到MXNet。第4章介紹了圖像處理領域的基礎知識,這部分知識對於理解對抗樣本領域的一些常見圖像處理技巧非常有幫助。第5章介紹了常見的白盒攻擊演算法,從最基礎的FGSM、DeepFool到經典的JSMA和CW。第6章介紹了常見的黑盒攻擊演算法。第7章介紹了對抗樣本在目標識別領域的應用。第8章介紹了對抗樣本的常見抵禦演算法,與對抗樣本一樣,抵禦對抗樣本的技術也非常有趣。第9章介紹了常見的對抗樣本工具以及如何搭建NIPS2017對抗防禦環境和輕量級攻防對抗環境robust-ml,通過這章讀者可以了解如何站在巨人的肩膀上,快速生成自己的對抗樣本,進行攻防對抗。
本書適合人工智慧領域的從業人員、大專院校計算機相關專業學生,而不僅僅是信息安全領域的學生和從業人員。因為對抗樣本的知識對於人工智慧領域的從業人員非常重要,伴隨著人工智慧的遍地開花和逐步落地,從智能駕駛到人臉支付,從智能家居到智能安防,人工智慧從一個學術名詞變成了真正影響大家生活的技術,直接關係到大家的人身安全、財產安全還有個人隱私。對抗樣本帶來的問題,也是傳統安全技術幾乎難以解決的。了解對抗樣本的基本原理,對於人工智慧領域的從業人員開發出更加安全的應用是非常有幫助的。
我要感謝家人對我的支持,本來工作就很忙,沒有太多時間處理家務,寫書以後更是侵佔了我大量的休息時間,我的妻子無條件地承擔起了全部家務,尤其是照料孩子。我還要感謝我的女兒,寫書這段時間幾乎沒有時間陪她玩,我也想用這本書作為她的生日禮物。我還要感謝編輯吳怡對我的支持和鼓勵,讓我可以堅持把這本書寫完。Lenx對於我寫這本書幫助很大,他對AI安全的深刻理解,積極但又務實,讓我在研究的道路上既信心滿滿又不至於過於狂熱而迷失道路。還要感謝AdvBox團隊以及在GitHub上給AdvBox提交過代碼的同學們。
最後還要感謝各位業內好友對我的支持,以下排名不分先後:
馬傑@百度安全、Lenx@百度安全、黃正@百度安全、包沉浮@百度安全、海棠姐@百度安全、Edward@百度安全、賈雲瀚@百度安全、雲鵬@百度無人車、施亮@頂象、VictorFang@AnChain、謝忱@Freebuf、大路@天際友盟、郭偉@數字觀星、周濤@阿里、姚志武@借貸寶、劉靜@安天、高磊@阿里、尹毅@sobug、吳聖@58、康宇@新浪、幻泉@i春秋、田老師@陽光保險、ReadOnly@易寶支付、樊春亮@泰康、聶君@360、林偉@360、白教主@360、李濱@騰訊、張維垚@餓了嗎、阿杜@優信、高磊@安巽科技、王延輝@平安、呂毅@人行、雷誠@武漢大學、鳥哥@阿里雲、鹹魚@京東、梁知音@京東、小馬哥@京東、張超@清華大學、徐恪@清華大學、李勇@清華大學、李琦@清華大學。我平時在FreeBuf專欄以及i春秋分享企業安全建設以及人工智慧相關經驗與最新話題,同時運營我的微信公眾號「兜哥帶你學安全」,歡迎大家關注並在線交流。
計算機是一門非常強調理論聯繫實踐的學科,我經常在和讀者交流時說:安全會議的PPT就像電影,濃縮、精彩、有趣;博客、公眾號上的文章就像電視劇,有細節、有思路;技術書籍更像原著,系統、詳細、原汁原味。但是就像看再多武俠小說也不一定真能耍出一招半式一樣,真正掌握一門武藝還是要勤於練習。因此我在GitHub上也把書里提到的示例代碼開源出來,讀者可以根據情況一邊修改一邊驗證自己的理解,對應的地址為:https://github.com/duoergun0729/adversarial_examples。