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

标签 python optimization scipy deep-learning regression

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

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

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

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

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

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

最佳答案

当然,这是可能的,但您的问题太宽泛,无法给出完整的答案,因为缺少所有详细信息。

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

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

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

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

关于python - 我可以在 scipy 中使用 SQP(顺序二次规划)进行神经网络回归优化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657733/

相关文章:

python - 优化字典循环求和值

flutter - 是否可以使用通用且易于使用的现有工具,使 Flutter 60FPS 流畅,无论我的应用程序当前有多卡顿和缓慢?

java - -XX :+PrintCompilation output? 中的这个新列是什么

python - 更改 python 发行版

python - 如何从 SimpleNamespace 对象构建(稀疏)矩阵?

python - SciPy SVD 与 Numpy SVD

python - 按主键对 sqlalchemy 关系进行排序

python - Flake8 无法在自定义格式化程序上加载插件 "N8"

python - 导入一个 python 文件,在单击主窗口按钮时创建一个窗口

python - 如何在 pytest bdd 中包含 selenium 屏幕截图以通过测试?