当前位置:网站首页>神经网络和自动控制的联系
神经网络和自动控制的联系
2022-07-17 05:53:00 【qq_43133135】
以下从两个方面讲述,正向使用即不带误差传播,在神经网络上直接是正向传播过程。误差传播过程在神经网络中被称为误差反向传播
正向使用上的差别
神经网络和自动控制的关系,类似于对偶,假设我们有一个线性系统:
y=ax+b
神经网络的侧重在于:
输入一个x得到对应的y
而自动控制的侧重在于:
输入一个y得到对应的x
误差反馈上的差别
神经网络的侧重在与得到对应的系统:
得到系统参数a,使得输入x能得到y
而自动控制的侧重在于得到对应的输入
得到输入x,使得在a参数下系统能输出y
控制的误差曲线:PID算法
我们先列公式,后面再讲解:
假如初始0时刻系统输入u为x,目标输出为y1,当前系统实际输出是y,还差很多才能到达y1,我们如何调整u使得输出能为y1?
或者换个说法,我们输入为y1,如何得到对应的输出u?
我们使用误差曲线来描述,输入为x时,输出的误差是多少,当误差降为0时我们就找到了对应的u。
对于线性系统,我们似乎可以很容易找到 u(x) - e(x)函数的解析式: u(x) = k * e(x) + b
我们只要令e(x)=0,就能得到目标输出为y1时,系统输入u(x)=b,但是为了保证系统变化的连续性,我们不会立马令u=b,而是缓慢的来:
u ( t 0 ) = x , u ( t 1 ) = x + k , u ( t 1 ) = x + 2 k , . . . u ( t n ) = b , u ( t n + 1 ) = b u(t_0)=x,u(t_1)=x+k,u(t_1)=x+2k,...u(t_n)=b,u(t_{n+1})=b u(t0)=x,u(t1)=x+k,u(t1)=x+2k,...u(tn)=b,u(tn+1)=b
这个b怎么求呢,初始0时刻u(t0)=x,t时刻u(tn)=b,我们可以用积分来求
b = u ( t 0 ) + Δ u b= u(t_0) + \Delta u b=u(t0)+Δu
Δ u = u ( t n ) − u ( t 0 ) ) = ∫ t 0 t n u ′ ( t ) d t = ( t n − t 0 ) ∗ k \Delta u=u(t_n)-u(t_0)) =\int_{t_0}^{t_n} u^{'}(t) dt=(t_n-t_0)*k Δu=u(tn)−u(t0))=∫t0tnu′(t)dt=(tn−t0)∗k在原始公式中,我们可以把 k e ( t ) T t \frac{ke(t)}{T_t} Ttke(t)看着此处的 u ′ ( t ) u^{'}(t) u′(t)
对于线性系统,有上述两项也就够了,而非线性系统,也可以将其局部进行线性化,然后使用,但对于非线性系统,参数k也就不是一个定量而是变量
增量变化
之前我们说了,让u慢慢增加,即:
u ( t ) = u ( t 0 ) + ( t − t 0 ) ∗ u ′ ( t ) u(t)=u(t_0)+(t-t_0)*u^{'}(t) u(t)=u(t0)+(t−t0)∗u′(t)
或者采用递推式: u ( t ) = u ( t − 1 ) + u ′ ( t ) u(t)=u(t-1)+u^{'}(t) u(t)=u(t−1)+u′(t)
实际上,更为有效的做法是,误差比较大时我们用步长大点,误差小时步长小一点:
u ( t ) = u ( t − 1 ) + k ∗ e ( t ) u(t)=u(t-1)+ k*e(t) u(t)=u(t−1)+k∗e(t)
我们试问还能更好的变化吗?
我们对 e ( t ) e(t) e(t)在t处进行二阶泰勒展开:
e ( t + m ) = e ( t ) + m ∗ e ′ ( t ) + m 2 2 ∗ e ′ ′ ( t ) e(t+m)=e(t)+m*e^{'}(t)+\frac{m^2}{2}*e^{''}(t) e(t+m)=e(t)+m∗e′(t)+2m2∗e′′(t)
后面两项是对未来e(t)变化率的预测,我们还可以加上这两项,令du为:
d u ( t + m ) = k ∗ [ e ( t ) + m ∗ e ′ ( t ) + m 2 2 ∗ e ′ ′ ( t ) ] du(t+m)=k*[e(t)+m*e^{'}(t)+\frac{m^2}{2}*e^{''}(t)] du(t+m)=k∗[e(t)+m∗e′(t)+2m2∗e′′(t)]
则有:
u ( t ) = u ( t − 1 ) + d u ( t + m ) u(t)=u(t-1)+ du(t+m) u(t)=u(t−1)+du(t+m)
d u ( t + m ) = k ∗ [ e ( t ) + m ∗ e ′ ( t ) + m 2 2 ∗ e ′ ′ ( t ) ] du(t+m)=k*[e(t)+m*e^{'}(t)+\frac{m^2}{2}*e^{''}(t)] du(t+m)=k∗[e(t)+m∗e′(t)+2m2∗e′′(t)]
m决定了预测的远近,预测太远了系统会出现震荡,有的地方只使用一阶展开而不使用二阶展开。
神经网络的误差曲线
这个通常用误差反向传播来完成,也是先求目标和当前输出得到误差,然后用误差去得到w的变化量,举例来说线性网络:
y=wx+b
当前输入为x,目标输出为y1,实际输出为y,得到误差e(t)= y1 - y。根据确定的x,得到 w(t)- e(t)误差曲线,我们假设为线性系统:
w(x) = k * e(x) + b
在神经网络中,一般也不使用二阶预测,直接用
w ( t ) = w ( t − 1 ) + k ∗ e ( t ) w(t)=w(t-1)+ k*e(t) w(t)=w(t−1)+k∗e(t)
边栏推荐
猜你喜欢

五十九 获取原型图大小

60. Clear cache

【MySQL】 MVCC:正确理解MVCC及其实现原理

Spark3.x-实战之双流join(窗口和redis实现方式和模板代码)

修改radio样式

RNN卷积神经网络

Flink入门到实战-阶段二(图解运行时架构)
![[MySQL] lock mechanism: detailed explanation of lock classification, table lock, row lock and page lock in InnoDB engine](/img/7e/ddf05e76da26e9b2d1fd1519703571.png)
[MySQL] lock mechanism: detailed explanation of lock classification, table lock, row lock and page lock in InnoDB engine

Application of A2B audio bus in intelligent cockpit

三伏天逛逛北京动物园
随机推荐
Flutter3.0 (framework) - UI rendering
PCIe bus architecture high performance data preprocessing board / K7 325t FMC interface data acquisition and transmission card
【MySQL】 MVCC:正确理解MVCC及其实现原理
Use Altium designer software to draw a design based on stm32
Spark3.x入门到精通-阶段七(spark动态资源分配)
修改select样式
Using PCA to simplify data
Understanding of v2x test series v2x phase II application scenario
[MySQL] transaction: basic knowledge of transaction, implementation principle of MySQL transaction, detailed explanation of transaction log redolog & undo
Development board training: multi task program under stm32
微信OAuth2.0 登录流程以及安全性分析
Pytoch notes (1)
912. Sort array (array sort)
1669. 合并两个链表(两个链表的合并)
[day01] preface, introductory program, constant variables
修改radio样式
Question 114 of Li Kou: binary tree expansion linked list
Wechat oauth2.0 login process and security analysis
How to write the highlights of SCI papers (seriously teach you how to write)
Pytoch notes (2)