1. 人工智能
人工智能,机器学习,神经网络和深度学习相互之间的关系如下图所示。
机器学习可以分为有监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)和强化学习(Reinforcement Learning)。如下图所示。
-
有监督学习 有监督学习的数据集包含了样本x与样本的标签y,算法模型需要学习到映射
,其中
代表模型函数,
为模型的参数。在训练的时候,通过计算模型的预测值
与真实标签y之间的误差来优化网络参数
,使得网络下一次能够预测更精准。常见的有监督学习有线性回归,逻辑回归,支持向量机,随机森林等。
-
无监督学习 收集带标签的数据往往代价较为昂贵,对于只有样本x的数据集,算法需要自行发现数据的模态,这种方式叫做无监督学习。无监督学习中有一类算法将自身作为监督信号,即模型需要学习的映射为
,称为自监督学习(Self-supervised Learning)。在训练时,通过计算模型的预测值
与自身x之间的误差来优化网络参数
。常见的无监督学习算法由自编码器,生成对抗网络等。
-
强化学习 也称为增强学习,通过与环境进行交互来学习解决问题的策略的一类算法。与有监督、无监督学习不同,强化学习问题并没有明确的“正确的”动作监督信号,算法需要与环境进行交互,获取环境反馈的滞后的奖励信号,因此并不能通过计算动作与“正确动作”之间的误差来优化网络。常见的强化学习算法有DQN, PPO等。
深度学习算法与其他算法比较如下图所示。
2. 神经网络发展简史
神经网络的发展历程可以大致分为浅层神经网络阶段和深度学习阶段。以2006年为分割点。2006年以前,深度学习以神经网络和连接主义名义发展,经历了2次兴盛和2次寒冬;2006年,Geoffrey Hinton首次将深层神经网络命名为深度学习,开启了深度学的第3次复兴之路。
2.1 浅层神经网络
浅层神经网络的发展时间线如下图所示。
2.2 深度学习
深度学习的发展时间线如下图所示。
3. 深度学习特点
- 数据量
- 计算力
- 网络规模
- 通用智能
4. 深度学习应用
4.1 计算机视觉
- 图片识别(Image Classification):常见的分类问题。神经网络的输入为图片数据,输出值为当前样本属于每个类别的概率,通常选取概率值最大的类别作为样本的预测类别。经典的网络模型有VGG系列、Inception系列、ResNet系列。
- 目标检测(Object Detection):通过算法自动检测出图片中常见物体的大致位置,通常用边界框(Bounding box)表示,并分类出边界框中物体的类别信息。常见的目标检测算法有RCNN, Fast RCNN, Faster RCNN, Mask RCNN, SSD, YOLO系列等。
- 语义分割(Semantic Segmentation):通过算法自动分割并识别出图片中的内容,可以将语义分割理解为每个像素点的分类问题,分析每个像素点属于物体的类别。常见的语义分割模型有FCN, U-net, SegNet, DeepLab系列等。
- 视频理解(Video Understanding):常见的视频理解任务有视频分类,行为检测,视频主体抽取等。常见的模型有C3D, TSN, DOVF, TS_LSTM等。
- 图片生成(Image Generation):通过学习真实图片的分布,并从学习到的分布中采样而获得逼真度较高的生成图片。目前主要的生成模型有VAE系列,GAN系列等。
4.2 自然语言处理
- 机器翻译(Machine Translation)
- 聊天机器人(Chatbot)
4.3 强化学习
- 虚拟游戏
- 机器人
- 自动驾驶
5. 深度学习框架
5.1 主流框架
目前来看,TensorFlow和PyTorch框架是业界使用最为广泛的两个深度学习框架,TensorFlow在工业界拥有完备的解决方案和用户基础,PyTorch得益于其精简灵活的接口设计,可以快速设计调试网络模型。
注:TensorFlow与Keras之间的联系与区别。Keras可以理解为一套高层API的设计规范,Keras本身对这套规范有官方的实现,在TensorFlow中也实现了这套规范,称为tf.keras模块,并挨饿tf.keras将作为TensorFlow2版本的唯一高层接口,避免出现接口重复冗余的问题。
5.2 TensorFlow 2与1.x
TensorFlow 2是一个与TensorFlow 1.x使用体验完全不同的框架,TensorFlow 2不兼容TensorFlow 1.x的代码,同时在编程风格、函数接口设计等上也大相径庭,TensorFlow 1.x的代码需要依赖人工的方式迁移,自动化迁移方法并不靠谱。
TensorFlow 2支持动态图优先模式,在计算时可以同时获得计算图与数值结果,可以代码中调试实时打印数据,搭建网络也像搭积木一样,层层堆叠,非常符合软件开发四维。
TensorFlow深度学习框架3大核心功能:
- 加速计算
- 自动梯度
- 常用神经网络接口
6. 开发环境安装
4大步骤
- 安装Python解释器Anaconda
- 安装CUDA加速器
- 安装TensorFlow框架
- 安装常用编辑器