从这个课程可以学习到
- 什么是人工智能?
- 为什么Al很重要?
- 什么是机器学习和深度学习?
- 亚马逊如何在其产品中使用人工智能
- 在Aws中提供的支持服务和框架
- 用例
任何可以感知其环境并相应采取操作的设备都具有AI
简单的说,AI是机器的智能行为
通过使用Al,机器可以模仿人的认知功能,如学习和解决问题
使用人工智能的常用案列,是让设备具有扫描功能并且可以解释其物理环境,这样一来,它们就可以四处移动甚至还可以上下楼梯。
要使机器人像人类一样智能,具有AI的机器有望像人类一样解决问题,我们需要为它们提供来自现实世界的信息,为了模仿人类智能,ai依赖于知识工程。
知识工程是AI研究的重要组成部分,换句话说,它们需要了解物体与情境之间的关系,再分析数据,最后以人类处理问题的方式对特定问题做出决策。简单地说,目标是将人类的专业知识转化为可以采用相同数据,并得出与人类相同结论的软件程序,这一将数据提供给软件程序并得出与人类一样的决策的过程也称为建模过程。
这个模型,从根本上说,就是一个软件算法,将不断优化直到它的决策接近人类所做出的决策,如果对某个特定问题的决策与人类的决策不一致,那么我们会返回模型并进行调试直到我们改进它为止,就像您预计的那样,这是一个选代过程。
AI给我们带来了新的可能性,并推动了业务的增长,各种公司都在使用ai进行创新,公司正在根据用户满意度、反馈、趋势等,进行重大投资以改进其产品,他们正在使用ai来实现这一点
在您开始了解AI后,您就会看到类似于机器学习和深度学习的术语:机器学习(也称为ML)和深度学习(也称为DL),实际上都是AI的子集 。您可以借助ML和DL算法来创建AI系统,例如,预测用户行为并提出建议的软件程序,或者是一个理解人类(例如Alexa)所说的想法和句子的系统
让我们来讨论一下这些领域以及它们之间的差异:与常规计算代码不同机器学习使用数据生成统计代码,该代码根据从前期的输入示例中识别的模式输出正确的结果。机器学习从处理它已经掌握的有关情境的数据开始,它使用算法处理数据以识别行为的模式和结果,然后解释这些模式以预测未来的结果
这些预测用于做出有关机器学习要执行的下一步的决策,该决策产生结果,然后对这些结果进行评估并添加到数据池中,新数据将影响耒来的预测和后续决策,这就是机器学习随着时间的推移进行学习的方式。
机器学习可以通过庞大的数据集做出预测,通过对数据进行分类,从数据集优化实用程序功能并提取隐藏的模式和结构,这使得软件程序能够学习并在未来做出预测。
机器学习通常在显式编程过于僵化或不切实际的情况下部署
深度学习使机器学习更进一步,深度学习使机器能够根据提供的数据来定义自己需要的功能
AmazonWebServices通过利用Amazon在AI和机器学习方面的内部经验,提供一系列AI服务,
这些服务在这里划分为四个层次:AI服务、AI平台、AI框架和AI基础架构。它们从最简单到最复杂的顺序从上到下进行组织。
我们的每个AI服务都是为了处理特定的常见ai任务而构建的,这些服务使开发人员能够通过对预训练服务的API调用向他们的应用程序添加智能,而不是开发和训练他们自己的深度学习模型。使用Amazon Rekognition可以轻松地将图像分析添加到应用程序中,通过Rekognition,您可以检测特定对象、场景。和人脸(例如名人)并识别图像中不适宜的内容。
如何在亚马逊云新建用户,sudo权限,安装软件
Ubuntu多用户管理
要实现多用户,首先要创建其他的用户。大家可以跟随“亚马逊云教程1:创建并连接EC2”的方法创建并登录一台服务器,在那个教程里面,我们使用的是Ubuntu系统的默认用户,其用户名是ubuntu。我们可以用下面的命令新建一个新用户,可以把roden更改为你需要的用户名(后面所有的roden都要改为你这里输入的名字):
sudo adduser roden
这句话的意思是,使用sudo(超级用户权限)添加一个用户,用户名是“roden”。按下回车之后,它会提示你输入密码,并再次确认密码。然后使用默认值一路按回车就好了。下面是详细的运行记录:
ubuntu@ip-172-31-2-87:~$ sudo adduser roden Adding user `roden' ... Adding new group `roden' (1001) ... Adding new user `roden' (1001) with group `roden' ... Creating home directory `/home/roden' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for roden Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n]
这里稍微解释一下超级用户权限。因为Ubuntu系统支持多个用户,所以就衍生出了非常严格的用户权限设置。就像一所学校里面,不同的人的权限是不同的,学生负责在教室学习,大厨负责在食堂做饭,招生办的老师负责招收更多的学生。而超级用户就是,ta什么都可以做,不受任何限制。创建一个新的用户需要使用到超级用户权限,启用的方法就是用 sudo运行命令。在运行了上面的命令之后,我们的系统里面就有了roden这个用户了。我们使用下面的命令切换到那个用户:
su - roden
“su”我推测是switch user (切换用户)的缩写,中间的一个小横杆,或者叫中划线/连字符(英文是dash 或 hyphen),要表达的意思是,切换用户的同时,也切换到用户根目录。之后需要输入该用户的密码。大家可以用 pwd看一下当前工作目录(print working directory),用 ls查看一下其他用户的目录。
roden@ip-172-31-2-87:~$ pwd /home/roden roden@ip-172-31-2-87:~$ ls /home # ls 是 list 的缩写,显示某个文件夹下面的内容, # 这里是显示 /home 文件夹下面的内容。 roden ubuntu # 这里输出了两个词。roden 代表用户 roden 的家(用户跟目录); # ubuntu 代表之前我们使用的ubuntu用户的家(用户跟目录)
用 exit命令退出roden用户,回到ubuntu用户。这里 exit没有直接退出连接到的服务器,是因为我们之前在ubuntu用户里面登录到了roden这个用户,所以 exit的时候,退出的是roden,回到原来的ubuntu。这时再用 pwd时会看到结果和之前的不一样,再用 exit,则退出了服务器。
roden@ip-172-31-2-87:~$ exit logout ubuntu@ip-172-31-2-87:~$ pwd /home/ubuntu ubuntu@ip-172-31-2-87:~$ exit logout Connection to Public_IP closed.
大家可以再打开一个终端, cd到私有密钥文件夹,用 ssh -i tutorial.pem ubuntu@Public_IP命令登录服务器,你会发现两个终端都可以输入命令,互不影响,就相当于有两个人(两个键盘)在同时操作同一台电脑。
大家可以再次用ubuntu用户登录到服务器,接下来我们要赋予roden超级用户权限。
sudo usermod -g admin roden
解释:ubuntu有超级权限,所以可以执行 sudo
,然后是用户模式, -g
表示设置用户组,admin是管理员,可以理解成是超级用户;整句话就是把roden添加到超级用户组中。大家可以用如下命令查看是否设置成功。
# ubuntu@ip-172-31-2-87:~$ sudo usermod -g admin roden # 这句话如果前面执行过一次就不用再执行了 ubuntu@ip-172-31-2-87:~$ su - roden Password: To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. # 这里它会提示你,你是超级用户,可以使用sudo运行命令 roden@ip-172-31-2-87:~$ sudo ls / [sudo] password for roden: # 首次使用sudo时要输入密码 bin dev home ...
ssh密钥对登录服务器
如果我们每次登录服务器都需要切换到私有密钥的文件夹,然后指明我们要用那个文件登录,就会比较麻烦。我们可以使用自己生成的ssh密钥对来绕开这个问题。本系列教程第一讲里面已提到,密钥对就像是接头密语一样,有上句和下句。对密钥对来说,是明语(公有密钥)和暗语(私有密钥)。之前我们下载了AWS的私有密钥,在服务器里面,存放着一个公有密钥,他们俩匹配了,所以我们才能成功连接服务器。我们接下来要自己生成一对ssh密钥对。大家要在自己本地的机器(而不是服务器)上面运行下面的 ssh-keygen命令。命令和注释:
➜ Downloads ssh-keygen #前面的Downloads是我本地电脑上当前的目录。"ssh-keygen"才是命令。 Generating public/private rsa key pair. Enter file in which to save the key (/Users/roden/.ssh/id_rsa): /Users/roden/.ssh/tutorial_rsa #需要你输入存放的位置。大家可以选用默认的位置,直接回车。也可以像 # 我这里一样,使用默认的路径,但是把最后的名字从id_rsa更改成了tutorial_rsa。因为我之前生成过 # id_rsa了,不希望覆盖那个文件。推荐大家使用默认值,后面有些步骤会方便一些。 Enter passphrase (empty for no passphrase):#这里要求你输入加密密码,可以留空。如果输入了的话, # 以后每次登录服务器就需要输入密码。 Enter same passphrase again:#如果输入了的话,再输入一次。 Your identification has been saved in /Users/roden/.ssh/tutorial_rsa.#这里是生成的私有密钥的 # 位置 Your public key has been saved in /Users/roden/.ssh/tutorial_rsa.pub.#这里是生成的公有密钥的 # 位置 The key fingerprint is: c5:92:e4:a1:e4:48:1b:3d:41:7f:da:4e:8c:96:ca:8e roden@D-69-91-128-50.dhcp4.washington.edu The key's randomart image is: +--[ RSA 2048]----+ | oo+.o | | . *o= + | | o o.= + | | X | | S + | | . o o | | o . | | o | | E . | +-----------------+ ➜ Downloads #运行完毕,回到了之前输入命令的目录
现在我们把公有密钥存放到AWS的服务器上。先在本地机器上输出公有密钥:
➜ Downloads cat ~/.ssh/tutorial_rsa.pub # 打印公有密钥的命令 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCgKbI69stUViGbPsF7XpzQt72W2nJ+FRB54D4XXrVb2jvfouX6HoeTgGNV/p/uMA7QmoVaD/Sf2klh8kj3KxQkDiTr/+m19KWjveTxj2ClxDPcjA7H2w8HU0FE/fVNqHt3krtbFyuXj+cTosc8cSciQvZwpFtTqG6ieM/drdxcIYiZ/n3UZejlYV0OvwOt27gnAw7khZI9kifgFZ5+LJ/q/7GIHnUd9TY8EVO5zIDWv6Ykm7od8ZeYJw5sJLclbOQoYeQhOyKqnibnxz0wTr1ZLSiu4EA1Ws0/bS1FGR5NfENV7daXzD/H3VUWPkxcSHWmK/Oe3Jgxuz2K24LjLTxJ roden@D-69-91-128-50.dhcp4.washington.edu # 复制这一段话,不含#后面的注释 ➜ Downloads
然后登录到服务器上面去,把这段话放在roden根目录下的这个文件里面
/ssh/authorized_keys
。命令:
➜ Downloads ssh -i tutorial.pem ubuntu@35.167.194.132 #登录服务器 Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-1013-aws x86_64) ... Last login: Sun Apr 30 22:33:40 2017 from 69.91.128.50 ubuntu@ip-172-31-2-87:~$ su - roden # 切换用户,并切换目录 Password: #输入密码 roden@ip-172-31-2-87:~$ mkdir .ssh # 新建名为“.ssh”的文件夹 roden@ip-172-31-2-87:~$ chmod 700 .ssh/ # 更改文件夹权限。change mode. 700 的第一个7是给自己 # (roden)的权限,7是最高的,“可读可写可执行”;中间那个0是给用户组的,比如学校里面所有的学生;最后那 # 个0是给所有人的。0是没有任何权限。最后的 .ssh 表示我们设置权限的对象是 .ssh 文件夹 roden@ip-172-31-2-87:~$ vi .ssh/authorized_keys #使用vim 新建一个文件,并把之前复制的公有密钥复 # 制进去。步骤在下文有阐述 roden@ip-172-31-2-87:~$ chmod 600 .ssh/authorized_keys #更改这个文件的权限为只有自己“可读可写”
用 vi .ssh/authorized_keys编辑文档的步骤。这句话就相当于是在Windows系统中,在 .ssh文件夹下的新建了一个文本文档 authorized_keys。之后依次键入 i , command V(这个是Mac里的粘贴,如果是Win,使用 CtrlV), esc, :wq, enter(回车键)。 不像Win的文本文档那样有可视化的窗口,有鼠标定位, vi是用命令操作的。刚刚那一串命令含义如下, i 是 insert 的缩写,也就是插入,然后把之前复制的公有密钥粘贴进去, esc 是退出 insert 插入模式,返回接受指令模式, :wq里的 : 是告诉 vi 开始输入指令了, wq是 write quit的缩写,写入后退出,也就是保存并退出。整个一些列操作就像是在Win里面新建了一个文本文档( vi.ssh/authorized_keys),把鼠标放到了第一行第一个字符的位置,并准备输入内容( i),粘贴了一段文字( command V),点了关闭按钮“x”,点击了保存( esc, :wq)。
记得在编辑完了之后,要更改该文件的权限为只有自己可读可写。这是因为登录成功之后,你就对服务器有控制权了,所以Linux对该密钥对文件的安全性要求比较高,否则其人或其他软件更改了该文件的内容后,你可能就不能登录成功,而且服务器会有安全隐患。
现在,我们就可以使用自己生成的密钥对(而不是从AWS上下载的)来登录服务器了。如果你没有更改默认密钥对的路径和名字 .ssh/id_rsa,可以直接使用 ssh USER_NAME@Public_IP来登录。如果更改了,则需要指明私有密钥的位置。
登录,测试sudo权限,切换到默认用户 ubuntu, 切换到超级用户 root的命令如下:
➜ ~ ssh -i .ssh/tutorial_rsa roden@35.160.40.187 # ssh登录服务器 The authenticity of host '35.160.40.187 (35.160.40.187)' can't be established. RSA key fingerprint is 2e:a1:77:26:9e:6a:40:da:3f:b5:96:3b:89:11:a9:39. Are you sure you want to continue connecting (yes/no)? yes # 因为我关闭并重启了AWS的这台机 # 器,AWS重新分配了资源,该机器的fingerprint(指纹)改变了,我本地的电脑不认识那台服务器了,所以有 # 这个提示。输入yes就好。这个跟服务器安全相关,感兴趣的朋友可以谷歌“RSA key fingerprint”。 Warning: Permanently added '35.160.40.187' (RSA) to the list of known hosts. Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-1016-aws x86_64) * Documentation: * Management: * Support: /advantage Get cloud support with Ubuntu Advantage Cloud Guest: http://www./business/services/cloud 26 packages can be updated. 0 updates are security updates. Last login: Sun Apr 30 23:41:26 2017 from 69.91.128.50 # 这些都是欢迎信息 roden@ip-172-31-2-87:~$ sudo ls / # 测试sudo权限 [sudo] password for roden: bin dev home initrd.img.old lib64 media opt root sbin srv tmp var vmlinuz.old boot etc initrd.img lib lost+found mnt proc run snap sys usr vmlinuz roden@ip-172-31-2-87:~$ sudo su - ubuntu # 切换到ubuntu用户 ubuntu@ip-172-31-2-87:~$ pwd # 输出该用户根目录 /home/ubuntu ubuntu@ip-172-31-2-87:~$ sudo su - root # 切换到root用户 root@ip-172-31-2-87:~# pwd # 输出该用户根目录 /root root@ip-172-31-2-87:~# su - roden # 切换回自己 roden@ip-172-31-2-87:~$ pwd # 输出自己的根目录 /home/roden roden@ip-172-31-2-87:~$ # 准备输入下一条命令
这里我们是通过在 su (switch user)前面添加了 sudo 来实现切换到ubuntu,root用户,因为我们不知道这两个用户的密码(实际上默认是没有密码的,只能通过密钥对登录ubuntu用户)。root是权限最大的用户了,有时用这个用户执行管理相关的命令会方便一些,但是会有输错命令、误删文件的风险。所以建议大家使用普通用户,手动输入 sudo来执行超级用户命令。
现在,我们就可以删除之前下载的AWS的私有密钥了,之后可以使用自己生成的密钥登录。用相同的方法可以添加更多的Linux用户。