清华大学利用可解释机器学习,优化光阳极催化剂,助力光解水制氢

水的太阳能光电化学 (PEC) 分解是将太阳能高效转换为氢能的方法,是一种很有前景的可再生能源生产方式。然而,受电极性质及电极缺陷的影响,PEC 反应的效率较低,需要合适的助催化剂辅助。而电解池、光电极和助催化剂组成的 PEC 系统非常复杂,参数繁多,系统优化成本很高。为此,清华大学的朱宏伟课题组利用机器学习,对 BiVO4 光阳极系统进行了优化。机器学习可以基于以往的实验数据,找出光阳极、助催化剂和电解池之间的关系。同时,可解释的机器学习能够识别出对反应性能最重要的参数,为系统优化提供指导。

作者 | 雪菜

编辑 | 三羊

本文首发自 HyperAI超神经微信公众平台~

太阳能光电化学 (PEC) 分解水是将太阳能高效转换为氢能和氧气的方法,是一种很有前景的可再生能源生产方式。

PEC 分解水需要一个光电极,充当电解池的阳极或阴极,而对电极作为电解池的阴极或阳极。光电极吸收太阳能,驱动水的氧化或还原反应,对电极上同时进行与之对应的还原或氧化反应。促进光生载流子的分离,还需要一个电源或光伏电池,为 PEC 提供偏压。

图 1:PEC 分解水流程示意图

PEC 分解水的效率受制于光电极的缺陷,如载流子在低偏压下的复合和不稳定性。而合适的助催化剂可以促进光载流子的分离,与光电极形成异质结并促进光吸收、降低表面能加速反应、抑制电极的化学腐蚀、加速电子传输等,提高反应效率。

研究人员已发现多种可以促进 PEC 反应的助催化剂,包括金属、金属氧化物、无金属助催化剂、双催化剂等。这些助催化剂的效率受其物理化学性质影响,如化学组成、形貌、晶型等。此外,电解池的反应条件如电极类型、电解液浓度、pH 等,也会对助催化效率有影响。

反应系统十分复杂,如何针对给定的光电极进行参数优化、选择合适的助催化剂,需要大量的试错实验。尤其是助催化剂的最佳厚度,会受到电极和助催化剂的双重影响,很难选择。然而,如果有足够的数据,机器学习可以迅速实现这一过程。

基于此,清华的朱宏伟课题组利用机器学习 (ML, Machine Learning),优化了 BiVO4 光阳极的助催化剂。首先,讨论了光阳极催化系统的基本影响因素和机制。随后,基于先前研究的实验数据创建数据库,训练机器学习模型,找出 BiVO4 光阳极、助催化剂和电解池之间的关系。最后,基于机器学习模型的可解释性,找出与反应效率联系最密切的特征,以此指导 BiVO4 光阳极助催化剂的选择。这一成果已发表于「Journal of Materials Chemistry A」。

这一成果已发表于「 Journal of Materials Chemistry A」

论文链接:

https://pubs.rsc.org/en/content/articlelanding/2023/TA/D3TA04148D

实验过程

数据集 文献调研

机器学习模型的输入为 12 个反应影响因素及电极面积,输出为 1.23 V (vs RHE ) 下的光电流密度提升。

从 84 篇文献中,找到了 112 组 BiVO4 光阳极催化水分解的实验数据,组成数据集。值得注意的是, BiVO4 光阳极的形貌被简化为 4 类,包括单晶、纳米虫、随机堆叠和致密薄膜。而助催化剂的形貌被简化为 3 类,包括均质膜、单层膜和分离膜。

模型的输出,即助催化剂对光电流密度的提升,被分为 3 个层次:低 (0)、中 (1)、高 (2)。

图 2:影响 PEC 反应效率的因素及助催化剂的形貌

数据处理 筛选与降维

数据收集完成后,对数据进行预处理,包括以下 7 个步骤:

1、数据清洗 (Cleaning)。数据清理是数据校正、修复和清除的过程。有 25 组数据由于不具代表性被排除;

2、数据插补 (Imputation)。很多研究提供的数据相当有限,且不同研究的数据之间缺乏连续性。因此,研究人员基于反应条件、光阳极形貌和尺寸,通过链式方程多重差值 (MICE),补充了缺失的助催化剂厚度;

3、数据分区 (Partition)。70% 的数据集被划分为机器学习模型的训练集,30% 用于测试。由于数据量有限,研究人员使用了 K-Fold 交叉验证,以验证模型的准确性;

图 3:数据分区流程图

