具有强制函数的物理信息神经网络

news2024/11/17 7:43:27

图片由 agsandrew 在 iStock 上发布

一、说明

        在物理学、数学、经济学、工程学和许多其他领域,微分方程根据变量的导数来描述函数。简而言之,当涉及一个变量相对于其他变量的变化率时,你可能会找到一个微分方程。许多示例描述了这些关系。微分方程的解通常是通过解析或数值方法得出的。

        虽然推导出解析解可能是一项乏味的任务,或者在某些情况下是一项不可能完成的任务,但物理信息神经网络 (PINN) 绕过解析过程,直接从微分方程生成解。这种求解微分方程的创新方法是该领域的重要发展。

二、关于电路微分方程

作者之前的一篇文章使用 PINN 来查找描述简单电子电路的微分方程的解。本文探讨了在用 force 函数驱动电路时寻找解决方案的更具挑战性的任务。考虑以下串联的电子电路,它由电阻 R、电容 C、电感 L 和正弦电压源 V sin(ωt) 组成。该电路中电流 i(t) 的行为由公式 1 描述,公式 1 是一个具有强迫函数 Vω/L cos(ωt) 的二阶非齐次微分方程。

图 1:带正弦电压源的 RLC 电路

方程 1 

三、分析解决方案

        方程 1 的解析解需要根据 λ 和 ω₀ 之间的关系求解三种情况的方程。如下所示,每个公式都会产生一个复杂而独特的 i(t) 公式。在稍后的结果中介绍的测试中,这些解决方案将与 PINN 生成的结果进行比较。PINN 将直接从微分方程生成解,而不考虑这些情况。

(作者使用拉普拉斯变换技术的详细分析解决方案可在此处获得。

        情况 1:欠阻尼 (λ/2 < ω₀)

阻尼是指电路从其起始传输过渡到平衡的速度。欠阻尼响应会尝试快速过渡,但通常会在达到平衡之前在过冲和下冲之间循环。

方程 2

情况 2:过阻尼 (λ/2 >ω₀)

过阻尼响应从开始传输缓慢过渡到平衡,而不会经历过冲和下冲的循环。

方程 3

情况 3:临界阻尼 (λ/2 = ω₀)

临界阻尼响应介于欠阻尼和过阻尼之间,提供从开始传输到平衡的最快响应。

方程 4

四、PINN 解决方案

        PyTorch 代码可在此处获取。

        神经网络通常使用成对的输入和所需的输出进行训练。输入应用于神经网络,反向传播调整网络的权重和偏差以最小化目标函数。目标函数表示神经网络输出与所需输出相比的误差。

        相比之下,PINN 的目标函数需要三个分量:一个残差分量 (obj rₑs) 和两个初始条件分量(obj init₁ 和 obj init₂)。这些组合起来生成目标函数:

方程 5

PINN 目标函数

残余

残差分量是物理信息发挥作用的地方。此组件包含输出的导数,约束网络以符合定义的微分方程。残差(公式 6)是通过重新排列公式 1 形成的。

方程 6

在训练期间,t 的值会呈现给神经网络的输入,从而产生残差。然后,反向传播会将所有训练点上目标的残差分量减少到接近 0 的最小值。残差分量由下式给出:

方程 7

公式 6 所需的一阶和二阶导数 di/dt 和 d²i/dt² 由 PyTorch 和 TensorFlow 神经网络平台中的自动微分函数提供。

初始条件 1

在这个电路示例中,第一个初始条件要求 PINN 的输出 i(t) = 0,当输入 t = 0 时。这是由于正弦源 V sin(t) = 0 在 t = 0 时,导致电路中没有电流流动。初始条件 1 的目标分量由公式 8 给出。在训练期间,反向传播会将此分量减少到接近 0 的值。

方程 8

初始条件 2

第二个初始条件要求当输入 t = 0 时,L di/dt = 0。它源自基尔霍夫电压定律(即闭环周围的电压降之和为零)。具体来说,当 t = 0 时,电路中存在以下条件:

  • 电压源 V sin(ωt) = 0
  • 电容器 C 的初始电荷为 Q = 0 ,产生电容器电压为 V_cap = Q/C = 0
  • 电阻 R 两端的电压为 V_res = iR = 0,因为 i(t) = 0(初始条件 1)
  • 电感 L 两端的电压为 V_ind = L di/dt
  • 在上述条件下,电路周围的电压降之和减小到 L di/dt = 0

初始条件 2 的目标分量由公式 9 给出。反向传播会将此组件减少到接近 0 的值。

方程 9

目标图

下图显示了训练期间 goal 值的减少情况:

目标图

五、结果

        以下测试用例将经过训练的 PINN 的响应与每个案例的相应分析解进行比较。如上所述,选择 circuit component 值来产生欠阻尼、过阻尼和临界阻尼响应的条件。所有三种情况均由 V = 10 伏和 ω = 1.8 弧度/秒的正弦电压源驱动。对于每种情况,电容器和电感值分别为 C = 0.3 法拉和 L = 1.51 亨利。下面针对每种情况记录了电阻器 R 的值。

欠阻尼
R = 1.2 欧姆)

