在matlab下使用深度学习预训练模型Alex Net进行迁移学习的实验与分析

在matlab下使用预训练模型Alex Net进行迁移学习的实验与分析

摘要:

针对预训练模型对于个性化图片分类准确度很低,应用了迁移学习的方法,在训练集照片达到30张时,在测试集上就能达到80以上的正确率。

一:研究背景

深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。
深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。
深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步

二:预训练模型Alex Net

Alex Net是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。这对于传统的机器学习分类算法而言,已经相当的出色。
Alex Net中包含了几个比较新的技术点,也首次在CNN中成功应用了ReLU、Dropout和LRN等技巧。同时Alex Net也使用了GPU进行运算加速。Alex Net将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。Alex Net主要使用到的新技术点如下:
(1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到Alex Net的出现才将其发扬光大。
(2)训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是Alex Net将其实用化,通过实践证实了它的效果。在Alex Net中主要是最后几个全连接层使用了Dropout。
(3)在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,Alex Net全部使用最大池化,避免平均池化的模糊化效果。并且Alex Net中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。
(4)提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
(5)使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。Alex Net使用了两块GTX 580 GPU进行训练,单个GTX 580只有3GB显存,这限制了可训练的网络的最大规模。因此作者将Alex Net分布在两个GPU上,在每个GPU的显存中储存一半的神经元的参数。因为GPU之间通信方便,可以互相访问显存,而不需要通过主机内存,所以同时使用多块GPU也是非常高效的。同时,Alex Net的设计让GPU之间的通信只在网络的某些层进行,控制了通信的性能损耗。 
(6)数据增强,随机地从256256的原始图像中截取224224大小的区域(以及水平翻转的镜像),相当于增加了2*(256-224)^2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。同时,Alex Net论文中提到了会对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个技巧可以让错误率再下降1%

三:现有问题及解决办法

直接应用已经由大公司用海量数据和强大计算能力训练好的深度学习网络可以很方便的直接对图片进行分类,但是也有很明显的缺点,分类的灵活性很低,只能分出模型中的类别,比如在下文实验中使用的Alex Net网络模型,他有1000个分类,可想而知,用于分类的图片若不在这1000类中,便不能很好的分类。
自己训练一个深度学习的模型具有很强的灵活性,但他对使用者的知识储备和资源都提出了很大挑战。首先使用者要对神经网络模型的构建比较熟练,知道面对不同的数据集怎样构造神经网络结构比较好等等。而且深度学习一定程度上依赖于海量数据和极其强大的计算能力,通过一次一次的迭代来不断完善模型。
试想这样一个场景,我们手中有关于十几个水果的较多量照片,他们并不在已有的训练模型中,但是我们学生的身份也确实无法获得海量的图片和极强的计算能力来从头训练一个深度学习的模型。这时使用迁移学习是比较好的方法。在已有训练模型的基础上,用我们现有的一定数量的图片作为训练集,对模型进行进一步的训练,在能满足我们较为个性化的需求同时,使用的图片数量不必很多,消耗的电脑资源也较少。
其实这个办法的理论分析也较为简单,在matlab中有很多已经训练好的并且发布为免费的深度学习模型,可以下载安装后查看其每个层。
不难发现,基本上前面的层是一些卷积层和处理层,用于分离和提取图像元素,这是我们可以借鉴的层,最后倒数第二层是一个全连接层,用于将之前的分离提取后的图片进行预测其处于每一类的可能性,最后一层起一个归一化作用,最后哪个类的可能性最高,就将图片预测为哪一类。可见我们所需要做的更改就是创建一个新的,具有我们想要的类别的全连接层,然后重新用我们的训练集对这个网络进行训练即可。

四:实验及分析

4.1 图片获取

我设想在实验中加入12类水果,来试验迁移学

  • 6
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
深度学习是近年来非常热门的技术领域,而预训练模型-transformer是深度学习中一种非常受关注的模型。在MATLAB中实战应用预训练模型-transformer可以实现许多有趣的应用。 首先,预训练模型-transformer在自然语言处理领域有很好的应用。通过使用MATLAB中提供的transformer模型,我们可以对文本进行处理和分析。比如,可以利用transformer模型进行文本分类、情感分析、机器翻译等任务。通过使用预训练模型-transformer,我们可以获得更好的性能,并减少模型的训练时间和资源消耗。 其次,预训练模型-transformer还可以应用于图像处理和计算机视觉任务。在MATLAB中,我们可以使用transformer模型来进行图像分类、目标检测和图像生成等任务。通过利用预训练模型-transformer的强大表示能力,可以提高图像处理任务的准确性和效率。 此外,预训练模型-transformer还可以用于推荐系统和推荐算法中。在MATLAB中,我们可以使用transformer模型来构建个性化的推荐系统,根据用户的历史行为和兴趣来推荐相关的内容。通过使用预训练模型-transformer,可以提高推荐系统的精度和用户体验。 总的来说,MATLAB提供了丰富的工具和函数来实现预训练模型-transformer的应用。无论是在自然语言处理、图像处理还是推荐系统中,预训练模型-transformer都能够帮助我们实现更好的结果。通过深入学习和应用预训练模型-transformer,可以在实际项目中获得更好的效果,并提高工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值