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

AutoGroup是一种推荐场景的自动特征交互建模算法 采用了高效的分组算法 基于机器学习的选项,通过训练模型进行智能划分,确保结果的合理性。 AutoGroup是推荐场景的自动特征交互建模算法。推荐场景的神经网络预测模型(包括但不限于CTR预测)可简单分为三个模块:Embedding Layer,Interaction Layer以及MLP Layer,其中Interaction Layer是整个预测模型的关键模块,它需要有效的对特征交互建模。AutoGroup通过可微分学习的方式为不同阶数(order)的特征交互显式建模,并且利用新提出的交互函数保持每一阶交互的计算复杂度都与原始特征数量呈线性关系; 阅读详情

大家好,这是专栏《AI不惑境》的第十二篇文章,讲述AutoML在深度学习模型设计和优化相关的内容。

进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考。如果说学习是一个从模仿,到追随,到创造的过程,那么到这个阶段,应该跃过了模仿和追随的阶段,进入了创造的阶段。从这个境界开始,讲述的问题可能不再有答案,更多的是激发大家一起来思考。

作者&编辑 | 言有三

自从2017年Google提出使用强化学习搜索模型结构之后,AutoML/NAS便迅速成为了学术界和工业界的宠儿,在这几年也是非常火热的领域,那么AutoML/NAS在深度学习模型的设计和优化上究竟都有了哪些实际的作用呢?本文对其进行简单的介绍。

 

1 AutoML简介

1.1 什么是AutoML

所谓AutoML,全称是Automated Machine Learning,即自动机器学习技术,AutoML的目标是让机器学习的整个流程自动化,从应用领域来说,这通常要包括数据的使用,特征的选择,模型架构的设计和优化,优化参数的搜索等。

1.2 AutoML中的搜索方法

AutoML本质上是对参数进行自动搜索,所以其中最核心的技术是搜索策略,关键在于如何快速而准确地找到最优值,目前主要的搜索方法有几种:

(1) 随机搜索与栅格搜索。随机搜索顾名思义就是随机进行参数的选择,自然是最简单,但也是最不可靠的方法。栅格搜索就是在一个有限的搜索空间进行穷举,对于小的搜索空间是可以接受的。

(2) 强化学习。强化学习是一类很经典的算法,大名鼎鼎的AlphaGO就使用了强化学习进行训练,强化学习的经典方法包括DPG,PPO等。

(3) 进化算法。进化算法是一类算法的总称,当前很多AutoML框架都使用进化算法进行训练,它的核心思想是随机生成一个种群,然后进行选择、交叉、变异。

(4) 贝叶斯优化。贝叶斯优化假设超参数与需要优化的损失函数存在一个函数关系,通过代理模型来指导超参优化的调试方向。

其他诸如梯度优化方法等,在AutoML专栏中再进行详述。

 

2 AutoML与数据使用,特征工程

2.1 特征工程

智能系统与机器学习技术的发展,本身就伴随着对数据使用方法的进化。从传统的专家系统,到有监督的机器学习算法,到深度学习,本身就属于AutoML的范畴,它解决了特征选择的问题,让特征的学习来源于数据,而不是手工设计。

所以深度学习也被称之为特征学习,它利用CNN等架构,实现了特征选择的过程。

当前工业界也有一些特征工程框架,比如第四范式“先知平台”中的FeatureGO,自动化的特征工程在数据挖掘领域中有着巨大的商业潜力。

2.2 数据增强

在机器学习/深度学习领域中,有一个很重要的问题,就是数据增强。在解决各类任务的过程中,常常没有足够多的数据,数据太少便意味着容易过拟合。各种各样的几何变换,颜色变换策略都被证明有助于提升模型的泛化能力,因此数据增强技术至关重要。

AutoML技术开始在数据增强领域研究的开始以Google Brain提出的AutoAugment[1]为代表。它的基本思路是使用增强学习从数据本身寻找最佳图像变换策略,对于不同的任务学习不同的增强方法,流程如下:

