我可以使用 scipy 中的 SQP(Sequential quadratic programming)进行神经网络回归优化吗?

Can I use SQP(Sequential quadratic programming) in scipy for neural network regression optimization?

如标题,在 python 中训练和测试我的神经网络模型后。

我可以使用 scipy 中的 SQP 函数来优化神经网络回归问题吗?

比如我正在使用温度、湿度、风速这三个特征作为输入,预测某个区域的能源使用情况。

所以我使用神经网络来模拟这些输入和输出的关系,现在我想知道一些能量使用的最低点,输入特征是什么(即温度、湿度、风力种子是什么)。这只是一个例子,听起来可能不现实。

因为据我所知,没有那么多人只是用scipy进行神经网络优化。但在某些限制下,scipy是我目前拥有的最理想的优化工具(p.s。:我不能使用cvxopt)。

有人可以给我一些建议吗?我将不胜感激!

当然可以,但是您的问题过于宽泛,无法给出完整的答案,因为缺少所有细节。

但是:SLSQP 不是正确的工具!

  • 这是有原因的,NN 训练以一阶方法为主,例如 SGD 及其所有变体
    • 梯度计算速度快,在小批量模式下也很容易做到(不为整个梯度付费;内存更少)
    • 非常不同的随机梯度下降收敛理论,通常对大规模问题更好
    • 总的来说:迭代速度快(例如每个时期的时间),同时可能需要更多的时期(为了完全收敛)
  • NN是无约束连续优化
    • SLSQP 是一种非常通用的优化,能够解决约束,您将为此付出代价(性能和稳健性)
    • LBFGS 实际上是唯一有时用于执行此操作的工具(我看到的)(并且在 scipy 中也可用)
      • 它是一个边界约束优化器(没有 SLSQP 的一般约束)
      • 它近似于逆黑森矩阵,因此与 BFGS 和 SLSQP 相比,内存使用量大大减少
    • 两种方法都是全批处理方法(与SGD的online/minibatch性质相反
      • 他们还使用线搜索或类似的方法来调整更少的超参数:没有学习率!

我认为您应该坚持使用 SGD 及其变体。

如果您想采用二阶方法:learn from sklearn's implementation using LBFGS