迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

CodePathfinder
• 阅读 916

全文链接:http://tecdat.cn/?p=30793

原文出处:拓端数据部落公众号

您想构建一个没有太多训练数据的机器学习模型吗?众所周知,机器学习需要大量数据,而收集和注释数据需要时间且成本高昂。

本文介绍了一些在没有太多数据或标记数据的情况下进行图像分类的方法。我将介绍迁移学习、自监督学习的最重要方面。

利用未标记的数据

与标记数据相比,未标记的数据通常更容易访问。不利用这一点就是一种浪费!

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

自我监督学习

自监督学习解决了从未标记的数据中学习深度特征的问题。训练自监督模型后,特征提取器可以像在迁移学习中一样使用,因此您仍然需要一些带注释的数据来进行微调。

那么,如何从未标记的数据中训练深度特征提取器呢?总而言之,您需要一个足够困难的代理任务(Pretext Task),使您能够学习分类任务的有趣特征。

如果你想在不玩实际比赛的情况下赢得足球比赛,例如,你可以尽可能多地训练杂技球。杂技球将提高您的控球技术,这在玩游戏时会派上用场。

代理任务的一个例子是预测图像的旋转角度。基本上,对于每个图像,您应用旋转 z 来获取旋转的图像 x。然后,你训练一个神经网络来预测 x 中的 z 此转换预测任务会强制您的网络深入了解您的数据。事实上,要预测狗图像的旋转,您的网络首先需要了解图像中有一只狗,并且狗应该以特定的方式定向。

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

根据特定目标,代理任务可能会有很大差异。常用的代理任务包括:

  • 转换预测:数据集中的样本由转换修改,您的网络将学习预测转换。
  • 屏蔽预测:输入图像的随机方块被屏蔽,网络必须预测图像的屏蔽部分。
  • 实例区分:了解区分所有数据样本的表示形式。例如,每个数据点都可以被视为一个类,并且可以在此任务上训练分类器。

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

迁移学习

当您从头开始训练深度神经网络时,您通常会随机初始化权重。这是初始化神经网络的最佳方法吗?答案通常是否定的。

首先,深度学习是关于表征的。在经典机器学习中,特征需要手工制作。深度学习背后的想法是,你让你的神经网络在训练时自己学习特征表示。

在神经网络的每一层之间,您有一个输入数据的表示形式。你越深入你的神经网络,你的表示应该越全局化。通常,已知分类器神经网络的第一层能够检测颜色和形状。中间层将第一层表示作为输入,以计算比第一层更复杂的概念。例如,他们可能会检测到苹果叶或枝干的存在。最后一层给出了图像来自每个类的概率。

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

迁移学习背后的想法是,从另一个分类任务中学习的一些表示可能对您的任务有用。迁移学习是关于在另一项任务上获取预训练网络的第一层,在其上添加新层,并在感兴趣的数据集上微调整个网络。

作为比较,如果你的目标是学习赢得足球比赛,那么迁移学习将包括先学习打篮球,习惯移动你的身体,锻炼你的耐力等,然后再开始玩足球比赛。

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

它将如何影响最终网络的性能?您应该在哪里切断预先训练的网络?这些问题在中得到了广泛的解决。

总结最重要的想法:

  • 神经网络的第一层是非常通用的,而最深的层是预训练任务中最专业的。因此,您可以预期,如果您的预训练任务接近目标任务,那么保留更多层将更有益。
  • 在中间层切割通常会导致性能不佳。这是由于通过微调在中间层中达到的脆弱平衡。
  • 使用预先训练的权重总是比使用随机初始化的权重更好。这是因为通过先训练另一个任务,你的模型学会了它本来不会学到的特征。
  • 当重新训练这些预先训练的权重时,可以获得更好的表现——最终对它们使用较低的学习率。

R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化

本文演示了训练一个简单的卷积神经网络 (CNN) 来对 CIFAR 图像进行分类。由于本教程使用 Keras Sequential API,因此创建和训练我们的模型只需几行代码。

设置

​
library(keras)
 

​

下载并准备 CIFAR10 数据集

CIFAR10 数据集包含 10 个类别的 60,000 张彩色图像,每个类别有 6,000 张图像。数据集分为 50,000 张训练图像和 10,000 张测试图像。这些类是互斥的,它们之间没有重叠。

验证数据

为了验证数据集看起来是否正确,让我们绘制训练集中的前 25 张图像并在每张图像下方显示类别名称。 

train %>% 
  map(as.rater, max = 255) %>%

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

创建卷积基

下面的6行代码使用一种常见的模式定义了卷积基础:Conv2D和MaxPooling2D层的堆叠。

作为输入,CNN接受形状的张量(image_height, image_width, color_channels),忽略了批次大小。如果你是第一次接触这些维度,color_channels指的是(R,G,B)。在这个例子中,你将配置我们的CNN来处理形状为(32,32,3)的输入,这是CIFAR图像的格式。你可以通过将参数input_shape传递给我们的第一层来做到这一点。\
 

