赶上最新的AI论文

大规模语言模型在化学和化学工程中的潜力;代码生成能力的实用性和局限性

大规模语言模型在化学和化学工程中的潜力;代码生成能力的实用性和局限性

大型语言模型

三个要点
✔️ 大规模语言模型 在化学中的应用:大规模语言模型对解决化学问题很有用,但其范围 和局限性尚未得到充分探讨。解决化学问题的专业知识积累可能会影响模型的适用性。
✔️ 评估代码生成能力:大规模语言模型,特别是 CodeBERT 和 GPT-3 变体,可用于生成解决化学和化学工程问题的代码,但可能需要专家评估。目前正在测试这些模型在化学模拟和分子动力学等任务中的能力。

✔️ 研究意义和未来应用:本文是了解大规模语言模型的能力和局限性以及如何在化学和化学工程中有效使用这些模型的重要一步。

Assessment of chemistry knowledge in large language models that generate code
written by 
Andrew D. WhiteGlen M. HockyHeta A. GandhiMehrad AnsariSam CoxGeemi P. WellawatteSubarna SasmalZiyue YangKangxin LiuYuvraj SinghWillmor J. Peña Ccoa 

(Submitted on 12 Dec 2022)
Subjects: deep learning, language models, large language models, prompt engineering

本文所使用的图片要么来自论文、介绍性幻灯片,要么是参考这些图片制作的。

概述

大规模语言模型基于复杂的变换器神经网络,从具有数十亿参数的大量文件集中学习。这些模型可以执行文本分类、翻译和检索等多种任务,尤其在自动文本补全方面引起了广泛关注。该技术应用广泛,从创建单元测试到记录功能、生成代码、回答问题和完成化学反应方程式。

长期以来,化学界一直在争论是应用专门解决特定问题的大规模语言模型,还是应用更具通用性的大规模语言模型。这仍然是一个重要问题。早期研究表明,分子结构 SMILES 符号与自然语言之间的互动是可能的,但大规模语言模型在化学中的应用范围及其局限性尚未得到充分探索。特别是,解决化学问题所需的大量专业知识可能会限制大规模语言模型的适用性。

关于代码生成,最近的研究探索了大规模语言模型在多大程度上可以应用于计算化学问题和其他编程任务。许多大规模语言模型仅是解码器模型,可根据文本提示生成续集,而其他模型,如 CodeBERT,则专门从事代码生成。不过,这些模型主要用于代码嵌入、分类和翻译成自然语言等任务。

本文评估了大规模语言模型将自然语言、方程式、代码和化学发现方法联系起来的能力。重要的是,大规模语言模型所表现出的有说服力的文本生成并不一定表示深刻的理解或推理能力。本研究的目标是超越肤浅的理解,揭示大规模语言模型在化学领域的真正潜力。

技术

本文深入探讨了化学和化学工程领域的知识,并进行了一次全面调查,以衡量大规模语言模型在代码生成方面的性能。研究汇总了一组分类问题,涵盖了从一般化学到特定专业的广泛主题。首先,对化学和化学工程的知识领域进行了细分,使每个分类至少包含 10 个示例。这些示例是作者研究团队利用广泛的教学和研究背景精选出来的,并附有专家见解和参考答案。

这项研究的核心是对几种最先进的可生成代码的大规模语言模型进行评估,这些模型具有解决化学相关问题的能力。例子涉及化学模拟、分子动力学、化学信息学和量子力学等领域。选择这些问题是为了测试大规模语言模型的能力,以及在实际化学或化学工程课堂上可能遇到的更普遍的问题。

特别值得注意的是,某些问题类型(如绘图创建)只能由专家进行充分评估,而自动评估很难解决这些问题。总共收集了 84 个问题示例,其中 25 个需要专家评估。该研究侧重于参数多达数十亿的模型,深入探讨了这些模型的性能与准确性之间的关系。

在本研究中,我们专门评估了几种模型,包括 GPT-3 的变体 Codex (cushman)、源自 GPT-3.5 的 davinci (code-davinci-002),以及基于人类反馈强化学习的 text-davinci-003 (davinci)。3),对几种模型进行了评估。选择这些模型是为了比较它们在解决化学问题方面的能力。

我们还考虑了 "incoder "模型和 "codegen "模型,前者侧重于代码生成,后者在类似的数据集上进行训练,但侧重于自然语言和代码合成。这些模型为衡量特定化学相关任务的性能提供了有价值的比较。

