【AutoML】强化学习如何用于自动模型设计(NAS)与优化?

一文看懂深度学习AutoML和NAS 原文:https://zhuanlan.zhihu.com/p/42924585 AutoML和神经架构搜索(NAS),是深度学习领域的新一代王者。 这些方法能快糙猛地搞定机器学习任务,简单有效,高度符合当代科技公司核心价值观。 它们背后原理如何,怎样使用? 技术博客TowardDataScience有一篇文章,就全面介绍了关于AutoML和NAS你需要了解的一切。 NAS 要了... 阅读详情

大家好,欢迎来到专栏《AutoML》,在这个专栏中我们会讲述AutoML技术在深度学习中的应用,这一期讲述强化学习用于模型设计和优化的核心技术。

作者&编辑 | 言有三

一直以来,网络结构的设计是一个非常需要经验且具有挑战性的工作,研究人员从设计功能更加强大和更加高效的模型两个方向进行研究,随着各类经典网络设计思想的完善,如今要手工设计出更优秀的模型已经很难,而以AutoML为代表的自动化机器学习技术就成为了大家关注的热点,其中用于搜索的方法包括强化学习,进化算法,贝叶斯优化等,本期我们首先介绍基于强化学习的方法。

1 模型结构搜索

Google在2017年利用强化学习进行最佳模型架构的搜索[1],引爆了自动设计网络模型(Neural Architecture Search,简称NAS)的研究热潮,其基本流程如下:

强化学习方法需要一些基本组件,包括搜索空间(search space),策略函数(policy),奖励指标(reward)。

搜索空间就是网络组件,也就是基本参数,包括滤波器数量,卷积核高、卷积核宽、卷积核滑动步长高、卷积核滑动步长宽等,如下图(分别是有跳层连接和无跳层连接),每一个参数的预测使用softmax分类器实现,跳层连接则使用sigmoid函数。

策略函数使用的就是RNN,实际是一个两层的LSTM,每一个隐藏层单元为35。之所以可以这么做是因为网络结构和连接可以使用一个变长的字符串进行描述,终止条件就是达到一定的层数。

奖励指标(reward)使用的是验证集上测试准确率,如下。

因为上述目标不可微分,所以需要进行近似如下:

其中m是每一个batch采样的结构,T是需要预测的参数量,

使用了800个GPU训练了28天后,学习到的网络结构如下:

从上面的结构可以看出,它拥有以下特点:

(1) 跨层连接非常多,说明信息融合非常重要。

(2) 单个通道数不大,这是通道使用更加高效的表现。

以上研究催生了Google Cloud AutoML,并在2018年1月被Google发布,AutoML技术的研究开始进入高潮,这几年成为机器学习/深度学习的大热门。

由于上述框架[1]的搜索空间过大,作者后来又其进行了改进,提出了NASNet[2]。NASNet的主要特点是它对网络结构的基本单元进行搜索而不是对整个网络进行搜索,其中两类基本单元分别是Normal Cell和Reduction Cell。

Normal Cell不降低特征图分辨率,Reduction Cell则将分辨率降低为原来1/2的,它们一起使用可以构建大部分网络架构,如下图的CIFAR10和ImageNet架构。

每一个Cell包含了若干个block,每一个block都包含了两个隐藏状态,两个对应的操作,以及融合操作,如下:

如上图灰色的是状态,黄色是对应状态的操作,绿色是融合操作,其中状态对应的操作从以下空间选择:

若干个block就可以组成一个cell,如下图展示了5个block组成的cell。

有了cell之后,我们就只需要定义好重复次数N和初始卷积滤波器的数量就得到了最终的网络结构,这也是当前大部分模型的搭建思想。这两个可以用经验值来设定,比如4@64,表示初始通道数为64,采用4个重复的单元,具体的学习方法与[1]一致。

2 模型结构优化

虽然NAS本身具有模型优化的功能,但是当前也有许多成熟的模型优化方法,比如模型剪枝,量化,蒸馏。

