一种模型更新方法、装置、设备及可读存储介质与流程

文档序号:29090672发布日期:2022-03-02 02:42阅读:95来源:国知局
一种模型更新方法、装置、设备及可读存储介质与流程

1.本技术涉及机器学习技术领域,特别涉及一种模型更新方法、装置、设备及可读存储介质。


背景技术:

2.深度强化学习(drl,deep reinforcement learning)是近年来快速发展的一类机器学习方法,通过智能体-环境之间的交互作用进行序列决策,智能体基于获得的奖励持续优化决策策略。随着深度学习和强化学习技术的进步,具备强大表征能力、决策能力的深度强化学习方法被逐渐应用于探索自动驾驶技术。
3.深度强化学习用于自动驾驶时,可以基于一个驾驶场景训练相应的驾驶模型,使用该驾驶模型就能够有相应的自动驾驶策略。然而,在一个区域内训练得到的自动驾驶策略,不适用在与该区域差异较大的其他区域内直接应用。如:在空旷环境下训练得到的自动驾驶策略,在拥堵环境中难以避免碰撞问题。如果直接在拥堵环境对空旷环境下的自动驾驶策略进行更新,那么最终模型的稳定性较差。如果直接在拥堵环境训练一个新模型,训练成本会比较高。
4.因此,如何在训练场景变化后,快速得到与新场景匹配且性能较好的模型,是本领域技术人员需要解决的问题。


技术实现要素:

5.有鉴于此,本技术的目的在于提供一种模型更新方法、装置、设备及可读存储介质,以在训练场景变化后,快速得到与新场景匹配且性能较好的模型。其具体方案如下:第一方面,本技术提供了一种模型更新方法,包括:获取目的场景中的目的数据集、源场景中的源数据集及利用所述源数据集训练完成的源模型;在所述源数据集和所述目的数据集之间确定至少一个中间数据集;将所述至少一个中间数据集按差异梯度大小排列在所述源数据集和所述目的数据集之间,得到数据集序列;针对排列在所述数据集序列首位置之后的每个数据集,将前一数据集训练完成的模型作为当前数据集的待训练模型,利用当前数据集训练所述待训练模型得到当前数据集训练完成的模型;获取并存储所述目的数据集训练完成的模型。
6.可选地,所述在所述源数据集和所述目的数据集之间确定至少一个中间数据集,包括:确定所述源数据集和所述目的数据集中的差异化数据,并将所述差异化数据分类为n个训练维度;针对每个训练维度的差异化数据,在当前训练维度的差异化数据中确定至少一个
差异程度,根据所述至少一个差异程度确定至少一个数据组,并将所述至少一个数据组分别填充至所述源数据集,得到当前训练维度对应的至少一个中间数据集;相应地,所述将所述至少一个中间数据集按差异梯度大小排列在所述源数据集和所述目的数据集之间,得到数据集序列,包括:按差异梯度大小分别排列n个训练维度对应的各中间数据集,得到n个子序列;基于所述n个子序列、所述源数据集和所述目的数据集,得到所述数据集序列。
7.可选地,所述基于所述n个子序列、所述源数据集和所述目的数据集,得到所述数据集序列,包括:根据n个训练维度的优先级顺序拼接n个子序列,并将所述源数据集置于拼接得到的序列的首位置,将所述目的数据集置于拼接得到的序列的尾位置,得到所述数据集序列;或将n个子序列中的中间数据集对位进行合并,将合并得到的数据集按差异梯度大小排列在所述源数据集和所述目的数据集之间,得到所述数据集序列。
8.可选地,若所述源模型用于控制车辆或机器人自动移动,则所述n个训练维度包括:移动场景中同类型的车辆或机器人的稀疏程度和/或移动场景中是否有非同类型的随机障碍物。
9.可选地,所述利用当前数据集训练所述待训练模型得到当前数据集训练完成的模型,包括:确定当前数据集对应的奖惩函数;从当前数据集中获取一个训练数据输入所述待训练模型,得到训练结果;利用所述奖惩函数计算奖惩分数,并确定所述奖惩分数与初始训练目标之和,将所述和与所述训练结果之间的差异作为损失;所述初始训练目标为:目标模型处理所述训练数据的结果;所述目标模型与所述待训练模型相同;基于所述损失更新所述待训练模型;若更新后的待训练模型收敛,则将更新后的待训练模型作为当前数据集训练完成的模型;若更新后的待训练模型未收敛,则从当前数据集中获取另一训练数据对更新后的待训练模型进行迭代训练,直至更新后的待训练模型收敛。
10.可选地,所述奖惩函数的表达式为:其中,ri为当前数据集对应的奖惩函数,r
i-1
为所述数据集序列中排列在当前数据集前一位置的数据集对应的奖惩函数,fi为当前数据集对应的奖惩分数计算公式。
11.可选地,所述基于所述损失更新所述待训练模型之后,还包括:若达到训练目标更新条件,则将更新后的待训练模型的模型参数赋值给所述目标模型;或基于更新后的待训练模型的模型参数计算参数更新值,并将所述参数更新值赋值给所述目标模型;若未达到训练目标更新条件,则保留所述目标模型。
12.第二方面,本技术提供了一种模型更新装置,包括:获取模块,用于获取目的场景中的目的数据集、源场景中的源数据集及利用所述源数据集训练完成的源模型;确定模块,用于在所述源数据集和所述目的数据集之间确定至少一个中间数据集;排列模块,用于将所述至少一个中间数据集按差异梯度大小排列在所述源数据集和所述目的数据集之间,得到数据集序列;训练模块,用于针对排列在所述数据集序列首位置之后的每个数据集,将前一数据集训练完成的模型作为当前数据集的待训练模型,利用当前数据集训练所述待训练模型得到当前数据集训练完成的模型;输出模块,用于获取并存储所述目的数据集训练完成的模型。
13.第三方面,本技术提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序,以实现前述公开的模型更新方法。
14.第四方面,本技术提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的模型更新方法。
15.通过以上方案可知,本技术提供了一种模型更新方法,包括:获取目的场景中的目的数据集、源场景中的源数据集及利用所述源数据集训练完成的源模型;在所述源数据集和所述目的数据集之间确定至少一个中间数据集;将所述至少一个中间数据集按差异梯度大小排列在所述源数据集和所述目的数据集之间,得到数据集序列;针对排列在所述数据集序列首位置之后的每个数据集,将前一数据集训练完成的模型作为当前数据集的待训练模型,利用当前数据集训练所述待训练模型得到当前数据集训练完成的模型;获取并存储所述目的数据集训练完成的模型。
16.可见,本技术利用源场景下的源数据集训练得到源模型后,若想要将该源模型迁移至目的场景使用,则首先获取目的场景下的目的数据集及源模型,然后在源数据集和目的数据集之间确定至少一个中间数据集;将至少一个中间数据集按差异梯度大小排列在源数据集和目的数据集之间,得到数据集序列;针对排列在数据集序列首位置之后的每个数据集,将前一数据集训练完成的模型作为当前数据集的待训练模型,利用当前数据集训练待训练模型得到当前数据集训练完成的模型;如此一来,源模型就可以得到循序渐进地递进式训练,且相邻训练环节相互影响,实现了同一模型在不同场景内的稳定迁移,能够降低训练成本,保障同一模型在不同场景内迁移的性能和稳定性,最终由目的数据集训练完成的模型就是与目的场景匹配且性能较好的新模型。
17.相应地,本技术提供的一种模型更新装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
18.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
19.图1为本技术公开的一种模型更新方法流程图;图2为本技术公开的一种中间数据集确定示意图;图3为本技术公开的一种自动驾驶策略迁移示意图;图4为本技术公开的一种自动驾驶模型的数据处理示意图;图5为本技术公开的一种模型更新装置示意图;图6为本技术公开的一种电子设备示意图。
具体实施方式
20.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
21.深度强化学习用于自动驾驶时,无需积累大量具有标签的专家数据,能够指导车辆从头开始不断“试错”学会自动驾驶。然而,当面对新任务、新场景,如高速公路、乡间小路、城市道路场景转换,天气、光照条件变化,机动车、非机动车、行人密度等转变时,已经训练得到的最优驾驶策略也会失效。一些研究工作中,通过微调(fine-tune)、直接策略迁移等方式,将已有模型在目标任务中继续训练,以此来适应新的自动驾驶问题。但是,这种方式通常只能用于处理差异较小的自动驾驶任务,当较多的环境状态信息发生变化时,迁移效果较差,并且需要的迁移和适应时间也较长,限制了深度强化学习在自动驾驶领域的实际应用。因此,驾驶策略在新任务中的快速适应是车辆自动驾驶决策过程中急需解决的问题。
22.可见,在一个区域内训练得到的自动驾驶策略,不适用在与该区域差异较大的其他区域内直接应用。如:在空旷环境下训练得到的自动驾驶策略,在拥堵环境中难以避免碰撞问题。如果直接在拥堵环境对空旷环境下的自动驾驶策略进行更新,那么最终模型的稳定性较差。如果直接在拥堵环境训练一个新模型,训练成本会比较高。为此,本技术提供了一种模型更新方案,能够在训练场景变化后,快速得到与新场景匹配且性能较好的模型。
23.参见图1所示,本技术实施例公开了一种模型更新方法,包括:s101、获取目的场景中的目的数据集、源场景中的源数据集及利用源数据集训练完成的源模型。
24.其中,源数据集和目的数据集为源模型在源场景和目的场景内训练所用的数据集。
25.需要说明的是,目的场景中的目的数据集、源场景中的源数据集并非是固定不变的数据集,而是深度强化学习下实时变化的数据集。例如:在自动驾驶训练方案中,源场景为小区a,那么小区a中的源数据集既包括:小区a范围内固定不变的道路、建筑等的地图数据,又包括自动驾驶车辆/自移动机器人行驶到某一位置时,该自动驾驶车辆/自移动机器人周围随机出现的障碍物,如:其他自动驾驶车辆/其他自移动机器人、行人、垃圾等。这些障碍物的随机性导致了源数据集的动态变化。相应地,目的数据集与此类似。
26.在本实施例中,源模型用于控制车辆或机器人(即自移动目标)自动移动。也即:源
模型可以为:自动驾驶模型、机器人自移动模型等。在自动驾驶或机器人自移动训练方案中,自动驾驶车辆/自移动机器人行驶到某一位置时,该位置周围的随机障碍物、该位置周围的环境等,即为:自动驾驶模型的输入数据。所以,本实施例中的各数据集为:某一场景中的环境数据的集合,包括:固定不变的地图数据、随机出现的障碍物等。
27.s102、在源数据集和目的数据集之间确定至少一个中间数据集。
28.为了将源模型循序渐进地迁移至目的场景中使用,本实施例比现有技术多了至少一个中间训练环节。
29.在现有技术中,若想要将场景x下可以正常使用的模型s迁移至场景y中使用,那么直接使用场景y中的数据集y对模型s进行训练,直至模型s收敛。但此方式会导致在场景y中收敛的模型s的稳定性较差。
30.为此,本实施例可以设置至少一个中间训练环节。例如:在场景x中的数据集x和场景y中的数据集y之间找一个中间数据集v,先使用中间数据集v对模型s进行训练,直至模型s收敛;之后,使用数据集y对前一步收敛的模型s继续进行训练,从而得到最终与场景y匹配的新模型s。如此一来,就不至于因为不同场景内的环境数据差异较大导致被迁移模型的性能和稳定性受损。其中,数据集x、数据集v、数据集y之间差异可以参照下述示例:数据集x对应:平时道路上的车辆密度为10的行政区域,数据集v对应:平时道路上的车辆密度为40的行政区域,数据集y对应:平时道路上的车辆密度为70的行政区域。
31.当然,如果目的场景和源场景差异非常大、且不止有车辆密度这一训练维度的差异,那么就可以设置更多的中间训练环节。必要时可以针对任一训练维度设置至少一个中间训练环节。训练维度可以是:行人密度、车辆密度、自行车等非机动车密度。
32.由于不同中间训练环节是因为训练所用的数据集的不同而不同,故本技术基于不同的中间数据集设定各个中间训练环节,即:在源数据集和目的数据集之间确定至少一个中间数据集。
33.s103、将至少一个中间数据集按差异梯度大小排列在源数据集和目的数据集之间,得到数据集序列。
34.在一种具体实施方式中,在源数据集和目的数据集之间确定至少一个中间数据集,包括:确定源数据集和目的数据集中的差异化数据,并将差异化数据分类为n个训练维度;针对每个训练维度的差异化数据,在当前训练维度的差异化数据中确定至少一个差异程度,根据至少一个差异程度确定至少一个数据组,并将至少一个数据组分别填充至源数据集,得到当前训练维度对应的至少一个中间数据集;相应地,将至少一个中间数据集按差异梯度大小排列在源数据集和目的数据集之间,得到数据集序列,包括:按差异梯度大小分别排列n个训练维度对应的各中间数据集,得到n个子序列;基于n个子序列、源数据集和目的数据集,得到数据集序列。
35.参照上述示例,假设源数据集x对应:平时道路上的车辆密度为10的行政区域,目的数据集y对应:平时道路上的车辆密度为70的行政区域。那么,在设定一个中间数据集v的情况下,数据集序列为:[源数据x、数据集v、目的数据集y]。
[0036]
如果以车辆密度作为一个训练维度来设定中间数据集,那么针对上述源数据x至目的数据集y而言,其中的差异化数据即为:车辆密度这一训练维度的差异化数据,具体为70-10=60。假设在密度差额为60的差异化数据中确定2个差异程度:30和50(如图2线段上的
端点30和50),那么可得2个数据组:10~30的数据差额、10~50的数据差额(如图2线段上不同端点间的数据差额)。其中,由于“10~70的数据差额”这一数据组填充至源数据x,对应的是目的数据集y,不是中间数据集,因此该数据组暂不考虑。之后将“10~30的数据差额、10~50的数据差额”这2个数据组分别填充至源数据x,可得到车辆密度这一训练维度的中间数据集:数据集v1(车辆密度为30)、数据集v2(车辆密度为50)。
[0037]
如果在源数据x中,平时道路上的行人密度为2;在目的数据集y中,平时道路上的车辆密度为10。那么针对上述源数据x至目的数据集y而言,行为密度这一训练维度的差异化数据,具体为10-2=8。假设在密度差额为8的差异化数据中确定3个差异程度:4、6、8(如图2线段上的端点4、6、8),那么可得3个数据组:2~4的数据差额、2~6的数据差额、2~8的数据差额(如图2线段上不同端点间的数据差额)。其中,由于“2~10的数据差额”这一数据组填充至源数据x,对应的是目的数据集y,不是中间数据集,因此该数据组暂不考虑。之后将“2~4的数据差额、2~6的数据差额、2~8的数据差额”这3个数据组分别填充至源数据x,可得到行人密度这一训练维度的中间数据集:数据集p1(行人密度为4)、数据集p2(行人密度为6)、数据集p3(行人密度为8)。
[0038]
如此一来,车辆密度训练维度对应有中间数据集:数据集v1、数据集v2。行人密度训练维度对应有中间数据集:数据集p1、数据集p2、数据集p3。那么车辆密度训练维度的子序列1为:[数据集v1、数据集v2],行人密度训练维度的子序列2为:[数据集p1、数据集p2、数据集p3]。在不考虑这两个训练维度优先级的情况下,可拼接子序列1和子序列2,得到[数据集v1、数据集v2、数据集p1、数据集p2、数据集p3],然后,将源数据集x填充在拼接结果的首位置,将目的数据集y填充在拼接结果的尾位置,那么得到的数据集序列为:[源数据集x、数据集v1、数据集v2、数据集p1、数据集p2、数据集p3、目的数据集y]。当然,也可将子序列2置于子序列1之前,得到数据集序列:[源数据集x、数据集p1、数据集p2、数据集p3、数据集v1、数据集v2、目的数据集y]。针对此方式的确定的数据集序列进行模型训练,可在一个中间训练环节从一个训练维度训练模型。当然,若行人密度训练维度和车辆密度训练维度设有优先级顺序,那么按照优先级顺序来拼接子序列1和子序列2。
[0039]
在一种实施方式中,也可以先合并不同训练维度的中间数据集,再确定数据集序列。例如:将子序列1和子序列2对位合并,那么可得:[数据集v1+数据集p1、数据集v2+数据集p2、数据集p3],之后将源数据集x填充在合并结果的首位置,将目的数据集y填充在拼接结果的尾位置,那么得到的数据集序列为:[源数据集x、数据集v1+数据集p1、数据集v2+数据集p2、数据集p3、目的数据集y]。针对此方式的确定的数据集序列进行模型训练,可在同一中间训练环节从两个训练维度训练模型。当然也可以在同一中间训练环节从更多个训练维度训练模型。
[0040]
在一种具体实施方式中,基于n个子序列、源数据集和目的数据集,得到数据集序列,包括:根据n个训练维度的优先级顺序拼接n个子序列,并将源数据集置于拼接得到的序列的首位置,将目的数据集置于拼接得到的序列的尾位置,得到数据集序列;或将n个子序列中的中间数据集对位进行合并,将合并得到的数据集按差异梯度大小排列在源数据集和目的数据集之间,得到数据集序列。
[0041]
s104、针对排列在数据集序列首位置之后的每个数据集,将前一数据集训练完成的模型作为当前数据集的待训练模型,利用当前数据集训练待训练模型得到当前数据集训
练完成的模型。
[0042]
s105、获取并存储目的数据集训练完成的模型。
[0043]
若数据集序列为:[源数据x、数据集v、目的数据集y]。源模型为s,那么训练过程包括:a、将s作为数据集v的待训练模型,使用数据集v训练s直至收敛,得到s1;b、将s1作为目的数据集y的待训练模型,使用目的数据集y训练s1直至收敛,得到s2;c、s2即为目的数据集y训练完成的模型,也就是与目的场景y匹配的模型。
[0044]
其中,每一个训练环节得到的收敛模型(如s1、s2)都可以入库存储,以便后续有需要时直接调用。上述a、b、c训练环节可基于深度强化学习实现。
[0045]
可见,本实施例利用源场景下的源数据集训练得到源模型后,若想要将该源模型迁移至目的场景使用,则首先获取目的场景下的目的数据集及源模型,然后在源数据集和目的数据集之间确定至少一个中间数据集;将至少一个中间数据集按差异梯度大小排列在源数据集和目的数据集之间,得到数据集序列;针对排列在数据集序列首位置之后的每个数据集,将前一数据集训练完成的模型作为当前数据集的待训练模型,利用当前数据集训练待训练模型得到当前数据集训练完成的模型;如此一来,源模型就可以得到循序渐进地递进式训练,且相邻训练环节相互影响,实现了同一模型在不同场景内的稳定迁移,能够降低训练成本,保障同一模型在不同场景内迁移的性能和稳定性,最终由目的数据集训练完成的模型就是与目的场景匹配且性能较好的新模型。
[0046]
基于上述实施例,需要说明的是,在一种具体实施方式中,若源模型用于控制车辆或机器人自动移动,则n个训练维度包括:移动场景中同类型的车辆或机器人的稀疏程度和/或移动场景中是否有非同类型的随机障碍物。其中,机器人可以是自动送餐机器人,自动送快递机器人,车间环境中的自移动机器人,银行、商场等区域内的自动寻访机器人。可见,本技术不仅可用于自动驾驶策略的分阶段迁移,还可以用于自移动机器人的自移动策略的分阶段迁移。也即:本技术可用于自移动目标的自移动策略的分阶段迁移。自移动策略即:控制相应目标自动移动的模型。
[0047]
基于上述实施例,需要说明的是,任一个训练环节的训练过程可参照现有深度强化学习的相关技术进行,也可以按照本技术提供的如下深度强化学习训练步骤进行。
[0048]
在一种具体实施方式中,利用当前数据集训练待训练模型得到当前数据集训练完成的模型,包括:确定当前数据集对应的奖惩函数;从当前数据集中获取一个训练数据输入待训练模型,得到训练结果;利用奖惩函数计算奖惩分数,并确定奖惩分数与初始训练目标之和,将和与训练结果之间的差异作为损失;初始训练目标为:目标模型处理训练数据的结果;目标模型与待训练模型相同;基于损失更新待训练模型;若更新后的待训练模型收敛,则将更新后的待训练模型作为当前数据集训练完成的模型;若更新后的待训练模型未收敛,则从当前数据集中获取另一训练数据对更新后的待训练模型进行迭代训练,直至更新后的待训练模型收敛。
[0049]
若所述奖惩分数为预设最大惩罚值,则重新利用当前数据集训练所述待训练模型。因此计算得到奖惩分数后,先判断奖惩分数是否为预设最大惩罚值,若不是,再计算损失。
[0050]
其中,不同训练环节所用的奖惩函数可以相同,也可以不同。在奖惩函数不同时,可以使当前训练环节的奖惩函数叠加前一训练环节的奖惩函数。因此在一种具体实施方式中,任一训练环节的奖惩函数的表达式为:其中,ri为当前数据集对应的奖惩函数,r
i-1
为数据集序列中排列在当前数据集前一位置的数据集对应的奖惩函数的表达式,fi为当前数据集对应的奖惩分数计算公式。
[0051]
在一种具体实施方式中,任一训练环节的fi的表达式可以为:f
i=cv_dist
×
[∑
l
|x
ego-x
l
|]-cv
[|v
t-v
t-1
|/δt]。也可以为:f
i=cv_dist
×
[min|x
ego-xh|]/|v
ego-vh|。当然,不同训练环节的fi可以相同,也可以不相同。在不同训练环节的fi不相同时,其根据当前训练环节所用的训练数据集特性及相应环境特性(如:是否拥堵、行人是否过多等)进行设计。
[0052]
例如:f
i=cv_dist
×
[∑
l
|x
ego-x
l
|]-cv
[|v
t-v
t-1
|/δt]可以是自动驾驶模型的某一中间训练环境所用的fi的表达式,该表达式适用在稠密车流环境下。其中,
cv_dist