4、数据转化 (Conversion)。这一过程是将数据集转换为模型可读的集合。使用独热编码 (One-Hot Encoding) 将分类数据转换为数值数据后,输入变量有 109 个维度;

5、数据归一化 (Normalization)。数值数据范围不一致时,需要通过归一化将数据转换至同一范围,使得不同输入变量在集合中权重相同。本研究使用 StandardScaler 进行数据归一化;

6、数据平衡 (Balance)。本研究中,不同输出类别的数据分布明显不平衡,其中 0 约占 34%、1 约占 52%、2 约占 14%。常用过采样和欠采样方法对样本进行再处理,前者是在小样本集合中增加数据,后者是在大样本集合中删除数据。本研究使用 SMOTE 过采样算法进行数据平衡;

7、数据降维 (Dimensionality Reduction)。数据降维是在尽量保留数据信息的同时,降低数据的维度,以简化模型,避免过拟合。数据降维的常用方法包括特征选择和特征提取。

模型构建 神经网络 + 树模型

本研究使用的神经网络包括两个隐藏层,第一层的神经元数量在 8-96 之间,第二层在 0-96 之间。模型的超参数组合通过随机搜索 (Random Search) 和贝叶斯优化 (Bayesian Optimization) 进行自动优化。

图 4:神经网络示意图 (a) 及最优超参数 (b)

此外,研究人员还对比了 4 种树模型算法的表现,包括并行的 Bagging 算法和随机森林 (RF, Random Forest) 算法、串行的 AdaBoost 算法和梯度提升 (Gradient Boosting) 算法。

模型的评价标准包括准确率、精确率、混淆矩阵、F1 分数、召回曲线及 AUC。

图 5:本研究的工作流

可解释性 SHAP

可解释的模型有利于帮助人们理解机器学习模型的决策过程。提高模型可解释性主要有两种技术:内在的可解释性 (Intrinsic Interpretability) 和事后的可解释性 (Post-hoc Interpretability)。

前者可以通过自解释 (Self-explanatory) 模型实现,如线性回归、逻辑回归和决策树等。这种方法可解释性强但准确率较低。后者通过代理模型 (surrogate Model) 来解释现有的模型,如集成方法、支持向量机和神经网络等。

此外,SHAP (Shapley Additive Explanation) 方法可以利用博弈论中的 Shapley 值计算模型中的特征重要性,为助催化剂的设计提供启发。

实验结果

性能对比 随机森林模型最佳

通过交叉验证对模型的超参数进行优化之后,研究人员对比了神经网络和树模型算法的性能。其中,随机森林算法有着最佳的泛化 (Generalization) 能力,测试准确率 70.37%,AUC 为 0.784

值得注意的是,随机森林模型可以准确识别低性能和中性能的助催化剂,不会将其误认为高性能,说明随机森林模型可以准确捕获高性能助催化剂的特征

图 6:不同模型的性能对比结果

a:不同模型的准确率、交叉验证准确率、测试准确率和 AUC;

b:随机森林模型的混淆矩阵;

c:随机森林模型的 ROC 曲线;

d:随机森林模型的学习曲线。

随后,研究人员将低性能和中性能归于一类,高性能归为一类,将模型转换为二元输出,随机森林的准确率为 96.30%,AUC 为 0.79

特征重要性 助催化剂类型

对拟合后的随机森林模型进行特征重要性分析,可以提升模型的可解释性。通过基尼 (Gini) 重要性或平均不纯度减少 (Mean Decrease Impurity),可以评价 PEC 电解池内在特征的重要性

图 7:不同内在特征对 PEC 反应的重要性

助催化剂相关的参数对随机森林模型的预测影响最大,尤其是助催化剂的类型和助催化剂的金属类型。次重要的是助催化剂的准备方法,它对助催化剂的形貌和尺寸也会有影响。此外,光阳极的尺寸也会显著影响随机森林模型的输出。因此,优化 PEC 光阳极时,应以助催化剂为主要指标,同时优化光阳极尺寸

SHAP分析 助催化剂厚度

研究人员还用 SHAP 计算了二元输出随机森林模型的特征重要性。

图 8:不同特征的 SHAP 值排序

其中,助催化剂的厚度为最重要的输入特征。随着厚度降低,SHAP 值不断增加,对模型性能的影响不断增加。当助催化剂的厚度在 5-10 nm 之间时,SHAP 为正值,说明厚度降低大概率能够提高模型性能。

当电解液浓度超过 0.5 M 时,SHAP 为正值,说明高浓度电解液有利于 PEC 光电极性能的提升

