modify ch9,ch10 contents img/ch8,ch9 to img/ch9,ch10 and add new img/ch7,ch8,ch11,ch12,ch14,ch16
This commit is contained in:
parent
6be57a1ee2
commit
8395722892
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
# **第九章 图像分割**
|
||||
|
||||
## **8.1 传统的基于CNN的分割方法缺点?**
|
||||
## **9.1 传统的基于CNN的分割方法缺点?**
|
||||
  
|
||||
传统的基于CNN的分割方法:为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入,用于训练与预测,这种方法主要有几个缺点:
|
||||
  
|
||||
|
|
@ -21,9 +21,9 @@
|
|||
而全卷积网络(FCN)则是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。
|
||||
|
||||
|
||||
**8.1 FCN**
|
||||
**9.1 FCN**
|
||||
|
||||
**8.1.1 FCN改变了什么?**
|
||||
**9.1.1 FCN改变了什么?**
|
||||
|
||||
  
|
||||
对于一般的分类CNN网络,如VGG和Resnet,都会在网络的最后加入一些全连接层,经过softmax后就可以获得类别概率信息。但是这个概率信息是1维的,即只能标识整个图片的类别,不能标识每个像素点的类别,所以这种全连接方法不适用于图像分割。
|
||||
|
|
@ -34,14 +34,14 @@
|
|||
<center><img src="../img/ch9/figure_9.1.1_2.jpg"></center>
|
||||
<center>图 4</center>
|
||||
|
||||
**8.1.2 FCN网络结构?**
|
||||
**9.1.2 FCN网络结构?**
|
||||
|
||||
  
|
||||
FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
|
||||
下图是语义分割所采用的全卷积网络(FCN)的结构示意图:
|
||||
<center><img src="../img/ch9/figure_9.1.2_1.jpg"></center>
|
||||
|
||||
**8.1.3全卷积网络举例?**
|
||||
**9.1.3全卷积网络举例?**
|
||||
|
||||
  
|
||||
通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量。以AlexNet为代表的经典CNN结构适合于图像级的分类和回归任务,因为它们最后都得到整个输入图像的一个概率向量,比如AlexNet的ImageNet模型输出一个1000维的向量表示输入图像属于每一类的概率(softmax归一化)。
|
||||
|
|
@ -56,7 +56,7 @@ FCN对图像进行像素级的分类,从而解决了语义级别的图像分
|
|||
  
|
||||
(3)CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征: 较浅的卷积层感知域较小,学习到一些局部区域的特征 较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。高层的抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高, 所以我们常常可以将卷积层看作是特征提取器。
|
||||
|
||||
**8.1.4为什么CNN对像素级别的分类很难?**
|
||||
**9.1.4为什么CNN对像素级别的分类很难?**
|
||||
|
||||
  
|
||||
(1)存储开销很大。例如对每个像素使用的图像块的大小为15x15,然后不断滑动窗口,每次滑动的窗口给CNN进行判别分类,因此则所需的存储空间根据滑动窗口的次数和大小急剧上升。
|
||||
|
|
@ -65,7 +65,7 @@ FCN对图像进行像素级的分类,从而解决了语义级别的图像分
|
|||
  
|
||||
(3)像素块大小的限制了感知区域的大小。通常像素块的大小比整幅图像的大小小很多,只能提取一些局部的特征,从而导致分类的性能受到限制。
|
||||
|
||||
**8.1.5全连接层和卷积层如何相互转化?**
|
||||
**9.1.5全连接层和卷积层如何相互转化?**
|
||||
|
||||
  
|
||||
**两者相互转换的可能性:**
|
||||
|
|
@ -86,12 +86,12 @@ FCN对图像进行像素级的分类,从而解决了语义级别的图像分
|
|||
  
|
||||
(3)最后一个全连接层也做类似的,令其F=1,K=1000,最终输出为[1x1x1000]。
|
||||
|
||||
**8.1.6 FCN的输入图片为什么可以是任意大小?**
|
||||
**9.1.6 FCN的输入图片为什么可以是任意大小?**
|
||||
|
||||
  
|
||||
对于CNN,一幅输入图片在经过卷积和pooling层时,这些层是不关心图片大小的。比如对于一个卷积层,outputsize = (inputsize - kernelsize) / stride + 1,它并不关心inputsize多大,对于一个inputsize大小的输入feature map,滑窗卷积,输出outputsize大小的feature map即可。pooling层同理。但是在进入全连接层时,feature map(假设大小为n×n)要拉成一条向量,而向量中每个元素(共n×n个)作为一个结点都要与下一个层的所有结点(假设4096个)全连接,这里的权值个数是4096×n×n,而我们知道神经网络结构一旦确定,它的权值个数都是固定的,所以这个n不能变化,n是conv5的outputsize,所以层层向回看,每个outputsize都要固定,那每个inputsize都要固定,因此输入图片大小要固定。
|
||||
|
||||
**8.1.7把全连接层的权重W重塑成卷积层的滤波器有什么好处?**
|
||||
**9.1.7把全连接层的权重W重塑成卷积层的滤波器有什么好处?**
|
||||
|
||||
  
