一.基础知识
https://www.youtube.com/watch?v=voWgnMpFaW8
- 参数 & 超参数
参数:权重
超参数:结构参数(卷积层数,卷积核数,卷积尺寸)& 优化参数(优化器类型,学习率,batchsize,epoch等)
- CNN结构
- NAS
NAS:最优验证集,对应的模型的最优结构。
此处不一定是验证集的准确率,对于移动端设备,还可以是:计算量&存储开销。
- 搜索空间
超参数的搜索空间太大,不能一一搜索。因此,需要手动设置一些指定值。(事先由用户指定)
搜索结果如下:
二.随机搜索
(如下为:交叉验证)
缺点:搜索空间太大,而搜索过的神经网络太小,所以随机搜索,很难找到最优的NN。
搜索神经网络最大几万组(几滴水),与搜索空间(海洋)相比,小很多。
三,NAS via RNN + RL
https://www.youtube.com/watch?v=AmitvRzmvv0
RNN来生成NN,RL来训练RNN。
本文主要理解思想和方法,不要纠结细枝末节。因为已经没有人使用了。
- 课前储备
- 算法细节
H0:初始状态的向量,一般为全0;
X0:随机生成的向量,(非均匀分布,也非正态分布)
RNN输入h0和x0,输出h1,h1作为下一个状态,
RNN运行很多步,每步都会有h向量输出。
H1然后送入fc + softmax。(此处的fc + softmax不会复用,因为任务不同)
H1经过运算,输出p1,表征:元素概率分布。(均<1,和为1)
RNN每一步都有一个任务,例如第一步是CNN中第一个conv的卷积核的数量。(用户需要指定n个可选择的卷积核数量24-36-48-64)
选择卷积核的方式有:(1)随机选择;(2)argmax(确定性选择)
然后介绍embedding层:
Embedding层:将one-hot a向量映射到稠密向量上,把embedding结果集记为x1.
Embedding有一个参数矩阵,(随机初始化,之后从训练数据集中学习)。
Embedding可在相同任务中重复利用。例如:每一个conv层都需要指定卷积核的数量。One-hot向量a1,a4,a7,a10都是预测卷积核的数量的,则可用相同的embedding层。把a向量映射到x向量。
不同任务,不可以使用不同的embedding层,如,下一个任务预测卷积核大小,则不能使用此处的embedding层。
H1作为状态,x1作为输入,rnn输出h2.
此处,p1和p2不会共享参数。(因为:任务不同,分别为卷积核的数量,卷积核的尺寸的预测,此外维度不同)
(两个任务不同,使用相同的embedding层不合理,另外维度不同a1为4维,a2为3维)
《此时,确定了第一个卷积核的超参数》
用户自行设计层的数量,例如20.每一层有3个超参数,则一共有60个超参数。
即:RNN一共需要运行60步。终止RNN。返回生成的超参数。
上述,生成的RNN为controller RNN,训练controller RNN,目标:生成的CNN将最大化val的准确率。
以下部分,如何训练controller rnn。
- 训练controller RNN
- RNN运行60步,输出20个卷积层的超参数。
- 搭建CNN(只搜索cnn,其他类型的层,手动设置)
- 用不同的数据集,训练CNN.如果数据集越大,最优的NN就越大,每层的filters就越多。
- 计算val的准确率;
- 用val的准确率更新 RNN的参数。(包含:循环参数,embedding参数,fc参数)
目标:val的准确率最高。
解析:如果r对于theta可微分的话,则可以采用梯度下降法,更新参数。
但是,如果r对于theta不可微分的话,就不能这样求解。
R与theta的关系,都无法进行表达,更别说进行可微分了。
由于问题的特殊性,无法使用BP,因此只能采用RL。不要求最大化目标是可微分函数。
RL把不可微分的目标,作为环境给的奖励,但是RL并不好,有很大的*** policy,需要收集大量的奖励,才能让RL收敛。每收集一个奖励,都需要付出很大的代价。(需要从头开始训练CNN,直到收敛,才能计算val acc)。
如何采用RL来训练controller RNN.
目标函数:优化rnn,直到val acc最大;
奖励:val acc
策略函数:controller rnn
采用策略梯度上升,来更新策略函数。
策略函数如上。
看第t步,发生了什么?
Ht和xt唯一确定p(t +1)
Ht和xt是RL的状态state。
P(t+1)是策略函数输出的概率分布,a(t + 1)是根据p(t+1)抽样得到的action。
π介于【0,1】
选中卷积核的大小,有三种方案:3,5,7.(此为动作集合)
在60步之前,其奖励全部为0;第60步的奖励为:val acc。
T时刻的回报为ut,他是从t时刻开始,所有奖励的加和。注意,除了最优一个时刻,其余的奖励全部为0.
已经直到π和u,近似策略梯度为:。。。。。。
用策略梯度的上升来更新π中的theta。
用Reinforce策略梯度,用回报ut来近似动作价值函数theta(pai)
每一轮有60个回报,共有60个近似策略梯度。
关于策略梯度:
RL:根据奖惩信息,来学习正确的行为。
学习奖惩的值,根据最大价值来选择行为,即:Q-learning/DQN
不通过分析奖惩值,直接输出行为,即:策略梯度。
其加入nn,来输出预测的动作。好处,在连续的空间内选择动作。
误差的反向传递:没有误差,但是确实在进行传递,目标:使此次迭代中的行为更有可能在下一次发生。但是,行为是否增加被选中的概率?由reward决定。
观察信息,通过NN,选中左边的行为,进行BP,使其下次选中的概率增加,但是奖惩信息说,此次行为不好,动作可能会的幅度会降低。使用奖励来左右BP。