cv
分别是针对安全车距检测和急加速度的奖惩系数,均为[0,1]的常数;x
ego
表示自动驾驶车辆的位置,x
l
是周围第l辆车的位置,∑
l
|x
ego-x
l
|反映自动驾驶车辆与监测范围内所有机动车的位置关系;v
t
、v
t-1
表示自动驾驶车辆连续两个时刻的行驶速度,δt为时间间隔,|v
t-v
t-1
|/δt反映自动驾驶车辆的加速度。
[0053]
再如:f
i=cv_dist
×
[min|x
ego-xh|]/|v
ego-vh|可以是自动驾驶模型的目的训练环境所用的fi的表达式,该表达式适用在行人多或非机动车多的环境下。其中,
cv_dist
是减速避让行人与非机动车的奖惩系数,为[0,1]的常数;x
ego
表示自动驾驶车辆的位置,xh为自动驾驶车辆周围行人或非机动车的位置,min|x
ego-xh|反映自动驾驶车辆与监测范围内所有行人或非机动车的最小距离;v
ego
表示自动驾驶车辆的速度;vh表示距离自动驾驶车辆最近的行人或非机动车的运动速度。
[0054]
在一种具体实施方式中,基于损失更新待训练模型之后,还包括:若达到训练目标更新条件,则将更新后的待训练模型的模型参数赋值给目标模型;或基于更新后的待训练模型的模型参数计算参数更新值,并将参数更新值赋值给目标模型;若未达到训练目标更新条件,则保留目标模型。
[0055]
其中,训练目标更新条件可以为:待训练模型迭代n次,n=1、2