这项研究深入了解了化学和化学工程领域代码生成的大规模语言模型的能力和局限性。这是迈向未来科技进步的重要一步,为研究人员和开发人员设计更有效的模型提供了启示。

人工智能模型 "davinci "在常见编程任务中表现最佳。本研究中使用的 "Incoder "基于 HuggingFace 变换器模型,并使用 2021 年 6 月以后的 Python 版本和软件包进行了评估,以确保最新的库变化不会影响结果。选择这一日期是基于以往研究的训练数据范围。

尽管在开发过程中使用 davinci 对提示及其答案进行了测试和修改,但提示工程仍无法完全避免。值得注意的是,设计提示语的目的并不只是为了得出正确答案,而是为了探索人工智能模型对化学知识的了解程度。所报告的准确率只是一个例子,最近的研究表明,通过提示工程可以进一步提高准确率。

评价标准基于提示是否正确完成,即代码是否正常运行。在大多数情况下,都会提供提示和单元测试,专家评价也是基于这些标准。使用 Top-k 采样和多种温度设置来生成成品,并最终选择特定参数来平衡模型的通用性和准确性。

此外,专家评估是在特定条件下通过网络界面进行的。评估过程包括对问题难度和解决方案准确性的提问,以及提供详细反馈的附加评论部分。这些评估数据为今后的研究和开发提供了重要启示。

这项研究的重点是人工智能能够在多大程度上准确地执行编程任务,尤其是在化学领域,尤其侧重于知识和能力。随着及时工程学的进步,这些模型的能力有望得到进一步扩展。

实验结果

本文首先介绍了示例任务。为了展示大规模语言模型如何解决各种任务并产生令人印象深刻的结果,本文在下图中介绍了特定类别的任务输出。

为了统一任务问题的格式,我们以需要填写的函数形式设置了提示。首先,显示了加载专门用于数值计算的 Python 库(numpy39)的代码,作为额外的 "上下文"。任务所需的信息包括两部分:输入变量 "n_steps"、"T "和 "k "的名称,以及解释函数目的的注释。例如,它介绍了一个在谐波势中执行 Metropolis 蒙特卡罗方法的函数。

其中,"k "表示弹簧常数,指令是根据能量函数 U(x) = 1/2k(x-x0)^2 生成样本(因为 x0 = 0),但使用了缩小单位的玻尔兹曼常数 kB = 1.0。

即使只有几条指令,输出代码也是准确的,只是在某些行上标注了错误。不过,这一行是粒子位置在[-1,1]范围内的新采样,只有在系统的特定条件下才能得到准确的结果。模型的其他输出建议使用高斯随机数对位置进行微调,这也是一种合适的方法,但取决于弹簧常数和温度,σ^2 = 1 的设置可能并非最佳。

下图还提供了一个额外的例子,说明达文西-科德斯模型具有内部化学知识,特别是相平衡的一般化学知识。

当以焦耳/摩尔为单位给出蒸发热('Hvap')时,该模型 "知道 "克劳修斯-克拉皮隆方程的正确重排并输出准确的结果。这些例子表明,LLM 不仅能够生成文本,还能运用特定的专业知识得出合乎逻辑的结论。用户应注意这一点,因为根据提示中包含或明确指出的内容,结果可能会有很大差异。

接下来是专家评估。专家评估的重点是性能最好的模型 "达文西",该模型对不同化学领域的方程和一般计算方法有广泛的了解。如下表所示,专家对一系列可评估主题和模型的总体准确性进行了评估。

结果表明,包括 Davinci 在内的各种模型都能准确回答各种题目,其中 Davinci 的表现最好。事实证明,及时工程可将准确率提高约 30 个百分点。

不过,在可由人类评估的主题上,平均准确率相对较低,这反映了任务的高难度。具体来说,这包括更高级的任务,如 NWChem 输入文件创建、谐波振荡器的蒙特卡罗模拟实施和复杂的多面板图生成。

此外,还确定了任务难度的单项评分细目,如下图所示。根据专家的判断,数据集中的提示难易适中。

一个重要发现是,模型的准确性与感知到的提示难度呈负相关。这是一个可以预测的结果,但不一定是自然的结果。

