关于Efficient Neural Architecture Search(ENAS)参数共享机制的技术问询
Understanding Parameter Sharing in ENAS
我来帮你拆解ENAS里的这些问题,尤其是核心的参数共享机制——先从前面两个辅助问题入手,再深入核心:
1. 在宏搜索阶段,所有节点是否仅被使用一次?
- 要分两种场景看:在单次采样得到的子网络拓扑里,每个节点确实只会被当作中间节点使用一次,毕竟一个子网络里每个节点就是一个独立计算单元,不会重复调用;但在整个宏搜索的全过程中,同一个节点会被不同的采样子网络反复利用——这也是ENAS能高效搜索的关键之一,避免了从头训练每个子网络。
2. 在宏搜索阶段,所有节点是否必然与其前序节点相连?
- 当然不是。ENAS的控制器是通过学习来选择节点间的连接关系和操作类型的,并不是强制要求每个节点必须连接所有前面的节点。比如某个中间节点可能只选择连接它前面的1-2个节点,甚至可能跳过某些前序节点,控制器会在搜索过程中找到最优的连接组合,所以节点和前序节点的连接是灵活可选的,没有必然绑定的要求。
3. 参数共享是如何实现的?
这是ENAS的核心设计之一,我分点给你讲清楚:
- 参数共享的核心逻辑:是按操作类型来共享权重,而不是按节点间的连接对来分配独立权重。比如所有使用
3x3卷积的连接,不管是节点1→节点3还是节点2→节点3,都会共用同一组卷积权重;所有使用Identity(跳跃连接)的路径,也会遵循同一套规则(Identity本身无学习权重,但逻辑一致)。 - 同一操作多次使用时的权重更新:当同一个操作在多个连接中被调用时,训练过程中只要这个操作被触发,产生的梯度都会累积到这组共享的权重上,更新的时候直接对这唯一的一组权重进行更新就行——相当于所有用到这个操作的子网络,都在共同“训练”这组权重,这也是ENAS能大幅降低搜索算力的原因。
- 多输入拼接的情况处理:比如你说的节点1和节点2的输出拼接后传入节点3,这种场景里,拼接本身是一个固定的融合操作(没有可学习权重),而节点1到节点3、节点2到节点3的路径上各自的操作,还是按类型共享权重。比如如果节点1→节点3用的是
1x1卷积,节点2→节点3用的也是1x1卷积,那这两个路径就共享同一组1x1卷积权重;如果一个用卷积一个用Identity,那就各自用对应操作的共享权重,最后把两个操作的输出拼接起来送入节点3即可,不需要单独为“拼接”这个组合分配新的权重组。
内容的提问来源于stack exchange,提问作者Andy Wei
相关产品推荐
相关产品推荐

