AI安全怎么样入门

2020-04-16 作者:亚洲城动态   |   浏览(93)

AI安全概述

Anaconda概述

Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。

这里先解释下conda、anaconda这些概念的差别。conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。

进入下文之前,说明一下conda的设计理念——conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身!因此,conda打破了包管理与环境管理的约束,能非常方便地安装各种版本python、各种package并方便地切换。

Anaconda的安装

Anaconda的下载页参见官网下载,Linux、Mac、Windows均支持。

安装时,会发现有两个不同版本的Anaconda,分别对应Python 2.7和Python

3.5,两个版本其实除了这点区别外其他都一样。后面我们会看到,安装哪个版本并不本质,因为通过环境管理,我们可以很方便地切换运行时的Python版本。(由于我常用的Python是2.7和3.4,因此倾向于直接安装Python

2.7对应的Anaconda)

下载后直接按照说明安装即可。这里想提醒一点:尽量按照Anaconda默认的行为安装——不使用root权限,仅为个人安装,安装目录设置在个人主目录下(Windows就无所谓了)。这样的好处是,同一台机器上的不同用户完全可以安装、配置自己的Anaconda,不会互相影响。

对于Mac、Linux系统,Anaconda安装好后,实际上就是在主目录下多了个文件夹(~/anaconda)而已,Windows会写入注册表。安装时,安装程序会把bin目录加入PATH(Linux/Mac写入~/.bashrc,Windows添加到系统变量PATH),这些操作也完全可以自己完成。以Linux/Mac为例,安装完成后设置PATH的操作是

# 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin

echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc

# 更新bashrc以立即生效

source ~/.bashrc

配置好PATH后,可以通过which conda或conda --version命令检查是否正确。假如安装的是Python 2.7对应的版本,运行python --version或python -V可以得到Python 2.7.12 :: Anaconda 4.1.1 (64-bit),也说明该发行版默认的环境是Python 2.7。

理解AI安全最简单的方式就是从攻防的视角。从攻击的角度讲,AI安全可以细分为使用AI技术进行攻击、攻击AI模型和攻击智能设备。从防守的角度,AI安全主要指使用AI技术赋能传统安全产品以及保护智能设备。有兴趣的同学可以关注下我之前的文章《AI时代的攻与防》

Conda的环境管理

Conda的环境管理功能允许我们同时安装若干不同版本的Python,并能自由切换。对于上述安装过程,假设我们采用的是Python 2.7对应的安装包,那么Python 2.7就是默认的环境(默认名字是root,注意这个root不是超级管理员的意思)。

假设我们需要安装Python 3.6,此时,我们需要做的操作如下:

# 创建一个名为python36的环境,指定Python版本是3.6(不用管是3.6.x,conda会为我们自动寻找3.6.x中的最新版本)

conda create --name python36 python=3.6

# 安装好后,使用activate激活某个环境

activate python36 # for Windows

source activate python36 # for Linux & Mac

# 激活后,会发现terminal输入的地方多了python36的字样,实际上,此时系统做的事情就是把默认2.7环境从PATH中去除,再把3.6对应的命令加入PATH

# 此时,再次输入

python --version

# 可以得到`Python 3.6.5 :: Anaconda 4.1.1 (64-bit)`,即系统已经切换到了3.6的环境

# 如果想返回默认的python 2.7环境,运行

deactivate python36 # for Windows

source deactivate python36 # for Linux & Mac

# 删除一个已有的环境

conda remove --name python36 --all

# 创建一个名为python36的环境,指定Python版本是3.6(不用管是3.6.x,conda会为我们自动寻找3.6.x中的最新版本)

conda create --name python36 python=3.6

用户安装的不同python环境都会被放在目录~/anaconda/envs下,可以在命令中运行conda info -e查看已安装的环境,当前被激活的环境会显示有一个星号或者括号。

说明:有些用户可能经常使用python 3.6环境,因此直接把~/anaconda/envs/python36下面的bin或者Scripts加入PATH,去除anaconda对应的那个bin目录。这个办法,怎么说呢,也是可以的,但总觉得不是那么elegant……

如果直接按上面说的这么改PATH,你会发现conda命令又找不到了(当然找不到啦,因为conda在~/anaconda/bin里呢),这时候怎么办呢?方法有二:1. 显式地给出conda的绝对地址 2. 在python36环境中也安装conda工具(推荐)。

AI的基础知识

Conda的包管理

Conda的包管理就比较好理解了,这部分功能与pip类似。

例如,如果需要安装scipy:

# 安装scipy

conda install scipy

# conda会从从远程搜索scipy的相关信息和依赖项目,对于python 3.6,conda会同时安装numpy和mkl(运算加速的库)

# 查看已经安装的packages

conda list

# 最新版的conda是从site-packages文件夹中搜索已经安装的包,不依赖于pip,因此可以显示出通过各种方式安装的包