(1) 准备16个常用的数据增强操作。

(2) 从16个中选择5个操作,随机产生使用该操作的概率和相应的幅度,将其称为一个sub-policy,一共产生5个sub-polices。

(3) 对训练过程中每一个batch的图片,随机采用5个sub-polices操作中的一种。

(4) 通过模型在验证集上的泛化能力来反馈。

(5) 经过80~100个epoch后网络开始学习到有效的sub-policies。

(6) 之后串接这5个sub-policies,然后再进行最后的训练。

总的来说,就是学习已有数据增强的组合策略,比如对于门牌数字识别等任务,研究表明剪切和平移等几何变换能够获得最佳效果,

数据使用和特征选择作为最早被AutoML技术攻陷的领域,是机器学习算法走向智能和商业化落地的关键。

 

3 AutoML与模型结构设计

3.1 整个模型架构的搜索

一直以来,网络结构的设计是一个非常需要经验且具有挑战性的工作,研究人员从设计功能更加强大和更加高效的模型两个方向进行研究,我之前在阿里天池做过三次直播,感兴趣的朋友可以回头去翻看。

【总结】言有三&阿里天池深度学习模型设计直播汇总,附赠超过200页直播PPT课件

随着各类经典网络设计思想的完善,如今要手工设计出更优秀的模型已经很难,而以AutoML为代表的技术就成为了大家关注的热点。

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

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

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

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

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

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

其中m是每一个batch采样的结构,T是需要预测的参数量,学习到的网络结构如下:

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

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

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

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

3.2 模型结构参数的优化

除了对整个模型结构进行搜索外,其实对某一些模型结构单元进行优化是更现实的策略,因为它的搜索空间更小。

基于Depthwise的分组卷积是一类非常有效的模型设计,不过每一个分组通常用同样大小的卷积核,而Inception等多尺度结构表明不同的卷积核大小能学习到不同的特征表达,是有助于提升模型性能的,分组卷积模型MixNet[3]就使用了多尺度的卷积核提升其性能。

网络结构如上,关于使用多少种不同尺度的卷积核,有两种思路。第一种,就是人工设定,比如使用3x3, 5x5, 7x7, 9x9等四种卷积核,各自的通道数量可以均分。

当然更好的方式就是基于学习了,让其对卷积核的种类和通道数量划分进行搜索,由于搜索空间较小,可以直接采用穷举的办法。

类似的模型结构有很多,比如EfficientNet[4]。

 

4 AutoML与优化参数

NAS关注的是模型的结构的设计,而除了模型的结构因子外,还有许多优化相关的参数,比如激活函数,归一化函数,优化目标等。

4.1 激活函数

早期研究人员使用sigmoid,tanh,relu等激活函数,而Google Brain研究在一系列一元函数和二元函数组成的搜索空间中进行了组合搜索实验,搜索空间覆盖了我们能想到的一些简单的函数,如下:

搜索结果表明好用的激活函数都比较简单,不会超过两个基本函数的乘组合。搜到了一些比Relu表现更好的函数,最好的是一个这样的函数:x · σ(βx),被称为Swish[5],它在某个特定的参数下也和ReLU及其变种类似,如下图。

4.2 归一化方法

现在我们在每一个网络层中都使用同样的归一化,这是最优的配置吗?显然不是,因为实际应用中不同的问题就有它最合适的归一化操作。比如RNN等时序模型,有时候同一个batch内部的训练实例长度不一(不同长度的句子),则不同的时态下需要保存不同的统计量,无法正确使用BN层,只能使用Layer Normalization。对于图像生成以及风格迁移类应用,使用Instance Normalization更加合适。对于Batch比较小的情况下,Group Normalization是一个替换的方案。

Switchable Normalization[6]的研究便是关注如何让不同的网络层学习到最适合该层的归一化机制,方法就是在包含各类归一化方法的池中进行选择,然后用精度进行比较择优。

