
前沿
人工智能的浪潮已经席卷全球,深度学习(Deep Learning)和人工智能(Artificial Intelligence, AI)等词汇也不断地充斥在我们身边。人工智能的发展是一个三起两落的变化,90年代期间,知识推理>神经网络>机器学习;2005年左右,机器学习>知识(语义网)>神经网络;而从2017年之后,基于深度学习的神经网络>知识(知识图谱)>机器学习。
卷积神经网络(convolutional neural network, CNN)作为深度学习中的代表,最早的灵感是来源于1961年Hubel和Wiesel两位神经生物学家,在对猫视觉皮层细胞的实验中,发现大脑可视皮层是分层的(CNN中的分层网络结构与其如出一辙)。深度学习作为机器学习(ML)的一个子领域,由于计算机能力的提高和大量数据的可用性,得到了戏剧性的复苏。但是,深度学习是否能等同或代表人工智能,这一点笔者认为有待商榷,深度学习可以认为是目前人工智能发展阶段的重要技术。由于本文主要撰写关于深度学习的入门实战,关于细节概念不做深入研究,下面笔者从实际案例,介绍深度学习处理图像的大致流程。
目录:
以手写识别数字为例,作为深度学习的入门项目,本文以Keras深度学习库为基础。其中使用的tensorflow等模块需要提前配置好,同时注意模型,保存、载入的文件路径问题。在自己的计算机上运行时,需要创建或修改。下面的流程包括:使用Keras载入MNIST数据集,构建Lenet训练网络模型,使用Keras进行模型的保存、载入,使用Keras实现对手写数字数据集的训练和预测,最后画出误差迭代图。
手写数字数据集介绍:
手写数字识别几乎是深度学习的入门数据集了。在keras中内置了MNIST数据集,其中测试集包含60000条数据,验证集包含10000条数据,为单通道的灰度,每张的像素大小为28 28一共包含10个类别,为数字0到9。
导入相关模块:
载入MNIST数据集
Keras可实现多种神经网络模型,并可以加载多种数据集来评价模型的效果,下面我们使用代码自动加载MNIST数据集。
显示MNIST训练数据集中的前面6张:
数据的预处理
首先,将数据转换为4维向量[samples][width][height][pixels],以便于后面模型的输入
为了使模型训练效果更好,通常需要对图像进行归一化处理
最后,原始MNIST数据集的数据标签是0-9,通常要将其表示成one-hot向量。如训练数据标签为1,则将其转化为向量[0,1,0,0,0,0,0,0,0,0]
模型的建立与计算
训练模型的参数设置:
本文使用Lenet网络架构,下面定义Lenet网络结构,若要更改网络结构,如用VGGNet,GoogleNet,Inception,ResNets或自己构建不同的网络结构,可以直接在这一块函数内进行修改。
再附上两个经典的模型:
VGG16:
GoogleNet:
设置优化方法,loss函数,并编译模型:
本文使用生成器以节约内存:
结果分析
作出训练阶段的损失、精确度迭代图,本文将epoch设置为10,已达到098的准确率(代码、图像如下所示)。
公众号:帕帕 科技 喵
欢迎关注与讨论~
机器学习在有一件事上一直做得不好,那就是学习新任务的时候会忘记之前完成过的任务。
在监督学习任务中,监督学习的目标是构建模型fx,用于预测与看不见的特征向量关联的目标向量x,为此,监督学习方法通常采用ERM原则。但是ERM的直接应用会导致“灾难性的遗忘”,也就是说,机器的学习在接触新任务后会忘记如何解决过去的任务。作者们提出了一种新的学习度量,用于评估模型如何在一系列学习任务中迁移知识。最终,作者们提出了一个新的顶级表现的算法—— 梯度片段记忆(GEM) ,它使得学习机器在学习新任务的时候也可以不忘记以往学到的技能,同时能够使有益的知识转移到先前的任务。
机器在学习当前任务时,可以访问之前所有任务的部分数据,它们被收集在一个称为“episodic memory”的地方。作者提出了“Gradient Episodic Memory”的方法来利用“episodic memory”解决机器遗忘的问题。
以往机器有关序列学习的任务都有若干特点:
1任务数量少,但每个任务所要学习的例子很多
2学习机器对每个任务的例子进行了几次复习
3报告的平均绩效是唯一的指标
但本文的作者采用一种“ 更像人类 ”(“more human-like”)的学习任务来测试GEM模型,该种任务的特点:
1任务数量大,但每个任务的训练示例数量少,
2学习只观察每个任务的示例一次
3增加报告测量迁移的绩效和遗忘的指标 ,作者认为除了观察其跨任务的绩效外,评估转移知识的能力也很重要
在学习任务的框架中, 作者定义了3个任务指标——ACC/BWT/FWT 。
这些指标越大代表了模型建立越完美,如果两个模型的ACC相同,BWT和FWT的值越大的模型越好(文章并没有比较BWT和FWT,是不是说明ACC是下位的指标)。对于学习的精细度(fine-grained evaluation)评估,可以通过更构建一个行数多于任务数的矩阵R中的元素Ri,j(为观察连续体中第i个样本后对任务tj的测试精度)来进行评估。
EGM算法 :
作者在任务k的工作记忆上定义如下损失函数:
其中Mk 表示任务k的memory。但这种方式容易在Mk中的样本上过拟合。作者尝试一种方法,通过构建一个不等式约束,让其只减不增。作者新定义了一个学习函数模型:
其中 是学习前一个任务后的模型。作者进一步观察到,其实并不需要保存之前的模型,只需要在模型参数更新后,之前任务的损失不增加就可以了。这可以通过计算梯度的夹角来确定:
如果夹角为锐角,则学习当前任务时,任务k的性能就不会增加。如果夹角不是锐角,通过投影的方法,将梯度g投影到最近的梯度 上,并且建立优化函数求解
文章还通过实验来评估GEM在连续学习中的表现。
实验采用3个数据集(datasets)——MNIST Permutations;MNIST Rotations;CIFAR 100。对于所有数据集,实验给出了T = 20个任务。在MNIST数据集上,每个任务都有来自10个不同类别的1000个示例。在CIFAR100数据集上,每个任务都有来自5个不同类别的2500个示例。该模型按顺序观察任务,每个示例观察一次。在每个数据集的测试分区上执行每个任务的评估,记录ACC,BWT,FWT的值。
不仅如此,作者还将GEM和其他算法(single,independent, iCaRL和EWC)一起比较,观察和记录各项指标来观察GEM的绩效。
实验结果:
图左为所有数据集和方法的指标数据分析图,图右显示的是不同方法在整个连续性数据中第一个任务的测试准确性的演变。可以观察到,总的来说,GEM的性能与多模态模型(the multimodal model)相似,甚至更好,并且这些模型非常适用于MNIST任务;不仅如此,GEM在CIFAR100中表现出最小的遗忘和正向后移(backward transfer)。GEM的性能明显优于其他的持续学习方法,并且计算量更少。综合后续的CPU训练时间、工作记忆容量的实验测量后,可以观察到GEM优质的性能。
实验虽然展示出了GEM的高性能,作者表明但仍然有3点不足:
1首先,GEM没有利用结构化的任务描述符,而描述符可以被用来获得零镜头学习(zero-shot learning)。
2其次,实验没有研究高级记忆管理(例如构建任务的核心集)。
3第三,每个GEM迭代要求每个任务向后通过一次,这增加了计算时间。当然,如何解决计算时间也是作者自身准备研究的方面。
以上就是关于威斯康星乳腺癌数据集下载哪一个全部的内容,包括:威斯康星乳腺癌数据集下载哪一个、用cnn时必须用mnist.uint8数据库吗、keras如何快速入门等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)