结果还显示,硼酸钾缓冲液是最理想的电解液,含钴的助催化剂有利于性能的提升,且金属的氢氧化物有利于性能的提升。

图 9:不同特征变化后 SHAP 值的变化

c:助催化剂厚度对 SHAP 值的影响;

d:光阳极厚度对 SHAP 值的影响;

e:电解液浓度对 SHAP 值的影响。

综上所述,BiVO4 单晶上厚度介于 5-10 nm 之间的钴基氢氧化物,在浓度高于 0.5 M 的硼酸钾电解液中,可能会有良好的 PEC 分解水性能。

PEC 水分解:更有前景的制氢方案

随着全球人口的增长,世界对于能源的需求不断增加,寻求可再生能源成为亟待解决的问题。太阳能是可再生的无碳能源,能量占全球可再生能源的 99% 以上。然而,要完全取代化石能源,需要大规模的储能设备,以解决太阳能的间歇性问题。电池或许可以满足短期储能需求,但长期储能和季节性储能的唯一选择就是燃料

植物可以通过光合作用,利用光能从水中提取电子,并将这些电子储存在高能的化学键中。受这一过程启发,研究人员开始利用太阳能分解水,将太阳能储存在产物氢气中。

图 10:光合作用流程图

氢气能量密度高 (MJ/kg),无碳排放,可以直接参与到氢经济中,或是通过费托反应 (Fischer–Tropsch) 合成碳燃料,与现有的能源设施相匹配。

目前最有效的太阳能转换设备是光伏设备 (PV, Photovoltaics),将太阳能转换为电能之后,通过电解水产生氢气。但这种方法成本太高,无法与化石燃料竞争

PEC 分解水提供了廉价的制氢方案。但由于这一反应中载流子传输速度慢、复合率高、电极易腐蚀、反应对水质要求高,PEC 的水分解效率较低,维护成本高。

在 AI 的帮助下,科研人员能够对 PEC 光阳极和助催化剂的组合进行优化,大大提高了 PEC 电极的设计效率。同时,可解释 AI 能够识别出对反应最重要的电极特征,为电极的优化提供参考,为化解全球能源危机提供新方案。

参考链接:

[1]https://onlinelibrary.wiley.com/doi/10.1002/aenm.201700555

[2]https://onlinelibrary.wiley.com/doi/10.1002/aenm.201802877

[3]https://www.britannica.com/science/photosynthesis

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/129746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows server 2016调优

1. 增加TCP连接的最大数量: 在您当前的注册表路径(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters)中的右侧窗格,右击空白处,选择“新建” -> “DWORD (32位) 值”。为新的值命名为TcpNu…

thinkphp的路径参数(RESTFul风格),把参数写在路径里

thinkphp官方文档 https://www.kancloud.cn/manual/thinkphp5_1/353969 有一个Blog控制器,里面的read方法是固定的,不能该 route.php里添加如下代码,访问 blog对应的就是 android/blog Route::resource(blog,android/blog);然后访问路径

windows使用YOLOv8训练自己的模型(0基础保姆级教学)

目录 前言 一、使用labelimg制作数据集 1.1、下载labelimg 1.2、安装库并启动labelimg 1.4、制作YOLO数据集 二、使用YOLOv8训练模型 2.1、下载库——ultralytics (记得换源) 2.2、数据模板下载 2.3、开始训练 1、启动train.py,进行…

QT+SQLite数据库配置和使用

一、简介 1.1 SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统。Qt5以上版本可以直接使用SQLite(Qt自带驱动)。 二、下载和配置 2.1 SQLite下载…

GitLab(2)——Docker方式安装Gitlab

目录 一、前言 二、安装Gitlab 1. 搜索gitlab-ce镜像 2. 下载镜像 3. 查看镜像 4. 提前创建挂载数据卷 5. 运行镜像 三、配置Gitlab文件 1. 配置容器中的/etc/gitlab/gitlab.rb文件 2. 重启容器 3. 登录Gitalb ① 查看初始root用户的密码 ② 访问gitlab地址&#…

微信小程序-form表单-获取用户输入文本框的值

微信小程序-form表单-获取用户输入文本框的值 data: {userName: ,userPwd:""},//获取用户输入的用户名 userNameInput:function(e) {this.setData({userName: e.detail.value}) }, passWdInput:function(e) {this.setData({userPwd: e.detail.value}) }, //获取用户输…

Java后端开发——JDBC组件

