【问题标题】:Can I use SQP(Sequential quadratic programming) in scipy for neural network regression optimization?我可以在 scipy 中使用 SQP(顺序二次规划)进行神经网络回归优化吗?
【发布时间】:2018-01-21 07:14:06
【问题描述】:

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

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

例如,我使用温度、湿度、风速这三个特征进行输入,预测某个区域的能源使用情况。

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

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

谁能给我一些建议?我将不胜感激!

【问题讨论】:

  • 二次规划在这种情况下甚至不适用,因为损失表面不是凸面。
  • 但是我看过一些关于使用 sqp 的 NN 优化问题的论文?

标签: python optimization scipy deep-learning regression


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 在我看来,NN 的训练使用类似于 SGD,它适合输入和输出的数据模式。但是正如我上面提到的,例如,现在我已经使用温度、湿度、风速,这些特征用于输入训练 NN 以预测能源使用,即建模这些输入和输出的关系,我用SGD来训练,现在我想知道一些能源使用的最低点,即输入环境是什么(即什么温度,湿度,风),可以使这个区域的能源使用处于最低点。那么也许这个问题是另一个优化问题?你能澄清我的问题吗?谢谢!!!
猜你喜欢
  • 1970-01-01
  • 2019-07-13
  • 2016-07-27
  • 2018-11-18
  • 2013-05-28
  • 2018-10-15
  • 2016-06-15
  • 2021-04-25
  • 2017-04-18
相关资源
最近更新 更多