2.1 模型剪枝

AutoML for Model Compression(AMC)[3]是一个利用强化学习自动搜索并提高模型剪枝算法质量的框架,其完整的流程如下:

在一般的剪枝算法中,我们通常遵循一些基本策略:比如在提取低级特征的参数较少的第一层中剪掉更少的参数,对冗余性更高的FC层剪掉更多的参数。然而,由于深度神经网络中的层不是孤立的,这些基于规则的剪枝策略并不是最优的,也不能从一个模型迁移到另一个模型。

AMC方法便是在该背景下,利用强化学习自动搜索并提高模型压缩的质量,该框架是每一层进行独立压缩,前一层压缩完之后再往后层进行传播,t层接受该层的输入特征s_t,输出稀疏比率a_t,按照a_t对该层进行压缩后,智能体移动到下一层L_t+1,使用验证集精度作为评估。

作者们对两类场景进行了实验,第一类是受延迟影响较大的应用如移动APP,使用的是资源受限的压缩,这样就可以在满足低FLOP和延迟,小模型的情况下实现最好的准确率;这一类场景作者通过限制搜索空间来实现,在搜索空间中,动作空间(剪枝率)受到限制,使得被智能体压缩的模型总是低于资源预算。

另一类是追求精度的应用如Google Photos,就需要在保证准确率的情况下压缩得到更小的模型。对于这一类场景,作者定义了一个奖励,它是准确率和硬件资源的函数。基于这个奖励函数,智能体在不损害模型准确率的前提下探索压缩极限。

每一层的状态空间为(t, n, c, h, w, stride, k, FLOP s[t], reduced, rest, at−1),t是层指数,输入维度是n×c×k×k,输入大小是c×h×w,reduces就是前一层减掉的flops,rest是剩下的flops。

因为剪枝对通道数特别敏感,所以这里不再是使用离散的空间,如{128,256},而是使用连续的空间,使用deep deterministic policy gradient (DDPG)来控制压缩比率,完整的算法流程如下:

对于细粒度的剪枝,可以使用权重的最小幅度作为阈值,对于通道级别的压缩,可以使用最大响应值。在谷歌Pixel-1 CPU和MobileNet模型上,AMC实现了1.95 倍的加速,批大小为1,节省了34%的内存。在英伟达Titan XP GPU 上,AMC实现了1.53 倍的加速,批大小为50。

2.2 模型量化

同样的,量化也是模型压缩的另外一个技术,是学术界和工业界的重点研究方向,HAQ(Hardware-Aware Automated Quantization with Mixed Precision)[4]是一个自动化的混合精度量化框架,使用增强学习让每一层都学习到了适合该层的量化位宽。

不同的网络层有不同的冗余性,因此对于精度的要求也不同,当前已经有许多的芯片开始支持混合精度。通常来说,浅层特征提取需要更高的精度,卷积层比全连接层需要更高的精度。如果手动的去搜索每一层的位宽肯定是不现实的,因此需要采用自动搜索策略。

另一方面,一般大家使用FLOPS,模型大小等指标来评估模型压缩的好坏,然后不同的平台表现出来的差异可能很大,因此HAQ使用了新的指标,即芯片的延迟和功耗。

搜索的学习过程是代理Agent接收到层配置和统计信息作为观察,然后输出动作行为即权值和激活的位宽,其中算法细节为:

(1) 观测值-状态空间,一个10维变量,如下:

(2) 动作空间,使用了连续函数来决定位宽,离散的位宽如下:

(3) 反馈,利用硬件加速器来获取延迟和能量作为反馈信号,以指导Agent满足资源约束。

(4) 量化,直接使用线性量化方法,其中s是缩放因子,clamp是截断函数。

(5) c的选择是计算原始分布和量化后分布的KL散度,这也是很多框架中的做法。

