matlab training neural network大概需要多久
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab training neural network大概需要多久相关的知识,希望对你有一定的参考价值。
图看不到啊。matlab的神经网络工具箱一般会生成训练曲线和模拟曲线,以及二者的误差分析曲线。 参考技术A 这个跟要训练的数据和网络层数节点数,训练算法的收敛速度有关,有的很快(数秒)有的几分钟吧,要根据收敛速度是否满意来判断
论文精读:Neural Architecture Search without Training
1. Abstract
手工设计深度神经网络所花费的时间和精力是巨大的,这推动了神经架构搜索(Neural Architecture Search,NAS)
技术的发展,以实现自动化设计。然而,NAS
算法往往速度慢且成本昂贵;它们需要训练大量的候选网络,以便为搜索过程提供信息。如果我们能够从网络的初始状态部分预测其训练的精度,这一问题就可以得到缓解。
在这项工作中,作者测验了未经训练的网络中数据点之间的激活重叠,并激励如何能够给出有效表明网络训练性能的度量。作者将这种方法整合到一个简单的算法中,该算法允许我们在几秒钟内在单个GPU
上搜索强大的网络,而无需任何训练,并在NAS-Bench-101
、NAS-Bench-201
、NATS Bench
和NDS(Network Design Spaces)
上验证了其有效性。
最终,作者的算法能够在30s
内在NAS-Bench-201
搜索空间上搜索到精度为92.81%
的网络,比传统NAS
方法快了几个数量级。
Paper:https://arxiv.org/abs/2006.04647
Code:https://github.com/BayesWatch/nas-without-training
2. Background
Time | Paper | Author | Method | [Dis]advantages |
---|---|---|---|---|
2017 | Neural architecture search with reinforcement learning | Zoph & Le | 作者使用RNN控制器来生成候选网络,并对候选网络进行训练,使用强化学习更新控制器,以提高其生成的候选网络的质量 | 控制器每次的输出结构都要进行训练,成本较高,作者使用800个GPU在CIFAR10数据集上训练了28天;缺乏灵活性,最终获得的网络是固定的,不能扩展,即不能用于移动设备或其他数据集 |
2018 | Learning transferable architectures for scalable image recognition | Zoph et al. | 在神经单元块上搜索,而不是在整个架构上搜索。即作者搜索一个标准单元和一个简化单元(合并池)进行CIFAR10分类,然后将其用作ImageNet分类的更大网络的单元块 | 在数量上更加灵活,单元块可以根据预算进行调整;500个GPU训练了4天 |
2018 | Efficient neural architecture search via parameter sharing | Pham et al. | 允许候选网络共享权重,以便进行联合训练 | 降低了搜索的计算成本,使用单个GPU在CIFAR10数据集上运行了半天 |
2020 | Evaluating the search phase of neural architecture search | Yu et al. | 证明了共享权重方法抑制了对最佳网络结构的搜索,使随机搜索成为一种极其有效的NAS基线 | / |
对于一些从业者来说,NAS
仍然很慢。在硬件感知设置中,能够快速(即以秒为单位)执行NAS
将非常有用,在该设置中,每个设备和任务通常需要单独搜索。
Time | Paper | Author | Method | [Dis]advantages |
---|---|---|---|---|
2019 | FBNet: Hardwareaware efficient convnet design via differentiable neural architecture search | Wu et al. | / | / |
2019 | MnasNet: Platform-aware neural architecture search for mobile | Tan et al. | / | / |
评估NAS
算法有效性的主要障碍是搜索空间(所有可能网络的集合)太大,无法进行详尽的评估。下面介绍几个常用的benchmarks
:
Benchmarks | Introduction |
---|---|
NAS-Bench 101 | 包含423624 个神经网络,在CIFAR10 数据集上经过了108 个epoch 的训练,使用了三种不同的初始化 |
NAS-Bench 201 | 包含15625 个神经网络,CIFAR10/CIFAR100/ImageNet-16-120 数据集上训练了多次 |
NATS-Bench | 有两种搜索空间:拓扑搜索空间NATS-Bench TSS ,包含15625 个神经网络,也就是NAS-Bench 201 ;大小搜索空间NATS-Bench SSS ,包含32768 个神经网络,这些网络之间的cells 通道数不同。 |
3. Method
3.1 score
作者的目标是设计一种方法,在初始化时对网络架构进行评分,以表示其最终训练的精度,这样就可以使用成本低廉的计算方法来代替NAS
算法中昂贵的训练步骤。
给定一个具有修正线性单元(rectified linear units, RELU)
的神经网络,我们可以在每层的每个RELU
单元上确定一个关于该单元是未激活(值为负,因此乘以零)还是已激活(在这种情况下,其值乘以一)的二进制指标。固定这些指标变量,现在网络由线性算子局部定义,该算子通过将散布在每个层上的线性映射(the linear maps)
与二进制校正单元(the binary rectification units)
相乘而获得。
mini-batch data
X
=
x
i
i
=
1
N
X = \\x_i\\_i=1^N
X=xii=1N可以通过神经网络映射为
f
(
x
i
)
f(x_i)
f(xi),
f
f
f中
x
x
x处RELU
单元的指示变量形成一个定义线性区域(the linear region)
的二进制码
c
i
c_i
ci。与两个输入相关联的二进制码越相似,网络学习分离这些输入就越具有挑战性,当两个输入具有相同的二进制码时,它们位于网络的相同线性区域内,因此特别难以分离。相反,当输入被很好地区分时,学习应该更容易。下图可视化了ReLU
单元的二进制激活码对应的线性区域:
其中,1. 每个ReLU
节点
A
i
A_i
Ai将输入拆分为激活区域(>0)
和非激活区域,我们将激活区域标记为1
,非激活区域标记为0
;2. 与每个节点
A
i
A_i
Ai相关联的激活和非激活区域相交,具有相同激活模式的输入空间(input space)
区域是共线的(co-linear)
;3. 下一层的ReLU
节点
B
B
B将空间进一步划分为激活区域和非激活区域;4. 给定节点上的每个线性区域都可以由其前面的所有ReLU
节点的激活模式唯一定义。
作者用汉明距离(Hamming distance)
d
H
(
c
i
,
c
j
)
d_H(c_i, c_j)
dH(ci,cj)来衡量两个输入(未训练网络的输入二进制码)的不相似程度(也可以说是相似性程度),因此可以通过计算核矩阵(kernel matrix)
K
H
K_H
KH来测验整个小批量数据的二进制码之间的对应关系:
K
H
=
(
N
A
−
d
H
(
c
1
,
c
1
)
…
N
A
−
d
H
(
c
1
,
c
N
)
⋮
⋱
⋮
N
A
−
d
H
(
c
N
,
c
1
)
…
N
A
−
d
H
(
c
N
,
c
N
)
)
K_H = \\beginpmatrix N_A-d_H(c_1, c_1) & \\dots & N_A-d_H(c_1, c_N) \\\\ \\vdots & \\ddots & \\vdots \\\\ N_A-d_H(c_N, c_1) & \\dots & N_A-d_H(c_N, c_N) \\endpmatrix
KH=⎝⎜⎛NA−dH(c1,c1)⋮NA−dH(cN,c1)…⋱…NA−dH(c1,cN)⋮NA−dH(cN,cN)⎠⎟⎞ 其中,
N
A
N_A
NA是网络中RELU
单元的数量,
N
N
N是mini-batch
的大小,这里是128
。
这一点理解有些别扭,核矩阵 K H K_H KH衡量的是不同数据输入的相似性程度,相似性程度越低, K H K_H KH越接近于对角线。
高性能网络具有较少的非对角元素和较高的相似性(如下图),可以利用这一观察结果来预测未经训练的网络的最终性能,作者使用以下公式来评估模型的性能:
s
=
l
o
g
∣
K
H
∣
s=log |K_H|
s=log∣KH∣
K
H
K_H
KH越接近于对角线(最好只有对角线,也就是相似性越低,即不相似性越高),
s
s
s越高,表示训练后的模型精度更高。
举个简单的栗子:
假设 K H = ( a b c d ) K_H = \\beginpmatrix a & b \\\\ c & d \\endpmatrix KH=(acbd),则 ∣ K H ∣ = ∣ a b c d ∣ = a d − b c |K_H| = \\beginvmatrix a & b \\\\ c & d \\endvmatrix=ad-bc ∣KH∣=∣∣∣∣acbd∣∣∣∣=ad−bc,当b=c=0时, ∣ K H ∣ |K_H| ∣KH∣有最大值,即 K H = ( a 0 0 d ) K_H = \\beginpmatrix a & 0 \\\\ 0 & d \\endpmatrix KH=(a00d),此时 K H K_H KH是一个对角矩阵,也就是只有主对角线元素有值,其它位置均为0。此时的 K H K_H KH表示的相似性程度最低,相应的以上是关于matlab training neural network大概需要多久的主要内容,如果未能解决你的问题,请参考以下文章
论文精读:Neural Architecture Search without Training
神经结构化学习 3 使用合成图进行训练 Neural Structured Learning - Part 3: Training with synthesized graphs
神经结构化学习 2 使用自然图进行训练 Neural Structured Learning - Part 2: Training with natural graphs
阅读A Comprehensive Survey on Distributed Training of Graph Neural Networks——翻译
论文阅读|浅读GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training
论文阅读|浅读GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training