AI安全如何入門(上)

AI安全概述

理解AI安全最簡單的方式就是從攻防的視角。從攻擊的角度講,AI安全可以細分為使用AI技術進行攻擊、攻擊AI模型和攻擊智能設備。從防守的角度,AI安全主要指使用AI技術賦能傳統安全產品以及保護智能設備。有興趣的同學可以關注下我之前的文章《AI時代的攻與防》

AI的基礎知識

AI的學習坡度高於Python這類編程語言,但是並非只有屈指可數的大公司和科研院所才能掌握。我們即需要有足夠的耐心踏實的進行學習,同時也不要有畏難情緒。下面我結合自己的學習經歷,推薦幾本適合入門的書籍。

首先是《機器學習實戰》,這本書相比學院派的機器學習理論書籍,使用了大量的篇幅介紹了如何基於Python去實現常見的機器學習演算法。通過這本書可以比較深刻的理解常見演算法的底層實現。

如果你對演算法的數學原理非常感興趣,我同時也推薦周老師的西瓜書,這本書從數學角度對機器學習的原理介紹的非常詳細。

如果你對演算法的底層實現和深層原理並不感興趣,更想了解如何從編程層面去使用機器學習,我強烈推薦《Python數據挖掘入門與實踐》,這本書以scikit-learn為主要開發環境,結合大量例子介紹了常見演算法的使用。

如果你有一定的安全背景,想入門AI安全,或者想看下AI在安全領域的應用,可以看下我的兩本以web安全常見問題為背景,介紹AI安全的書《Web安全之機器學習入門》和《Web安全之深度學習實戰》

如果你對安全的基礎知識不是很熟悉,我強烈推薦刺的《白帽子講web安全》

開發環境

建議在linux和mac環境進行機器學習程序的開發,開發語言也強烈推薦python,一方面python容易掌握,另外一方面大量的機器學習庫僅支持python。

Scikit-Learn

Scikit-Learn是基於Python的機器學習模塊,基於BSD開源許可證。這個項目最早由在2007 年發起的,目前也是由社區自願者進行維護。Scikit-Learn的官方網站上面可以找到相關的Scikit-Learn的資源,模塊下載,文檔,常式等等。Scikit-Learn的基本功能主要被分為六個部分,分類,回歸,聚類,數據降維,模型選擇,數據預處理,具體可以參考官方網站上的文檔。

安裝方法如下:

pip install -U scikit-learn

TensorFlow

TensorFlow是谷歌的第二代人工智慧學習系統,可被用於語音識別或圖像識別等多項機器深度學習領域,是在2011年開發的深度學習基礎架構DistBelief進行了各方面的改進,它可在小到一部智能手機、大到數千台數據中心伺服器的各種設備上運行。

TensorFlow支持非常豐富的安裝方式,在Linux和Mac 可以直接使用默認版本安裝。

pip install tensorflow

Keras

TensorFlow雖然功能強大,但是開發效率比較低,建議大家使用Keras。Keras是一個高級別的Python神經網路框架,能在TensorFlow或者 Theano 上運行。Keras和TensorFlow的關係可以理解為win32 API和MFC的關係。

Keras的在線文檔內容非常豐富,地址為:

keras.io/

Keras的安裝非常簡便,使用pip工具即可。

pip install keras

如果需要使用源碼安裝,可以直接從GitHub上下載對應源碼。

github.com/fchollet/ker

然後進入Keras目錄安裝即可。

python setup.py install

Anaconda

Anaconda是一個用於科學計算的Python開發平台,支持 Linux,Mac和Windows系統,提供了包管理與環境管理的功能,可以很方便地解決多版本Python並存、切換以及各種第三方包安裝問題。Anaconda利用conda命令來進行package和environment的管理,並且已經包含了Python和相關的配套工具。Anaconda集成了大量的機器學習庫以及數據處理必不可少的第三方庫,比如NumPy,SciPy,Scikit-Learn以及TensorFlow等。

Anaconda框架(圖片來自Anaconda官網)

Anaconda的安裝非常方便,從其官網的下載頁面選擇對應的安裝包,以我的Mac本為例,選擇macOS對應的圖形化安裝版本。

下載頁面(圖片來自Anaconda官方下載頁面)

點擊安裝包,選擇安裝的硬碟,通常Mac本也只有一塊硬碟,使用默認安裝即可。