|
||||
这样的转化可以在单个向前传播的过程中, 使得卷积网络在一张更大的输入图片上滑动,从而得到多个输出(可以理解为一个label map)。
|
||||
|
|
@ -120,7 +120,7 @@ FCN对图像进行像素级的分类,从而解决了语义级别的图像分
|
|||
  
|
||||
相较于使用被转化前的原始卷积神经网络对所有36个位置进行迭代计算优化模型,然后再对36个位置做预测,使用转化后的卷积神经网络进行一次前向传播计算要高效得多,因为36次计算都在共享计算资源。这一技巧在实践中经常使用,通常将一张图像尺寸变得更大,然后使用变换后的卷积神经网络来对空间上很多不同位置进行评价得到分类评分,然后在求这些分值的平均值。
|
||||
|
||||
**8.1.8反卷积层理解**
|
||||
**9.1.8反卷积层理解**
|
||||
|
||||
  
|
||||
Upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的参数和CNN的参数一样是在训练FCN模型的过程中通过bp算法学习得到。反卷积层也是卷积层,不关心input大小,滑窗卷积后输出output。deconv并不是真正的deconvolution(卷积的逆变换),最近比较公认的叫法应该是transposed convolution,deconv的前向传播就是conv的反向传播。
|
||||
|
|
@ -135,7 +135,7 @@ Upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的
|
|||
<center><img src="../img/ch9/figure_9.1.8_2.png"></center>
|
||||
<center>上图中的反卷积,input feature map是3×3, 转化后是5×5, output是5×5</center>
|
||||
|
||||
**8.1.9跳级(skip)结构**
|
||||
**9.1.9跳级(skip)结构**
|
||||
|
||||
  
|
||||
对CNN的结果做处理,得到了dense prediction,而作者在试验中发现,得到的分割结果比较粗糙,所以考虑加入更多前层的细节信息,也就是把倒数第几层的输出和最后的输出做一个fusion,实际上也就是加和:
|
||||
|
|
@ -143,7 +143,7 @@ Upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的
|
|||
  
|
||||
实验表明,这样的分割结果更细致更准确。在逐层fusion的过程中,做到第三行再往下,结果又会变差,所以作者做到这里就停了。
|
||||
|
||||
**8.1.10模型训练**
|
||||
**9.1.10模型训练**
|
||||
|
||||
  
|
||||
(1)用AlexNet,VGG16或者GoogleNet训练好的模型做初始化,在这个基础上做fine-tuning,全部都fine-tuning,只需在末尾加上upsampling,参数的学习还是利用CNN本身的反向传播原理。
|
||||
|
|
@ -200,14 +200,14 @@ learning rate:0.001。
|
|||
最后一层反卷积固定位bilinear插值不做学习。
|
||||
<center><img src="../img/ch9/figure_9.1.10_6.png"></center>
|
||||
|
||||
**8.1.11 FCN缺点**
|
||||
**9.1.11 FCN缺点**
|
||||
|
||||
  
|
||||
(1)得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。
|
||||
  
|
||||
(2)对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。
|
||||
|
||||
## **8.2 U-Net**
|
||||
## **9.2 U-Net**
|
||||
|
||||
  