上图是对于各类任务中,学习到的最适合该方法的BN,IN,LN,GN的比例。可以看到,对于分类,检测任务主干模型,BN更常用,对于LSTM任务,LN一家独大,对于Image Style Transfer任务,IN一家独大。

4.3 优化方法

要成功训练一个深度学习模型,正确的优化策略是非常重要的,如果使用不当结果会产生很大的差异,现如今优化方法也可以进行搜索[7]。搜索空间中包含sgd,rmsprop,adam等优化方法,这些方法都可以被表示为一个相同结构的树,如下:

一个优化器的应用可以被表示为5个操作,分别是选择op1,op2,两个操作的幅度函数u1,u2,以及最后对这两个操作的综合。

因此,不管选择什么优化器,完成一次优化步骤都是要做以上的5次操作,那么如果可以学习到这5次操作,就完成了一个优化器的搜索。

RNN控制器每一次选择长度为5的子序列,如上图。搜索空间如下,使用的时候还有一些约束,比如树的左右两个操作不能相同等。

经过在CIFAR10数据集上对一个2层的简单网络进行学习后,它们搜索到了一些有效的优化器,如下图的PowerSign以及AddSign。

研究者们还将PowerSign和AddSign迁移到了ImageNet分类任务和谷歌机器翻译系统,发现它们具有非常好的泛化能力,这使得该框架具有非常大的应用价值。

4.4 优化目标

一个有效的损失函数在深度学习任务中起了关键作用,然而损失函数都是人为设定,不仅需要有经验的人员进行反复尝试,也只能获得次优的方案,如果可以让模型自动对优化目标进行学习,将有望以更低的成本学习到更优的模型。

AM-LFS[8]将不同任务的损失函数用一种统一的形式表示,设计了一个搜索空间,利用了强化学习来自动搜索合适的损失函数的超参数,使用双层次优化框架来同时更新损失函数参数分布和网络结构权重参数,流程如下:

首先作者将softmax及其一些变种统一到一个框架,这里的τ和t都是函数。τ控制着样本不均衡变换,t控制着类内与类间的度量距离比例。

因此搜索空间就可以是一个分段线性函数构成的参数空间,可以使用强化学习方法进行高效的搜索。

任务的损失包含了两个,第一个是最小化任务的损失,第二个就是最大化模型奖励,此处奖励使用map等指标。具体的实现是在内层循环最小化任务的损失,外层循环最大化奖励,前者学习模型权重,后者学习损失函数的超参数。

4.5 模型优化

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

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

在一般的剪枝算法中,我们通常遵循一些基本策略:比如在提取低级特征的参数较少的第一层中剪掉更少的参数,对冗余性更高的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。

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

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

另一方面,一般大家使用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上能观察到同样的特点。

AutoML是一个非常活跃而且有前途的研究和应用方向,对其中内容感兴趣的同学,欢迎到有三AI知识星球的网络结构1000变-AutoML板块进行学习,数十期内容定能满足你的求知欲。

了解有三AI知识星球详情请阅读以下文章,扫码即可加入。

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

参考文献

[1] Cubuk E D, Zoph B, Mane D, et al. Autoaugment: Learning augmentation policies from data[J]. arXiv preprint arXiv:1805.09501, 2018.

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

[3] Tan M, Le Q V. MixNet: Mixed Depthwise Convolutional Kernels[J]. arXiv preprint arXiv:1907.09595, 2019.

[4] Tan M, Le Q V. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks[C]. international conference on machine learning, 2019: 6105-6114.

[5] Ramachandran P, Zoph B, Le Q V. Searching for activation functions[J]. arXiv preprint arXiv:1710.05941, 2017.

[6] Luo P, Ren J, Peng Z, et al. Differentiable learning-to-normalize via switchable normalization[J]. arXiv preprint arXiv:1806.10779, 2018.

[7] Bello I, Zoph B, Vasudevan V, et al. Neural optimizer search with reinforcement learning[C]//Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017: 459-468.

