功放parameter是什么意思 parameter是什么意思( 四 )


下面有一个更直观的图介绍为什么贝叶斯优化在数学上会比瞎猜(Random search 算法)更好 。首先红色的点表示已经探索过超参数 , 这里只有一个超参数 X 需要调整 , Y 轴表示选择这个超参数 X 后模型的效果 , 可以认为 Y 就是模型正确率也就是越大越好 , 蓝线真实的超参 X 与正确率 Y 的对应关系 , 因为我们不可能遍历所有 X 因此蓝线我们是未知的 , 而我们的目标是已知几个红点去找到蓝线中的最高点 。其中上图有一条虚线和浅蓝色区域 , 那就是贝叶斯优化中高斯过程返回的均值和方差 , 这个均值和方差是在 X 取值范围内都有的 , 分别代表了这个 X 点期望的正确率是多少和这个 X 点可能浮动的空间 。
如果仔细观察可以发现 , 红点必然会在虚线上 , 因为这个点是已经探索过的 , 也就是用这个 X 去训练模型已经得到了正确率 , 因此这个点也必然在蓝线上 。而浅蓝色区域代表了这一块可能浮动的空间 , 因此浅蓝色区域里虚线越大表示这块越值得 exploration , 可能发现新的高点也不一定 , 而虚线越高表示对这块期望的 Y 值也越大 , 也是越值得 exploitation 。为了权衡 exploration 和 exploitation 因此有了下面的 Utility function , 这也是一种算法 。我们可以简单认为它就是用均值加上倍的方差得到的曲线 , 然后取最高值作为下一个探索点 , 因为这个探索点代表了这个 X 位置期望的 Y 值还有想要探索更多未知的可能性 , 如果觉得比较难理解建议先参考《贝叶斯优化:一种更好的超参数调优方式》(https://zhuanlan.zhihu.com/p/29779000 ) 。
ENAS 的实现
前面一直介绍的是 NAS , 为了让大家了解 NAS 只是一种搜索算法 。NAS 没有学会建模也不能替代算法科学家设计出 Inception 这样复杂的神经网络结构 , 但它可以用启发式的算法来进行大量计算 , 只要人类给出网络结构的搜索空间 , 它就可以比人更快更准地找到效果好的模型结构 。
ENAS 也是一种 NAS 实现 , 因此也是需要人类先给出基本的网络结构搜索空间 , 这也是目前 ENAS 的一种限制(论文中并没有提哦) 。ENAS 需要人类给出生成的网络模型的节点数  , 我们也可以理解为层数 , 也就是说人类让 ENAS 设计一个复杂的神经网络结构 , 但如果人类说只有 10 层那 ENAS 是不可能产出一个超过 10 层网络结构 , 更加不可能凭空产生一个 ResNet 或者 Inception 。当然我们是可以设计这个节点数为 10000 或者 100000百思特网0 , 这样生成的网络结构也会复杂很多 。那为什么要有这个限制呢?这个原因就在于 ENAS 中的 E(Efficient) 。
大家大概了解过 ENAS 为什么比其他 NAS 高效 , 因为做了权值共享 (Parameter sharing) , 这里的权值共享是什么意思呢?是大家理解的模型权重共享了吗 , 但 ENAS 会产生和尝试各种不同的模型结构 , 模型都不一样的权重还能共享吗?实际上这里我把 Parameter sharing 翻译成权值共享就代表则这个 Parameter 就是模型权重的意思 , 而不同模型结构怎样共享参数 , 就是 ENAS 的关键 。ENAS 定义了节点(Node)的概念 , 这个节点和神经网络中的层(Layer)类似 , 但因为 Layer 肯定是附着在前一个 Layer 的后面 , 而 Node 是可以任意替换前置输入的 。
下面有一个较为直观的图 , 对于普通的神经网络 , 我们一般每一层都会接前一层的输入作为输出 , 当然我们也可以定义一些分支不一定是一条线的组合关系 , 而 ENAS 的每一个 Node 都会一个 pre-node index 属性 , 在这个图里 Node1 指向了 Node0 , Node2 也指向了 Node0 , Node3 指向了 Node1 。

推荐阅读