Python深度学习(第二部分-1)


传送门:
Python深度学习(第一部分)
Python深度学习(第二部分 -1)
Python深度学习(第二部分 -2)


前面几章讲的是"道",这两章就十分接地气地讲"术"

第五章 深度学习用于计算机视觉

  1. 卷积神经网络简介

卷积层-Conv2D层,参数为深度(过滤器),大小,激活函数,输入形状.
可以"学习"的特征有:平移不变性,空间层次结构,机器视觉就是利用了卷积网络的这两个特性进行的.
卷积核(convolution kernel): 对小区域进行全连接的权重矩阵.
本质是通过运算,对图像的小区域进行数值变化.
边界效应,步幅,定义卷积层的参数.

池化层-Pool层: 对特征图进行采样. 一是减少需要处理的特征图的元素个数,二是通过让连续
卷积层的观察窗口越来越大,从而突出特征. 既然要"突出",那么最大池就自然成了最好用的.

注意: Dense 层是从输入特征空间学到全局模式,而卷积层则是通过小窗口的局部模式.

  1. 从头开始训练一个卷积神经网络
  • 小数据问题的相关性: 数据总是多些好,如果小数据,就得得用变换增加数据量

  • 构建网络(同上,用 Conv2D+MaxPooling2D的组合),深度逐渐增加,特征图逐渐减少.

  • 数据预处理: 变成RGB像素网格,转换为浮点数张量,数据[0,1]区间规整


    5-1.png
  • 数据增强: 进行适当的图像变形(扩大数据量)


    5-2.png
  • 添加一个 Dropout 层(随机丢弃一半),减缓过拟合

model.add(layers.Dropout(0.5))

也就三十行代码,就有了识别度82%的东西了,深度学习果然厉害.

  1. 使用预训练的卷积神经网络(VGG16 架构)
  • 特征提取,卷积基


    5-3.png

使用方法:


5-4.png
  • 冻结(freeze): 一个或多个层是指在训练过程中保持其权重不变(不把学习扩散到预先学习的知识中)
  • 模型微调: 靠近输出的地方可以调整


    5-5.png
  1. 卷积神经网络的可视化
  • 可视化卷积神经网络的中间输出(中间激活): 查看连续层的输入变换,随着层数增加,视觉信息减少,类别信息增加.也就是更加抽象了,当然也就更加泛化了.
  • 可视化卷积神经网络的过滤器: 查看过滤器的视觉模式和概念,通过显示梯度下降,显示含卷积神经网络的层如何观察世界.随着层数增加,纹理更加细致
  • 可视化图像中类激活的热力图:理解图像的识别区域,如大象图,显示了识别出大象的重点区域,大象的具体位置(能否用来做图像切分?)

第六章 深度学习用于文本和序列

  1. 处理文本数据

首先需要进行文本向量化: 按照单词划分,按照字母划分,按照N-gram(单词组)划分.
one-hot编码: 简单地序列化
word embedding: 词嵌入(篇幅占比大),通过学习获得一些单词间关系,压缩词向量(信息密度大).获取方法:主任务同时学习,使用预训练词嵌入-wordvec,GloVe,预训练可以大大减少样本量.

  1. 理解循环神经网络

RNN表示数据点并非完全孤立,而是存在先后次序(如气温序列),需要通过"循环连接"保存状态.
Keras有SimpleRNN,LSTM,GRU多个循环层.而SimpleRNN因存在梯度消失问题,时间并不常用.LSTM引入携带(carry),运行过去的信息稍后重新进入循环.

6-1.png
  1. 循环神经网络高级用法

数据准备需要把多个维度的数据进行预处理:可以先求出平均值,再计算每个值得标准差-变换到[0-1]区间.
基准方法MAE: 通过常识获得,如气温为2天的温差
密集连接-误差大于MAE,循环网络基准(MAE),加入循环dropout降低过拟合,通过循环层堆叠改进验证损失,通过双向RNN多维度检测序列(针对气温并不有效)

6-2.png

也就是说,深度学习的好处就是可以通过各种策略,逐步地优化训练结构,使得精度一步步提升.

  1. 用卷积网络处理序列

RNN由于需要上一数据计算的结果作为下一数据的输入,显然并发性较低,计算代价也比较大.可以用卷积神经网络完成类似工作(Conv1D).

对于长序列,还可以通过结合CNN与RNN的方法-取长补短.

6-3.png

你可能感兴趣的:(Python深度学习(第二部分-1))