[8] Li C, Lin C, Guo M, et al. AM-LFS: AutoML for Loss Function Search[J]. arXiv preprint arXiv:1905.07375, 2019.

[9] 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.

[10] 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.

总结

本次我们总结了AutoML在深度学习模型设计和优化中的核心技术,推荐了相关的学习资源,AI不惑境的文章也是最后一期了,通过这十二期文章,希望有助于大家掌握深度学习模型的使用。

有三AI秋季划-模型优化组

如果你想系统性地学习模型优化相关的理论和实践,并获得持续的指导,欢迎加入有三AI秋季划-模型优化组,系统性地学习数据使用,模型使用和调参,模型性能分析,紧凑模型设计,模型剪枝,模型量化,模型部署,NAS等内容。

模型优化组介绍和往期的一些学习内容总结请参考阅读以下文章:

【通知】如何让你的2020年秋招CV项目经历更加硬核,可深入学习有三秋季划4大领域32个方向

【总结】有三AI秋季划模型优化组3月直播讲了哪些内容,为什么每一个从事深度学习的同学都应该掌握模型优化的内容

转载文章请后台联系

侵权必究

往期精选

利用深度学习网络显示挖掘高阶特征交互的CTR模型 今天的论文主要参考了华为诺亚方舟实验室这两年的3篇paper,分别是2019年WWW会议上的《Feature Generation by Convolutional Neural Network for Click-Through Rate Prediction》,2020年KDD会议上的《AutoFIS: Automatic Feature Interaction Selection in Factorization Models for Click-Through Rate Prediction》和20 阅读详情

相关推荐

【DSP】【工程实战】从零构建C6678多核工程:CCS环境配置与启动模式详解

本文详细介绍了在CCS开发环境中从零构建TMS320C6678多核DSP工程的完整流程。内容涵盖KeyStone架构解析、工程创建、基础代码编写、链接命令文件配置、仿真器调试,并重点深入讲解了包括I2C EEPROM在内的多种一级启动模式原理与配置方法,为开发者提供了一套清晰、可复用的实战指南。

weixin_29164185的博客 421

了解自动化机器学习 AutoML

了解自动化机器学习 AutoML

叶庭云 成为自己的光 1806

实现labelme批量json_to_dataset方法

labelme可以帮助我们快速的实现Mask-RCNN中数据集json文件的生成,然而还需要我们进一步的将json转成dataset,可以直接在cmd中执行labelme_json_to_dataset.exe C:\Users\Administrator\Desktop\total\1.json(路径),但是这个过程需要我们一个json文件的生成,过程很慢。 一、打开abelm...

简简单单 5万+

AutoML!你已经是个成熟的模型了,该学会自己训练了

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

华章IT官方博客 270

2025统计建模大赛完整论文

参赛队号:(参赛队无须填写,参赛队号由大赛官网自动生成)2025年(第十一届)全国大学生统计建模大赛参 赛 作 品参赛学校:XXXXXX大学论文题目:海洋叶绿素含量影响因素与预测——基于机器学习与大数据分析预测参赛队员:指导老师:国家知识产权局 统计分析成果 知识产权统计数据公开查询指引(2024版)随着全球气候变化的加剧,海洋碳汇的作用愈发受到重视,尤其是海洋生物通过光合作用吸收二氧化碳的过程,对于全球碳循环和温室气体减排具有重要意义。

2301_79579117的博客 9319

音视频开发—H264相关概念和压缩原理详解(GOP、宏块、帧内压缩、帧间压缩)

本文讲述了H264相关概念和原理——GOP概念,SPS与PPS,帧内压缩原理,帧间压缩原理,解释了什么是运动补偿,什么运动矢量等等概念

weixin_46999174的博客 3981

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

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

Datawhale 6485

ANSYS专题-利用ANSYS SIwave进行PCB板的EMS仿真

