计算化学公社

 找回密码 Forget password
 注册 Register
Views: 671|回复 Reply: 5
打印 Print 上一主题 Last thread 下一主题 Next thread

[算法与编程] SOSCF的本质是L-BFGS吗?

[复制链接 Copy URL]

300

帖子

6

威望

2711

eV
积分
3131

Level 5 (御坂)

大家好。

我最近想在自己的代码中实现SOSCF以加速SCF收敛。SOSCF的两篇重要文献[1]https://link.springer.com/article/10.1007/s002140050241和[2]https://www.sciencedirect.com/science/article/pii/S000926140000662X都引用了[3]https://pubs.acs.org/doi/10.1021/j100203a036里的BFGS算法。[3]指出精确Hessian太大了,不好存储,提出用前几步的梯度、步长等信息近似后一步的步长。这个思想不正是L-BFGS吗?
可是我仔细看了[3]的伪代码,发现和L-BFGS不一样,最大的区别就是每一步迭代,[3]只有一个循环,而L-BFGS有一正一反两个循环。这么说,SOSCF的BFGS到底是什么版本呢?

谢谢大家解答。



831

帖子

1

威望

7197

eV
积分
8048

Level 6 (一方通行)

2#
发表于 Post on 2023-7-7 16:10:46 | 只看该作者 Only view this author
本帖最后由 hebrewsnabla 于 2023-7-7 16:15 编辑

second order SCF 是一类方法,凡是利用了轨道hessian的都算,hessian的近似程度有很多种选择。在目前的主流程序中,如果用 BFGS,算是近似比较差的。


不过 orca 的 SOSCF 关键词倒是确实是某种 BFGS。参见 http://bbs.keinsci.com/forum.php ... =30165&fromuid=5840

要实现的话,不妨学习一下 TRAH 或者 CIAH (http://arxiv.org/abs/1610.08423),比较现代而且公式都比较全。


300

帖子

6

威望

2711

eV
积分
3131

Level 5 (御坂)

3#
 楼主 Author| 发表于 Post on 2023-7-7 17:35:01 | 只看该作者 Only view this author
hebrewsnabla 发表于 2023-7-7 16:10
second order SCF 是一类方法,凡是利用了轨道hessian的都算,hessian的近似程度有很多种选择。在目前的主 ...

谢谢解答。

我看到有人说当DIIS后期收敛出现拖尾情况时,SOSCF有助于加速收敛。(https://sites.google.com/site/or ... -convergence-issues检索“trailing”)我测试的一个例子确实出现了拖尾情况,丢给orca算且不用soscf,也拖尾了,但使用soscf后,末端的收敛就很迅速。因此我想实现SOSCF方法。

ciah和trah都要显式地计算hessian矩阵吧,肯定比update hessian昂贵多了,无论用了sparse grid还是density fitting。我希望我的程序尽量只使用不显式计算hessian的方法。如果只是因为diis拖尾,就上trah,那就不划算了。

我现在在钻研文献[3]了,又有了新问题:公式4里的v是什么意思呢?文献中说它是a general vector,说了跟没说一样。您有什么主意吗?

300

帖子

6

威望

2711

eV
积分
3131

Level 5 (御坂)

4#
 楼主 Author| 发表于 Post on 2023-7-7 17:35:06 | 只看该作者 Only view this author
hebrewsnabla 发表于 2023-7-7 16:10
second order SCF 是一类方法,凡是利用了轨道hessian的都算,hessian的近似程度有很多种选择。在目前的主 ...

谢谢解答。

我看到有人说当DIIS后期收敛出现拖尾情况时,SOSCF有助于加速收敛。(https://sites.google.com/site/or ... -convergence-issues检索“trailing”)我测试的一个例子确实出现了拖尾情况,丢给orca算且不用soscf,也拖尾了,但使用soscf后,末端的收敛就很迅速。因此我想实现SOSCF方法。

ciah和trah都要显式地计算hessian矩阵吧,肯定比update hessian昂贵多了,无论用了sparse grid还是density fitting。我希望我的程序尽量只使用不显式计算hessian的方法。如果只是因为diis拖尾,就上trah,那就不划算了。

我现在在钻研文献[3]了,又有了新问题:公式4里的v是什么意思呢?文献中说它是a general vector,说了跟没说一样。您有什么主意吗?

831

帖子

1

威望

7197

eV
积分
8048

Level 6 (一方通行)

5#
发表于 Post on 2023-7-7 18:55:58 | 只看该作者 Only view this author
应该是说 H 是不直接存的,所有出现 H 的地方,H 只能以 H 点乘 v 的形式存在,那v是哪些要看公式2-3里面H点乘了什么。

831

帖子

1

威望

7197

eV
积分
8048

Level 6 (一方通行)

6#
发表于 Post on 2023-7-7 20:28:17 | 只看该作者 Only view this author
本帖最后由 hebrewsnabla 于 2023-7-7 20:48 编辑

其实ciah和trah也不是硬算hessian的,算一次H.v和一次JK差不多。你可以拿pyscf感受一下速度。

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-27 03:48 , Processed in 0.198322 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list