n,n不大于一个训练环节内的模型最大迭代次数。
[0056]
其中,基于更新后的待训练模型的模型参数计算参数更新值,包括:用一个预设系数乘以更新后的待训练模型的模型参数,再以所得乘积作为目标模型的模型参数的增量,对目标模型的模型参数进行更新。假设更新后的待训练模型的模型参数为θ1,当前目标模型的模型参数为θ,预设系数取0.01,那么更新后的目标模型的模型参数为:θ+0.01
×
θ1。
[0057]
下述实施例以车辆自动驾驶领域内的模型迁移为例,对本技术进行详细介绍。
[0058]
本实施例进行传递式深度强化学习自动驾驶策略的迁移,以稀疏车流下(仅机动车)的驾驶策略向稠密车流场景(含行人、非机动车)迁移为例。
[0059]
请参见图3,在源任务(稀疏车流下进行自动驾驶策略训练的任务)与目标任务(稠密车流下进行自动驾驶策略训练的任务)间建立不同相似度的中间任务,降低前后两个任
务间的差异,提升深度强化学习驾驶策略的传递式迁移的可行性,解除目标任务与源任务的差异度限制。
[0060]
其次,在每次迁移过程中,通过奖惩函数塑型对驾驶策略进行连续调整,最终实现源任务决策策略对目标任务的快速迁移和适应。
[0061]
其中,可以选择dqn(deep-q-network,深度q网络)、ppo(proximal policy optimization,近端策略优化)、ddpg(deep deterministic policy gradient,深度确定策略梯度)、sac(soft actor-critic,松弛actor-critic)等深度强化学习算法进行驾驶策略的训练。考虑到自动驾驶问题的速度、转向动作空间的连续性,本实施例选用经典的ddpg算法进行说明。
[0062]
具体的,本实施例可以分为以下4个实施步骤:(1)建立源任务d0与目标任务d1的中间任务di;(2)根据中间任务与目标任务特征,进行奖惩函数塑型,得到ri与r1;(3)基于深度强化学习将驾驶策略依次进行阶段迁移,更新相应的网络模型参数;(4)在目标任务中应用最终得到的深度强化学习驾驶策略。
[0063]
下面分别针对上述步骤进行详细说明。
[0064]
步骤一:建立源任务d0与目标任务d1的中间任务di。
[0065]
针对源任务d0与目标任务d1的交通环境状态,从动态场景、静态场景角度分析任务差异性。动态场景包括机动车、非机动车、行人等交通参与者的位置及运动信息,静态场景则包括道路拓扑结构、交通信号灯、指示牌、天气条件等信息。每个细分方面都可作为对比交通场景差异度的维度,即前文所述的训练维度。
[0066]
本实施例关注稀疏车流场景与稠密车流场景的车流、行人的差异度。车流密度提升后,自动驾驶车辆需要识别的目标增多,行为决策和动作规划的限制条件增多;行人、非机动车具有高度的随机性,进一步提升目标任务的复杂度。
[0067]
基于此,从车流密度这个维度出发,将源任务与目标任务之间的迁移分割为2段,即设置1个中间任务di,即较稠密车流场景下(仅机动车)的中间任务di。当然,还可以从是否有行人/非机动车的维度出发,进行中间任务的设置。更进一步地,可以综合车流密度和是否有行人/非机动车这两个维度进行中间任务的设置,如前文所述的“将n个子序列中的中间数据集对位进行合并”。当然,每一维度下可以进行更细致地划分,以设置更多的中间任务。
[0068]
步骤二:根据中间任务与目标任务特征,进行奖惩函数塑型,得到ri与r1。
[0069]
(1)针对步骤一设置的中间任务di,根据中间任务di所对应交通状态信息和任务特征,在源任务奖惩函数r0的基础上,对中间任务di的奖惩函数ri进行塑型。
[0070]
对于较稠密车流场景下的中间任务di,需要更好地控制自动驾驶车辆与周围车辆的距离、减少急加速/急刹以及避免碰撞,那么可以在源任务奖惩函数r0的基础上增加这些方面的奖励/惩罚,那么中间任务的奖惩函数ri表达式可以为:其中,
cv_dist