本文详细描述了使用ANSYSSIwave进行电路板电磁敏感度(EMS)仿真的完整流程。主要步骤包括:导入AD软件生成的IPC2581文件,检查PCB叠层和电路参数,为敏感网络设置50欧姆端口并指定GND为参考网络,进行验证检查后设置频段范围和入射波类型(单/多入射、极化方式等),最后启动仿真并查看选定网络的EMS感应电压曲线。该过程提供了从文件准备到结果分析的全套操作指南,适用于评估电路板在电磁干扰环境下的性能表现。

whm128的博客 3622

实操指南:用谷歌AutoML构建图像分类模型

2020-03-16 12:31:00 全文共2710字,预计学习时长8分钟 如何用谷歌AutoML创建单标签分类模型? 今天我们将使用一个来自generated.photos的AI生成的人脸数据集,训练该算法,使其能够判断人脸是男是女,然后将模型部署到云端,并且建立算法的网页版。 一起来试试吧! 获得标签 OK,现在开始吧!先来看看将用...

喜欢打酱油的老鸟 876

硬核入门!Python爬虫实战:爬取豆瓣读书TOP250,书名+评分+简介,一键生成精美Excel书单(2026避坑版)

通过这个实战,你不仅获得了一份珍贵的豆瓣TOP250书单HTTP请求与响应的本质。HTML解析的核心技巧。反爬虫的基本应对策略。数据清洗与存储的完整流程。爬虫是通往数据世界的一把钥匙。现在,钥匙在你手中,去探索更多有趣的数据吧!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 546

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part2知识获取与图谱构建、服务搭建

前序文章:其中原项目提供了关系数据如下: 其中五列数据表示:人物1,人物2,人物1与人物2关系,人物1所属家族,人物2所属家族。关系说明:以第一列为例,贾演是贾代化的父亲。下面我们就将这个数据放到neo4j中。这些需要去连接,需要安装这个包: 程序中,我使用去读取配置文件, 其中为了保持配置全局唯一性,使用单例的写法。 后面就是创建构建关系文件,构建neo4j图谱数据了,如下: 后期可能会将构建图谱内容使用flask去生成命令行的方式构建,暂时在开发的过程查看构建情况,便于调试。导入关系后,我们再查看

让算法融入生活,改变生活! 4083

如何系统性掌握深度学习模型设计和优化

模型是深度学习的核心技术之一,我们平时在从事相关工作时,有很大一部分精力都在模型设计和优化上。对于新手朋友们来说,往往只会跑一跑别人的模型或者只会盲目的简单修改一下参数,...

hacker_long的专栏 857

Android Studio无法启动,Failed to create JVM:error code -1. JVM Path 完美解决方案

Android Studio无法启动,Failed to create JVM:error code -1. JVM Path 完美解决方案。 找到Android studio的启动文件bin目录,把studio64.exe.vmoptions 删除或改名(推荐改名,方便恢复),如果你是32位系统这个文件就是 studio.exe.vmoptions

陈万洲的专栏 4850

【杂谈】深度学习之模型设计书看完了完全不过瘾?那这些拓展资料你都看了不?...

大家应该还记得有三在今年6月份出版的新书《深度学习之模型设计》吧,这是一本讲述深度学习模型设计核心算法的书籍,同时配套有大量实战案例,书籍介绍链接如下。言有三新书来袭!业界首次深入全面讲...

hacker_long的专栏 858

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深度学习工具包 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")

【完结】你对深度学习模型的理解是否足够深刻,这12篇文章可以作为一个参考...

文/编辑 | 言有三好的模型结构是深度学习成功的关键因素之一,不仅是非常重要的学术研究方向,在工业界实践中也是模型是否能上线的关键。对各类底层深度学习模型设计和优化技术理解的深度是决定我...

hacker_long的专栏 1153

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

「完结」你对深度学习模型的理解是否足够深刻,这12篇文章了解下

