人工智能简介
- 人工智能是新一轮科技革命和产业变革的重要驱动力量,其发挥作用的广度和深度堪比历次工业革命。蒸汽革命成就了英国,电气和信息化革命成就了美国。如今人工智能的历史机遇正在全面展开,也将成就新的引领者。
- 下图显示了一部典型iPhone手机上安装的一些常用应用程序。苹果Siri等智能助理和智能聊天类应用,正试图颠覆你和手机交流的根本方式;新闻头条等热门新闻应用依赖于人工智能技术向你推送最适合你的新闻内容;美图秀秀等利用人工智能技术自动对照片进行美化;在人工智能的驱动下,谷歌、百度等搜索引擎早已提升到了智能问答、智能助理、智能搜索的新层次;以谷歌翻译为代表的机器翻译技术正在深度学习的帮助下迅速发展;使用滴滴出行时,人工智能算法不断地帮助重新定义智慧出行、智慧交通和智慧城市;使用手机购物时,淘宝等电子商务网站使用人工智能技术为你推荐最适合你的商品,而先进的仓储机器人、物流机器人和物流无人机正帮助电子商务企业高效、安全地分发货物……
- 人工智能是一个融合了多种学科的交叉学科,加上其最近几年的高速发展,内涵和外延也在不断地变化,新兴的子领域不断涌现。如下图所示,较为公认权威地将人工智能子领域分为以机器学习、自然语言处理、知识工程、信息检索与推荐、计算机视觉、语音识别和机器人等为核心的七个人工智能关键技术,以及人机交互、数据挖掘、芯片技术、经典AI、数据库、计算机图形、多媒体、可视化、安全与隐私、计算机网络、计算机系统、计算理论和物联网等十三个人工智能外延技术。
- 从 1956 年“人工智能” 概念在达特茅斯会议上首次被提出至今,人工智能发展已经历经 60 余年, 经历了三次发展浪潮。 当前全球人工智能正处于第三次发展浪潮之中。
- 第一次浪潮(1956-1974年): 1956年达特茅斯会议上,“人工智能”的概念提出,同时出现了最初的成就和最早的一批研究者,被广泛认为是AI诞生的标志,随之掀起了人工智能的第一次发展浪潮。 该时期的核心是让机器具备逻辑推理能力, 开发出计算机可以解决代数应用题、证明几何定理、学习和使用英语的程序, 并且研发出第一款感知神经网络软件和聊天软件。
- 第二次浪潮(1980-1987年):这一时期内,解决特定领域问题的“专家系统” AI 程序开始为全世界的公司所采纳, AI 变得实用起来,知识库系统和知识工程成为了 80 年代 AI研究的主要方向。 Hopfield 神经网络和反向传播(BP)算法被提出。
- 第三次浪潮(1993-2011年):这一时期,计算性能上的基础性障碍已被逐渐克服,里程碑事件有 1997 年的深蓝战胜国际象棋世界冠军、 2016 年和 2017 年的 AlphaGo 击败围棋职业选手等。同时,“智能代理”范式被广泛接受, AI 技术发展超越了研究人类智能的范畴; AI 与数学、经济学等其他学科展开更高层次的合作。2006年以来, 深度学习理论的突破更是带动了人工智能第三次浪潮。这一阶段互联网、云计算、大数据、芯片等新兴技术为人工智能各项技术的发展提供了充足的数据支持和算力支撑,以“人工智能+” 为代表的业务创新模式也随着人工智能技术和产业的发展日趋成熟,这将极大优化社会的生产力,并对现有的产业结构产生深远的影响。
- 关于人工智能理论阶段,存在两种划分方法。
- 第一种划分方法是运算智能、感知智能和认知智能三个阶段。运算智能,即快速计算和记忆存储能力;感知智能,即视觉、听觉、触觉等感知能力;认知智能就是具有推理、可解释性的能力,也是人工智能的高级阶段。 可见,发展第三代人工智能,需要依靠知识、数据、算法和算力四个要素,其中的关键问题是算法。
- 第二种划分方法是感知智能、认知智能和决策智能三个阶段。 为了提高机器决策的准确度,需要加强复杂问题下,提升人机信任度,增强人类与智能系统交互协作智能的研究,即决策智能 。
- 人工智能的发展经历了表示计算到感知智能两个阶段,下一个阶段的核心是认知。 以上两种划分法对此存在共识,即目前发展处于第三代人工智能。
1.1 PyTorch简介
- PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发,不仅能够 实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流框架如TensorFlow都不支持的。
- PyTorch提供了两个高级功能:
- 具有强大的GPU加速的张量计算(如Numpy)
- 包含自动求导系统的深度神经网络
- 2017年1月,FAIR(Facebook AI Research)发布PyTorch。
- PyTorch是在Torch基础上用python语言重新打造的一款深度学习框架。
- Torch是采用Lua语言为接口的机器学习框架,但因Lua语言较为小众,导致Torch知名度不高。
- Pytorch优点
- 上手快:掌握numpy和基本深度学习概念即可上手;
- 代码简洁灵活:用nn.module封装使网络搭建更方便;基于动态图机制,更灵活;
- Debug方便:调试PyTorch就像调试Python代码一样简单;
- 文档规范:https://pytorch.org/docs/ 可查各版本文档;
- 资源多:arXiv中的新算法大多有PyTorch实现;
- 开发者多:Github上贡献者已超过1100+;
- 背靠大树:Facebook维护开发;
- … …
- 当然,现今任何一个深度学习框架都有其缺点,PyTorch也不例外,对比TensorFlow,其全面性处于劣势,目前PyTorch还不支持快速傅里叶、沿维翻转张量和检查无穷与非数值张量;针对移动端、嵌入式部署以及高性能服务器端的部署其性能表现有待提升;其次因为这个框架较新,使得他的社区没有那么强大,在文档方面其C库大多数没有文档。
1.2 环境搭建
Step1 安装依赖
进入Pytorch官网,依次选择天池实验室的配置,这里提供使用pip和conda两种环境下安装的步骤截图
torch对应版本地址: https://pytorch.org/get-started/locally/pip 环境下
# 天池GPU是不联网的,建议在CPU环境下先配置
!pip install torch==1.7.1+cu92 torchvision==0.8.2+cu92 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
conda 环境下
# 天池GPU是不联网的,建议在CPU环境下先配置
!conda install pytorch torchvision torchaudio cudatoolkit=9.2 -c pytorch
Step2 检查torch
import torch
# 检查PyTorch版本
print("PyTorch version: {}".format(torch.__version__))
print("Corresponding CUDA version:{}".format(torch.version.cuda))
print("Corresponding cuDNN version:{}".format(torch.backends.cudnn.version()))
print("GPU type:{}".format(torch.cuda.get_device_name(0)))
# 判断是否有CUDA支持
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print("hello pytorch {}".format(device))