全文速览
计算化学领域在机器学习概念和算法的集成方面有了显著的增长。从这个角度来看,本文调查了179个开源软件项目,以及在过去5年内发表的相应的同行评审论文,以更好地理解机器学习方法所研究领域的主题。对于每个项目,我们提供简短的描述,代码链接,附带的许可类型,以及训练数据和结果模型是否公开可用。基于存储在thub存储库中的那些,确定了最常用的Python库。希望这项调查将通过识别可访问代码和随附的论文,作为了解机器学习或其特定架构的资源。为此,需要包括用于生成训练数据的计算化学开源软件和用于机器学习的基本Python库。
软件和库
首先要讨论的工具集是那些形成软件环境的工具,这些环境可以帮助我们安装和组织Python库,以及编码、训练、测试和实现机器学习。Conda软件支持安装和管理Python及其库。除了简化库安装之外,Anaconda和Miniconda还支持创建独立的环境,将项目彼此隔离,并与操作系统默认安装的库隔离。在高级的层面上,这可以让用户测试他们代码导入库的不同版本。强烈推荐使用在线代码库,由GitHub or GitLab等服务托管。Gitisacode版本控制工具,它已经取代了Apache Subversion (SVN)等旧工具。Agitrepository (a)通过厌恶控制系统作为工作的备份,允许用户拥有存储代码的本地和远程实例,(b)允许多人在相同的代码(即项目)上工作,并将他们的工作合并回集中的源代码,(c)允许创建分支,允许安全的实验和实现,而不会立即影响主分支。为了区分上述两个代码存储库系统,GitHub作为存储库的公共平台,而GitLab是一个完全独立且自包含的生态系统,也可以安装在自我管理的本地服务器上。这个透视图中包含的大量代码都托管在github上。
虽然计算机科学家经常使用集成开发环境(IDE)软件来开发他们的代码(例如,PyCharm, Spyder,或visual Studio Code),但自然科学家可能更喜欢在本地或在线使用aJupyterHub(私有或公共服务器)或Google的协作实验室编写代码。所有这些后一种工具允许人们将代码(即代码单元)与常规文本写作(即markdown单元)混合在一起,因此非常像传统的科学实验室笔记本。因此,研究人员可以在一个笔记本上记录他们的想法,同时编码他们的工作流程,这可以很容易地与他人分享(例如,在手稿的同行评审期间进行验证;启用再现性和透明性)。该实验室的一个优势是它可以免费使用合理的GPU计算来执行代码和训练模型。这种第三方托管解决方案的缺点是在运行代码和上传数据时存在数据安全和隐私问题。或者,也可以使用JupyterHub,它可以使用集中组织的计算资源,在多个共享的Jupyter笔记本上进行自我管理的协作工作,并且可以轻松地与社区共享演示。对于一些研究人员来说,可能的缺点是JupyterHub可能需要服务器和it专家来安装和维护。Python编程语言在其标准库中提供了基本的通用工具集,其中包括使用标准数据格式读取和写入,执行数值和数学运算,与文件和操作系统交互,处理数据,使用单元测试测试代码,处理异常等等。除了标准库之外,还开发了许多支持更高级操作和算法的库。有几个库被认为是对自然科学和机器学习感兴趣的程序员的基础。下面,我们将介绍在我们的领域内被研究人员广泛使用和改编的库。它们由活跃的oss开发人员社区维护,并且由于其广泛使用而受到依赖。在数学建模、数据分析和操作方面,经常使用以下库:NumPy、Pandas、SciPy、Matplotlib、Seaborn和sympy(表1)。NumPy 被设计用于对数组和矩阵执行快速数值计算,它通过与用更低级的CandFortran编程语言编写的代码接口来实现。NumPy计算是矢量化的,这使得它的使用本质上是并行的。因此,许多其他库,如上面提到的,使用NumPy进行计算。Pandas库使数据可以很容易地导入和导出(例如,从csv格式的文件导入和导出)和操作(例如,过滤,排序)。
Pandas可以被看作是python版本的电子表格。该库的重点是科学计算,它包括算法外推法,快速傅里叶变换,插值,线性代数,数值积分,优化,多项式拟合,统计和信号处理Matplotlib68和seaborn 69是通过绘图可视化数据的库。Seaborn是在Matplotlib的基础上构建的,简化了高质量、复杂可视化的编码。SymPy是一个非符号数学库,包括计算导数、积分和方程极限的能力,其子模块侧重于矩阵、多项式、级数和量子力学虽然不是一个完整的列表,但这些库在ml项目中非常有用,可以读取、操作和可视化数据。
浅层学习可以被认为在模型中只有一到两个学习层。通常,输入数据由人类进行预处理,以提取某些已知的派生数据特征,这些特征有助于模型更容易地学习,从而降低模型的复杂性。表2列出了最广泛使用的框架。
Scikit-learn包含大量用于监督学习(即从源-目标数据中学习目标)和无监督学习(即在未标记数据中查找结构)的算法,后者包括经典无监督ML范式的两大类:聚类(即,基于相似性对数据分组)和流形学习(即,在高维数据中解析低维子结构)。该库为模型选择,检查,贬值以及数据处理和可视化提供了辅助工具。Scikit-CUDA使用户能够轻松访问gpu加速的线性代数运算小ffnet包允许在python中训练浅前馈神经网络(NNs)。XGBoost是一个优化的分布式ml库。LightGBM提供基于树的学习算法。
作为经典mls方法的替代品,统计学习提供了更严格的模型,这些模型主要基于高斯过程建模和回归。这类机器学习使用的假设是,我们想要基于输入数据预测的函数是从正态分布函数中抽样的(就像输入数据点是从正态分布的点中抽样一样)。产生这种分布的随机过程称为高斯过程。建模技术在数据点之间进行插值,并遵循函数平滑的基本假设。其他潜在的假设也可以加入,比如周期性。威利斯是表3中使用最广泛的框架。代表性的库是gpy, , GPflow,和GPytorch,,它们提供了大量的模型和训练范例。后两者支持快速gpu计算。
增加模型的深度(即层的数量)打开了深度学习的大门。这些模型完全基于原始数据来学习哪些特征是重要的。这在概念上不同于使用手动定义特征的经典机器学习。深度学习可以在更大的数据集中发现结构和特征,它的概念对机器学习的可用性产生了令人难以置信的影响。表4列出了使用最广泛的深度学习框架。
GNN 是一种特别适用于计算化学的深度学习模型, 表 5 列出了其最流行的框架。因此,GNN 经常被用于侧重于分子相关特征(如元素符号和键距)的 ML 模型中。基于 PyTorch 的 PyG 库 和(目前未经同行评审的)基于 TensorFlow 的 graph_nets 库 就是 GNN 创建的典范。深度图库 可以将 GNN 集成到 PyTorch、TensorFlow 和 Apache MXNet 框架中。
与深度学习相反,经典ML的一个重要任务是特征工程,它包括基于数据的高级特征的选择和提取。深度学习,这些特征是学习的,但通常使用专家知识来实现浅层学习,这在数据集小的时候更合适。已经开发了特定的工具和库来帮助从(原始)数据中选择、提取或计算正确的特征。下面列出了表6中使用最广泛的库。Featuretools 是用于此任务的通用库,而Feature-engine91是专门为scikitlearn构建的。Tsfresh为时间序列提取特征
寻找好的模型架构(例如,层数和维数)是神经结构搜索和模型选择过程的一部分。表7提供了使用最广泛的库。Scikit-learn有内置的方法来帮助模型选择。Libra是一个通用的模型选择库,支持Keras、TensorFlow、PyTorch和scikit-learn。PyCaret类似于Libra,支持scikit-learn、XGBoost、LightGBM、Optuna、Hyperopt等。最后,Yellowbrick提供可视化分析和诊断工具。
与参数或权重相反,超参数不是由模型学习的,而是必须预先配置的。这些超参数的值直接影响模型的结果精度,并应始终报告再现性。超参数优化可以使用各种库来完成(表8),包括Hyperopt、scikit-optimize和Optuna. Auto-sklearn提供了自动超参数调优工具,并包括可视化。
完全自动化整个机器学习过程允许用户快速尝试和推出特定任务的模型,而不需要对机器学习有深入的了解。然而,应该警告的是,对学习过程的控制越多,在分析结果时就应该越警惕。这里有两个著名的执行AutoML的示例库(表9)。tpot 使用遗传编程通过scikit-learn创建mlpipeline。AutoGOAL104使用框架对AutoML进行程序合成。
虽然深度学习通常不执行特征工程,但模型选择和超参数优化仍然需要大量的时间、精力和资源。用于深度学习的AutoML是一个活跃的领域,表10列出了使用最广泛的AutoML库。Auto-PyTorch 和autokeras 是两个著名的例子,分别支持PyTorch和Keras/ TensorFlow模型。
qm、DFT和ml的领域通常以不同的方式重叠。最大的重叠是使用QM/DFT计算为模型的训练和验证创建可靠的数据。
为了改进ft理论的功能,开发了几个OSS工具,包括PROPerty Prophet (Prophet; D3-GP,DeepKS,NeuralXC,135 NNFunctional,可微分量子化学(DQC), JAX-DFT,四阶扩展的xhole, 符号功能进化搜索(SyFES),142和CF22D (Fortran编写).
表13给出了确定非键合参数和键合参数的代表性ML算法。采用遗传算法和mp2目标数据对极化力场进行参数化,特别是静电和范德华斯参数。开发了金属有机框架力场前驱体(FFP4MOF)工具,用于材料研究和含金属体系的非键参数预测。
基础原子电荷(PACs)已经有几个研究小组开发了ML概念的预测(表14)。
为了对动力学(表16)进行增强采样,有几个组已经开发了以下ml一种方法:
对现有的md生成数据的分析是一个额外的区域,在那里ML满足计算化学(表17),主要涉及数据维度减少。
原文链接:https://doi.org/10.1021/acs.jcim.3c00643
注:本公众号推送内容以交流学习为目的,并非商业用途,如有侵权,请联系协商处理。欢迎各位专家学者投稿,分享Ai+材料最新科研成果!
投稿邮箱:zyj1047587695@qq.com群聊:材料与人工智能-学习交流群加群方式:添加编辑微信:zyj1047587695,请备注:单位-姓名-研究方向,由编辑审核后邀请入群材料与人工智能斗转星移,光阴飞逝,AI使世界变化之快,如过隙白驹,让我们目不暇接。一种难以厘清的压迫感隐约而至。科学研究方式与生态是否处于大变革前夜?我们冥思,我们求索,为此创办此公众号,与大家分享和讨论AI在材料科学领域的最新进展、问题和挑战。