1.本发明涉及自动控制领域,具体来说,涉及自动控制中的基于mpc的连续轨迹控制领域,更具体地说,涉及一种基于对抗神经网络的用于状态预测的生成模型的训练方法,及基于其的mpc控制方法及装置。
背景技术:2.随着技术的发展,自动控制技术被应用于生产生活的各个方面,极大地方便了人民的生活,例如机械臂、无人机、自动驾驶等均是采用了自动控制技术。其中,在自动控制中方法中作为多变量控制方法的模型预测控制(model predictive control,mpc)因其可以处理各状态变量的各类约束并可用于较为复杂的非线性环境而受到广泛使用。为了实现连续的轨迹控制,mpc需要实现多步预测过程。其中,所谓mpc是一种进阶过程控制方法,其借助系统模型根据应用自动控制的目标系统当前状态与未来计划执行的控制动作序列预测未来一段时间内目标系统的状态序列,即进行多步预测,并根据预测的状态序列与目标状态序列的差异程度选择控制动作以控制目标系统进行执行,以使目标系统通过执行控制动作达到目标状态。这其中,一个基于高效的多步预测框架且预测准确的系统模型对于mpc的实现非常重要。
3.现有技术下,由于计算成本和模型能力的限制,大多mpc方法采用迭代框架模式完成多步预测过程。迭代框架下的系统模型每次只预测一个时刻之后的系统状态,再通过迭代方式依次预测多个时刻后的未来状态直至达到所需预测的时域长度,如图1所示,以s
t
表示t时刻目标系统的状态,预测时域长度为n(全文中均以n表示预测时域长度),然后,迭代框架下的系统模型基于t时刻的状态s
t
以及t时刻计划执行的未来控制动作(以u表示)预测目标系统t+1时刻的状态s
t+1
′
,迭代框架下的系统模型基于t+1时刻的预测状态s
t+1
′
以及t+1时刻计划执行的未来控制动作预测目标系统t+2时刻的状态s
t+2
′
,以此类推,直至得到目标系统t+n时刻的状态s
t+n
′
,所有的预测状态拼接可获得完整的目标系统未来状态预测序列。这个迭代过程中,系统模型采用一个单模型进行单步预测,减轻了对系统模型的要求,但在复杂环境中迭代过程会带来较高的计算复杂度,此外迭代框架存在累计误差问题。例如,在迭代框架中,假设系统模型的偏差为δ(s
t
,u
t
),t+1时刻在系统模型预测输出为s
′
t+1
=f(s
t
,u
t
)+δ(s
t
,u
t
),可见,在迭代框架下系统模型引入的微小误差将在预测过程中不断放大,迭代过程中偏差会不断累积,此误差随着预测时域长度n的变大而变得严重,最终导致巨大的累计误差。在这迭代架构下,系统模型输入没有上下文信息,限制了此框架下建立的系统模型所能获取到的系统信息数量,进一步限制了系统模型的能力。同时,该过程的时间复杂度为o(n),其中n为预测时域(prediction horizon)长度,由于mpc通常用于机器人等环境,需要极快的控制动作求解速度,这一时间复杂度决定了系统模型不能过于复杂,进一步限制了系统模型的性能。
4.为了缓解迭代框架下系统模型的累积误差问题,研究者提出了多模型同步预测框架,此框架使用多个系统模型,每个模型预测根据当前状态与计划执行的未来控制动作,预
测固定未来时刻的未来时刻状态,将所有模型的预测结果拼接获得完整的一系列未来状态,如图2所示,以s
t
表示t时刻目标系统的状态,预测时域长度为n,多模型同步预测框架下的系统模型1基于t时刻的状态s
t
以及t时刻计划执行的未来控制动作预测的目标系统t+1时刻的状态s
t+1
′
,同时,多模型同步预测框架下的系统模型2基于t时刻的状态s
t
以及t时刻和t+1时刻计划执行的未来控制动作预测的目标系统t+2时刻的状态s
t+2
′
、
……
、多模型同步预测框架下的系统模型n基于t时刻的状态s
t
以及t时刻至t+n-1时刻所有计划执行的未来控制动作预测目标系统t+n时刻的状态s
t+n
′
,所有的预测状态拼接可获得完整的目标系统未来状态预测序列。在多模型同步预测框架中,每个系统模型都不一样,极大的缓解了迭代框架下单模型累积误差的问题,同时提高了多步预测过程的速度,但多个模型设计难度较大且预测时所需计算量成倍增加。这是由于每个时刻对应的模型需要分别设计,且随着预测时域长度的增加,越往后的模型,其对应的计算量越大,因为需要之前所有预测时刻的计划执行的控制动作。
5.综上所述,现有的用于多步预测的系统模型存在计算成本高与预测不准确的问题,因此如何设计基于高效的多步预测框架且预测准确的系统模型仍然是mpc中亟待解决的问题。
技术实现要素:6.因此,本发明的目的在于克服上述现有技术的缺陷,提供一种新系统模型建模方法及基于此的mpc控制方法及装置。
7.根据本发明的第一方面,提供一种基于对抗神经网络的用于状态预测的生成模型的训练方法,所示对抗神经网络包括生成模型和判别器,所述生成模型和判别器均包括多层全连接网络;所述生成模型用于根据目标系统当前的状态以及目标系统的目标状态序列选择目标系统未来多个时刻要执行的控制动作序列,所述方法包括:s1、从目标系统的约束条件下的所有可行的可能控制动作中,采样多条预测时域长度的控制动作序列,并将每条控制动作序列送入目标系统的真实环境中进行执行获得每条控制动作序列对应的目标系统的目标状态序列,将每条控制动作序列送入生成模型获得每条控制动作序列对应的目标系统未来状态预测序列;s2、以目标系统当前的状态、每条控制动作序列、每条控制动作序列被执行后对应的目标系统的目标状态序列组成样本,生成训练集;s3、采用训练集对生成对抗网络进行多次训练至收敛。
8.优选的,所述生成模型和判别器均包括4层全连接网络。
9.优选的,在所述步骤s3中,采用判别器损失和l2损失通过如下方式训练生成模型:
[0010][0011]
其中,α是判别器损失权重,β是l2损失权重,且α+β=1,m是每次训练中采样控制动作序列的批大小,s
t
是当前次训练时目标系统的当前状态,ui第i条控制动作序列,si′
表示目标系统在当前状态执行第i条控制动作序列后对应的目标系统未来状态预测序列,d
ω
(s
t
,ui,si′
)表示基于当前状态s
t
和动作序列ui由生成模型预测的状态si′
来自于真实环境的概率。
[0012]
根据本发明的第二方面,提供一种mpc控制方法,应用于自动控制的目标系统中,用于根据目标系统当前的状态以及目标系统的目标状态序列选择目标系统未来多个时刻要执行的控制动作序列,所述方法包括:t1、采样目标系统对应的预设条数的预测时域长度的控制动作序列,其中,控制动作序列中的每一个时刻的控制动作均从目标系统的约束条件下的所有可行的可能控制动作中进行采样;t2、采用如本发明第一方面所述方法训练的生成模型基于采样的每一条控制动作序列以及目标系统当前的状态预测目标系统执行控制动作序列后的未来状态序列得到预设条数的预测时域长度的目标系统未来状态预测序列;t3、从所有采样的目标系统对应的控制动作序列中选出与目标系统的目标状态序列最接近的目标系统未来状态预测序列对应的控制动作序列。
[0013]
优选的,在所述步骤t1中,采用cem策略进行采样。
[0014]
优选的,在所述步骤t3中,从所有采样的目标系统对应的控制动作序列中选出与目标系统的目标状态序列最接近的目标系统未来状态预测序列对应的控制动作序列,并从该控制动作序列中最靠前两个控制动作。
[0015]
优选的,所述步骤t3包括:t31、通过计算采样的每一条控制动作序列对应的目标系统未来状态预测序列与目标系统的目标状态序列之间的损失;t32、选择对应的目标系统未来状态预测序列与目标系统的目标状态序列之间的损失最小的控制动作序列。
[0016]
在本发明的一些实施例中,在所述步骤t31中,通过如下方式计算每一条控制动作序列对应的目标系统未来状态预测序列与目标状态序列之间的损失:
[0017][0018]
其中,li表示第i条控制动作序列对应的目标系统未来状态预测序列与目标系统的目标状态序列之间的损失,s
star
表示目标系统的目标状态,si′
表示目标系统执行第i条控制动作序列后对应的目标系统未来状态预测序列,ui表示第i条控制动作序列,q表示状态l2损失的权重,r表示控制动作惩罚项的权重,(
·
)
t
表示向量转置。
[0019]
优选的,所述每一条控制动作序列以对应的预测时域长度的目标系统未来状态预测序列为由预设条数的目标系统当前状态组成的向量与预训练的系统模型的输出的差异序列的向量和。
[0020]
根据本发明的第三方面,提供一种mpc控制装置,所述mpc控制装置被配置在自动控制的目标系统中,用于根据目标系统当前的状态以及目标系统的目标状态序列选择目标系统未来多个时刻要执行的控制动作序列,所述装置包括:采样器,用于采样目标系统对应的多条预测时域长度的控制动作序列,其中,控制动作序列中的每一个时刻的控制动作均从目标系统的约束条件下的所有可行的可能控制动作中进行采样;采用如本发明第一方面所述方法构建的生成模型,用于基于所述采样器采样的每一条控制动作序列以及目标系统当前的状态预测目标系统执行控制动作序列后的未来状态序列得到预设条数的预测时域长度的目标系统未来状态预测序列;优化器,用于从所有采样的控制动作序列中选出与目标系统目标状态序列最接近的目标系统未来状态预测序列对应的控制动作序列。
[0021]
与现有技术相比,本发明的优点在于:本发明提出的单模型同步预测框架,使用一个模型一次性完成多步预测过程,减少了多步预测过程所需时间的同时提高了预测准确度,最终增强了mpc在复杂环境下的能力,提升mpc决策效果;本发明提出的基于生成对抗网络的系统模型,使用生成器作为系统模型网络,使系统模型可以借助判别器学习不同分布
的训练数据,拟合难以人为定义的复杂环境特征与约束,缓解分布不统一的训练数据导致的训练误差,提高模型准确度,并在训练过程中设计了监督学习损失与判别器损失相互融合的系统模型网络训练损失,借助监督学习在训练初期较为明显的梯度方向加速系统模型网络训练过程,而在训练后期又可以借助判别器帮助系统模型网络学习难以人为定义的各类环境约束提高模型准确度,加速了系统模型网络训练过程,提高最终训练效果。基于本发明的方案,将多步预测过程的时间复杂度从o(n)减少为o(1),同时由于不再有迭代过程,从而消除了迭代框架中存在的累积误差问题。
附图说明
[0022]
以下参照附图对本发明实施例作进一步说明,其中:
[0023]
图1为现有技术下的基于迭代框架的多步预测示意图;
[0024]
图2为现有技术下的基于多模型同步预测框架的多步预测示意图;
[0025]
图3为根据本发明实施例的单模型同步预测框架的多步预测示意图;
[0026]
图4为根据本发明实施例的基于对抗神经网络建模系统模型原理示意图;
[0027]
图5为根据本发明实施例的基于对抗神经网络建模的系统模型实现的mpc装置框架示意图;
[0028]
图6为根据本发明实施例的基于对抗神经建模的系统模型进行多步同步预测原理示意图。
具体实施方式
[0029]
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0030]
如背景技术所述的,现有技术下,mpc中的多步预测过程仍然存在一些问题,主要在于实现多步预测的系统模型仍然不够高效和准确。在多步预测过程中,使用的系统模型主要分为传统的数学模型和基于学习的模型。
[0031]
目前使用的传统系统模型效果好坏极大依赖于人工设计,通常用于线性或简单的非线性环境,人工很难设计出较好拟合复杂非线性环境的系统模型,且此类模型无法自行学习调优。典型的传统数学模型是人为定义的s(t+1)=as(t)+bu(t)+w形式的传统线性模型,其中,s(t)表示t时刻的目标系统状态,u(t)表示t时刻采取的控制动作,a、b、w为固定参数。线性模型在线性或较为简单的非线性环境下可以取得较好的效果,然而在较为复杂的环境中,有许多属性十分难以通过手动定义的方式来表示,例如状态之间的上下文信息、不同环境中的状态序列模式等。由于不同时刻的环境不一样,前后状态关联关系不一样,在迭代框架下,很难手动定义一个可以准确预测复杂环境下的不同时刻的线性模型来实现多步预测;同样的,在多模型同步预测框架下,更难手动定义不同时刻的预测模型来实现复杂环境下的多模型同步预测。
[0032]
而基于学习的方法可以从采集的数据中自行学习,无需人工设计,通过指定的损失函数指导模型向期望的方向训练,可以拟合线性与非线性环境。随着机器人领域的发展,目前出现了一些更加复杂的任务如移动机器人路径跟踪,四轴无人机自主导航等。此类较
为复杂的非线性系统环境中存在众多特征或噪声,传统方法很难人工定义出这些特征或噪声的数学表达式。基于学习的模型如神经网络可以拟合这些噪声,因此具有优势。典型的基于学习的系统模型为全连接模型,该模型需要通过随机采样控制动作送入目标系统执行,记录每个控制动作执行后的状态形成数据集,再使用此数据集训练一个全连接的神经网络完成系统模型的拟合。然而,基于学习的模型需要设计损失函数用于指导模型优化方向。目前常用的监督学习损失(l2损失)通过比较同一环境下网络模型的输出与真值区别帮助模型确定优化方向,这一损失无法捕捉不同输入间的特征区别,如自动驾驶控制任务中草地、泥地等不同地形的区别,这导致模型拟合结果始终与真值具有一定误差。此外对基于学习的模型,需要收集训练数据,在数据收集阶段,采集的数据为环境状态与此环境下人类专家的决策,如路径、控制量等。收集的数据集在训练阶段为模型学习系统关于控制量的变化提供基础,在此类复杂环境下采集的训练数据通常会包含不可避免因为不同专家策略不同导致的分布偏移。如果单纯使用目前较为主流的监督学习类似损失,这些分布不同的数据会导致模型向不同方向优化影响模型训练效果,最终影响多步预测效果。影响主要体现在无法直接体现环境的上下文信息,尤其是在正常环境中很少发生的剧烈状态变化,因此这样的模型由于很难完全拟合真实环境从而导致了误差的出现。由于不同时刻的环境不一样,前后状态关联关系不一样,在迭代框架下,无法训练一个可以满足复杂环境不同状态关联关系的模型来实现多步预测;同样的,在多模型同步预测框架下,也很难实现针对不同时刻训练对应的模型来实现多模型同步预测,即使能够实现,随着预测时域的增加,模型数量也相应的增加,带来了更大的计算开销,降低预测速度。
[0033]
发明人在进行mpc研究时发现,现有技术中的缺陷是由系统模型多步预测过程耗时较长与预测结果不准确导致的。出现此现象的原因有两个方面:第一方面,现有的迭代框架需要多次迭代反复调用系统模型进行预测,速度慢且有累积误差问题,而多模型同步预测框架则需要针对每个未来时刻设计模型,设计难度大,且多个模型计算量较大导致预测速度慢。第二方面,现在使用的系统模型中,基于传统方法的线性模型为人为定义,针对线性环境或简单的非线性环境可以较好拟合,但在复杂非线性环境下难以准确定义以拟合系统模型,误差较大;而基于学习的模型使用的损失函数只考虑预测结果与真实结果间的差异,对于难以通过固定数学表达式体现的特征(如采集数据时的专家策略差异)、环境固有的额外约束(如状态之间的上下文信息、草和泥等不同表面的状态序列模式等)没有考虑,这导致学习的模型与真实环境始终具有一定误差,影响了多步预测过程准确度,最终影响模型预测控制方法的效果。
[0034]
为了解决上述问题,发明人提出一种针对多步预测框架进行改进的方案,构建一种单模型同步预测框架,其中,主要考虑两个方向的改进:1)放弃迭代方式,借助神经网络的多头输出特性实现同步预测,其中,所谓神经网络的多头输出特性是指可通过配置神经网络的结构以使神经网络具备根据多个输入实现对应多输出的能力,由于神经网络的多头输出特性是本领域技术人员已知的,本发明不对其进行过多赘述;2)由于同步预测节省了计算时间可以支持更加复杂的系统模型,因此不再使用多个人为定义的模型同步预测不同时刻的未来状态,改用单个基于学习的神经网络模型作为系统模型。基于本发明提出的单模型同步预测框架的系统模型方案来实现多步预测时,则可以使用一个模型一次性完成多步预测过程,如图3所示,单模型同步预测框架下,使用一个系统模型基于t时刻的状态s
t
以
及计划执行的长度为n(预测时域长度)未来控制动作序列一次性预测获得长度为n的目标系统未来状态序列:s
t+1
′
、s
t+2
′
、
…
、s
t+n
′
,这样时间复杂度为o(1),同步预测框架带来的时间复杂度降低,使得即使以较复杂的神经网络拟合系统模型,仍能保证mpc的实时性。使用一个模型完成预测过程,避免了使用多个模型,减少了模型设计的复杂程度,也减少了计算量需求。
[0035]
基于本发明的单模型同步预测框架,mpc在每一个采样时刻,根据目标系统当前状态,通过采样器采样多条长度为n的控制动作序列,并采用单模型同步预测框架的系统模型根据每一条控制动作序列进行预测得到目标系统未来预测状态序列,通过优化器从这些目标系统未来预测状态序列中选择最贴近目标状态序列的一条,并将该条目标系统未来预测状态序列对应的控制动作序列中的第一个动作或前两个动作或靠前的多个动作作为目标系统未来要执行的动作送入目标系统进行执行。由于系统模型是一次性实现多步预测,可以极大地提高预测效率。
[0036]
为了充分利用单模型同步预测框架的特性,需要设计一个足够强大的系统模型。由于复杂环境如四轴飞行器、移动机器人与环境之间的交互的真实系统很难描述,因此传统的系统模型很难设计。而基于纯监督学习的系统模型则在面临训练数据具有多种分布时效果极速劣化。根据本发明的一个实施例,本发明使用生成对抗网络来建模系统模型,生成对抗网络基于博弈论理论,可以学习纯监督学习损失函数无法表示的特征或约束。根据本发明的一个实施例,采用生成对抗网络中的生成模型作为系统模型,使系统模型借助生成对抗网络中的判别器学习不同分布的训练数据,拟合难以定义的复杂环境特征和约束。也可以理解为通过在原有系统模型网络的基础上添加判别器,使模型可以拟合复杂环境中难以人为定义的特征,提高模型准确度。最后,在训练系统模型的过程中,添加了基于监督学习的l2损失,在训练初期帮助网络快速收敛,加快了训练过程,由此提高了模型预测控制中关键步骤多步预测过程的速度与准确度,最终提高模型预测控制的效率与控制效果。
[0037]
为了更好的理解本发明,首先介绍一下本发明单模型同步预测框架下建模系统模型的技术思想:t1、设计全连接网络作为生成模型(系统模型网络),用于预测未来状态,使用同样的网络结构设计判别器,由生成模型和判别器组成生成对抗网络,其中,生成模型的输出为预测的状态,判别器的输出为输入判别器的状态序列来自于真实环境的概率;t2、基于当前目标系统状态,采样一系列计划执行的未来控制动作序列;t3、将采样的控制动作序列送入目标系统真实环境获得实际的未来状态序列作为真值;t4、将采样的控制动作序列送入生成模型,输出预测的未来状态;t5、计算实际未来状态与预测未来状态的l2损失,同时,使用判别器计算预测未来状态属于真实环境的概率,并基于此计算判别损失;t6、将步骤t5中计算的判别损失与l2损失按照一定权重加权和作为训练系统模型的损失进行训练。优选的,如图4所示,本发明将生成模型作为系统模型g
θ
(s
t
,u),其表示来从当前状态s
t
和控制动作序列u到未来状态空间的映射且网络参数为θ,即系统模型可根据当前状态s
t
和控制动作序列得到未来预测状态序列s
′
。在系统模型建模(训练)过程中,额外增加一个判别器d
ω
(s
t
,u,s
′
),用于根据当前状态s
t
和控制动作序列u估计一段状态s
′
来自真实未来状态而不是系统模型网络g
θ
(s
t
,u)的概率,并基于此概率判断系统模型的训练效果,如果概率为0.5则说明系统模型网络输出与真实未来状态几乎无差别,说明训练效果较好。如果概率偏向0或1则说明系统模型网络没有很好的拟合真实环境,很容易被分辨出不是真实环境,由
此判别器可以为系统模型网络的训练提供损失,帮助拟合各类难以人为定义的约束、人工设计的损失无法直接表示的上下文信息等,尤其是在正常环境中很少发生的剧烈状态变化情况等。此外,判别器只用在训练系统网络的过程中,不会增加测试时的复杂度。在对抗网络的训练过程中,大多数情况下系统模型直接以目标状态的未来状态序列为输出,但是这样的训练方式可能会使系统模型的预测准确度过多的依赖于网络训练的效果,为了避免训练系统模型的预测准确度对网络训练效果的过多依赖,本发明以未来状态与当前状态的差异预测序列作为系统模型的输出进行训练。
[0038]
根据本发明的一个实施例,具体对抗训练过程的伪代码如表1所示,
[0039]
其中:
[0040]
第1行:初始化生成模型g、判别器d、预测时域长度n、生成模型和判别器训练次数比k,超参数α、β、c(其中,α是判别器损失权重,β是l2损失权重,且α+β=1,c是训练梯度阈值)
[0041]
第2行:在真实环境中随机采样长度为n的动作序列u进行执行,获得每条动作序列对应的真实环境中的状态s,记录动作和状态,形成数据集p={(si,ui),....}(动作序列对应的真实环境中的状态是目标状态,是生成模型预测输出所需要达到的目标)
[0042]
第3行:while未收敛do(对生成模型和判别器进行多轮对抗训练直至收敛,)
[0043]
第4行:fork次do(需要说明的是,每轮训练中,首先通过第5行至第10行对判别器进行多次(以k次表示)训练,然后再通过第11行至第15行训练一次生成模型)
[0044]
第5行:从数据集p中采样m条状态动作对第5行:从数据集p中采样m条状态动作对(从数据集中采样用于训练判别器的样本,m是训练过程中采样的批大小,批大小与训练过程中硬件的计算能力相关,状态序列包含了当前状态和一系列未来目标状态)
[0045]
第6行:将复制n次后叠加成向量s
base
(本发明实施例以未来状态与当前状态的差异预测序列作为生成模型的输出,因此需要将当前状态复制多次,用于与生成模型的输出进行叠加来获得每个未来预测状态)
[0046]
第7行:采用生成模型预测未来状态序列第7行:采用生成模型预测未来状态序列表示生成模型基于当前状态以及动作序列ui输出的未来状态与当前状态的差异预测序列,差异预测序列中的每个差异分别加上当前状态则构成预测的未来状态序列)
[0047]
第8行:计算梯度是判别器的梯度,其中,d
ω
(s
t
,ui,si′
)表示基于当前状态s
t
和动作序列ui由生成模型预测的状态si′
来自于真实环境的概率,d
ω
(s
t
,ui,si)表示目标状态si来自于真实环境的概率)
[0048]
第9行:梯度截断后进行反向传递(ωd表示判别器的参数,clip表示梯度截断,由于梯度截断是本领域技术人员已知的技术,此处不做赘述)
[0049]
第10行:end for
[0050]
第11行:从数据集p中采样m条状态动作对第11行:从数据集p中采样m条状态动作对(从数据集中采样用于训练生成模型的样本,m是训练过程中采样的批大小,批大小与训练过程中硬件的计算能力相关,状态序列包含了当前状态和一系列未来目标状态)
[0051]
第12行:将复制n次后叠加成向量s
base
(本发明实施例以未来状态与当前状态的差异预测序列作为生成模型的输出,因此需要将当前状态复制多次,用于与生成模型的输出进行叠加来获得每个未来预测状态)
[0052]
第13行:预测未来状态序列表示生成模型基于当前状态以及动作序列ui输出的未来状态与当前状态的差异预测序列,差异预测序列中的每个差异分别加上当前状态则构成预测的未来状态序列)
[0053]
第14行:计算梯度(是生成模型的梯度,其中,d
ω
(s
t
,ui,si′
)表示基于当前状态s
t
和动作序列ui由生成模型
预测的状态si′
来自于真实环境的概率,表示判别损失,表示生成模型的l2损失,α是判别器损失权重,β是l2损失权重,且α+β=1,m是训练过程中采样的批大小)
[0054]
第15行:梯度反向传播(θg是生成模型的参数,并基于梯度反向传播更新)
[0055]
第16行:end while
[0056]
需要说明的是,不同目标系统中,系统模型的结构会不一样。例如,当把mpc应用于自动驾驶中的路径跟踪任务时,本发明采用4层全连接网络的系统模型以及判别器,每层神经元数量依次为128,256,256,128。
[0057]
从上面的伪代码可以看出,相对于现有的传统对抗生成训练,本发明在训练损失中添加了基于l2的监督学习损失,借助监督学习在训练初期较为明显的梯度方向加速训练过程,并将监督学习损失与判别器损失按照一定权重加和后即可获得本发明使用的系统模型损失函数:
[0058][0059]
其中,α是判别器损失权重,β是l2损失权重,且α+β=1,具体的α和β根据具体任务确定,通常保证在训练趋于平稳时,l2损失小于判别器损失,m是每次训练中采样控制动作序列的批大小,s
t
是当前次训练时目标系统的当前状态,ui第i条控制动作序列,si′
表示目标系统在当前状态执行第i条控制动作序列后对应的目标系统未来状态预测序列,d
ω
(s
t
,ui,si′
)表示基于当前状态s
t
和动作序列ui由生成模型预测的状态si′
来自于真实环境的概率。
[0060]
通过上述训练过程获得的系统模型即可在单模型同步预测框架下进行多步预测。下面结合附图和实施例详细说明基于本发明的单模型同步预测框架下的系统模型如何实现mpc。
[0061]
mpc实施过程中,主要是为了在t时刻找到当前状态s
t
的最佳控制动作序列并送入目标系统的真实环境中执行,其中,通过多步预测过程根据当前状态s
t
和给定的控制动作序列u
t
预测长度为n的未来状态序列s,并选择与目标状态最接近的状态对应的动作序列作为最佳控制动作序列根据本发明的一个实施例,基于本发明的单模型同步预测框架下的系统模型实现的mpc架构如图5所示,采样器1首先根据采样策略生成一批控制动作序列生成的控制动作序列同时被输入单模型同步预测框架2下的基于上述实施例生成的系统模型3以预测t到t+n每一个时刻的状态。优化器4根据任务目标从预测的一系列未来状态中挑选出最好的状态(最好的状态是与目标状态最接近的状态),并获得此状态对应的控制动作序列即为最佳控制动作序列此序列会作为决策结果送入目标系统的真实环境5执行。实际应用过程中,为了保证mpc的实时性,一般将最佳控制动作序列中的时序靠前
的部分动作(例如第一个或前两个动作)送入真实环境中执行,在每个时刻重复上述过程,不断的获得控制目标系统在真实环境中执行的动作,实现实时控制。
[0062]
根据本发明的一个实施例,采样器采用cem策略进行采样,并使用正态分布作为动作采样分布,其中,动作是指目标系统约束条件下所有可行的可能动作,例如,在自动驾驶中,假设要求加速度(单位为km/s)约束条件为[5,10],角速度(单位为度/秒)约束条件为[3,6],那么只要满足这两个约束条件的动作都是可行的动作,动作采样就是采样每个时刻对应的加速度和角速度对,得到多个时刻的加速度和角速度对组成的动作序列。简单来说,在采样过程中,首先初始化动作采样的期望和方差,在此分布上采样多条条长度为n的动作序列,采样的动作序列送入多步预测过程和优化器后,获得较好的几条动作序列,根据这些动作序列在真实环境中的反馈(以环境奖励来表示)重新计算正态分布的期望(根据本发明的一个实施例,本发明中的期望是指找到满足的最佳动作序列u
*
,其中li是预设的预测损失,且li=(s
tar-s
′i)
t
q(s
tqr-s
′i)+u
it
rui,s
tar
是目标状态,s
′i是预测状态,(s
tar-s
′i)是状态的l2损失,ui是采样的动作序列,q和r分别是状态的l2损失和动作惩罚项的权重,且q和r由具体的目标系统任务确定)和方差,作为下一轮的动作采样分布,以此类推,两轮期望之间的差距小于一定值,则说明找到了较好的动作期望。由于cem策略是本领域技术人员已知的技术,本发明不做过多赘述。
[0063]
其中,如图6所示,每次预测时,采样器基于采样策略采样多条长度为n的动作序列(以u表示),本发明的单模型同步预测框架下的系统模型基于当前状态s
t
以及每一条动作序列预测该条动作序列对应的未来状态即预测所有动作序列对应的所有未来状态(以s
′
表示)。优化器基于动作序列对应的未来状态从所有动作序列中选择与目标状态s
tar
最接近的未来状态对应的动作序列作为最佳动作序列u
*
,并将最佳动作序列中的最佳动作送入环境中执行。
[0064]
根据本发明的一个实施例,基于本发明的单模型同步预测框架下的系统模型mpc的伪代码如表2所示。
[0065][0066]
其中:
[0067]
第1行:使用训练好的生成模型参数初始化系统模型g,设置预测时域长度n、最大迭代次数k,超参数q、r(采用之前基于生成对抗网络训练好的生成模型初始化系统模型,使其可以对多步预测过程实现单模型同步预测,其中,最大迭代次数表示的是同步预测时采样的动作序列条目数或者叫做采样次数,采样的动作序列越多,从中获取的最佳动作序列就越优,q和r分别表示状态的l2损失权重和动作惩罚项权重)
[0068]
第2行:设置目标状态序列s
sll-tar
={s1、s2、....}(目标状态序列时目标系统需要预测的未来一段时间内的所有目标状态组成的序列)
[0069]
第3行:while未达到最终目标状态do(在达到最终的目标状态之前,通过第4行至第9行预测每个预测时域内的未来状态)
[0070]
第4行:更新当前状态s
t
(在每个预测时域,其初始的当前状态均不一样,所以需要在每次预测的时候更新为每个预测时域对应的起始当前状态)
[0071]
第5行:基于当前状态s
t
与目标状态序列s
sll-tar
,确定下一个预测时域n的目标状态s
tar
(目标状态序列包含的所有目标状态,其包含了多个时域对应的目标状态,每个时域对应的目标状态均不一样,在每次预测时,需要基于当前状态去确定下一个时域的目标状态,然后通过第6行至第9行对下一个时域的未来状态进行预测)
[0072]
第6行:for i=1,
…
,kdo(通过采样k条动作序列对下一个时域的未来状态进行预测,以便从中找出最佳动作序列)
[0073]
第7行:根据cem策略,采样动作序列(cem策略时本领域技术人员已知的技术,本发明不做赘述)
[0074]
第8行:将s
t
复制n次后叠加成向量s
base
(本发明实施例以未来状态与当前状态的差异预测序列作为生成模型的输出,因此需要将当前状态复制多次,用于与生成模型的输出进行叠加来获得下一个预测时域内的每个未来预测状态)
[0075]
第9行:预测未来状态序列si′
=g
θ
(s
t
,ui)+s
base
表示生成模型基于当前状态以及动作序列ui输出的未来状态与当前状态的差异预测序列,差异预测序列中的每个差异分别加上当前状态则构成预测的未来状态序列)
[0076]
第10行:计算损失li=(s
tar-s
′i)
t
q(s
tar-s
′i)+u
it
rui((s
tar-s
′i)表示状态的l2损失,q和r分别表示状态的l2损失权重和动作惩罚项权重,li指示了预测的未来状态与目标状态之间的差异,li越大,说明预测的未来状态与目标状态差异越大,反之,预测的未来状态与目标状态差异越接近。)
[0077]
第11行:end for
[0078]
第12行:计算最佳动作序列(从所有的动作序列中找出对应的预测未来状态序列与目标状态序列最接近的动作序列)
[0079]
第13行:从u
*
中选取最靠前的两个动作作为u
t
,并将u
t
送入目标系统真实环境中执行(将最优动作序列中的前两个动作送入真实环境中执行,并不断的进行新的最优动作的预测,实现对目标系统的实时控制)
[0080]
第14行:end while
[0081]
通过上述实施例可以看出,本发明使用单模型同步预测框架与生成对抗网络系统模型,解决复杂环境中模型预测控制中多步预测过程耗时高,预测准确度下降的问题,且能够在复杂环境和算力受限的情况下,提供更好决策效率与决策效果。
[0082]
为了更好的验证本发明的效果,发明人在不同任务环境(游戏环境1、游戏环境2、路径跟踪环境、真车自动驾驶环境),用本发明的单模型同步预测框架与现有技术下的其他框架进行多步预测(其中,iter-fixed是指迭代框架下的固定线性迭代预测、iter-cnn是指迭代框架下的卷积神经网络迭代预测、sms-dnn指的是多模型同步预测框架下的深度神经网络预测),并分别对比每种预测方法的准确性以及预测时间,实验结果如表3所示。
[0083]
表3
[0084][0085]
从表3可以看出,本发明方法预测准确度明显高于其他方法,且所需时间明显比其他方法短,更能满足多步预测的实时性要求。
[0086]
综上所述,与现有技术相比,本发明提出的单模型同步预测框架,使用一个模型一次性完成多步预测过程,减少了多步预测过程所需时间的同时提高了预测准确度,最终增强了mpc在复杂环境下的能力,提升mpc决策效果;本发明提出的基于生成对抗网络的系统模型,使用生成器作为系统模型网络,使系统模型可以借助判别器学习不同分布的训练数据,拟合难以人为定义的复杂环境特征与约束,缓解分布不统一的训练数据导致的训练误差,提高模型准确度,并在训练过程中设计了监督学习损失与判别器损失相互融合的系统模型网络训练损失,借助监督学习在训练初期较为明显的梯度方向加速系统模型网络训练过程,而在训练后期又可以借助判别器帮助系统模型网络学习难以人为定义的各类环境约束提高模型准确度,加速了系统模型网络训练过程,提高最终训练效果。基于本发明的方案,将多步预测过程的时间复杂度从o(n)减少为o(1),同时由于不再有迭代过程,从而消除了迭代框架中存在的累积误差问题。
[0087]
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
[0088]
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0089]
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读
存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
[0090]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。