一路使用默認配置進行安裝,安裝完成後出現如下所示的界面,表明安裝成功。

使用如下命令查看當前用戶的profile文件的內容。

cat ~/.bash_profile

我們可以發現在當前用戶的profile文件的最後增加了如下內容,表明已經將Anaconda的bin目錄下的命令添加到了PATH變數中,可以像使用系統命令一樣直接使用Anaconda的命令行工具了。

# added by Anaconda2 5.0.0 installer

export PATH="/anaconda2/bin:$PATH"

Anaconda強大的包管理以及多種Python環境並存使用主要以來於conda命令,常用的conda命令列舉如下。

# 創建一個名為python27的環境,指定Python版本是2.7

conda create --name python27 python=2.7

# 查看當前環境下已安裝的包

conda list

# 查看某個指定環境的已安裝包

conda list -n python27

# 查找package信息

conda search numpy

# 安裝package

conda install -n python27 numpy

# 更新package

conda update -n python27 numpy

# 刪除package

conda remove -n python27 numpy

假設我們已經創建一個名為python27的環境,指定Python版本是2.7,激活該環境的方法如下。

source activate python27

如果要退出該環境,命令如下所示。

source deactivate

在python27的環境下查看Python版本,果然是2.7版本。

maidou:3book liu.yan$ source activate python27

(python27) maidou:3book liu.yan$

(python27) maidou:3book liu.yan$ python

Python 2.7.14 |Anaconda, Inc.| (default, Oct 5 2017,02:28:52)

[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] ondarwin

Type "help", "copyright","credits" or "license" for more information.

>>>

查看python27環境下默認安裝了哪些包,為了避免顯示內容過多,過濾前6行查看。

conda list | head -6

# packages in environment at /anaconda2/envs/python27:

#

ca-certificates 2017.08.26 ha1e5d58_0

certifi 2017.7.27.1 py27h482ffc0_0

libcxx 4.0.1 h579ed51_0

libcxxabi 4.0.1 hebd6815_0

統計包的個數,除去2行的無關內容,當前環境下有16個包。

conda list | wc -l

18

查看目前一共具有幾個環境,發現除了系統默認的root環境,又多出了我們創建的python27環境。

conda info --envs

# conda environments:

#

python27 /anaconda2/envs/python27

root * /anaconda2

在python27環境下安裝Anaconda默認的全部安裝包,整個安裝過程會比較漫長,速度取決於你的網速。

conda install anaconda

Fetching package metadata ...........

Solving package specifications: .

Package plan for installation in environment/anaconda2/envs/python27:

繼續統計包的個數,除去2行的無關內容,當前環境下已經有238個包了。

conda list | wc -l

240

Anaconda默認安裝的第三方包里沒有包含TensorFlow和Keras,需要使用命令手工安裝,以TensorFlow為例,可以使用conda命令直接安裝。

conda install tensorflow

同時也可以使用pip命令直接安裝。

pip install tensorflow

通常可以創建了兩個環境,分別是python27和python36,顧名思義對應的Python版本分別為2.7和3.6,用於滿足不同案例對python版本的不同要求。

總結

哈佛大學發布《人工智慧與國家安全》報告,指出AI的發展將通過變革軍事優勢、信息優勢和經濟優勢等三方面影響國家安全,建議美國政府保持美國的技術領先地位。而最近,俄羅斯總統普京就AI領域的競賽警告:「誰成為了這個領域的領導者,誰就將成為世界的統治者」。習近平總書記也在多次講話中談到人工智慧的迅猛發展,強調「我們不僅要把我國機器人水平提高上去,而且要儘可能多地佔領市場」。可見AI技術已經得到大國國家層面的重視。Strategy Analytics的報告指出,到2020年會有500億台物聯網設備在全球部署。埃森哲預測,到2035年,人工智慧將讓年度經濟增長率提升一倍。在這樣的背景下,AI安全顯得尤其重要,針對AI安全的研究已經成為整個安全行業最重要最前沿的一個方向。

對AI安全有興趣的同學可以看下我的書,京東鏈接為:

item.jd.com/12158965.ht


推薦閱讀:

1.2 如何看待與理解神經網路
《Learning to Rank using Gradient Descent》
機器學習-異常檢測演算法(三):Principal Component Analysis
logistic regression
通俗講解維特比演算法

TAG:AI技术 | 机器学习 | 网络安全 |