我可以在scipy中使用SQP(顺序二次规划)进行神经网络回归优化吗?

时间:2017-08-13 06:24:26

标签: python optimization scipy deep-learning regression

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

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

例如,我使用温度,湿度,风速,这三个功能用于输入,预测某些地区的能源使用情况。

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

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

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

1 个答案:

答案 0 :(得分:2)

当然,这是可能的,但由于缺少所有细节,您的问题太宽泛而无法提供完整的答案。

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

  • 有一个原因, NN培训主要是一阶方法,如SGD及其所有变体
    • 快速计算梯度,在迷你批处理模式下很容易做到(不支付全梯度;内存较少)
    • Stochastic-Gradient-Descent的收敛理论非常不同,通常对大规模问题要好得多
    • 一般来说:快速迭代速度(例如每个纪元的时间),同时可能需要更多纪元(用于完全收敛)
  • NN是无约束的连续优化
    • SLSQP是一种能够解决约束的非常通用的优化,您将为此付出代价(性能和稳健性)
    • LBFGS实际上是我用来做的唯一工具(我看过)(也可用于scipy)
      • 它是绑定约束的优化器(没有像SLSQP那样的一般约束)
      • 它近似于反hessian,因此与BFGS和SLSQP相比,内存使用量大大减少
    • 这两种方法都是全批方法(与 S GD的在线/小批量性质相反
      • 他们也在使用Line-searching或类似的东西来调整更少的超参数:没有学习率!

我认为你应该坚持SGD和它的变种。

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