(6) 奖励函数,在所有层被量化过后,再进行1个epoch的微调,并将重训练后的验证精度作为奖励信号。

使用了深度确定性策略梯度(DDPG)方法进行优化,下图是在延迟约束下,MobileNet-V1/V2模型在边缘端和云端设备上的实验结果,与固定的8bit量化方法相比,分别取得了1.4倍到1.95倍的加速。

下图分别是边缘端和云端设备上MobileNet-V1各个网络层的量化特点,可以发现在边缘端设备上depthwise卷积有更少的bits,pointwise有更多,在云端则是完全相反。这是因为云设备具有更大的内存带宽和更高的并行性,而depthwise就是内存受限的操作,pointwise则是计算受限的操作,MobileNet-V2上能观察到同样的特点。

2.3 模型蒸馏

N2N learning[5]是一个基于强化学习的知识蒸馏框架,它使用增强学习算法来将teacher模型转化为student模型,框架结构如下:

N2N learning基于一个假设,即一个教师网络转化成学生网络的过程可以看作是马尔可夫决策过程Markov Decision Process(MDP),当前的步骤只和有限的之前几步有关系,使用增强学习来进行优化,其基本概念如下:

状态S:将网络的架构作为状态,对于任何一个大的网络,采样后比它小的网络都很多,所以状态空间非常大。

动作A与状态转换T:包括层的缩减以及移除操作。这一个过程通过双向LSTM来实现,它会观察某一层与前后层的关系,学习到是否进行约减或者删除。

奖励r:模型压缩的目标是保证精度的同时尽可能压缩模型,因此reward就是压缩率。

在上图结构中包括了两个动作,实际进行优化时依次进行:

(1) 首先选择一组动作,用来判断当前层的去留;

(2) 然后使用另一个策略选择一组动作,用来决定剩下每一层的裁剪程度,伪代码流程如下:

以上两种动作使用的LSTM也有差异,下图(a)是层的去留使用的LSTM,可以看出是一个双向的LSTM,要同时考虑前向和反向的中间状态。

下图(b)是层的裁剪使用的LSTM,可以看出是一个单向的LSTM,其中at的值范围是[0.1,0.2,...,1],表示压缩率。

而奖励reward公式如下:

其中C表示压缩率,A表示学生模型准确率,Ateacher表示教师模型准确率,教师网络的输出作为学生网络的真值。

损失函数包括两项,分别是学生网络的分类损失以及蒸馏损失,其中蒸馏损失中教师网络的输出作为学生网络的真值,使用L2距离。

实验结果如下:

从结果来看,实现了非常高的压缩率,并且性能下降不明显。

3 关于模型优化

如果说要我在深度学习这么多方向里选择一个的话,我会毫不犹豫地选择模型优化,这也是一直在做的事情。公众号写过很多的模型解读了,如下是一些文章总结和直播链接以及资源下载。

【完结】总结12大CNN主流模型架构设计思想

「总结」言有三&天池深度学习模型设计直播汇总,赠超过200页课件

知识星球也有一个模型结构1000变板块,比公众号的内容更深更广。其中的模型优化部分主要包括紧凑模型的设计,剪枝,量化,知识蒸馏,AutoML等内容的详细解读,感兴趣可以移步。

[1] Zoph B, Le Q V. Neural Architecture Search with Reinforcement Learning[J]. international conference on learning representations, 2017.

[2] Zoph B, Vasudevan V, Shlens J, et al. Learning Transferable Architectures for Scalable Image Recognition[J]. computer vision and pattern recognition, 2018: 8697-8710.