|
||||
卷积网络的典型利用是在分类任务,输出任务的单个类标签。然而,在许多视觉任务,尤其是生物医学图像处理,目标输出应该包括定位等,每个像素都应该有类标签。另外,大量的训练图片往往超过生物医学图像的任务要求。所以,Ciresan等训练了一个神经网络,用滑动窗口来预测每个像素的类标签,提供像素的周围区域(patch)作为输入。首先,这个网络可以定位。第二,输入的是patches,这样训练数据就比图片数据多很多。
|
||||
|
|
@ -304,7 +304,7 @@ def get_unet():
|
|||
return model
|
||||
```
|
||||
|
||||
## **8.3 SegNet**
|
||||
## **9.3 SegNet**
|
||||
  
|
||||
可训练的图像分割引擎,包含一个encoder网络,一个对应的decoder网络,衔接像素级分类层,解码网络与VGG16的13层卷积层相同。解码网络是将低分辨率的编码特征图映射到全分辨率的特征图。解码网络使用最大池化层的池化索引进行非线性上采样,上采样过程就不需要学习。上采样得到的稀疏图与可训练的滤波器卷积得到致密的特征图。
|
||||
  
|
||||
|
|
@ -332,7 +332,7 @@ SegNet解码技术如下图所示:
|
|||
  
|
||||
SegNet的Encoder过程中,卷积的作用是提取特征,SegNet使用的卷积为same卷积(详见卷积神经网络CNN(1)),即卷积后不改变图片大小;在Decoder过程中,同样使用same卷积,不过卷积的作用是为upsampling变大的图像丰富信息,使得在Pooling过程丢失的信息可以通过学习在Decoder得到。SegNet中的卷积与传统CNN的卷积并没有区别。
|
||||
|
||||
## **8.4 空洞卷积(Dilated Convolutions)**
|
||||
## **9.4 空洞卷积(Dilated Convolutions)**
|
||||
|
||||
  
|
||||
在图像分割领域,图像输入到CNN(典型的网络比如FCN[3])中,FCN先像传统的CNN那样对图像做卷积再pooling,降低图像尺寸的同时增大感受野,但是由于图像分割预测是pixel-wise的输出,所以要将pooling后较小的图像尺寸upsampling到原始的图像尺寸进行预测(upsampling一般采用deconv反卷积操作,deconv可参见知乎答案如何理解深度学习中的deconvolution networks?),之前的pooling操作使得每个pixel预测都能看到较大感受野信息。因此图像分割FCN中有两个关键,一个是pooling减小图像尺寸增大感受野,另一个是upsampling扩大图像尺寸。在先减小再增大尺寸的过程中,肯定有一些信息损失掉了,那么能不能设计一种新的操作,不通过pooling也能有较大的感受野看到更多的信息呢?答案就是dilated conv。
|
||||
|
|
@ -357,7 +357,7 @@ SegNet的Encoder过程中,卷积的作用是提取特征,SegNet使用的卷
|
|||
  
|
||||
dilated的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。在图像需要全局信息或者语音文本需要较长的sequence信息依赖的问题中,都能很好的应用dilated conv,比如图像分割、语音合成WaveNet、机器翻译ByteNet中。
|
||||
|
||||
## **8.5 RefineNet**
|
||||
## **9.5 RefineNet**
|
||||
|
||||
  
|
||||
网络结构:
|
||||
|
|
@ -383,7 +383,7 @@ Chained residual pooling 没太看懂怎么残差相加的(其中的ReLU非常
|
|||
  
|
||||
Output convolutions就是输出前再加一个RCU。
|
||||
|
||||
## **8.6 PSPNet**
|
||||
## **9.6 PSPNet**
|
||||
|
||||
  
|
||||
场景解析对于无限制的开放词汇和不同场景来说是具有挑战性的.本文使用文中的pyramid pooling module实现基于不同区域的上下文集成,提出了PSPNet,实现利用上下文信息的能力进行场景解析。
|
||||
|
|
@ -420,9 +420,9 @@ FCN认为右侧框中是汽车,但是实际上是船,如果参考上下文
|
|||
并且加入额外的深度监督 Loss
|
||||
<center><img src="../img/ch9/figure_9.6_3.png"></center>
|
||||
|
||||
## **8.7 DeepLab系列**
|
||||
## **9.7 DeepLab系列**
|
||||
|
||||
**8.7.1 DeepLabv1**
|
||||
**9.7.1 DeepLabv1**
|
||||
|
||||
  
|
||||
DeepLab 是结合了深度卷积神经网络(DCNNs)和概率图模型(DenseCRFs)的方法。
|
||||
|
|
@ -439,7 +439,7 @@ DeepLab 是结合了深度卷积神经网络(DCNNs)和概率图模型(Dens
|
|||
  
|
||||
论文模型基于 VGG16,在 Titan GPU 上运行速度达到了 8FPS,全连接 CRF 平均推断需要 0.5s ,在 PASCAL VOC-2012 达到 71.6% IOU accuracy。
|
||||
|
||||
**8.7.2 DeepLabv2**
|
||||
**9.7.2 DeepLabv2**
|
||||
|
||||
  
|
||||
DeepLabv2 是相对于 DeepLabv1 基础上的优化。DeepLabv1 在三个方向努力解决,但是问题依然存在:特征分辨率的降低、物体存在多尺度,DCNN 的平移不变性。
|
||||
|
|
@ -454,7 +454,7 @@ DCNN 的分类不变形影响空间精度。DeepLabv2 是采样全连接的 CRF
|
|||
  
|
||||
论文模型基于 ResNet,在 NVidia Titan X GPU 上运行速度达到了 8FPS,全连接 CRF 平均推断需要 0.5s ,在耗时方面和 DeepLabv1 无差异,但在 PASCAL VOC-2012 达到 79.7 mIOU。
|
||||
|
||||
**8.7.3 DeepLabv3**
|
||||
**9.7.3 DeepLabv3**
|
||||
|
||||
  
|
||||
好的论文不止说明怎么做,还告诉为什么。DeepLab 延续到 DeepLabv3 系列,依然是在空洞卷积做文章,但是探讨不同结构的方向。
|
||||
|
|
@ -475,7 +475,7 @@ DeepLabv1-v2 都是使用带孔卷积提取密集特征来进行语义分割。
|
|||
  
|
||||
此外,DeepLabv3 将修改之前提出的带孔空间金字塔池化模块,该模块用于探索多尺度卷积特征,将全局背景基于图像层次进行编码获得特征,取得 state-of-art 性能,在 PASCAL VOC-2012 达到 86.9 mIOU。
|
||||
|
||||
**8.7.4 DeepLabv3+**
|
||||
**9.7.4 DeepLabv3+**
|
||||
|
||||
  
|
||||
语义分割关注的问题:
|
||||
|
|
@ -520,8 +520,8 @@ Xception 主要采用了deepwish seperable convolution来替换原来的卷积
|
|||
  
|
||||
额外的RELU层和归一化操作添加在每个 3 × 3 depthwise convolution之后(原来只在1 * 1卷积之后)
|
||||
|
||||
## **8.8 Mask-R-CNN**
|
||||
**8.8.1 Mask-RCNN 的网络结构示意图**
|
||||
## **9.8 Mask-R-CNN**
|
||||
**9.8.1 Mask-RCNN 的网络结构示意图**
|
||||
<center><img src="../img/ch9/figure_9.8_1.png"></center>
|
||||
|
||||
  
|
||||
|
|
@ -541,7 +541,7 @@ Xception 主要采用了deepwish seperable convolution来替换原来的卷积
|
|||
  
|
||||
4)不借助 Trick,在每个任务上,效果优于目前所有的 single-model entries;包括 COCO 2016 的Winners。
|
||||
|
||||
**8.8.2 RCNN行人检测框架**
|
||||
**9.8.2 RCNN行人检测框架**
|
||||
|
||||
  
|
||||
来看下后面两种 RCNN 方法与 Mask 结合的示意图:
|
||||
|
|
@ -549,7 +549,7 @@ Xception 主要采用了deepwish seperable convolution来替换原来的卷积
|
|||
  
|
||||
图中灰色部分是 原来的 RCNN 结合 ResNet or FPN 的网络,下面黑色部分为新添加的并联 Mask层,这个图本身与上面的图也没有什么区别,旨在说明作者所提出的Mask RCNN 方法的泛化适应能力 - 可以和多种 RCNN框架结合,表现都不错。
|
||||
|
||||
**8.8.3 Mask-RCNN 技术要点**
|
||||
**9.8.3 Mask-RCNN 技术要点**
|
||||
|
||||
  
|
||||
**1.技术要点1 - 强化的基础网络**
|
||||
|
|
@ -581,7 +581,7 @@ Why K个mask?通过对每个 Class 对应一个 Mask 可以有效避免类间
|
|||
另外,作者给出了很多实验分割效果,就不都列了,只贴一张 和 FCIS 的对比图(FCIS 出现了Overlap 的问题)
|
||||
<center><img src="../img/ch9/figure_9.8_4.png"></center>
|
||||
|
||||
## **8.9 CNN在基于弱监督学习的图像分割中的应用**
|
||||
## **9.9 CNN在基于弱监督学习的图像分割中的应用**
|
||||
|
||||
  
|
||||
https://zhuanlan.zhihu.com/p/23811946
|
||||
|
|
@ -598,7 +598,7 @@ https://zhuanlan.zhihu.com/p/23811946
|
|||
  
|
||||
3, 对图像中的物体区域做部分像素的标记,例如画一些线条、涂鸦等(scribbles)。
|
||||
|
||||
**8.9.1 Scribble标记**
|
||||
**9.9.1 Scribble标记**
|
||||
|
||||
  
|
||||
ScribbleSup: Scribble-Supervised Convolutional Networks for Semantic Segmentation (CVPR 2016)
|
||||
|
|
@ -621,7 +621,7 @@ $$
|
|||
上式的最优化是通过交替求 和 的最优值来实现的。文章中发现通过三次迭代就能得到比较好的结果。
|
||||
<center><img src="../img/ch9/figure_9.9_3.png"></center>
|
||||
|
||||
**8.9.2 图像级别标记**
|
||||
**9.9.2 图像级别标记**
|
||||
|
||||
  
|
||||
Constrained Convolutional Neural Networks for Weakly Supervised Segmentation (ICCV 2015)
|
||||
|
|
@ -642,7 +642,7 @@ $$
|
|||
  
|
||||
实验中发现单纯使用Image tags作为限制条件得到的分割结果还比较差,在PASCAL VOC 2012 test数据集上得到的mIoU为35.6%,加上物体大小的限制条件后能达到45.1%, 如果再使用bounding box做限制,可以达到54%。FCN-8s可以达到62.2%,可见弱监督学习要取得好的结果还是比较难。
|
||||
|
||||
**8.9.3 DeepLab+bounding box+image-level labels**
|
||||
**9.9.3 DeepLab+bounding box+image-level labels**
|
||||
|
||||
  
|
||||
Weakly- and Semi-Supervised Learning of a DCNN for Semantic Image Segmentation
|
||||
|
|
@ -660,7 +660,7 @@ $$
|
|||
  
|
||||
对于给出bounding box标记的训练图像,该方法先使用CRF对该训练图像做自动分割,然后在分割的基础上做全监督学习。通过实验发现,单纯使用图像级别的标记得到的分割效果较差,但是使用bounding box的训练数据可以得到较好的结果,在VOC2012 test数据集上得到mIoU 62.2%。另外如果使用少量的全标记图像和大量的弱标记图像进行结合,可以得到与全监督学习(70.3%)接近的分割结果(69.0%)。
|
||||
|
||||
**8.9.4统一的框架**
|
||||
**9.9.4统一的框架**
|
||||
|
||||
  
|
||||
Learning to Segment Under Various Forms of Weak Supervision (CVPR 2015)
|
||||
|
|
@ -680,24 +680,24 @@ $$
|
|||
  
|
||||
小结:在弱标记的数据集上训练图像分割算法可以减少对大量全标记数据的依赖,在大多数应用中会更加贴合实际情况。弱标记可以是图像级别的标记、边框和部分像素的标记等。训练的方法一般看做是限制条件下的最优化方法。另外EM算法可以用于CNN参数和像素类别的联合求优。
|
||||
|
||||
## 8.10 DenseNet(贡献者:黄钦建-华南理工大学)
|
||||
## 9.10 DenseNet(贡献者:黄钦建-华南理工大学)
|
||||
|
||||
这篇论文是CVPR2017年的最佳论文。
|
||||
|
||||
卷积神经网络结构的设计主要朝着两个方向发展,一个是更宽的网络(代表:GoogleNet、VGG),一个是更深的网络(代表:ResNet)。但是随着层数的加深会出现一个问题——梯度消失,这将会导致网络停止训练。到目前为止解决这个问题的思路基本都是在前后层之间加一个identity connections(short path)。
|
||||
|
||||

|
||||

|
||||
|
||||
由上图中可知Resnet是做值的相加(也就是add操作),通道数是不变的。而DenseNet是做通道的合并(也就是Concatenation操作),就像Inception那样。从这两个公式就可以看出这两个网络的本质不同。此外DensetNet的前面一层输出也是后面所有层的输入,这也不同于ResNet残差网络。
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
DenseNet的Block结构如上图所示。
|
||||
|
||||
1*1卷积核的目的:减少输入的特征图数量,这样既能降维减少计算量,又能融合各个通道的特征。我们将使用BottleNeck Layers的DenseNet表示为DenseNet-B。(在论文的实验里,将1×1×n小卷积里的n设置为4k,k为每个H产生的特征图数量)
|
||||
|
||||

|
||||

|
||||
|
||||
上图是DenseNet网络的整体网络结构示意图。其中1*1卷积核的目的是进一步压缩参数,并且在Transition Layer层有个参数Reduction(范围是0到1),表示将这些输出缩小到原来的多少倍,默认是0.5,这样传给下一个Dense Block的时候channel数量就会减少一半。当Reduction的值小于1的时候,我们就把带有这种层的网络称为DenseNet-C。
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# 第九章 强化学习
|
||||
## 9.1强化学习的主要特点?
|
||||
# 第十章 强化学习
|
||||
## 10.1强化学习的主要特点?
|
||||
其他许多机器学习算法中学习器都是学得怎样做,而RL是在尝试的过程中学习到在特定的情境下选择哪种行动可以得到最大的回报。在很多场景中,当前的行动不仅会影响当前的rewards,还会影响之后的状态和一系列的rewards。RL最重要的3个特定在于:
|
||||
(1) 基本是以一种闭环的形式;
|
||||
(2) 不会直接指示选择哪种行动(actions);
|
||||
|
|
@ -12,14 +12,14 @@
|
|||
小孩想要走路,但在这之前,他需要先站起来,站起来之后还要保持平衡,接下来还要先迈出一条腿,是左腿还是右腿,迈出一步后还要迈出下一步。
|
||||
小孩就是 agent,他试图通过采取行动(即行走)来操纵环境(行走的表面),并且从一个状态转变到另一个状态(即他走的每一步),当他完成任务的子任务(即走了几步)时,孩子得到奖励(给巧克力吃),并且当他不能走路时,就不会给巧克力。
|
||||
|
||||

|
||||

|
||||
|
||||
上图中agent代表自身,如果是自动驾驶,agent就是车;如果你玩游戏它就是你当前控制的游戏角色,如马里奥,马里奥往前走时环境就一直在发生变化,有小怪物或者障碍物出现,它需要通过跳跃来进行躲避,就是要做action(如向前走和跳起的动作);无人驾驶的action就是车左转、右转或刹车等等,它无时无刻都在与环境产生交互,action会反馈给环境,进而改变环境,如果自动驾驶的车行驶目标是100米,它向前开了10米,那环境就发生了变化,所以每次产生action都会导致环境改变,环境的改变会反馈给自身(agent),就是这样的一个循环;反馈又两种方式:1、做的好(reward)即正反馈,2、做得不好(punishment惩罚)即负反馈。Agent可能做得好,也可能做的不好,环境始终都会给它反馈,agent会尽量去做对自身有利的决策,通过反反复复这样的一个循环,agent会越来越做的好,就像孩子在成长过程中会逐渐明辨是非,这就是强化学习。
|
||||
## 9.2强化学习应用实例
|
||||
## 10.2强化学习应用实例
|
||||
(1)Manufacturing
|
||||
|
||||
例如一家日本公司 Fanuc,工厂机器人在拿起一个物体时,会捕捉这个过程的视频,记住它每次操作的行动,操作成功还是失败了,积累经验,下一次可以更快更准地采取行动。
|
||||

|
||||

|
||||
|
||||
(2)Inventory Management
|
||||
|
||||
|
|
@ -48,10 +48,10 @@
|
|||
(8)Medical Industry
|
||||
|
||||
动态治疗方案(DTR)是医学研究的一个主题,是为了给患者找到有效的治疗方法。 例如癌症这种需要长期施药的治疗,强化学习算法可以将患者的各种临床指标作为输入 来制定治疗策略。
|
||||
## 9.3强化学习和监督式学习、非监督式学习的区别
|
||||
## 10.3强化学习和监督式学习、非监督式学习的区别
|
||||
在机器学习中,我们比较熟知的是监督式学习,非监督学习,此外还有一个大类就是强化学习:
|
||||
当前的机器学习算法可以分为3种:有监督的学习(Supervised Learning)、无监督的学习(Unsupervised Learning)和强化学习(Reinforcement Learning),结构图如下所示:
|
||||

|
||||

|
||||
|
||||
### 强化学习和监督式学习的区别:
|
||||
监督式学习就好比你在学习的时候,有一个导师在旁边指点,他知道怎么是对的怎么是错的,但在很多实际问题中,例如 chess,go,这种有成千上万种组合方式的情况,不可能有一个导师知道所有可能的结果。
|
||||
|
|
@ -85,28 +85,28 @@ exploitation 会尝试过去经验中最有效的行为。
|
|||
从训练样本歧义性角度进行的分类体系,在近几年可望有一些扩展,例如多示例学习(multi-instancelearning)等从训练样本歧义性方面来看很特殊的新的学习框架有可能会进入该体系。但到目前为止,没有任何新的框架得到了公认的地位。另外,半监督学习(semi-supervisedlearning)也有一定希望,它的障碍是半监督学习中的歧义性并不是与生俱来的,而是人为的,即用户期望用未标记的样本来辅助对已标记样本的学习。这与监督学习、非监督学习、强化学习等天生的歧义性完全不同。半监督学习中人为的歧义性在解决工程问题上是需要的、有用的(对大量样本进行标记的代价可能是极为昂贵的),但可能不太会导致方法学或对学习问题视点的大的改变。
|
||||
|
||||
**强化学习和前二者的本质区别**:没有前两者具有的明确数据概念,它不知道结果,只有目标。数据概念就是大量的数据,有监督学习、无监督学习需要大量数据去训练优化你建立的模型,就像猫狗识别,用n多张猫狗图片去训练模型,经过训练优化后,你用一张崭新的猫狗图片让模型作出判断,这个模型就知道是猫还是狗。
|
||||
## 9.4 强化学习主要有哪些算法?
|
||||
## 10.4 强化学习主要有哪些算法?
|
||||
强化学习不需要监督信号,可以在模型未知的环境中平衡探索和利用, 其主要算法有蒙特卡罗强化学习, 时间差分(temporal difference: TD)学习, 策略梯度等。典型的深度强化学习算法特点及性能比较如下图所示:
|
||||

|
||||

|
||||
|
||||
除了上述深度强化学习算法,还有深度迁移强化学习、分层深度强化学习、深度记忆强化学习以及多智能体强化学习等算法。
|
||||
## 9.5深度迁移强化学习算法
|
||||
## 10.5深度迁移强化学习算法
|
||||
传统深度强化学习算法每次只能解决一种游戏任务, 无法在一次训练中完成多种任务. 迁移学习和强化学习的结合也是深度强化学习的一种主要思路。
|
||||
|
||||
Parisotto等提出了一种基于行为模拟的深度迁移强化学习算法. 该算法通过监督信号的指导, 使得单一的策略网络学习各自的策略, 并将知识迁移到新任务中. Rusa等提出策略蒸馏(policy distillation)深度迁移强化学习算法. 策略蒸馏算法中分为学习网络和指导网络, 通过这两个网络Q值的偏差来确定目标函数,引导学习网络逼近指导网络的值函数空间. 此后,Rusa等又提出了一种基于渐进神经网络(progressive neural networks, PNN)的深度迁移强化学习算法.PNN是一种把神经网络和神经网络连起来的算法. 它在一系列序列任务中, 通过渐进的方式来存储知识和提取特征, 完成了对知识的迁移. PNN最终实现多个独立任务的训练, 通过迁移加速学习过程, 避免灾难性遗忘. Fernando 等提出了路径网络(PathNet)[45].PathNet可以说是PNN的进阶版. PathNet把网络中每一层都看作一个模块, 把构建一个网络看成搭积木,也就是复用积木. 它跟PNN非常类似, 只是这里不再有列, 而是不同的路径. PathNet将智能体嵌入到神经网络中, 其中智能体的任务是为新任务发现网络中可以复用的部分. 智能体是网络之中的路径, 其决定了反向传播过程中被使用和更新的参数范围. 在一系列的Atari强化学习任务上, PathNet都实现了正迁移, 这表明PathNet在训练神经网络上具有通用性应用能力.PathNet也可以显著提高A3C算法超参数选择的鲁棒性. Schaul等提出了一种通用值函数逼近器(universalvalue function approximators, UVFAs)来泛化状态和目标空间.UVFAs可以将学习到的知识迁移到环境动态特性相同但目标不同的新任务中.
|
||||
## 9.6分层深度强化学习算法
|
||||
## 10.6分层深度强化学习算法
|
||||
分层强化学习可以将最终目标分解为多个子任务来学习层次化的策略, 并通过组合多个子任务的策略形成有效的全局策略. Kulkarni等提出了分层DQN(hierarchical deep Q-network, h--DQN) 算法. h--DQN基于时空抽象和内在激励分层, 通过在不同的时空尺度上设置子目标对值函数进行层次化处理. 顶层的值函数用于确定宏观决策, 底层的值函数用于确定具体行动.Krishnamurthy等在h--DQN的基础上提出了基于内部选择的分层深度强化学习算法. 该模型结合时空抽象和深度神经网络, 自动地完成子目标的学习, 避免了特定的内在激励和人工设定中间目标,加速了智能体的学习进程, 同时也增强了模型的泛化能力. Kulkarni等基于后续状态表示法提出了深度后续强化学习(deep successor reinforcement learning,DSRL).DSRL通过阶段性地分解子目标和学习子目标策略, 增强了对未知状态空间的探索, 使得智能体更加适应那些存在延迟反馈的任务.Vezhnevets等受封建(feudal)强化学习算法的启发, 提出一种分层深度强化学习的架构FeUdal网络(FuNs)[49]. FuNs框架使用一个管理员模块和一个工人模块. 管理员模块在较低的时间分辨率下工作, 设置抽象目标并传递给工人模块去执行. FuNs框架创造了一个稳定的自然层次结构, 并且允许两个模块以互补的方式学习. 实验证明, FuNs有助于处理长期信用分配和记忆任务,在Atari视频游戏和迷宫游戏中都取得了不错的效果。
|
||||
## 9.7深度记忆强化学习算法
|
||||
## 10.7深度记忆强化学习算法
|
||||
传统的深度强化学习模型不具备记忆、认知、推理等高层次的能力, 尤其是在面对状态部分可观察和延迟奖赏的情形时. Junhyuk等通过在传统的深度强化学习模型中加入外部的记忆网络部件和反馈控制机制, 提出反馈递归记忆Q网络(feedback recurrent memory Q-network, FRMQN)). FRMQN模型具备了一定的记忆与推理功能, 通过反馈控制机制,FRMQN整合过去存储的有价值的记忆和当前时刻的上下文状态, 评估动作值函数并做出决策. FRMQN初步模拟了人类的主动认知与推理能力, 并完成了一些高层次的认知任务. 在一些未经过训练的任务中,FRMQN模型表现出了很强的泛化能力.Blundell等设计出一种模型无关的情节控制算法(model-free episode control, MFEC). MFEC可以快速存储和回放状态转移序列, 并将回放的序列整合到结构化知识系统中, 使得智能体在面对一些复杂的决策任务时, 能快速达到人类玩家的水平.MFEC通过反向经验回放, 使智能体拥有初步的情节记忆. 实验表明, 基于MFEC算法的深度强化学习不仅可以在Atari游戏中学习到有效策略, 还可以处理一些三维场景的复杂任务. Pritzel等在MFEC的基础上进一步提出了神经情节控制(neural episodic control, NEC),有效提高了深度强化学习智能体的记忆能力和学习效率[53]. NEC能快速吸收新经验并依据新经验来采取行动. 价值函数包括价值函数渐变状态表示和价值函数快速更新估计两部分. 大量场景下的研究表明,NEC的学习速度明显快于目前最先进的通用深度强化学习智能体.
|
||||
## 9.8 多智能体深度强化学习算法
|
||||
## 10.8 多智能体深度强化学习算法
|
||||
在一些复杂场景中, 涉及到多智能体的感知决策问题, 这时需要将单一模型扩展为多个智能体之间相互合作、通信及竞争的多智能体深度强化学习系统.Foerster等提出了一种称为分布式深度递归Q网络(deep distributed recurrent Q-networks, DDRQN) 的模型, 解决了状态部分可观测状态下的多智能体通信与合作的挑战性难题[54]. 实验表明, 经过训练的DDRQN模型最终在多智能体之间达成了一致的通信协1536 控制理论与应用第34 卷议, 成功解决了经典的红蓝帽子问题.让智能体学会合作与竞争一直以来都是人工智能领域内的一项重要研究课题, 也是实现通用人工智能的必要条件. Lowe等提出了一种用于合作–竞争混合环境的多智能体actor-critic 算法(multi-agent deepdeterministic policy gradient, MADDPG)[55]. MADDPG对DDPG强化学习算法进行了延伸, 可实现多智能体的集中式学习和分布式执行, 让智能体学习彼此合作和竞争. 在多项测试任务中, MADDPG的表现都优于DDPG.
|
||||
## 9.9强化学习开源框架
|
||||
## 10.9强化学习开源框架
|
||||
谷歌TensorFlow Agents ---TensorFlow的加强版,它提供许多工具,通过强化学习可以实现各类智能应用程序的构建与训练。这个框架能够将OpoenAI Gym接口扩展至多个并行环境,并允许各代理立足TensorFlow之内实现以执行批量计算。其面向OpoenAI Gy环境的批量化接口可与TensorFlow实现全面集成,从而高效执行各类算法。该框架还结合有BatchPPO,一套经过优化的近端策略优化算法实现方案。其核心组件包括一个环境打包器,用于在外部过程中构建OpenAI Gym环境; 一套批量集成,用于实现TensorFlow图步并以强化学习运算的方式重置函数; 外加用于将TensorFlow图形批处理流程与强化学习算法纳入训练特内单一却步的组件。
|
||||
|
||||
Roboschool:Roboschool 提供开源软件以通过强化学习构建并训练机器人模拟。其有助于在同一环境当中对多个代理进行强化学习训练。通过多方训练机制,您可以训练同一代理分别作为两方玩家(因此能够自我对抗)、使用相同算法训练两套代理,或者设置两种算法进行彼此对抗。Roboschool由OpenAI开发完成,这一非营利性组织的背后赞助者包括Elon Musk、Sam Altman、Reid Hoffman以及Peter Thiel。其与OpenAI Gym相集成,后者是一套用于开发及评估强化学习算法的开源工具集。OpenAI Gym与TensorFlow、Theano以及其它多种深度学习库相兼容。OpenAI Gym当中包含用于数值计算、游戏以及物理引擎的相关代码。Roboschool基于Bullet物理引擎,这是一套开源许可物理库,并被其它多种仿真软件——例如Gazebo与Virtual Robot Experimentation Platform(简称V-REP)所广泛使用。其中包含多种强化学习算法,具体以怨报德 异步深度强化学习方法、Actor-Critic with Experience Replay、Actor- Critic using Kronecker-Factored Trust Region、深度确定性策略梯度、近端策略优化以及信任域策略优化等等。
|
||||
|
||||
Coach:英特尔公司的开源强化学习框架,可以对游戏、机器人以及其它基于代理的智能应用进行智能代理的建模、训练与评估。Coach 提供一套模块化沙箱、可复用组件以及用于组合新强化学习算法并在多种应用领域内训练新智能应用的Python API。该框架利用OpenAI Gym作为主工具,负责与不同强化学习环境进行交换。其还支持其它外部扩展,具体包括Roboschool、gym-extensions、PyBullet以及ViZDoom。Coach的环境打包器允许用户向其中添加自定义强化学习环境,从而解决其它学习问题。该框架能够在桌面计算机上高效训练强化学习代理,并利用多核CPU处理相关任务。其能够为一部分强化学习算法提供单线程与多线程实现能力,包括异步优势Actor-Critic、深度确定性策略梯度、近端策略优化、直接未来预测以及规范化优势函数。所有算法皆利用面向英特尔系统作出优化的TensorFLow完成,其中部分算法亦适用于英特尔的Neon深度学习框架。Coach 当中包含多种强化学习代理实现方案,具体包括从单线程实现到多线程实现的转换。其能够开发出支持单与多工作程序(同步或异步)强化学习实现方法的新代理。此外,其还支持连续与离散操作空间,以及视觉观察空间或仅包含原始测量指标的观察空间。
|
||||
## 9.10深度强化学习算法小结
|
||||
## 10.10深度强化学习算法小结
|
||||
基于值函数概念的DQN及其相应的扩展算法在离散状态、离散动作的控制任务中已经表现了卓越的性能, 但是受限于值函数离散型输出的影响, 在连续型控制任务上显得捉襟见肘. 基于策略梯度概念的,以DDPG, TRPO等为代表的策略型深度强化学习算法则更适用于处理基于连续状态空间的连续动作的控制输出任务, 并且算法在稳定性和可靠性上具有一定的理论保证, 理论完备性较强. 采用actor-critic架构的A3C算法及其扩展算法, 相比于传统DQN算法, 这类算法的数据利用效率更高, 学习速率更快, 通用性、可扩展应用性更强, 达到的表现性能更优, 但算法的稳定性无法得到保证. 而其他的如深度迁移强化学习、分层深度强化学习、深度记忆强化学习和多智能体深度强化学习等算法都是现在的研究热点, 通过这些算法能应对更为复杂的场景问题、系统环境及控制任务, 是目前深度强化学习算法研究的前沿领域.
|
||||
|
||||
展望未来,人工智能开发者们需要尽可能掌握上述框架以及其中所使用的各类强化学习算法。此外,还需要强化自身对于多代理强化学习架构的理解,因为其中多种框架都大量利用前沿博弈论研究成果。最后,还需要熟悉深度强化学习知识。
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Add the corresponding chapter picture under img/ch*
|
||||
在img/ch*下添加对应章节图片
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Add the corresponding chapter picture under img/ch*
|
||||
在img/ch*下添加对应章节图片
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Add the corresponding chapter picture under img/ch*
|
||||
在img/ch*下添加对应章节图片
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Add the corresponding chapter picture under img/ch*
|
||||
在img/ch*下添加对应章节图片
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Add the corresponding chapter picture under img/ch*
|
||||
在img/ch*下添加对应章节图片
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Add the corresponding chapter picture under img/ch*
|
||||
在img/ch*下添加对应章节图片
|
||||
|
Before Width: | Height: | Size: 273 KiB After Width: | Height: | Size: 273 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 165 KiB |
|
|
@ -1 +0,0 @@
|
|||
|
||||
Loading…
Reference in New Issue