人工神经网络在控制中的应用简介

人工神经网络在控制系统,特别是非线性系统中的实际应用包括模拟时间最优控制器和基于人工神经网络的被控系统(工厂)模型。这样的模型,结合经典的比例-积分-导数(PID)控制器,可以实现自适应和其他更复杂的控制系统。

通过彼得•加 2022年1月27日
Peter Galan,退休的控制软件工程师

学习目标

  • 学习神经网络的基础知识。
  • 看一下Python中的神经网络实现。
  • 学习神经网络如何适用于控制应用,与控制系统与人工神经网络的例子。

当阅读标题“控制应用中的人工神经网络介绍”时,您可能会问是否值得阅读更多关于人工神经网络(ANN)的内容,人工神经网络(ANN)在几十年前就已经成功解决了,特别是在互联网上有成千上万篇关于ANN的文章。(答案是:“是的。”请继续。)

当我开始对人工神经网络感兴趣时,我浏览了数百篇人工神经网络的文章。只有少数人帮助我理解了人工神经网络的工作原理和实现方式。即便如此,我也找不到任何关于如何实现使用人工神经网络的控制系统的文章。我花了数百个小时尝试Python编程、人工神经网络和控制系统模拟,直到我对人工神经网络在控制系统应用程序中的工作方式的理解感到满意。

今天的专业人员不需要从头开始解决人工神经网络问题。他们可以使用许多编程平台/语言的支持材料(库)中提供的精心设计的类库、函数库等。但是,如果您需要首先了解控制系统的人工神经网络基础知识,那么本文应该会有所帮助。

下载.pdf以了解更多信息。

1.神经网络基础

神经网络试图模仿人类和动物大脑的能力。这些能力中最重要的是适应性。虽然现代计算机可以在许多方面胜过人脑,但它们仍然是“静态”设备,这就是为什么计算机不能发挥其全部潜力的原因。人工神经网络的使用试图通过复制神经系统的行为将大脑功能引入计算机。我们可以把神经网络想象成一个数学函数,它将给定的输入集映射到期望的输出集。神经网络由以下部分组成:

  • 一个输入层x
  • 一个或多个隐藏层
  • 一个输出层ŷ
  • 一套权重偏见每一层之间,W和b
  • 激活函数对于每个隐藏层,σ。

图1显示了一个两层神经网络的架构。(注:在计算神经网络的层数时,通常不包括输入层。)偏差表现为输入层和隐藏层中的附加神经元(节点),具有固定的非零值,例如1,在将其添加到下一层节点和之前,将其与特定权重系数值进行修改(乘以)。

图1:神经网络的基本架构。Peter Galan,退休的控制软件工程师

图1:神经网络的基本架构。Peter Galan,退休的控制软件工程师

在图1的右侧,可以看到一个隐藏层的第j个节点。首先,它将来自输入(第i个)节点的所有信号相加,每个节点都受到影响——乘以其权重系数。在求和离开节点输出之前,它会经过一个激活函数-限制器。最流行的限制器是由Sigmoid函数实现的,S (x),因为它可以相对简单地区分:

S(x) = 1 / (1 + e- x

输出层中使用了类似的节点。只有它们的输入信号来自于隐藏层的节点。

权重系数的正确值决定了预测的强度,也就是说,将输入集转换为输出集的精度。图2显示了一个典型的输入→输出集合映射(在左侧),以及人工神经网络如何通过线性函数近似这种映射y = wx + b(在右边)。即使不应用偏置(偏移)也可以找到合适的映射,但通常添加偏置(偏移)应该会产生更好的近似值。添加更多的隐藏层甚至可以实现非线性映射。

图2:神经网络的输入-输出映射。Peter Galan,退休的控制软件工程师

图2:神经网络的输入-输出映射。Peter Galan,退休的控制软件工程师

对输入层和隐藏层节点的权重系数进行微调的过程称为神经网络的训练。训练过程的每次迭代包括以下步骤:

  • 预测输出的计算ŷ这个过程被称为前馈
  • 更新权重系数,这个过程被称为反向传播

输出ŷ的计算式为:

ŷ=ϐ(W2ϐ(W1X + b1+ b2

预测的输出自然会与期望的输出不同,至少在训练过程开始时是这样。差多少会告诉我们损失函数。有很多可用的损失函数,但是一个简单的,误差平方和是一个很好的损失函数。

我们训练的目标是找到最优的权值集合,使损失函数最小化。从数学上讲,我们需要找到一个损失函数的极值(在我们的例子中是最小值)。这样的损失函数不依赖于一个变量(x),它可以是一个具有复杂形状的多维函数,具有许多局部最小值。我们的目标是找到损失函数的全局最小值。

让我们找出平方和误差函数∂Loss(y,′)/∂W的一阶导数。不幸的是,我们的损失函数不直接依赖于权重系数,所以我们需要应用以下链式法则来计算它的推导:

第一个偏导数得到:2(y - r)

第二个偏导数得到:ϐ '

最后一个偏导是x

最后我们将得到:∂Loss(y,)/∂W = 2(y -) * ϐ ' * x这就是我们要实现的反向传播过程。使用Sigmoid函数的一个优点是它的导数的简单实现,ϐ”

ϐ ' (u) = ϐ(u)(1 - ϐ(u))

上面的公式描述了如何进行:从神经网络的输出反向传播到隐藏层,隐藏层位于输出层的前面,并通过W2权值与输出层连接。从隐藏层到输入层,必须再次应用相同的过程,输入层通过W1权重与隐藏层连接。隐藏层损失函数推导中的第一个链成员,∂损失(h,ĥ)/∂ĥ的计算方式会有所不同,因为我们并不明确知道隐藏层的期望值,h。我们必须从输出值中计算它们,正如您将在下一段中看到的那样。

如果阅读电子版,请点击标题进入在线文章,下载一份17页的PDF文件Python(一个适合神经网络的编程平台)编程教程,有更多的方程式和图表来解释和链接到相关资源。

2.Python中的神经网络实现

3.神经网络适用于控制应用

4.人工神经网络控制系统的例子

4.1前馈与反馈控制器的人工神经网络仿真

5.结论:人工神经网络在控制系统中的应用

彼得•加是一名退休的控制软件工程师;编辑:Mark T. Hoske,内容经理,控制工程、www.globalelove.com、CFE媒体与技术、www.cfemedia.commhoske@cfemedia.com。

关键字

人工神经网络(ANN),用于控制系统的ANN

学习目标

考虑一下这个

人工神经网络能否增强您的控制系统或工厂模型?

在线额外

其他控制工程退休的控制软件工程师Peter Galan的文章在下面突出显示。


作者简介:Peter Galan是一位(退休)控制系统设计师,在电子,控制系统和软件设计方面拥有丰富的经验。他曾在ZTS、GE、赫斯基、北电、JDSU、艾默生(加拿大和美国)等多家公司工作,此前曾在科希切(前捷克斯洛伐克)工业大学工作。他拥有布拉格捷克技术大学自动控制系统博士学位和应用控制论硕士学位。