基于深度强化学习算法的自主式水下航行器深度控制
王日中, 李慧平, 崔迪, 徐德民
西北工业大学航海学院,陕西 西安 710072
【摘 要】 研究了基于深度强化学习算法的自主式水下航行器(AUV)深度控制问题。区别于传统的控制算法,深度强化学习方法让航行器自主学习控制律,避免人工建立精确模型和设计控制律。采用深度确定性策略梯度方法设计了actor与critic两种神经网络。actor神经网络给出控制策略,critic神经网络用于评估该策略,AUV的深度控制可以通过训练这两个神经网络实现。在OpenAI Gym平台上仿真验证了算法的有效性。 【关键词】 自主式水下航行器 ; 深度控制 ; 深度强化学习
王日中, 李慧平, 崔迪, 等. 基于深度强化学习算法的自主式水下航行器深度控制[J]. 智能科学与技术学报, 2020, 2(4): 354-360.
WANG R Z, LI H P, CUI D, et al. Depth control of autonomous underwater vehicle using deep reinforcement learning[J]. CHINESE JOURNAL OF INTELLIGENT SCIENCE AND TECHNOLOGY, 2020, 2(4): 354-360.
随着机器人技术和传感器、控制、导航等相关技术的迅速发展,自主式水下航行器(autonomous underwater vehicle,AUV)在水下探测、搜救、检测等领域得到了广泛的应用。传统的 AUV 运动控制需要建立一个精确的 AUV 模型,控制质量与模型精度密切相关。而 AUV 是一个典型的多变量、强耦合的非线性系统,其参数和模型具有不确定性。这些不确定性给水下机器人的运动控制带来了巨大挑战。针对这种复杂环境下 AUV 的决策与控制问题,机器学习(machine learning,ML)提供了一种有效的解决方案。作为一种最基本的ML方法,监督学习的方法可以通过 AUV 运动数据训练神经网络,从而对模型误差和不确定性进行自适应补偿,实现AUV的高精度运动控制。 强化学习是更有效的ML方法。强化学习算法不需要系统模型信息以及人为设计控制律,而是通过设置奖励函数让机器人自己探索、学习有用的控制策略。对于一个不断与环境进行交互的机器人来说,强化学习将系统实时状态和动作映射为奖励函数,机器人依靠现有数据寻找可以产生最大回报的动作,从而提高机器人在不确定场景中的智能性。例如,在西洋双陆棋比赛中,使用强化学习算法训练的机器人击败了世界冠军,而且,强化学习算法训练的智能体在雅达利游戏公司出品的多种游戏中的表现超过了人类的水平。 2013年,DeepMind公司提出了深度Q学习网络(deep Q-learning network,DQN)算法,这种将强化学习与深度神经网络结合的算法叫作深度强化学习(deep reinforcement learning,DRL)算法。在系统模型未知的情况下,智能体通过设置的奖励函数来学习探索更好的控制策略,并利用深度神经网络估计强化学习评价指标和拟合当前的控制策略。当控制器训练好时,因为神经网络前向传播的计算速度极快,能很快地实现输入状态和控制输入之间端到端的解算,控制的实时性能得到保障。在2016年和2017年,AlphaGo使用DRL算法连续两年击败围棋世界冠军,引起了社会轰动。目前, DRL算法发展迅速,对于提高机器人的自主性和智能性具有十分重要的意义。本文旨在研究一种DRL算法来解决AUV的深度控制问题。 由于 AUV 是一个连续时间系统,其控制行为有无限种选择,而经典的强化学习(reinforcement learning,RL)算法主要针对状态或控制空间有限的离散情况,因此,无法直接控制 AUV 运动。为了解决这个问题,Silver D等人提出确定性策略梯度(deterministic policy gradient,DPG)算法,解决了在随机策略梯度下具有大动作空间的智能体采样数多的问题,使得通过RL算法控制连续时间系统成为可能。在2016年国际学习表征会议(ICLR)上,Lillicrap T P等人将深度神经网络与DPG结合,提出了深度确定性策略梯度(deep deterministic policy gradient,DDPG),并将其应用于简单的连续系统控制。而苏黎世 ETH 机器人实验室成功地将DRL算法应用于腿部机器人的运动控制。 AUV在执行任务时,一般要求在固定的深度保持稳定的运动,因此深度控制是 AUV 的基本控制目标。本文的目的是探索一种更加先进的 AUV 深度控制方法,解决 AUV 模型的不确定性和非线性给控制带来的难题,并提高 AUV 的控制性能;仅依靠训练得到的与周围环境的交互数据,设计DRL算法,从而实现AUV的深度控制。
3.1 强化学习 强化学习是一种机器学习方法,主要解决序列决策的问题。强化学习的基本框架如图2所示,当智能体给出一个具体动作a t 时,环境更新智能体的状态s t ,同时给智能体返回奖励 r t 。这里,当t→∞时,定义智能体的累积奖励为:
其中,γ∈(0,1)为折扣因子,保证G是收敛的。
强化学习理论推导是在马尔可夫决策模型下进行的,如果一个系统满足马尔可夫性,则系统将来时刻状态只与当前时刻状态有关,与过去时刻状态无关。
马尔可夫决策过程是在马尔可夫过程中加入了决策部分,假设有智能体与环境从1到T时刻的交互序列:
定义随机策略函数 ,表示在状态s t 下智能体采用动作 a t 的概率。设系统模型为 ,表示在当前状态下采用动作 a t 到下一个状态的概率。其整个马尔可夫决策过程链为: 在该交互序列下,强化学习的目标是找到使回报最大的策略参数:
其优化目标为 。
其中,α为优化步长。
对优化目标求梯度:
将其化简为:
从式(9)可知,对策略进行优化是对策略进行梯度求解。其中,将式(9)后的半部分定义为强化学习状态值函数:
3.2 深度前馈神经网络
深度前馈神经网络是典型的深度学习模型。前馈神经网络定义了一个映射y=g(x;ς),通过学习的方法选择最佳参数ς,使得函数g(⋅)可以拟合函数y= f(x)。 深度前馈神经网络的结构如图3所示。第一部分是神经网络的输入层,中间的隐藏层通常有多层结构,最后一部分是输出层,用于输出函数值。与 是神经网络的参数,通过训练这些参数获得函数的近似值。这个典型的神经网络是一个线性模型,需要对其进行去线性化处理,以便更好地近似非线性函数。常见的去线性化方法是在每个神经元的输出端添加非线性函数,使神经网络变为非线性的,添加的函数被称为激活函数。深度学习中常用的激活函数包括ReLU函数、sigmoid函数和tanh函数。
深度前馈神经网络得到的近似函数g(⋅)的精确度可用损失函数L(g(x;ς),y)表示,其中,g(x;ς)为神经网络的估计值,y为真实值。损失函数表示估计值和真实值之间的差异。深度学习中损失函数通常为交叉熵或其他特定函数。选定损失函数后,需要通过最小化损失函数来优化参数ς:
求解优化问题时常用的一种深度学习算法是ADAM(adaptive moment estimation)算法,如下所示。
3.3 深度强化学习算法
在本文中,笔者利用actor-critic深度神经网络来实现强化学习算法,其中状态值函数与策略函数 分别用critic和actor神经网络进行估计。通过 critic 神经网络估计状态值函数 ,可以得到:
其中,ω为 critic 神经网络参数。通过式(12)可以得到:
为了求得状态值函数 在t时刻的最优估计,设计损失函数:
其中,Q′和π′为目标神经网络,其作用为稳定学习过程。目标神经网络参数θ′与ω′更新方式如下:
其中,τ的取值远小于 1,以保证目标神经网络的稳定性。 利用一组N个数据对 critic 神经网络进行训练,求得其平均损失函数为:
通过ADAM算法对式(18)的梯度进行计算,利用学习到的参数ω * 对状态值函数 进行 估计。 基于估计的状态值函数 对策略进行评估。 与随机策略梯度不同,在确定性策略梯度中,动作a t 在状态s t 确定时就确定了。利用 actor 神经网络对确定性策略 进行估计,将最优策略求解转化为对actor神经网络 参数θ的优化,以达到奖励函数最大化的目的,即
根据式(19)和式(20),可以得到优化目标:
该算法为离线迭代算法,通过 AUV 运动数据对其进行训练。利用一组N个数据对actor神经网络进行训练,利用蒙特卡洛方法对期望进行估计可以得到梯度:
最后,利用 ADAM 算法对梯度进行计算,得到最优参数θ * 。 当对critic和actor神经网络进行训练时,一般假设训练数据是独立不相关的。 但是机器人探索得到的数据是有相关性的,这会导致神经网络的训练效果不佳。 可以通过建立一个回放记忆单元解决这一问题,将机器人探索得到的数据存入回放记忆单元中,在训练时随机从回放记忆单元中提取一组数据,以打破数据的相关性。 DDPG算法如下。
利用 DRL 算法对 AUV 进行定深控制需要AUV 对环境进行探索学习。考虑到在真实环境中AUV获取大量数据的费用是昂贵的,因此利用式(1)中的AUV模型来获取训练数据。 定义为AUV在时刻t的状态; 为控制输入。对于RL算法来说,上述控制输入为当前时刻AUV的动作,即 。
定深控制的定义是通过控制输入将 AUV 保持在预定深度y d 运动。为了解决强化学习中的稀疏奖励和奖励延迟问题,根据 AUV 定深控制的运动特性设计了一个分段式的奖励函数。
其中, cy > 0、cθ > 0、cω > 0,均为常数。其目的是鼓励 AUV 下潜到预定深度,并防止其俯仰角过大。当 AUV到达预定深度yd 的一定范围内时,将奖励函数切换为:
其中, c r 是一个常数。其目的是鼓励 AUV 保持在该深度运行。综合上述分析,奖励函数为:
将设计的奖励函数代入算法 2 中,利用 critic神经网络估计状态值函数:
通过训练actor神经网络得到最优策略 。此外,为了让AUV在训练过程中更好地探索环境,在动作中加入了随机噪声,即:
其中,υ是Ornstein-Uhlenbeck随机噪声。 为了训练神经网络,将下一时刻系统状态、当前时刻状态 s t 、动作 a t 和奖励r t 组成一个元组 ,将其按时序存入状态缓冲区,并用于训练神经 网络。 基于深度强化学习的 AUV 定深控制系统如图4所示。 其中,用于估计状态值函数的critic神经网络的输入为 ,其输出为近似的状态 值函数 ,用于求解actor神经网络的损失函数。 而训练好的actor神经网络的输入为AUV当前时刻的状态 s t ,输出为定深控制动作。
在本节中,笔者用仿真实验验证算法的有效性。仿真平台为OpenAI Gym平台,利用第2节的AUV运动模型建立仿真模型,如 图5所示。
图5 OpenAI Gym仿真平台中的AUV深度控制模型
初始化奖励函数参数c y =1、c θ =4、c ω =2、c r =5 。通过 TensorFlow 搭建深度神经网络,其中critic神经网络由5个全连接层组成,隐藏层每层节点数为 32 个,除输出层外,在其他 4 层加入ReLU激活函数。actor神经网络由4个全连接层组成,隐藏层每层节点数为16个,除了输出层外,在其他3层加入ReLU激活函数,输出层使用tanh激活函数对输出进行[-1,1]的归一化。 在训练初期,AUV先进行自由探索,将数据存入回放记忆单元中。当回放记忆单元存满后,通过随机采样的方式抽取一组 64 个数据对神经网络进行训练。critic神经网络训练的学习率为0.001,actor神经网络的学习率为0.000 1。在对两个神经网络进行更新后,通过式(16)对目标神经网络进行更新,其中更新参数 t=0.001。最后,利用训练后的 actor神经网络与环境进行交互,将得到的数据用于更新数据集。在整个学习过程中重复上述步骤,直到奖励函数收敛。平均奖励值随训练幕数的变化如图6所示,由图6可知,在经过1 000幕的训练后,每一幕的平均奖励函数得到了收敛。AUV定深运动的轨迹如图7所示。
假设AUV的预定深度y d = -5 m,图6和图7显示,经过2 000幕的训练后,由actor神经网络控制AUV定深运动的轨迹。这表示经过训练的actor神经网络可以控制 AUV 高精度下潜到预定深度,并保持在预定深度运动。如图8所示,与另一种不需要模型信息的PID控制算法相比,DDPG算法有更高的控制精度。 本文将DRL算法应用于AUV的定深控制,不依赖于 AUV 的系统建模和控制律设计。通过设计合理的奖励函数引导 AUV 探索学习定深控制律。仿真实验证明了该方法的可行性,比起传统无模型PID控制算法,其具有更高的精度。在未来的研究中可以着重研究提高算法学习速率和学习效率的方法和向实际系统迁移的可能性。
作者简介 About authors
王日中(1995-),男,西北工业大学航海学院博士生,主要研究方向为多机器人协同、强化学习。 李慧平(1983-),男,博士,西北工业大学航海学院教授,博士生导师,主要研究方向为水下机器人导航定位、智能决策与优化控制、模型预测控制、多机器人协同。 崔迪(1995-),女,西北工业大学航海学院博士生,主要研究方向为事件触发控制、模型预测控制。 徐德民(1937-),男,中国工程院院士,西北工业大学航海学院教授,博士生导师,主要研究方向为水下航行器总体设计、导航制导与控制。
转载本文请联系原作者获取授权,同时请注明本文来自王晓科学网博客。 链接地址: https://blog.sciencenet.cn/blog-951291-1285621.html
上一篇:
[转载]基于深度强化学习的智能暖气温度控制系统 下一篇:
[转载]基于深度强化学习的六足机器人运动规划