cv
分别是针对安全车距检测和急加速度的奖惩系数,均为[0,1]的常数;x
ego
表示自动驾驶车辆的位置,x
l
是周围第l辆车的位置,∑
l
|x
ego-x
l
|反映自动驾驶车辆
与监测范围内所有机动车的位置关系;v
t
、v
t-1
表示自动驾驶车辆连续两个时刻的行驶速度,δt为时间间隔,|v
t-v
t-1
|/δt反映自动驾驶车辆的加速度。-200为预设最大惩罚值。
[0071]
基于该奖惩函数ri,可以在不发生碰撞的情况下,自动驾驶车辆与周围机动车保持安全车距时给予正向奖励,而出现急加速/急刹状况时进行负向惩罚。当自动驾驶车辆与周围车辆发生碰撞时,给予一个非常大的惩罚-200,以此来指导自动驾驶车辆尽量避免碰撞。
[0072]
(2)针对目标任务d1,根据d1所对应交通状态信息和任务特征,在中间任务的奖惩函数ri的基础上,对目标任务d1的奖惩函数r1进行塑型。
[0073]
对于有行人、非机动车参与的目标任务d1,需要自动驾驶车辆与其保持安全距离的同时,还要减速慢行、礼让行人及非机动车,因此在中间任务的奖惩函数ri的基础上增加这些方面的奖励/惩罚,那么目标任务d1的奖惩函数r1表达式可以为:其中,
cv_dist
是减速避让行人与非机动车的奖惩系数,为[0,1]的常数;x
ego
表示自动驾驶车辆的位置,xh为自动驾驶车辆周围行人或非机动车的位置,min|x
ego-xh|反映自动驾驶车辆与监测范围内所有行人或非机动车的最小距离;v
ego
表示自动驾驶车辆的速度;vh表示距离自动驾驶车辆最近的行人或非机动车的运动速度。
[0074]
基于该奖惩函数r1,在不发生碰撞的情况下,自动驾驶车辆与周围交通参与者保持安全车距、避免较大加速度,并在与行人或非机动车距离较近时减速避让。自动驾驶车辆碰撞机动车、非机动车或行人的行为,同样给予一个非常大的惩罚-200。
[0075]
其中,奖惩函数r1、奖惩函数ri中各项参数参与计算时需要进行归一化处理。
[0076]
步骤三:基于深度强化学习将驾驶策略依次进行阶段迁移,更新网络模型参数。
[0077]
ddpg算法框架下的在线模型包括1个策略网络(actor_net)和1个评价网络(critic_net),目标模型也包括1个策略网络(actor_net)和1个评价网络(critic_net)。为区别此二者,将在线模型中的策略网络记为,将在线模型中的评价网络记为。将目标模型中的策略网络记为,将目标模型中的评价网络记为。其中,策略网络用于基于环境选取车辆驾驶动作,评价网络基于环境对驾驶动作进行评估,指导驾驶动作持续优化。
[0078]
在中间任务中di,自动驾驶车辆与交通环境si发生交互,并以此训练用于输出驾驶策略的在线模型,直至模型收敛。
[0079]
在中间任务中d1,自动驾驶车辆与交通环境s1发生交互,并以此训练用于输出驾驶策略的在线模型,直至模型收敛。
[0080]
训练在线模型的过程如图4所示,车辆与其所处交通环境不断交互、以“试错”方式学习自动驾驶。自动驾驶车辆在t时刻观测到所处交通环境状态为s
t
,利用当前在线模型选取与s
t
对应的车辆动作a
t
,并对车辆动作a
t
进行评估,得到一个奖惩分数r
t
,然后据此并奖惩分数r
t
使车辆移动到新的状态s
t+1
。其中,自动驾驶车辆根据获得的奖惩分数r
t
进行决策策略调整,指导车辆继续加强该动作或避免该动作,并结合新的交通环境状态s
t+1
进入下一
个决策过程。通过与交通环境交互作用做出序列决策,自动驾驶车辆学习到最优的驾驶策略。
[0081]
(1)源任务d0向中间任务di迁移。
[0082]
从源任务训练得到的在线模型中继承全部的模型参数θ、θ'、ω、ω'作为中间任务di需要训练的在线模型的初始模型参数,也即:源任务训练得到的在线模型是中间任务di需要训练的在线模型。
[0083]
在中间任务中,自动驾驶车辆与交通环境si发生交互,采用源任务训练得到的在线模型中的策略网络选取并执行车速、转向动作ai,车辆获得环境给予的奖励ri。然后基于环境状态和车辆动作信息计算评价网络,使用时间差分方法对评价网络进行更新,并指导策略网络进行优化,获得适配中间任务di的在线的策略网络评价网络。
[0084]
在符合目标网络更新条件的情况下,基于当前在线模型,通过“软更新”的方式更新当前用于输出真实值的模型中的策略网络和评价网络。
[0085]
当累计奖励收敛到较高水平,反映决策策略已经良好适配中间任务,该阶段的训练结束,获得中间任务场景的最优驾驶策略,即训练得到的收敛模型。
[0086]
具体的模型更新过程包括:1)t时刻,策略网络基于环境状态s
t
选取动作a
t
。策略网络使用4层网络结构:输入层读入环境状态信息;中间2个隐藏层分别由100个神经元组成,使用relu函数作为激活函数;输出层不使用激活函数,直接计算得到动作a
t
。执行动作a
t
,针对该动作计算得到r
t
。同时,环境进入新的状态s
t+1