JDBC(Java Database Connectivity)是Java SE平台的一种标准API,它提供了一种标准的方法来访问关系型数据库,使得Java程序能够与各种不同的数据库进行交互,这篇文章我们来进行实验体验一下。 自定义JDBC连接工具类 1.编…

【IDEA使用maven package时,出现依赖不存在以及无法从仓库获取本地依赖的问题】

Install Parent project C:\Users\lxh\.jdks\corretto-1.8.0_362\bin\java.exe -Dmaven.multiModuleProjectDirectoryD:\学习\projectFile\study\study_example_service "-Dmaven.homeD:\Program Files\JetBrains\IntelliJ IDEA2021\plugins\maven\lib\maven3" "…

操作系统的线程模型

操作系统的线程调度有几个重要的概念: 调度器(Thread Scheduler):内核通过操纵调度器对内核线程进行调度,并负责将线程的任务映射到各个处理器上内核线程(Kernel Level Thread):简称…

【GitLab CI/CD、SpringBoot、Docker】GitLab CI/CD 部署SpringBoot应用,部署方式Docker

介绍 本文件主要介绍如何将SpringBoot应用使用Docker方式部署,并用Gitlab CI/CD进行构建和部署。 环境准备 已安装Gitlab仓库已安装Gitlab Runner,并已注册到Gitlab和已实现基础的CI/CD使用创建Docker Hub仓库,教程中使用的是阿里云的Docker…

100量子比特启动实用化算力标准!玻色量子重磅发布相干光量子计算机

2023年5月16日,北京玻色量子科技有限公司(以下简称“玻色量子”)在北京正大中心成功召开了2023年首场新品发布会,重磅发布了自研100量子比特相干光量子计算机——“天工量子大脑”。 就在3个月前,因“天工量子大脑”在…

【Orangepi Zero2 全志H616】资料及环境搭建

一、资料文档 二、MobaXterm远程连接工具 三、修改登录密码 四、修改内核日志等级 五、配置网络 六、SSH 访问 OrangePi ZERO 2 七、配置 vim 八、基于官方外设开发SDK 一、资料文档 官网资料下载 GitHub:新版本的 orangepi-build 源码 环境搭建:新手配…

vue+asp.net Web api前后端分离项目发布部署

一、前后端项目介绍 1.前端项目是使用vue脚手架进行创建的。 脚手架版本:vue/cli 5.0.8 编译器版本:vs code 1.82.2 2.后端是一个asp.net Core Web API 项目 后端框架版本:.NET 6.0 编译器版本:vs 2022 二、发布部署步骤 第…

安卓抓包之小黄鸟

下载安装 下载地址: https://download.csdn.net/download/yijianxiangde100/88496463 安装apk 即可。 证书配置:

【嵌入式】HC32F07X CAN通讯配置和使用配置不同缓冲器以连续发送

一 背景说明 使用小华(华大)的MCU HC32F07X实现 CAN 通讯配置和使用 二 原理分析 【1】CAN原理说明(参考文章《CAN通信详解》): CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现…

HTML基础知识——URL、文本标签、链接标签、图片标签、列表标签

目录 URL(统一资源定位符) 概述 网址的组成部分 协议 主机 端口 路径 查询参数 锚点 文本标签 示例: 链接标签 示例: 图片标签 示例: 列表标签 示例: URL(统一资源定位符)…

玩转AIGC:如何选择最佳的Prompt提示词?

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

周赛369(位运算、分类讨论、记忆化搜索==>动态规划、树形DP)

文章目录 周赛369[2917. 找出数组中的 K-or 值](https://leetcode.cn/problems/find-the-k-or-of-an-array/)位运算模拟 [2918. 数组的最小相等和](https://leetcode.cn/problems/minimum-equal-sum-of-two-arrays-after-replacing-zeros/)分类讨论 [2919. 使数组变美的最小增量…

docker部署MySQL服务

部署 MySQL8.0.35社区版 1.下载镜像 docker pull container-registry.oracle.com/mysql/community-server:8.0.35 查看镜像 docker images 2. 启动MySQL服务器实例 docker run --namemysql8 --restart on-failure -p 3309:3306 -d container-registry.oracle.com/mysql/comm…

探索C++中的不变之美:const与构造函数的深度剖析

W...Y的主页😊 代码仓库分享💕 🍔前言: 关于C的博客中,我们已经了解了六个默认函数中的四个,分别是构造函数、析构函数、拷贝构造函数以及函数的重载。但是这些函数都是有返回值与参数的。提到参数与返回…