# 查看某个指定环境的已安装包

conda list -n python36

# 查找package信息

conda search numpy

# 安装package

conda install -n python36 numpy

# 如果不用-n指定环境名称,则被安装在当前活跃环境

# 也可以通过-c指定通过某个channel安装

# 更新package

conda update -n python36 numpy

# 查看当前环境下已安装的包

conda list

# 查看某个指定环境的已安装包

conda list -n python36

# 查找package信息

conda search numpy

# 删除package

conda remove -n python36 numpy

前面已经提到,conda将conda、python等都视为package,因此,完全可以使用conda来管理conda和python的版本,例如

# 更新conda,保持conda最新

conda update conda

# 更新anaconda

conda update anaconda

# 更新python

conda update python

# 假设当前环境是python 3.6, conda会将python升级为3.6.x系列的当前最新版本

# 更新conda,保持conda最新

conda update conda

# 假设当前环境是python 3.6, conda会将python升级为3.6.x系列的当前最新版本

补充:如果创建新的python环境,比如3.6,运行conda create -n python36 python=3.6之后,conda仅安装python 3.6相关的必须项,如python, pip等,如果希望该环境像默认环境那样,安装anaconda集合包,只需要:

# 在当前环境下安装anaconda包集合

conda install anaconda

# 结合创建环境的命令,以上操作可以合并为

conda create -n python36 python=3.6 anaconda

# 也可以不用全部安装,根据需求安装自己需要的package即可

设置国内镜像

如果需要安装很多packages,你会发现conda下载的速度经常很慢,因为Anaconda.org的服务器在国外。所幸的是,清华TUNA镜像源有Anaconda仓库的镜像,我们将其加入conda的配置即可:

# 添加Anaconda的TUNA镜像

conda config --add channels

# TUNA的help中镜像地址加有引号,需要去掉

# 设置搜索时显示通道地址

conda config --set show_channel_urls yes

执行完上述命令后,会生成~/.condarc(Linux/Mac)或C:UsersUSER_NAME.condarc文件,记录着我们对conda的配置,直接手动创建、编辑该文件是相同的效果。

Anaconda具有跨平台、包管理、环境管理的特点,因此很适合快速在新的机器上部署Python环境。总结而言,整套安装、配置流程如下:

下载Anaconda、安装

配置PATH(bashrc或环境变量),更改TUNA镜像源

创建所需的不用版本的python环境

Just Try!

cheat-sheet 下载:

Conda cheat sheet

参考资料

Anaconda Homepage

Anaconda Documentation

Conda Docs

AI的学习坡度高于Python这类编程语言,但是并非只有屈指可数的大公司和科研院所才能掌握。我们即需要有足够的耐心踏实的进行学习,同时也不要有畏难情绪。下面我结合自己的学习经历,推荐几本适合入门的书籍。

首先是《机器学习实战》,这本书相比学院派的机器学习理论书籍,使用了大量的篇幅介绍了如何基于Python去实现常见的机器学习算法。通过这本书可以比较深刻的理解常见算法的底层实现。

如果你对算法的数学原理非常感兴趣,我同时也推荐周老师的西瓜书,这本书从数学角度对机器学习的原理介绍的非常详细。

如果你对算法的底层实现和深层原理并不感兴趣,更想了解如何从编程层面去使用机器学习,我强烈推荐《Python数据挖掘入门与实践》,这本书以scikit-learn为主要开发环境,结合大量例子介绍了常见算法的使用。

如果你有一定的安全背景,想入门AI安全,或者想看下AI在安全领域的应用,可以看下我的两本以web安全常见问题为背景,介绍AI安全的书《Web安全之机器学习入门》和《Web安全之深度学习实战》

如果你对安全的基础知识不是很熟悉,我强烈推荐刺的《白帽子讲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的在线文档内容非常丰富,地址为:

Keras的安装非常简便,使用pip工具即可。

pip install keras

如果需要使用源码安装,可以直接从GitHub上下载对应源码。

然后进入Keras目录安装即可。

python setup.py install

Anaconda是一个用于科学计算的Python开发平台,支持 Linux,Mac和Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本Python并存、切换以及各种第三方包安装问题。Anaconda利用conda命令来进行package和environment的管理,并且已经包含了Python和相关的配套工具。Anaconda集成了大量的机器学习库以及数据处理必不可少的第三方库,比如NumPy,SciPy,Scikit-Learn以及TensorFlow等。

Anaconda框架

Anaconda的安装非常方便,从其官网的下载页面选择对应的安装包,以我的Mac本为例,选择macOS对应的图形化安装版本。

下载页面

点击安装包,选择安装的硬盘,通常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安全的研究已经成为整个安全行业最重要最前沿的一个方向。

本文由yzc216亚洲城发布于亚洲城动态,转载请注明出处:AI安全怎么样入门

关键词: 亚洲城官网 yzc216亚洲城