Tensorflow 可以用于多元函数的全局最小化吗?
Can Tensorflow be used for global minimization of multivariate functions?
我一直很好奇 TF 是否可以用于函数的全局优化。例如,它可以用来有效地找到 Lennard-Jones 势的基态吗?它会比现有的优化方法更好还是更差,比如 Basin-Hopping?
我的部分研究涉及寻找大型多组分分子的基态。传统方法(BH 等)对此有好处,但也很慢。我研究了 TF,有些部分看起来足够强大,可以解决这个问题,尽管我有限的网络搜索似乎没有显示 TF 对这个问题的任何使用。
用于训练神经网络的 gradient descent 仅考虑函数的局部区域。因此不能保证它会收敛到全局最小值(这对于大多数机器学习算法来说实际上很好;考虑到所考虑空间的真正高维度,人们通常很乐意找到一个好的局部最小值而不必四处探索太多了)。
也就是说,当然可以使用 Tensorflow(或任何此类框架)为全局流域跳跃方案实施局部优化器,例如如下(简化算法):
- 选择起点;
- 使用本地优化器获取本地最小值;
- 对该最小值的坐标应用一些扰动;
- 从这个新位置开始,重新使用您的局部优化器来获得下一个局部最小值;
- 保持最好的最小值,从 3 开始重复
实际上,有些人 目前正在 尝试实施这个确切的方案,将 TF 与 scipy.optimize.basinhopping()
. Current development and discussions can be found in this Github issue 连接起来。
我一直很好奇 TF 是否可以用于函数的全局优化。例如,它可以用来有效地找到 Lennard-Jones 势的基态吗?它会比现有的优化方法更好还是更差,比如 Basin-Hopping?
我的部分研究涉及寻找大型多组分分子的基态。传统方法(BH 等)对此有好处,但也很慢。我研究了 TF,有些部分看起来足够强大,可以解决这个问题,尽管我有限的网络搜索似乎没有显示 TF 对这个问题的任何使用。
用于训练神经网络的 gradient descent 仅考虑函数的局部区域。因此不能保证它会收敛到全局最小值(这对于大多数机器学习算法来说实际上很好;考虑到所考虑空间的真正高维度,人们通常很乐意找到一个好的局部最小值而不必四处探索太多了)。
也就是说,当然可以使用 Tensorflow(或任何此类框架)为全局流域跳跃方案实施局部优化器,例如如下(简化算法):
- 选择起点;
- 使用本地优化器获取本地最小值;
- 对该最小值的坐标应用一些扰动;
- 从这个新位置开始,重新使用您的局部优化器来获得下一个局部最小值;
- 保持最好的最小值,从 3 开始重复
实际上,有些人 目前正在 尝试实施这个确切的方案,将 TF 与 scipy.optimize.basinhopping()
. Current development and discussions can be found in this Github issue 连接起来。