关于对这一章的理解。
来源:10-2 自动网络结构搜索算法一
next_n
2019-02-13
老师您好,这一小节有些部分我很困惑,我想一边复述我的理解,一边提出问题,麻烦您帮忙答疑指证。
这一章首先提出问题:如何通过自动搜索得到合适的网络参数?(以CNN为例,假定这是一个N层的CNN,所有层都是卷积层,搜索范围是:卷积核大小[1,3,5,7],stride大小[1, 2, 3],通道数[10, 20, 30] )
关于这个问题,首先我想到的是网格搜索,那么对于以上假定的N层的“全卷积层”网络来说,共有(44) (33) (3*3) N,共1296N种情况,而且N还是不定长的,如果要一一训练加以判定,显然不切实际。
于是看到了视频里利用RNN网络生成CNN网络参数的方法。我想这样相比于网格搜索等于是在茫茫的参数搜索中找到了“技巧”。
每一步输出相当于一个分类器,会输出每个分类结果的概率(即每种参数取值的概率),如下图所示
然后根据每一步输出的各个分类(参数值)的概率P进行sample最后得到
[3(0.8), 3(0.82), 1(0.9), 1(0.88), 10(0.7)] (假设)
第一个问题:
关于上图中Samlpe architecture A with probability P 这句话
1.是从每一步结果的概率分布中采样得到的 [3(0.8), 3(0.82), 1(0.9), 1(0.88), 10(0.7)],(我认为是这个)
2.还是直接取每一步输出结果(这里就没有采样的概念了,就是取MAX作为输出),得到的[3(0.8), 3(0.82), 1(0.9), 1(0.88), 10(0.7)]?
即,为了得到模型序列,是类似于重要性采样呢(1)?还是直接取每一步P最大的那个参数呢(2)?
第二个问题:
关于上图中Compute gradient of p and scale it by R to update the controller 这句话
既然损失函数如下所示
为什呢图中说是对P求导,而不是对 theta_C 求导?(Compute gradient of p and scale it by R to update the controller )我认为theta_C是RNN的参数,P只是RNN网络输出的结果,而且根据视频后面的讲解来看,我也认为老师所讲的也是训练theta_C。所以是我对图片有所误解吗?
然后是第三个问题:
在这个公式中,一共累加了T步,等于是此时该神经网络的每一个参数,都以其概率为权重,参与的了J的计算。
这里我有一个细节问题:
是不是只有当T为5的整数倍时,才能计算一次反馈R(因为每5个参数才能构成一层CNN)。当T为其它值,比如T=4,此时的R怎么计算呢?(我认为此时无法解析成一个CNN)不知道我这里的理解是否有误。
最后一个问题:
关于这一步“采样得到不同的神经网络”的说法,我有两种理解:
1.是在利用RNN输出的序列解析生成CNN时,可以有不同的采样,生成不同的序列。比如,我可以采样成 [3(0.8), 3(0.82), 1(0.9), 1(0.88), 10(0.7)] ,同样的概率输出下,我或许也可以采样成 [2(0.05), 2(0.05), 1(0.9), 1(0.88), 10(0.7)] (这里可能显然是前一种采样出现的概率最大,但我认为也不排除后一种采样的可能性,因为实际的概率输出,可能每种类别的差距没那么大) (其实这里的问题和问题1很像,本质就是Samlpe architecture A with probability P到底是什么意思)
2.按照老师的说法,似乎说的是,在训练生成的CNN,得到反馈时,采样不同的数据,从而有不同的反馈结果。
所以不知道这里的采样到底是指的是哪一种?
问题描述有些啰嗦了,因为希望尽可能详尽,好让老师在百忙之中可以用更少的时间理解我的描述,感谢老师!
1回答
-
正十七
2019-02-24
同学您好,感谢你详细的问题描述
问题一,是采样,所以不是确定的只得到一组参数,而是根据概率进行采样,有些值概率虽然小,但仍然有被用到的可能性。这样也能帮助模型进行探索。
问题二,在那张图中,应该表达的是: P是theta_C的函数,对P求导即为对theta_C中的参数进行求导。
问题三:在这个问题上,我的理解跟你一样,应该是能构建完整的CNN时才能做反向传播
问题四:是第一种,但我的意思应该是,controller中采样到多个网络,每个网络都会有自己的反馈值,这些反馈值都可以用来训练controller。
通过你的问题,可见同学您是一个爱思考的人,祝深度学习之旅顺利。
022019-03-20
相似问题
回答 1
回答 6