2020-05-28 18:07:49 文/编辑 | 言有三 好的模型结构是深度学习成功的关键因素之一,不仅是非常重要的学术研究方向,在工业界实践中也是模型是否能上线的关键。对各类底层深度学习模型设计和优化技术理解的深度是决定我们能否在深度学习项目中游刃有余的关键,因此我们在修行之路专栏的《不惑境界》中,着重于深入讲解主流的网络结构设计思想,包括对网络深度,宽度的理解,残差网络和分组网络的设计,多尺度与注意力机制的设计,以及深度学习模型压缩之模型剪枝,量化,蒸馏,还有AutoML技术,本次来给.

喜欢打酱油的老鸟 710

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【总结】循序渐进,有三AI不得不看的技术综述(超过100篇核心干货)

文/编辑 | 言有三有三AI很少写零散的报导,因为我们的文章通常都是提炼与总结,一般遇到一个新方向,找技术综述读一读是最合适的开始,大家也可以拓展一下自己的知识边界,今天总结一下有三AI...

hacker_long的专栏 991

【年终总结】2019年有三AI做了什么,2020年我们要做什么?

2019年终于倒计时了,在这一年里,我们平台成长了不少,今天来做一个年终总结。文/编辑 | 言有三有三AI是什么我们公众号的主旨就是:聚焦于让大家能够系统性地完成AI各个领域所需的专业知...

hacker_long的专栏 5623

有三AI第一批10个研究小组上线

文/编辑 | 言有三很多粉丝都知道有三AI有一个计算机视觉群,但是有且仅有一个,而且因为人满了早就开始实行淘汰制。为什么不开第二个群呢,是因为有三觉得不会有500个以上...

hacker_long的专栏 598

【杂谈】循序渐进,有三AI不得不看的技术综述(超过100篇核心干货)

文/编辑 | 言有三有三AI很少写零散的报导,因为我们的文章通常都是提炼与总结,一般遇到一个新方向,找技术综述读一读是最合适的开始,大家也可以拓展一下自己的知识边界,今天总结一下有三AI...

hacker_long的专栏 1092

【杂谈】篇篇精华,有三AI不得不看的技术综述(超过100篇核心干货)

文/编辑 | 言有三有三AI很少写零散的报导,因为我们的文章通常都是提炼与总结,一般遇到一个新方向,找技术综述读一读是最合适的开始,大家也可以拓展一下自己的知识边界,今天总结一下有三AI...

hacker_long的专栏 990

推荐 | 出身于中科院与360AI研究院的大佬编著,超500篇AI纯原创系统性学习文章...

微信公众号今天给大家推荐一个微信公众号《有三AI》,堪称AI方向,尤其是计算机视觉方向的干货集中营,内容非常的丰富,已经原创发表500多篇系统性的原创高质量AI领域文章,100多万字,共...

weixin_38753422的博客 517

推荐 | 一年写了320篇原创,70万+的AI原创公众号

微信公众号推荐作者/编辑 言有三今天给大家推荐一个微信公众号《有三AI》,堪称AI方向,尤其是计算机视觉方向的干货集中营,内容非常的丰富,已经原创发表300多篇高质量文章...

Oner.wv的专栏 952

机器学习面经

【机器学习基础】9 大主题!机器学习算法理论面试题大汇总 https://mp.weixin.qq.com/s/1AOTv_bsQhPg3qEZpF6vxQ

qq_23236081的博客 278

AI学习_模型优化:剪枝、蒸馏、量化

模型优化:剪枝、蒸馏、量化

qq_41848886的博客 5457

一文看懂深度学习新王者「AutoML」:是什么、怎么用、未来如何发展?

原作:George Seif夏乙 安妮 编译整理量子位 出品 | 公众号 QbitAIAutoML和神经架构搜索(NAS),是深度学习领域的新一代王者。这些方法能快糙猛地...

量子位 3641
上一篇: 【AI不惑境】模型压缩中知识蒸馏技术原理及其发展现状和展望
下一篇: 【通知】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、付费专栏及课程。

余额充值