欠阻尼测试用例

过阻尼
R = 6.0 欧姆)

过阻尼测试用例

临界阻尼
R = 4.487 欧姆)

临界阻尼测试用例

六、结论

        在本文中,使用具有自定义目标函数的神经网络成功求解了描述由正弦源驱动的电子电路的微分方程。通常,微分方程的解是通过繁琐的分析过程或数值得出的。这里提供的示例表明,神经网络可以以简单有效的方式准确地求解这些方程。如三个测试用例所示,神经网络响应与解析解相同。

七、附录:PINN 培训说明

  • PINN 结构:
    - 输入层,1 个输入
    - 隐藏层,128 个神经元具有 GELU 激活
    - 隐藏层,128 个神经元具有 GELU 激活
    - 输出层,1 个神经元具有线性激活
  • PINN 在 0 到 20 秒的时域中使用 220 个点进行训练。点数由域的持续时间和每秒点数的超参数控制,对于测试用例,该超参数设置为 11 点/秒。该值为 ω = 1.8 的正弦驱动源的每个周期提供了足够数量的训练点。对于更高的 ω 值,每秒需要更多的点,例如,ω = 4.0 需要 25 点/秒。
  • PINN 分批训练,每批 32 个点,这些点从所有训练点的集合中采样。训练点在每个 epoch 随机洗牌。
  • 学习率在训练开始时从 0.01 开始,每 2000 个 epoch 降低 0.75 倍。
  • 目标图是训练成功的重要指标。随着训练的进行,目标应减少几个数量级,并在接近 0 的小值处触底。如果训练无法产生此结果,则需要调整超参数。建议先尝试增加 epoch 的数量,然后增加每秒的训练点数。

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

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

相关文章

debian12 - install and config telnet

文章目录 debian12 - install and config telnet概述笔记配置文件END debian12 - install and config telnet 概述 前面实验&#xff0c;在xinetd中指定telnet服务&#xff0c;查看状态时&#xff0c;看到telnet服务bind失败。 直接从其他计算机来连telnet又是正常的&#xf…

随记-部署flink-1.16.3、jdk-11.0.19、zookeeper-3.4.13、kafka_2.12-2.2.2

一、部署flink-1.16.3、jdk-11.0.19、zookeeper-3.4.13、kafka_2.12-2.2.2 #软件下载 https://archive.apache.org/dist/kafka/2.2.2/kafka_2.12-2.2.2.tgz https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz https://archive.apache.org/…

Clustering-Guided Class Activation for WeaklySupervised Semantic Segmentation

pdf&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber10381698 code&#xff1a;https://github.com/DCVL-WSSS/ClusterCAM 摘要&#xff1a; 基于transformer的弱监督语义分割(WSSS)方法利用其捕获全局上下文的强大能力得到了积极的研究。然而&am…

day8JS-作用域

1. 变量的作用域(变量函数) 作用域是变量的可作用范围&#xff0c;变量只有在自己的作用域下才会生效。 函数会产生作用域&#xff0c;在函数内定义的变量只能在函数内使用。 2. 作用域分类 局部作用域&#xff1a; 函数内定义的变量和形参的作用域就是局部作用域&#xff1b;这…

【Hot100】LeetCode—207. 课程表

目录 1- 思路有向图记录入度数组出度列表 2- 实现⭐207. 课程表——题解思路 3- ACM 实现 题目连接&#xff1a;207. 课程表 1- 思路 有向图记录入度数组出度列表 根据输入① 构造遍历构造入度数组② 构造出度列表根据入度数组为 0 的数 加入到 队列中&#xff0c;进行处理 2…

在线拼图用什么软件?5款顶级照片拼接工具

照片拼接在一起用什么软件&#xff1f;当你想全景展现山西应县木塔的震撼之美时&#xff0c;5款精选照片拼接软件能帮你解锁全新视角。 这座千年古塔&#xff0c;巍峨耸立&#xff0c;细节之处尽显匠心独运。而通过拼接技术&#xff0c;每一块木构的精致、每一层塔檐的飞翘都能…

OpenBayes 教程上新 | 青岛小哥焦恩俊版二郎神来袭,MuseV + MuseTalk 分分钟实现高质量数字人制作!

使用传统的数字人训练方案生成一个高质量的数字人&#xff0c;常常需要大量的时间和算力资源&#xff0c;同时对训练素材的要求也较高&#xff0c;如果想要达到良好的唇形一致效果&#xff0c;通常需要数小时乃至更久。 MuseV 和 MuseTalk 的出现为数字人领域带来了新的突破&a…

