欢迎访问:沃派博客 每天不定时发布IT文章相关资讯
当前位置:沃派博客-沃派网 > IT文章 > 正文

初学者怎样使用Keras进行迁移学习

01-21 IT文章

翻译 | 邓普斯•杰弗、斯蒂芬•二狗子

校对 | 邓普斯•杰弗 校对 | 邓普斯•杰弗 整理 | 菠萝妹

原文链接:

初学者怎样使用Keras进行迁移学习

本博客由3部分组成:

什么是迁移学习?

为什么迁移学习如此有效?

使用迁移学习实现一个图像识别器。

直接访问Github上的代码。

初学者怎样使用Keras进行迁移学习

“夜晚的星系”由布莱恩高夫在 Unsplash 发布

什么是迁移学习?

如果没有迁移学习,实现机器学习对于初学者来说是一件非常艰难的事情。在机器学习底层上,涉及计算从输入侧映射到输出之间的函数。函数本身只是一些加法和乘法的计算,当通过非线性激活函数和一些堆叠的神经网络层,可以构建这样的具有学习能力的函数,只要有足够的数据可供学习,并且有巨大的计算能力,就可以依葫芦画瓢地学习。

欢迎来到深度学习。

卷入神经网络在训练足够的数据时可以学习极其复杂的映射函数。我们还不能理解卷积网络是如何学习这种复杂的映射关系。

在基本层面上,CNN(卷积神经网络)的权重由过滤器组成。把一个过滤器想象成一个由某些数字组成的(n*n)矩阵。现在,这个过滤器对输入的图像进行卷积(滑动和乘法)。假设输入图像的大小为(10,10),过滤器的大小为(3,3),首先将过滤器与输入图像左上角的9个像素相乘,此相乘产生另一个(3,3)矩阵。该矩阵的9个像素值相加,该值成为CNN第2层左上角的单个像素值。

初学者怎样使用Keras进行迁移学习

卷积网络的表示

CNN的训练基本上包括在每个过滤器上找到正确的值,这样当输入图像通过多层时,激活最后一层的某些神经元,从而预测正确的类别。

尽管对于小型项目来说,从头开始训练CNN是可能的,但大多数应用程序都需要对非常大的CNN进行训练,正如您所猜测的,这需要非常大量的数据处理和计算能力。而这两个都不是那么容易被实现的。

这就是迁移学习的作用所在。在迁移学习中,我们取一个已经训练过的模型的预先训练的权重(一个已经在1000个类别的数百万张图片上训练过的权重,在几天的高功率GPU上训练过的权重),并使用这些已经学习过的特征来预测新的类别。

迁移学习的优势在于:

1:不需要一个非常大的训练数据集。

2:不需要太多的计算能力,因为我们使用的是预先训练好的权重,只需要学习最后几层的权重。

有几个模型已经在图像网络数据集上进行了训练,并且已经开放源代码。

例如,vgg-16、vgg-19、inception-v3等。有关这些型号的更多详细信息,请阅读此处的官方keras文档。

为什么迁移学习如此有效?

为了了解为什么迁移学习如此有效,我们必须首先看看卷积神经网络的不同层真正学习的是什么。

当我们在一组图像上训练一个深卷积神经网络时,在训练过程中,通过在每一层图像上应用多个过滤器,图像通过网络。过滤矩阵的值与每层图像的激活值相乘。最后一层的激活用于确定图像属于哪个类。

当我们训练一个深层网络时,我们的目标是在每个滤波器矩阵上找到最佳值,这样当图像通过网络传播时,输出激活可以用来精确地找到图像所属的类。寻找这些滤波器矩阵值的过程是梯度下降。

当我们在ImageNet数据集上训练一个conv网络,然后看看conv网络的每一层上的过滤器学会了识别什么,或者每个过滤器被激活了什么,我们就能看到一些真正有趣的东西。

初学者怎样使用Keras进行迁移学习

conv网络前几层的过滤器学习识别颜色和某些水平和垂直线。

接下来的几层慢慢地学习如何使用在前几层中学习到的线条和颜色来识别细小的形状。

然后,下一层学习识别纹理,然后部分对象,如腿、眼睛、鼻子等。

最后,最后一层中的过滤器被诸如狗、汽车等整个物体激活。

初学者怎样使用Keras进行迁移学习

现在让我们开始迁移学习。它之所以如此有效,是因为我们使用了一个对ImageNet数据集进行预训练的网络,并且该网络已经学会识别初始层中不同对象的微小形状和小部分。通过使用预训练网络来进行迁移学习,我们只需在预训练网络的末尾添加一些密集的层,然后学习这些已经学习的特性的组合有助于识别新数据集中的对象。

版权保护: 本文由 沃派博客-沃派网 编辑,转载请保留链接: http://www.bdice.cn/html/28141.html