现实世界模型、薛定谔的猫和神经网络之间的联系及Python示例( 二 )
一般来说 , 关于 PINN , 我们可以定义三种有效训练模型的方法:
大量数据 , 没有物理规律
少量数据 , 有一些物理规律
没有数据 , 我们拥有所有物理规律
注意:为简单起见 , 我们将省略方程式中的所有常数 。我们假设 k=1 , 我们的量子阱是从 0 到 a=10 。
我们的案例正是第三种 。我们有物理规律可循 , 但没有数据 。让我们将边界条件简单地定义为返回零的函数 , Python代码如下:

文章插图
【现实世界模型、薛定谔的猫和神经网络之间的联系及Python示例】由于上面的方程没有残差 , 即所有包含Ψ的项都在左边 , 我们可以为薛定谔方程定义一个函数 。简单地说 , 它会趋于0 。Python代码如下:
def schrodinger(x):
return 1e-10*x
使用非多项式非线性的多层感知器应该是近似我们的波函数Ψ的一个很好的选择 。在这里 , 我们使用高斯误差线性单元 , 因为经验发现它比Sigmoid和Tanh工作得稍好 , 而ReLU表现最差 。

文章插图
因此 , 我们必须让我们的模型尊重物理定律 , 也就是说 , 要有物理知识 。这可以通过定义包含整个微分方程的误差和边界处的误差的损失函数来实现 , Python示例代码如下:

文章插图
请注意 , 我们使用torch.autograd.grad()来计算梯度(或者简单地说是Ψ函数的导数psi_x) , 这是一个自动微分函数 , 它计算并返回输出相对于输入的梯度之和 。要计算psi_xx的二阶导数 , 只需应用grad()函数两次 。
因此 , 我们可以通过框的边界和框内的数据点来计算整体损失 , 然后用反向传播误差来更新权重 。Python代码如下:

文章插图
经过几千次迭代之后 , 我们可以看看结果 。因为我们知道薛定谔方程的解实际上是一组解 , 输出可能会随权重和训练参数的随机初始化而变化 。

文章插图
4500 次迭代后的 PINN 输出当然 , 还有许多更复杂的实现展示了如何使用深度神经网络求解薛定谔方程 。本文展示了对基于物理的机器学习的简单易懂的介绍 , 我选择薛定谔方程的原因很简单 , 因为方程本身和边界条件非常严格 , 而且信息量不大(你记得 , 零无处不在) 。梯度下降算法能够找到一个非零解 , 即使它没有被惩罚 。
最后 , 现实世界模型、薛定谔的猫和神经网络之间的联系到底是什么呢?许多描述现实世界模型的动态过程都可以用微分方程建模 。另一方面 , 即使是非常复杂的微分方程 , 反过来也可以用物理神经网络来解决 。
Tags:
推荐阅读
- 传奇世界|传奇世界:万夫莫开的战士魅力十足,吸引大批粉丝
- 外国教师节(葡萄牙教师节)
- 铁饼技巧(铅球世界纪录)
- |《无限世界》让我们看看本次出场角色
- 朋友圈最睿智的句子,与其埋怨世界,不如改变自己
- 王亚辰(世界女排十大美女)
- 外国四大吝啬鬼(世界四大吝啬鬼的故事)
- 谢霆锋|《offer4》开播,谢霆锋很清醒,关晓彤很现实,魏大勋乱带节奏
- 王晶怒斥世界杯(阿根廷vs法国世界杯)
- 韩剧|韩剧靠“偷师”中国网文走向世界?