kers_moe_etl %>% 
  laer_c_2d(fles = 32, ene_sz = c(3,3), acan = "relu", 
  lye_apoi_2d(posize = c(2,2)) %>% 
  lae_cv_2d(filrs = 64, relze = c(3,3), ctitio = "reu")

到目前为止,让我们展示一下我们模型的架构。

summary(model)

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

在上面,你可以看到每个Conv2D和MaxPooling2D层的输出是一个三维形状的张量(高度、宽度、通道)。当你深入到网络中时,宽度和高度维度往往会缩小。每个Conv2D层的输出通道的数量由第一个参数控制(例如32或64)。通常情况下,随着宽度和高度的缩小,你可以承受(计算上)在每个Conv2D层中增加更多的输出通道。

在顶部添加密集层

为了完成我们的模型,您需要将卷积基(形状为 (3, 3, 64))的最后一个输出张量输入一个或多个 Dense 层以执行分类。密集层将向量作为输入(1D),而当前输出是 3D 张量。首先,您将 3D 输出展平(或展开)为 1D,然后在顶部添加一个或多个 Dense 层。CIFAR 有 10 个输出类,因此您使用具有 10 个输出和 softmax 激活的最终 Dense 层。

model %>% 
  leree(unis = 64, aciaion = "relu") %>% 
  ayedese(unis = 10, acivin = "sftax")

这是我们模型的完整架构。

注意 Keras 模型是可变对象,您不需要在上面的 chubnk 中重新分配模型。
summary(modl)

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

如您所见,我们的 (3, 3, 64) 输出在经过两个 Dense 层之前被展平为形状为 (576) 的向量。

编译和训练模型

moel %>% comle(
  optier = "adam",
  lss = "specatialosnopy",
  mecs = "accray"
)
 

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

评估模型

​

plot(hsy)
 

​

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

​
 

ealte(oel, x,y, erbe = 0)
 

​

迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

我们简单的 CNN 已经实现了超过 70% 的测试准确率。


迁移学习、自监督学习理论小样本图像分类和R语言CNN深度学习卷积神经网络实例

最受欢迎的见解

1.R语言实现CNN(卷积神经网络)模型进行回归

2.r语言实现拟合神经网络预测和结果可视化

3.python用遗传算法-神经网络-模糊逻辑控制算法对乐透分析

4.R语言结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

5.Python TensorFlow循环神经网络RNN-LSTM神经网络预测股票市场价格时间序列和MSE评估准确性

6.Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

7.用于NLP的seq2seq模型实例用Keras实现神经机器翻译

8.R语言用FNN-LSTM假近邻长短期记忆人工神经网络模型进行时间序列深度学习预测

9.Python用RNN循环神经网络:LSTM长期记忆、GRU门循环单元、回归和ARIMA对COVID-19新冠疫情新增人数时间序列预测

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Stella981 Stella981
3年前
PhoneGap设置Icon
参考:http://cordova.apache.org/docs/en/latest/config\_ref/images.html通过config.xml中的<icon标签来设置Icon<iconsrc"res/ios/icon.png"platform"ios"width"57"height"57"densi
Wesley13 Wesley13
3年前
CNN中常用的四种卷积详解
卷积现在可能是深度学习中最重要的概念。正是靠着卷积和卷积神经网络,深度学习才超越了几乎其他所有的机器学习手段。这期我们一起学习下深度学习中常见的卷积有哪些?1\.一般卷积卷积在数学上用通俗的话来说就是输入矩阵与卷积核(卷积核也是矩阵)进行对应元素相乘并求和,所以一次卷积的结果的输出是一个数,最后对整个输入输入矩阵进行遍历,
Wesley13 Wesley13
3年前
AI研习丨针对长尾数据分布的深度视觉识别
  !(http://dingyue.ws.126.net/2020/0812/714a3e94j00qey3su000xd000q100dup.jpg)  摘要  本文介绍了目前国内外关于长尾数据分布下深度视觉识别的研究进展,主要从常用数据集及应用、经典机器学习解决方案和深度学习解决方案三个维度进行梳理和分析,并针对长尾数据分布的
卷积神经网络模型发展及应用
卷积神经网络模型发展及应用转载地址:http://fcst.ceaj.org/CN/abstract/abstract2521.shtml深度学习是机器学习和人工智能研究的最新趋势,作为一个十余年来快速发展的崭新领域,越来越受到研究者的关注。卷积神经网络(CNN)模型是深度学习模型中最重要的一种经典结构,其性能在近年来深度学习任务上逐步提高。由于可以自动学
迁移学习(Transfer Learning)
1.深入了解神经网络的组成、训练和实现,掌握深度空间特征分布等关键概念;2.掌握迁移学习的思想与基本形式,了解传统迁移学习的基本方法,对比各种方法的优缺点;3.握深度迁移学习的思想与组成模块,学习深度迁移学习的各种方法;4.掌握深度迁移学习的网络结构设计、目标函数设计的前沿方法,了解迁移学习在PDA、SourceFreeDA上的应用;5.掌握深度迁移学习在
深度学习与图神经网络学习分享:CNN经典网络之-ResNet
深度学习与图神经网络学习分享:CNN经典网络之ResNetresnet又叫深度残差网络图像识别准确率很高,主要作者是国人哦深度网络的退化问题深度网络难以训练,梯度消失,梯度爆炸,老生常谈,不多说!深度网络的退化问题(htt
使用深度学习进行图像分类
使用深度学习进行图像分类解决任何真实问题的重要一步是获取数据。Kaggle提供了大量不同数据科学问题的竞赛。我们将挑选一个2014年提出的问题,然后使用这个问题测试本章的深度学习算法,并在第5章中进行改进,我们将基于卷积神经网络(CNN)和一些可以使用的高级技术来改善图像识别模型的性能。大家可以从https://www.kaggle.com/c/dogsvs
人工智能人才培养
No.1第一天一、机器学习简介与经典机器学习算法介绍什么是机器学习?机器学习框架与基本组成机器学习的训练步骤机器学习问题的分类经典机器学习算法介绍章节目标:机器学习是人工智能的重要技术之一,详细了解机器学习的原理、机制和方法,为学习深度学习与迁移学习打下坚实的基础。二、深度学习简介与经典网络结构介绍神经网络简介神经网络组件简介神经网络训练方法卷积神经网络介