Python深度学习入门笔记 5
这一部分,我们介绍一下深度学习的一些性质特点,发展状况和未来方向等。这一部分没有什么具体的技术细节,也没有代码实现,只是作为后续进一步学习的简单前瞻。
1.加深网络
加深网络成层数的好处:
- 减少网络的参数数量。与没有加深层的网络相比,加深了层的网络可以用更少的参数达到同等水平(或者更强)的表现力。例如下面使用两次3 × 3的卷积运算可以达到一次5 × 5的卷积运算的效果。斌给它们的参数数量分别是18(2*3*3)和25(5*5)。
叠加小型滤波器来加深网络的好处是可以减少参数的数量,扩大感受野(receptive field,给神经元施加变化的某个局部空间区域)。并且,通过叠加层,将ReLU等激活函数夹在卷积层的中间,进一步提高了网络的表现力。这是因为向网络添加了基于激活函数的“非线性”表现力,通过非线性函数的叠加,可以表现更加复杂的东西。
- 使学习更加高效。与没有加深层的网络相比,通过加深层,可以减少学习数据,从而高效地进行学习。
- 分层次地传递信息。就如上一部分最后提到的”第1层的神经元对边缘或斑块有响应,第3层对纹理有响应····“也就是说,通过加深层,可以将各层要学习的问题分解成容易解决的简单问题,从而可以进行高效的学习。
不过,对于像手写数字识别这样一个比较简单的任务,就没有必要使用太多的层。
2.深度学习的小历史
一般认为,现在深度学习之所以受到大量关注,其契机是2012年举办的大规模图像识别大赛ILSVRC(ImageNet Large Scale Visual Recognition Challenge)。在那年的比赛中,基于深度学习的方法(通称AlexNet)以压倒性的优势胜出,彻底颠覆了以往的图像识别方法。
VGG
VGG是由卷积层和池化层构成的基础的CNN。它的特点在于将有权重的层(卷积层或者全连接层)叠加至16层(或者19层),具备了深度。
VGG中需要注意的地方是,基于3×3的小型滤波器的卷积层的运算是连续进行的。如下图所示,重复进行“卷积层重叠2次到4次,再通过池化层将大小减半”的处理,最后经由全连接层输出结果。
GoogLeNet
GoogLeNet的网络结构如下图所示,图中的矩形表示卷积层、池化层等。
从图中可以看出,GoogLeNet的特征是,网络不仅在纵向上有深度,在横向上也有深度(广度)。GoogLeNet在横向上有“宽度”,这称为**“Inception结构”**。
ResNet
它的特征在于具有比以前的网络更深的结构。
在深度学习中,虽然加深层对于性能提升很重要,但过度加深层的话,很多情况下学习将不能顺利进行,导致最终性能不佳。ResNet中,为了解决这类问题,导入了“快捷结构”(也称为“捷径”或“小路”)。导入这个快捷结构后,就可以随着层的加深而不断提高性能了(当然,层的加深也是有限度的)。
3.深度学习的高速化
3.1基于GPU的高速化
由于GPU 可以高速地进行并行数值计算,因此GPU计算的目标就是将这种压倒性的计算能力用于各种用途。深度学习中需要进行大量的乘积累加运算(或者大型矩阵的乘积运算)这种大量的并行运算正是GPU所擅长的。
3.2分布式学习
为了进一步提高深度学习所需的计算的速度,可以考虑在多个GPU或者多台机器上进行分布式计算。
3.3运算精度的位数缩减
深度学习并不那么需要数值精度的位数。这是神经网络的一个重要性质。这个性质是基于神经网络的健壮性而产生的。这里所说的健壮性是指,比如,即便输入图像附有一些小的噪声,输出结果也仍然保持不变。
在深度学习中,即便是16位的半精度浮点数,也可以顺利地进行学习。
4.其他
4.1强化学习
强化学习的基本框架是,代理(Agent)根据环境选择行动,然后通过这个行动改变环境。根据环境的变化,代理获得某种报酬。强化学习的目的是决定代理的行动方针,以获得更好的报酬。
简单来说就是有一个奖惩措施,“督促”着代理做出适应当前环境的选择。
4.2GAN生成对抗网络
其技术要点是使用了Generator(生成者)和 Discriminator(识别者)这两个神经网络。以图像生成和识别为例,Generator 生成近似真品的图像,Discriminator判别它是不是真图像(是Generator生成的图像还是实际拍摄的图像)。像这样,通过让两者以竞争的方式学习,Generator会学习到更加精妙的图像作假技术,Discriminator则会成长为能以更高精度辨别真假的鉴定师。
4.3迁移学习
将学习完的权重(的一部分)复制到其他神经网络,进行再学习(fine tuning)。迁移学习在手头数据集较少时非常有效。
4.4Data Augmentation 数据扩充
Data Augmentation基于算法“人为地”扩充输入图像(训练图像)。具体地说,如下图所示,对于输入图像,通过施加旋转、垂直或水平方向上的移动等微小变化,增加图像的数量。这在数据集的图像数量有限时尤其有效。