type
status
date
slug
summary
tags
category
icon
password
comments
材料与人工智能相结合相关的论文
一.ChemLLM: A Chemical Large Language Model
1.背景
它是第一个专门为化学领域设计的、具备“对话能力”的开源大语言模型(LLM),解决了通用大模型(如 GPT-4)在专业化学问题上“懂语言但不懂化学”的痛点。
痛点: 化学知识通常存储在结构化的数据库中(如表格、SMILES 分子式),而大语言模型(LLM)擅长处理非结构化的自然语言。直接把分子式丢给 LLM 训练,它很难理解其中的化学逻辑。
解决方案(核心创新):
作者提出了一种基于模板的指令构建方法。
- 他们不直接让模型“背诵”数据库。
- 而是设计了各种对话模板,把枯燥的结构化数据(如
SMILES: CCO, Prop: Boiling Point 78C)转化成自然的对话文本(如“乙醇的沸点是多少?”“乙醇的结构式是什么?”)。
- 这样,模型就能像学习人类语言一样学习化学语言。
2.核心
- 1. 核心痛点与解决方案
痛点: 化学知识通常存储在结构化的数据库中(如表格、SMILES 分子式),而大语言模型(LLM)擅长处理非结构化的自然语言。直接把分子式丢给 LLM 训练,它很难理解其中的化学逻辑。
解决方案(核心创新):
作者提出了一种基于模板的指令构建方法。
• 他们不直接让模型背诵数据库。
• 而是设计了各种对话模板,把枯燥的结构化数据(如
SMILES: CCO, Prop: Boiling Point 78C)转化成自然的对话文本(如“乙醇的沸点是多少?”“乙醇的结构式是什么?”)。 • 这样,模型就能像学习人类语言一样学习化学语言。 2. 三大核心组件 论文围绕“数据-模型-评估”建立了一套完整的体系: A. ChemData:专业的化学指令数据集 这是训练 ChemLLM 的燃料。作者构建了一个包含 700万条(7M) 数据的指令微调数据集,分为三类: 1. 核心任务: 分子识别、反应预测、性质预测等。 2. 化学知识: 教材级别的化学概念、原理。 3. 化学 NLP: 文献翻译、从文本中提取化学实体。 B. ChemLLM:模型架构 • 基座模型: 选用 InternLM2-Base-7B 作为底座(这也是国产大模型之光)。 • 训练策略: 并没有从头预训练,而是通过两阶段微调(SFT)将化学知识注入。 • 特殊处理: 它可以处理化学中的特殊符号(如 SMILES 字符串),使模型不会把复杂的化学式当成乱码。 C. ChemBench:专业的化学评测基准 为了证明模型好坏,作者推出了一个包含 9大任务 的评测集,比以前的单一任务评测更全面: • 分子名称转换 • 分子性质预测 • 反应产物预测 • 反应产率预测
3.可参考内容
A.专业能力:在核心化学任务上,7B 参数量的 ChemLLM 战胜了 GPT-3.5,并且在部分任务(如分子名称转换、反应预测)上甚至超过了 GPT-4。这证明了“小而精”的专用模型在科学领域的巨大潜力。
B.泛化能力:虽然模型是专门学化学的,但在数学(GSM8K)和物理任务上,它的表现居然也提升了。这意味着学习严谨的化学逻辑,反过来增强了模型的推理能力。
C.启示:
- 数据清洗范式: 如何把手头的结构化材料数据(Excel/CSV)通过“模板法”变成 LLM 能吃的训练数据。这是做 AI4S 的第一步。
- 低成本复现: 证明了不需要几千张显卡去预训练一个千亿模型,只需要在一个优秀的 7B 基座上,用高质量的专业数据微调。
- 开源生态: ChemLLM 是开源的,可以尝试基于它微调数据。
二、Robocrystallographer: automated crystal structure text descriptions and analysis
🌝该文章研究了“将 3D 几何转化为 1D 文本”的问题
1.背景
在材料科学中,晶体结构通常以 CIF 格式存储。这种格式虽然对计算机友好,但存在两个巨大问题:
- 对人难读: 你很难直接通过看坐标数据(0.123, 0.456, 0.789)想象出“这是一层钙钛矿结构,八面体有倾斜”。
- 对 NLP 模型难懂: 当时的自然语言处理(NLP)模型无法直接处理 3D 坐标数据。为了让 AI 阅读大量文献并学习结构-性质关系,我们需要把结构数据变成文本。
2.核心
Robocrystallographer 模拟了人类晶体学家观察结构的逻辑,采用了 从局部到整体 的三层分析法:
第一层:局部环境
- 看什么: 每个原子周围连了几个原子?形成了什么形状?
- 输出: 例如“Sn 原子与 6 个 O 原子配位,形成 SnO6 八面体”。
- 技术: 依赖
pymatgen库来计算键长和配位数。
第二层:半局部环境
- 看什么: 这些多面体是怎么连接的?是共点、共棱还是共面?如果有八面体,它们是否发生了倾斜?
- 输出: “SnO6 八面体通过共棱连接形成链。”
第三层:全局环境
- 看什么: 整体的对称性、空间群、维度(是层状 2D 材料还是 3D 框架?)。
- 输出: “该结构属于金红石型),空间群为 P4_2/mnm,是三维框架结构。”
3.可参考内容
该工具包含两个核心类:
StructureCondenser(结构压缩器): 将复杂的 3D 结构“压缩”成一个中间态的 JSON 描述(包含所有几何特征,但不含废话)。
StructureDescriber(结构描述器): 将这个 JSON 翻译成流畅的英语句子。
4.学习pymaten
1.安装库
2. 核心对象:元素、晶格与结构
pymatgen 的核心逻辑是:元素 (Element) + 晶格 (Lattice) = 结构 (Structure)。
2.1 获取元素信息
获取周期表中任何元素的属性。
2.2 定义晶格与结构
手动创建一个晶体结构。
3. 读取与写入文件 (I/O)
pymatgen 支持几乎所有主流的材料学文件格式(CIF, POSCAR, XYZ, Gaussian 等)。
4. 结构操作 (Manipulation)
得到
structure 对象后,可以像操作列表一样修改晶体。5. 对称性分析 (Symmetry)
这是 pymatgen 最强大的功能之一,底层调用了 Spglib。Robocrystallographer 主要是靠这一步来获取数据的。
6. 电子结构与相图 (进阶)
如果有 VASP 计算出的
vasprun.xml,可以用 pymatgen 画图。6.1 画态密度 (DOS)
6.2 画相图
7. 连接 Materials Project 数据库
pymatgen 以前内置了
MPRester,现在这部分功能被独立到了 mp-api 包中,但逻辑依然紧密相关。可以直接下载成千上万种材料的结构。三、Generative Agents: Interactive Simulacra of Human Behavior
😀 参照langchain的Generative Agents部分
1.背景
它构建了一个名为 "Smallville" 的虚拟小镇,里面有 25 个由 LLM 驱动的居民(Agents)。这些居民不仅会像《模拟人生》里那样生活,还能展现出涌现式的社会行为(比如自主组织派对、传播八卦、建立友谊),而这一切都不是预先写好的脚本。
在使用 LLM 模拟长程行为时,存在两个主要问题:
- 健忘: LLM 的上下文窗口有限,无法记住几天前发生的小事。
- 缺乏连贯性: LLM 容易根据最近的一句话做出反应,而缺乏长期的目标和对自身性格的坚持。
2.核心
作者设计了一种包含三个核心组件的架构,让 Agent 具备了记忆和思考的能力。这是整篇论文的精华。
A. 记忆流 (Memory Stream) —— 数据库
这是 Agent 的大脑硬盘。它不是简单的覆盖更新,而是一个包含了所有经历的列表
感知都是记录。例如:"Isabella 正在做咖啡"、"冰箱空了"。
- 重要性: Agent 会不断地往这个流里写入新的事件。
B. 检索 (Retrieval) —— 搜索引擎
当 Agent 需要做出反应时,它不能把几万条记忆都塞进 LLM。它需要通过检索找到最相关的信息。检索基于三个指标:
- 近期性 (Recency): 刚刚发生的事权重更高。
- 重要性 (Importance): "和女朋友分手" 比 "吃早餐" 重要。LLM 会给每条记忆打分。
- 相关性 (Relevance): 当前情况与记忆的向量相似度(Embedding Similarity)。
C. 反思 (Reflection) —— 逻辑推理
这是让 Agent 变聪明的关键。如果只有记忆和检索,Agent 只能机械回顾。
- 机制: 系统会定期让 LLM 阅读最近的记忆,并问它:"这说明了什么?"
- 产出: LLM 会总结出高层级的思考(Higher-level thoughts)。
- 原始记忆: "我看见 A 在哭" + "A 刚才和 B 吵架了"。
- 反思结果: "A 和 B 的关系可能破裂了"。
- 这些"反思结果"也会被存回记忆流,参与未来的检索。
D. 规划 (Planning) —— 行动引擎
为了避免 Agent 像无头苍蝇,系统引入了自上而下的规划。
- 宏观规划: "我今天要在实验室工作。"
- 递归分解: 系统会让 LLM 把宏观计划拆解细节:"上午 9 点做实验,10 点整理数据..."。
- 动态调整: 如果路上遇到人聊天,Agent 会修改现有计划。
3.结果
实验中最经典的案例是 "情人节派对"。
- 研究者只告诉了一个 Agent(Isabella):"你要在 2 月 14 日办个派对"。
- 结果:
- Isabella 自主给其他居民发了邀请。
- 被邀请的人(例如 Maria)在遇到其他人时,把这个消息传播了出去。
- 有人甚至主动问 Isabella 需不需要帮忙装饰场地。
- 最终,在没有人工干预的情况下,5个居民准时出现在了派对现场。
4.langchain中代码学习
LangChain 在
langchain_experimental中提供了一个近乎 1:1 的复现版本。🙄和RAG的区别
普通的 RAG 只看内容相不相关。但 Generative Agent 必须有时间感。
LangChain 的
TimeWeightedVectorStoreRetriever 实现了论文中的打分公式:- Recency(近时性): 它通过一个
decay_rate(衰减率)参数,让旧的记忆分数随着时间流逝而降低。
- Importance(重要性): 每次存入记忆时,模型会先打分(比如“吃早饭”是 1 分,“发现新材料”是 10 分)。
- Relevance(相关性): 才是传统 RAG 做的向量相似度匹配。
简易代码:
第一步:准备环境和向量数据库
第二步:构建“带时间感”的检索器
第三步:初始化智能体 (Agent)
第四步:交互与记忆积累
反思是如何触发的?
在 LangChain 的
GenerativeAgentMemory 中,内置了一个计数器。- 每当有新的记忆写入,LLM 会给它打个分。
- 这个分数会累加到
aggregate_importance。
- 一旦超过你设定的
reflection_threshold(比如 8 分),系统就会强制暂停。
- 后台自动执行: 它会把最近的记忆拉出来,问 LLM:“这些事情说明了什么高层模式?”
- 生成洞察(Insight): 比如“该实验体系对温度极其敏感”。这个洞察会被写回记忆流,供未来检索。
作用:
相比于普通的 ChatBot,用 LangChain 的 Generative Agent 做科研助手有两大优势:
- 长期连贯性: 它不会聊着聊着就忘了上周失败的实验。通过
TimeWeightedVectorStoreRetriever,它能记住三个月前的一个关键失败细节,如果你现在问类似的问题,它会根据那个“旧记忆”发出警告。
- 自我进化: 通过“反思”机制,随着你喂给它的文献和实验数据越多,它自己生成就越多。它不再只是一个问答机器,而是一个参与者。
欢迎您在底部评论区留言,一起交流~
- 作者:于淼
- 链接:https://yumiao1.com/article/llm1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。











