卷积神经网络用于监督学习意味着模型在训练后总是“一成不变”(架构和参数),所以这甚至可能是不可能的,但是有没有关于数据路径、模型大小(数量层数)和运行时的体系结构,即训练完成后,例如创建一个可以在线修改以使用更少或更多资源、跳过层或使用模型的部分的模型。
最近在创建用于训练和设计网络的灵活框架方面做了一些工作,但这始终是“离线”的。还有一篇有趣的论文关于为同一个应用程序训练两个模型,“大”和“小”,并使用准确性/功率权衡策略来部署这两个模型中的一个。
卷积神经网络用于监督学习意味着模型在训练后总是“一成不变”(架构和参数),所以这甚至可能是不可能的,但是有没有关于数据路径、模型大小(数量层数)和运行时的体系结构,即训练完成后,例如创建一个可以在线修改以使用更少或更多资源、跳过层或使用模型的部分的模型。
最近在创建用于训练和设计网络的灵活框架方面做了一些工作,但这始终是“离线”的。还有一篇有趣的论文关于为同一个应用程序训练两个模型,“大”和“小”,并使用准确性/功率权衡策略来部署这两个模型中的一个。
这是一个很好的问题,我也考虑了很多。
您是在谈论一种在训练期间进化/变异的网络结构,还是一种简单地选择是否使用所有可用资源的网络结构?虽然我永远不会直接拒绝这样的问题(尤其是前者),但我不能说我真的在出版物中看到过。最容易想到的是DeepMind 最近的一篇论文,它结合了“无模型和基于模型的方面”;但是,正如您所指的那样,这比网络架构更高级。
也许您正在考虑一个模型,它被迫在一种资源和另一种资源之间进行选择?后者的一个例子是是否使用跳过连接或密集层(假设形状都匹配)。Yann LeCun 说(下面链接的视频),网络中的此类路径不仅提供了更多的灵活性/复杂性,而且还简化了优化问题并提供了正则化的来源。
无论如何,我确信人们正在这样做,利用使用 PyTorch 创建的动态网络,Tensorflow中的控制流运算符,新的 tensorflow Eager库(旨在复制像 PyTorch 产生的动态网络)。
有人还可以争辩说,为模型提供一个单一的网络使其能够灵活地使用它选择的资源(即权重)。它不必全部使用它们。正如批量标准化层允许模型参数化调整它们的使用程度一样。
关于从长远来看需要什么进行了很好的讨论,朝着人工智能方向发展(最近在 RL 第 1 部分和第 2 部分的背景下的概述。如果我们应该端到端训练模型,我们应该提供多少信息?算法学习玩游戏和
就像你提到的那样,允许人们这样做的工具正在出现,但我还没有看到一篇明确概述如何做到这一点的论文。如果有人给你一个更满意的答案,那就太好了!;-)