在评估过程中,没有实施随机化或特定控制,评估人员可以访问所有提示和所有响应这些提示的结果。因此,我们认识到,一些因素(如提示在网站上显示的顺序和结果显示的顺序)可能会导致评估结果出现偏差。在本文中,我们只关注可自动评估与预期答案相比准确性的提示。

报告还讨论了如何提高大规模语言模型的性能。通过使用基本的提示工程策略,可以显著提高大规模语言模型的准确性。如下图所示,报告强调了 "语境 "对模型准确性的影响。

该上下文是添加在提示符之前的代码,起到辅助信息的作用。具体来说,"自定义 "上下文包含与主题相关的库的导入和一个指示模型结束完成的示例。这种方法对于防止错误和提供上下文都很有用。

例如,导入 "rdkit "用于化学信息学,"结构 "一词就意味着原子的键合排列。另一方面,导入 "openmm "后,"structure "一词就意味着三维原子排列。大型语言模型还可以通过提供完成示例(如显示导入软件包的版本号)在特定点终止完成。

此外,研究还发现,在提示语中添加某些短语可以显著提高大规模语言模型的响应速度。例如,反复添加 "非常 "或说明 "此代码没有错误 "都会很有效。在本文中,我们发现在提示语中插入版权声明能显著提高高温下的准确性,如下图所示。这是因为大规模语言模型倾向于选择更标准或高质量的代码。通过添加 "此代码由 Python 程序员专家编写 "的声明,我们还取得了进一步的改进。

这些发现引发了新的研究,即使用代码流行度等元数据来调节大规模语言模型。这样就能提高性能,而无需诉诸特别的提示工程。有趣的是,对 davinci3 模型的改进表明,它对提示工程的敏感性降低了。这将有助于开发大规模语言模型,通过利用人类反馈提供更自然、更直观的用户体验。

我们的研究表明,通过使用适当的提示工程策略,可以显著提高大规模语言模型的性能。这一发现为今后采用更复杂的方法开发大规模语言模型奠定了基础。

此外,论文还试图评估大规模语言模型对化学知识的掌握程度,以及将自然语言与分子结构直接联系起来的能力。该研究专门测试了 InstructGPT 和 davinci 这两种模型,其中 InstructGPT 的效果更好。

从分子的 SMILES 表示法转换为分子名称的尝试在两个模型中都不成功,从 pubchem 中随机选择的 100 个分子(相对较小和简单的分子)的转换率为 0%。不过,InstructGPT 被证明有能力将描述分子的句子转换为 SMILES 表示法。例如,它可以将 SMILES 中的特定官能团与自然语言联系起来,如下图所示。虽然不是完全匹配,但还是观察到了一定程度的相关性,例如,在苯酚的例子中,氧存在于环附近。

InstructGPT 还能将分子特性(如亲水性)与 SMILES 联系起来,很少生成无效的 SMILES。不过,在上图所示的第一个分子中发现了一个无效字符。

这项研究表明,InstructGPT 和其他大规模语言模型具有学习和微调自然语言与化学结构之间联系的潜力。值得注意的是,最近还从头开始训练了能够在分子结构和自然语言之间进行翻译的特定模型。这些发展扩大了大规模语言模型在化学领域的潜在应用。

摘要

达文西在计算化学推理方面似乎很吃力。特别是在 "使用 pyscf 进行高精度单点量子计算 "这样的提示中,它经常选择相对论哈特里-福克方法,因为 "相对论 "与精度相关,而与计算的性质无关。此外,在 "力常数 "等提示中,需要将特定公式重新排列为质量的调和平均值,但 davinci 无法找到解决方案。

此外,davinci 有时会引用并不存在的函数,并尝试使用 MolToRDC 方法来解决 "从 SMILES 字符串返回残余偶极键 "等难题,而这种方法在现实中并不存在。这说明了 LLM 在完成提示时很难进行化学推断。

值得注意的是,当自然语言为中文、德文或西班牙文时,LLM 有可能解决许多基准测试问题。这可能有助于降低非英语使用者使用计算工具的障碍。

LLM 现在可以通过 tabnine 和 copilot 等工具随时获得。虽然计算化学问题有望获得高准确度,但在使用困难提示时仍需谨慎。意想不到的功能包括用自然语言生成分子和用非英语提示输出准确结果。

  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!

如果您对文章内容有任何改进建议等,请通过 "联系我们 "表格与爱学网编辑部联系。
如果您能通过咨询表与我们联系,我们将非常感激。

联系我们