[3] He Y, Lin J, Liu Z, et al. Amc: Automl for model compression and acceleration on mobile devices[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 784-800.

[4] Wang K, Liu Z, Lin Y, et al. HAQ: Hardware-Aware Automated Quantization with Mixed Precision[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 8612-8620.

[5] Ashok A , Rhinehart N , Beainy F , et al. N2N Learning: Network to Network Compression via Policy Gradient Reinforcement Learning[C]// ICLR 2018. 2017.

总结

本次我们简单介绍了强化学习在模型的设计和优化中的经典案例,更多模型设计和优化,AutoML的内容,请大家移步有三AI知识星球长期学习。

有三AI知识星球

知识星球是有三AI的付费内容社区,里面包括各领域的模型学习,数据集下载,公众号的付费图文原稿,技术总结PPT和视频,知识问答,书籍下载,项目推荐,线下活动等资源,了解详细请阅读以下文章:

【杂谈】有三AI知识星球一周年了!为什么公众号+星球才是完整的?

【杂谈】万万没想到,有三还有个保密的‘朋友圈’,那里面都在弄啥!

转载文章请后台联系

侵权必究

往期精选

AutoML与神经架构搜索 《AutoML与神经架构搜索》 作者:禅与计算机程序设计艺术 1. 背景介绍 随着机器学习和深度学习在各个领域广泛应用,模型架构设计已经成为机器学习从业者面临的一个关键挑战。传统的模型架构设计过程是一个高度依赖人工经验的过程,需要领域专家耗费大量时间和精力进行反复试错。这种方式不仅效率低下,而且很难探索到最优的模型架构。 阅读详情

相关推荐

langchain入门学习笔记

langchain快速入门

1734

AutoML与NAS之间的关联

虽然两者的目标略有不同,但它们的实质是相似的,都试图通过自动化的方法,减轻人工设计模型的繁琐和耗时。随着技术的不断发展和应用的拓展,AutoML和NAS将在更多领域和场景中得到广泛应用,并为人工智能领域带来更多创新和突破。此外,AutoML和NAS都需要依赖于强大的计算资源和优秀的搜索算法。近年来,随着深度学习框架的逐渐普及和云计算的发展,更多的开发者开始使用AutoML和NAS技术,探索更高效的模型设计方式。AutoML的超参数优化和选择可以使用NAS生成的最优网络结构来应用,从而进一步提高模型的性能。

KongDere的博客 370

专治疑难系列 - 解决打印机凭证冲突问题

一、问题描述 二、解决方法 三、问题已解决

Passerby_Wang的博客 2万+

AutoML综述学习 —— DL & NAS篇

聚焦 deep learning 和 NAS,根据完整的 AutoML pipeline 总结 AutoML 相关的方法

asybk的博客 840

保姆级教程:在Windows上用VS2019和OpenCV4.6搞定海康MV-EB435i RGBD相机图像采集

本文提供了一份详细的教程,指导如何在Windows环境下使用VS2019和OpenCV4.6配置海康MV-EB435i RGBD相机进行图像采集。从开发环境准备、SDK部署到代码移植和优化,涵盖了深度图与RGB图同步采集的实战技巧,帮助开发者快速上手工业级RGBD相机的应用开发。

weixin_28675557的博客 469

GLM-4本地部署的实战教程

本文主要介绍了GLM-4-9B本地部署的实战教程,希望对学习和使用大模型的同学们有所帮助。 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 2.3 下载模型文件 3. 运行glm-4-9b-chat

herosunly的博客 25万+

一文读懂目前大热的AutoML与NAS!

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达自动机器学习(AutoML, Automated Machine Learning)提供方法和流程使机器学习可用于非机器学习专家,提高机器学习的效率并加速机器学习的研究。机器学习(ML)近年来取得了相当大的成功,并且越来越多的学科依赖它。但是,这一成功至关重要依赖于机器学习专家来执行以下任务:预处理数据...

小白学视觉 1495

事件驱动的 SAP 工作流:从 BOR 事件到 Event Linkage 的落地与排障全景图

摘要: SAP工作流中的Event是业务对象状态变化的系统广播机制,如发票录入、采购订单释放等事件。通过事件驱动,业务程序与流程引擎解耦,业务只需发布事件,流程引擎负责后续处理。文章详细解析了SAP工作流事件的完整链路,包括事件定义、触发机制、事件容器传递、SWE2配置的关键作用,以及事件不触发时的排查方法。重点介绍了事件在启动流程、终止任务、等待步骤和主动创建中的应用,并结合采购订单审批案例说明事件的实际使用场景和配置要点。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 190

【完结】如何学习AutoML在模型优化中的应用,这12篇文章可以作为一个参考

文/编辑 | 言有三自动化机器学习技术是非常重要的基础研究,也是如今深度学习模型优化中的热点方向,我们开辟了一个专栏,专门讲解AutoML在深度学习模型优化中的一些重要思路,本次来给大家...

hacker_long的专栏 909

apache 403错误 Forbidden解决方法

当网页打开提示以下错误时,即出现了403错误。 Forbidden You don't have permission to access / on this server. 403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。通常情况可能(但不限于此)的原因有: 原因1:apache配置文件中没有对站点目录的权限许可,这通...

lmseo5hy的博客 1499

TextView部分文字可以被点击的效果。TextView拼接图片,图片可以被点击

今有一需求,就是列表标题后拼接图标,点击图标跳转一个web页; 这里简单做下笔记,以供需要的人参考: //设置部分文字点击事件 ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(conte...

LXFX1108的专栏 695

【AutoML】强化学习如何用于模型量化?

大家好,欢迎来到专栏《AutoML》,在这个专栏中我们会讲述AutoML技术在深度学习中的应用,这一期讲述在模型量化中的应用。作者&编辑 | 言有三上一期给大家介绍了AutoML...

hacker_long的专栏 1186

PCL 三次均匀B样条曲线拟合

PCL 三次均匀B样条曲线拟合

dayuhaitang1的博客 402

「AutoML」强化学习如何用于自动模型设计(NAS)与优化?

作者&编辑 | 言有三 一直以来,网络结构的设计是一个非常需要经验且具有挑战性的工作,研究人员从设计功能更加强大和更加高效的模型两个方向进行研究,随着各类经典网络设计思想的完善,如今要手工设计出更优秀的模型已经很难,而以AutoML为代表的自动化机器学习技术就成为了大家关注的热点,其中用于搜索的方法包括强化学习,进化算法,贝叶斯优化等,本期我们首先介绍基于强化学习的方法。 1 模型结构搜索 Google在2017年利用强化学习进行最佳模型架构的搜索[1],引爆了自动设计网络模型(Neural

喜欢打酱油的老鸟 864

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

AutoML

AutoML 什么是AutoML? ​ 目前一个优秀的机器学习和深度学习模型,离不开这几个方面: ​ 一、优秀的数据预处理; ​ 二、合适的模型结构和功能; ​ 三、优秀的训练策略和超参数; ​ 四、合适的后处理操作; ​ 五、严格的结果分析 ​ 这几方面都对最终的结果有着举足轻重的影响,这也是目前的数据工程师和学者们的主要工作。但由于这每一方面都十分繁琐,尤其是在构建模型和训练模型上。而大部分...

无悔王冠的专栏 2万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

AutoML:自动化AI Agent的模型选择与优化

AutoML(Automated Machine Learning)旨在将机器学习工作流中的重复性任务自动化,特别是模型选择和超参数优化这两个最耗时且需要专业知识的环节。本文聚焦于AutoML在AI Agent开发中的应用,探讨如何通过自动化技术提升模型开发效率和质量。文章首先介绍AutoML的基本概念,然后深入探讨其核心算法和数学原理。接着通过实际代码示例展示实现细节,并讨论应用场景和工具资源。最后总结未来发展趋势和挑战。AutoML:自动化机器学习,指使用算法自动执行机器学习流程中的任务。

大模型应用工坊 1037

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

一文讲解自动机器学习(AutoML)!你已经是个成熟的模型了,该学会自己训练了...

Datawhale作者:瞿晓阳,AutoML书籍作者寄语:让计算机自己去学习和训练规则,是否能达到更好的效果呢?自动机器学习就是答案,也就是所谓“AI的AI”,让AI去学习AI。随着...

Datawhale 6485

NAS实战:用AutoML自动设计YOLO-NAS目标检测模型(附Colab代码)

本文提供了一份实战指南,详细介绍了如何利用神经架构搜索(NAS)技术,在Google Colab上自动设计和优化YOLO-NAS目标检测模型。通过结合AutoML与YOLO框架,文章指导读者从环境搭建、搜索空间定义到可微分架构搜索(DARTS)的实现,旨在为特定数据集和硬件约束生成更高效、更精准的模型,并附有完整的Colab代码。

echo99的专栏 924

深度学习从入门到精通 - AutoML与神经网络搜索(NAS):自动化模型设计未来

AutoML与神经网络搜索(NAS)正在重塑深度学习模型设计方式,通过算法自动完成架构选择、超参数优化等传统依赖人工的任务。文章揭示了NAS落地的三大核心难题:搜索空间定义易导致组合爆炸、搜索策略计算成本高昂、性能评估指标单一化,并给出了模块化设计、梯度优化方法、多维度评估等解决方案。最后通过ProxylessNAS的实战代码,展示了移动端模型设计的避坑技巧,包括可微分操作层实现、联合优化策略等关键细节。

THMAIL的博客 1032

AutoML入门概述

目录 2. AutoML原理 2.1 NAS 2.1.1RNN控制器 2.1.2强化学习训练 2.1.3并行和异步更新加速训练 2.1.4 Skip-connect 的生成 2.1.5 RNN控制器结点架构 2.2 NASNet Search Space 3. 总结 传统的计算学习方式包括特征提取,模型设计以及参数调优三大部分,而自动机器学习(Auto Machin...

学如不及,犹恐失之 6342

你所需要知道的关于AutoML和NAS的知识点

【GiantPandaCV导读】本文是笔者第一次进行翻译国外博客,第一次尝试,由于水平的限制,可能有的地方翻译表达的不够准确,在翻译过程中尽量还原作者的意思,如果需要解释的部分会在括号中添加,如有问题欢迎指正。本文翻译的是《Everything you need to know about AutoML and Neural Architecture Search》获得了4.8k的高赞。 作者:George Seif 翻译:pprp 日期:2018/8/21 AutoML和NAS是深度学习领域的新秀。不

pprp的博客 585

计算机科学领域中,基于神经架构搜索(NAS)的自动化机器学习模型设计与优化技术详解

神经架构搜索是指一种通过自动化手段寻找高性能神经网络架构的过程。它通常包括三个主要组成部分:搜索空间定义、搜索策略选择以及性能评估机制。搜索空间指的是所有可能被考虑作为候选解决方案的集合。对于NAS来说,这通常涉及到卷积核大小、激活函数类型、池化层配置等多个维度。

jie_kou的博客 1363

一文看懂AutoML

论文地址:AutoML: A survey of the state-of-the-art[1]最近看了些NAS的论文,发现上面这篇综述写的很不错,非常全面,详细拜读了一下。有很多细节不...

算法码上来 4737

AutoML与NAS

https://blog.youkuaiyun.com/jacke121/article/details/97963336 原文:https://zhuanlan.zhihu.co...

weixin_43489950的博客 292

【AI不惑境】AutoML在深度学习模型设计和优化中有哪些用处?

大家好,这是专栏《AI不惑境》的第十二篇文章,讲述AutoML在深度学习模型设计和优化相关的内容。进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考。如果说学习是一个从模...

hacker_long的专栏 1657
上一篇: 【杂谈】2020年有三AI计算机视觉培养计划详解,该不该学&怎么学CV的简单讨论...
下一篇: 【星球知识卡片】视频分类与行为识别有哪些核心技术,对其进行长期深入学习...
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值