用于深度学习优化的微软开源项目Petridish

人工智能2020-03-18 11:56:08
最佳答案 微软研究公司和卡内基梅隆大学的一个团队拥有开源项目Petridish,一种神经架构搜索算法,它自动构建深度学习模型,这些模型被优化以满足各种约束。 使用Petridish,团队在CIFA R-10

微软研究公司和卡内基梅隆大学的一个团队拥有开源项目Petridish,一种神经架构搜索算法,它自动构建深度学习模型,这些模型被优化以满足各种约束。 使用Petridish,团队在CIFA R-10基准上取得了最先进的结果,只有2.2M参数和5个GPU的搜索时间。

在神经信息处理系统(NeurIPS)2020会议上接受的一篇论文中描述了算法和实验。 Petridish使用了一种名为“前向搜索”的技术,从人类设计的“父模型”开始,并为其添加层。 新模型进行部分训练;如果新模型表现出比父模型更好的性能,则对其进行充分训练,并记录关于模型的几个度量-包括准确性、计算要求和延迟-这允许用户选择最适合问题约束的模型。 据该文件的作者说:

有了Petridish,我们寻求提高效率和速度,以找到合适的神经体系结构,使这一过程更容易在该领域的人,以及那些没有专门知识感兴趣的机器学习解决方案。

神经结构搜索(NAS)是自动机器学习(AutoML)的子领域。 最近的NAS研究大多集中在手动设计搜索空间,然后从其中采样体系结构;有时是随机的,有时是由优化算法引导的。 NAS算法通常被归类为宏搜索或单元搜索.. 在后者中,搜索算法优化了称为单元的小块网络层,最终网络由单元的重复副本组成。 相比之下,宏搜索尝试了许多不同的整体网络结构。 Petridish支持这两种搜索。

Petridish的算法受到梯度增强技术的启发,在梯度增强技术中,“弱”模型被迭代地添加到集合中以产生更强的模型;选择的下一个弱模型是最符合当前模型中预测误差梯度的模型。 同样,Petridish从一个初始模型开始,并通过添加从一组候选层中选择的层来迭代改进它;所选择的层是那些最能减少训练损失的层。 一旦确定候选层,修改后的模型就会被训练到收敛,成为新的“父”,并且过程重复。

在Petridish将模型训练到完成后,它将性能度量记录为测试数据集上的准确性,以及成本度量,如模型参数的数量或计算次数。 人工智能模型设计者通常必须在成本和性能之间进行权衡,Petridish产生了一个模型的散点图,显示它们在这个空间中的位置;该图还显示了帕累托前沿,其中最好的模型是为给定的一个度量值找到的。

为了测试算法的有效性,该团队使用Petridish设计了CIFA R-10图像识别任务的网络。 使用宏搜索,Petridish发现了一个模型,它只使用2.2M参数实现了2.85%的错误率,根据团队的说法,这“比以前的宏搜索结果要好得多”。 细胞搜索产生了类似的结果,模型的平均搜索时间约为10个GPU天。

Petridish在TensorFlow中实现,源代码可以在GitHub上使用。 该团队指出,该代码“正在积极开发中”,他们计划在不久的将来发布一个基于Py Torch的版本。

免责声明:本文由用户上传,如有侵权请联系删除!