1. 程式人生 > >AI安全如何入門(上)

AI安全如何入門(上)

AI安全概述

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

AI的基礎知識

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

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

Python

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

機器學習

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

Python資料

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

AI安全

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

開發環境

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

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

安裝方法如下:

pip install -U scikit-learn

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

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

pip install tensorflow

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

Keras的線上文件內容非常豐富,地址為:

https://keras.io/

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

pip install keras

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

https://github.com/fchollet/keras

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

python setup.py install

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

Anaconda

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安全的研究已經成為整個安全行業最重要最前沿的一個方向。