【Canvas与桌面】十字网格黑灰背景(1920x1080)

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>十字网格黑灰背景(1920x1080)</title><style type"te…

iphone被锁定怎么解锁?iPhone密码锁解锁办法分享

在忙碌的生活中&#xff0c;有时我们可能会遇到一些“小插曲”&#xff0c;比如苹果手机被锁定&#xff0c;iPhone被锁定是一个常见的问题&#xff0c;可能是由于忘记密码、多次输入错误密码或设备被远程锁定等原因造成的。 本文将介绍解锁被锁定的iPhone的方法以及注意事项&a…

【网络安全】IDOR之请求包分析

未经许可,不得转载。 文章目录 正文正文 某在线游戏平台,在开始测试时,我访问了 /profile 页面(个人资料页面),然后查看 Burp 历史记录,想查看有多少隐藏的请求。 可以看到一个HTTP 的 OPTIONS 方法的请求包: 从图中看到,该请求包含两个参数:player_id_or_name(用…

OpenHarmony源码解析之电话子系统——通话流程

一、简介 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;电话子系统为 OS 提供了基础的无线通信能力。 支持 TD-LTE/FDD-LTE/TD-SCDMA/WCDMA/EVDO/CDMA1X/GSM 等网络制式的通信模块&#xff0c;能够提供高速的无线数据传输、互联网接入等业务&#xf…

c++栈和队列(stack和queue)

前言 栈和队列是两个极其相似的数据结构&#xff0c;栈具有先进后出的特性&#xff0c;队列具有先进先出的特性。今天我们就来简单的介绍一下栈和队列这两数据结构&#xff0c;其中队列我们介绍普通队列、双端队列&#xff08;了解&#xff09;和优先级队列&#xff08;其实这…

C++从入门到起飞之——vector模拟实现 全方位剖析!

​ &#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a;C从入门到起飞 &#x1f516;克心守己&#xff0c;律己则安 目录 1、vector的成员变量 2、迭代器 3、size与capacity 4、[]运算符重载 5、reserve 6、push_bac…

LSTM结合时序异常检测直接写!小论文闭着眼睛发!

还在愁小论文&#xff1f;不如考虑考虑这个方向&#xff1a;LSTM时间序列异常检测。 这是个比较活跃且热门的研究方向&#xff0c;因为LSTM具有非常优秀的时序数据深度处理能力&#xff0c;能够灵活适应不同复杂度的数据&#xff0c;给我们提供高精度的预测结果&#xff0c;在…

时间继电器和定时器

一、概述 1.时间继电器是可以在设定的定时周期内或周期后闭合或断开触点的元器件。 2.时间继电器上可设定的定时周期数量有限&#xff0c;多为一个或两个。定时时长从0.02s至300h(根据产品型号范围不同)。 3.定时器可以理解为一台钟表&#xff0c;它在某个时间点上闭合(断开…

PostgreSQL如何设置主键自增(序列、SERIAL)

文章目录 PostgreSQL如何设置主键自增背景什么是序列Postgresql的自增机制基本使用使用SERIAL或BIGSERIAL数据类型手动创建序列和设置默认值实战demo&#xff1a;PostgreSQL 手动序列管理设置序列的当前值 工作常用总结创建表时候自定义序列&#xff1a;id SERIAL PRIMARY KEY …

调用具体接口的所有实现类

Java获取接口的所有实现类方法-CSDN博客https://blog.csdn.net/feeltouch/article/details/135399078

最实用接地气的 .NET 微服务框架

目录 前言 项目介绍 快速入门 1、服务注册 2、启动UI 3、服务发现与调用 4、启动服务网关 项目地址 最后 前言 微服务架构已经成为搭建高效、可扩展系统的关键技术之一&#xff0c;然而&#xff0c;现有许多微服务框架往往过于复杂&#xff0c;使得我们普通开发者难以…

基于生成对抗模型GAN蒸馏的方法FAKD及其在EdgesSRGAN中的应用

文章目录 FAKD系列论文paper1: FAKD&#xff1a;用于高效图像超分辨率的特征亲和知识蒸馏&#xff08;2020&#xff09;ABSTRACT1. INTRODUCTION2. PROPOSED METHOD2.1. Feature Affinity-based Distillation (FAKD) 2.2. Overall Loss Function3. EXPERIMENTAL RESULTS3.1. Ex…

TypeSript9 命名空间namesapce

我们在工作中无法避免全局变量造成的污染&#xff0c;TypeScript提供了namespace 避免这个问题出现 内部模块&#xff0c;主要用于组织代码&#xff0c;避免命名冲突。命名空间内的类默认私有通过 export 暴露通过 namespace 关键字定义 TypeScript与ECMAScript 2015一样&…