[0087]
评价网络使用5层网络结构:输入层读入环境状态信息;第1个隐藏层由100个神经元组成,使用relu函数作为激活函数,同时该层将步骤三中获得的动作 一并作为输出;第2个隐藏层将第1个隐藏层的输出与动作进行融合,获得逐点相加的结果;第3个隐藏层与第1个隐藏层类似,由100个神经元组成,使用relu函数作为激活函数;输出层不使用激活函数,直接计算得到表示基于环境状态st和动作a
t
的价值。
[0088]
2)更新在的评价网络参数ω。
[0089]
通过最小化损失函数来更新评价网络参数,损失函数定义为:式中,是使用在线评价网络计算得到的价值,是目标评价网络计算得到的价值,为折扣因子,通常取值为0-1之间的常数,n为数据条数。
[0090]
3)更新在线学习的策略网络参数。
[0091]
通过如下策略梯度,更新策略网络参数:
式中,为策略梯度方法的目标函数,通常表示为关于奖励r
t
的函数。最大化目标函数得到策略梯度,通过对策略网络参数θ进行更新,其中为固定的时间步参数。
[0092]
4)更新用于输出真实值的目标评价网络和目标策略网络。
[0093]
通过如下“软更新”的方式更新目标评价网络和策略网络:式中,(即前文所述的预设系数),能够使目标网络缓慢地跟随在线网络进行变更,极大提升训练的稳定性。
[0094]
应该理解,当设置多个中间任务时,各中间任务据此依次处理。
[0095]
(2)中间任务di向目标任务d1迁移。
[0096]
此过程与“源任务d0向中间任务di迁移”类似,以中间任务di训练得到的在线模型作为目标任务d1需要训练的在线模型,并对此进行训练,直至得到目标任务场景的最优驾驶策略,即训练得到的收敛模型。
[0097]
在任一训练环节,当自动驾驶车辆与周围交通参与者(包括机动车、非机动车、行人等)发生碰撞时,除了通过奖惩函数给予车辆一个很大的惩罚,还会立刻终止当前训练回合。然后,重置交通环境状态重新进行当前环节的训练,直至训练得到能够适配当前任务的驾驶策略。
[0098]
步骤四:目标任务中应用深度强化学习驾驶策略。
[0099]
基于目标任务场景的最优驾驶策略,在目标任务场景中控制车辆进行自动驾驶。
[0100]
可见,本实施例通过分析源任务与目标任务的差异维度,可以建立递进式的中间任务来降低相邻任务间的差异度,提升自动驾驶策略迁移的可行性。同时,针对各中间任务及目标任务特征,通过奖惩函数塑型约束模型,实现深度强化学习驾驶策略向目标任务的快速适应。这种传递式的策略迁移方法,可以降低训练成本,实现模型的渐进式训练和迁移,使得最终得到的模型与相应场景的适配度更好。
[0101]
当然,按照本实施例还可以进行机器人控制策略的迁移。同样针对源任务和目标任务场景进行差异度分析,并引入中间任务和相应迁移阶段,通过连续训练来实现已有机器人控制策略的有效复用和迁移,也可提升控制策略的泛化性能。
[0102]
下面对本技术实施例提供的一种模型更新装置进行介绍,下文描述的一种模型更新装置与上文描述的一种模型更新方法可以相互参照。
[0103]
参见图5所示,本技术实施例公开了一种模型更新装置,包括:获取模块501,用于获取目的场景中的目的数据集、源场景中的源数据集及利用源数据集训练完成的源模型;源数据集和目的数据集为源模型在源场景和目的场景内训练所用的数据集;
确定模块502,用于在源数据集和目的数据集之间确定至少一个中间数据集;排列模块503,用于将至少一个中间数据集按差异梯度大小排列在源数据集和目的数据集之间,得到数据集序列;训练模块504,用于针对排列在数据集序列首位置之后的每个数据集,将前一数据集训练完成的模型作为当前数据集的待训练模型,利用当前数据集训练待训练模型得到当前数据集训练完成的模型;输出模块505,用于获取并存储目的数据集训练完成的模型。
[0104]
在一种具体实施方式中,确定模块包括:分类单元,用于确定源数据集和目的数据集中的差异化数据,并将差异化数据分类为n个训练维度;确定单元,用于针对每个训练维度的差异化数据,在当前训练维度的差异化数据中确定至少一个差异程度,根据至少一个差异程度确定至少一个数据组,并将至少一个数据组分别填充至源数据集,得到当前训练维度对应的至少一个中间数据集;相应地,排列模块包括:排列单元,用于按差异梯度大小分别排列n个训练维度对应的各中间数据集,得到n个子序列;执行单元,用于基于n个子序列、源数据集和目的数据集,得到数据集序列。
[0105]
在一种具体实施方式中,执行单元具体用于:根据n个训练维度的优先级顺序拼接n个子序列,并将源数据集置于拼接得到的序列的首位置,将目的数据集置于拼接得到的序列的尾位置,得到数据集序列;或将n个子序列中的中间数据集对位进行合并,将合并得到的数据集按差异梯度大小排列在源数据集和目的数据集之间,得到数据集序列。
[0106]
在一种具体实施方式中,若源模型用于控制车辆或机器人自动移动,则n个训练维度包括:移动场景中同类型的车辆或机器人的稀疏程度和/或移动场景中是否有非同类型的随机障碍物。
[0107]
在一种具体实施方式中,训练模块包括:奖惩函数确定单元,用于确定当前数据集对应的奖惩函数;输入单元,用于从当前数据集中获取一个训练数据输入待训练模型,得到训练结果;损失计算单元,用于利用奖惩函数计算奖惩分数,并确定奖惩分数与初始训练目标之和,将和与训练结果之间的差异作为损失;初始训练目标为:目标模型处理训练数据的结果;目标模型与待训练模型相同;更新单元,用于基于损失更新待训练模型;输出单元,用于若更新后的待训练模型收敛,则将更新后的待训练模型作为当前数据集训练完成的模型;迭代单元,用于若更新后的待训练模型未收敛,则从当前数据集中获取另一训练数据对更新后的待训练模型进行迭代训练,直至更新后的待训练模型收敛。
[0108]
在一种具体实施方式中,奖惩函数的表达式为:
其中,ri为当前数据集对应的奖惩函数,r
i-1
为数据集序列中排列在当前数据集前一位置的数据集对应的奖惩函数,fi为当前数据集对应的奖惩分数计算公式。
[0109]
在一种具体实施方式中,训练模块还包括:目标模型更新单元,用于若达到训练目标更新条件,则将更新后的待训练模型的模型参数赋值给目标模型;或基于更新后的待训练模型的模型参数计算参数更新值,并将参数更新值赋值给目标模型;若未达到训练目标更新条件,则保留目标模型。
[0110]
在一种具体实施方式中,训练模块还包括:重置单元,用于若所述奖惩分数为预设最大惩罚值,则重新利用当前数据集训练所述待训练模型。
[0111]
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0112]
可见,本实施例提供了一种模型更新装置,能够在训练场景变化后,快速得到与新场景匹配且性能较好的模型。
[0113]
下面对本技术实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与上文描述的一种模型更新方法及装置可以相互参照。
[0114]
参见图6所示,本技术实施例公开了一种电子设备,包括:存储器601,用于保存计算机程序;处理器602,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
[0115]
下面对本技术实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种模型更新方法、装置及设备可以相互参照。
[0116]
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的模型更新方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0117]
本技术涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
[0118]
需要说明的是,在本技术中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。
[0119]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它
实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0120]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的可读存储介质中。
[0121]
本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1