\chapter{基于深度强化学习的跳波束算法研究} \section{引言} 对于多波束卫星,不同地区的覆盖会导致流量的空间分布不均匀,在某一个时间点量部分活跃的波束,提供服务的跳波束机制是有效应对空间流量分布不均匀的方法。传统的方法解决跳波束问题多采用优化或者元启发算法。这些方法的主要问题是随着波束数量的增加、解空间会极速上升。而跳波束决策是一种典型的动态环境序列决策问题,可以采用深度强化学习的方法进行建模。但是单智能体DRL方法在面对巨大的解空间时求解困难,容易出现维度灾难,面对流量需求和波束的公平性存在权衡的问题。如果将波束视为智能体进行多智能体深度强化学习,又容易陷入局部解的问题。本文提出了一种折中的方法,通过结合单智能体和多智能体的方法,提出了一种基于深度强化学习的跳波束算法。 \section{系统与问题建模} \subsection{场景描述} 本文考虑多波束卫星的下行链路,通过时分复用的形式,可以提供$K$个波束覆盖$N$个小区的用户($K P_{tot} \label{eq:pttt} \\ &\sum_k |B_t^k|B_{ch} \leq B_{tot} \label{eq:btot} \\ &\sum_k x_{n,k} = 1 \label{eq:xnkk} \\ \end{align} 在此优化问题中,优化的目标是最大化系统的总体和最小化系统的延时极差,其中$\beta$为权重系数,$\beta$反映了对吞吐量和公平性的取舍,$\beta$越大意味着优化越倾向于最大化吞吐量,反之意味着最小化延时差。$Th_{max}$和$\Delta_{max}$为系统的最大吞吐量和最大极差。约束条件\ref{eq:pttt}为系统的总发射功率约束,约束条件\ref{eq:btot}为系统的总带宽约束,约束条件\ref{eq:xnkk}为波束分配约束。 \section{基于深度强化学习的跳波束算法建模} 本节详细介绍本文提出的动态跳波束问题的解决方法。首先提出了多目标深度强化学习算法的体系结构,包含了算法中的一些考虑,随后给出了状态空间、动作空间、奖励函数等的处理。 \subsection{马尔可夫过程构建} \textbf{(1)状态空间} 本章讨论的多波束卫星场景下,状态主要可以表示为环境当前的数据需求,即 \begin{equation} s_t = {D_t} \label{eq:state_tt} \end{equation} \textbf{(2)动作空间设计} 动作空间由两部分组成,即小区的点亮矩阵与信道的分配模式。 \begin{equation} a_t = \{\mathbf{X_t}, \mathbf{B_t}\} \end{equation} \textbf{(3)奖励函数} 根据优化目标\ref{eq:target_p},算法的奖励函数可以写为 \begin{equation} r_t(s_t, a_t) = \beta \frac{Th_{tot}}{Th_{max}} - (1-\beta) \frac{\Delta}{\Delta_{max}} , \beta\in [0,1] \end{equation} \subsection{状态重构} 本章中描述业务量状况使用的是泊松分布的数据包到来的状况,由于泊松分布的特性,业务的到来是时间连续的行为,为了对$D_t$进行处理,需要对业务进行状态重构。假设每个数据包的大小是相等的,使用数据包的数量来代表小区的业务量请求,数据包请求可以表示为 \begin{equation} d_t^{i,j} = \sum \{\varphi_{m,t} | i \in [ \frac{T_{ttl}\cdot m}{M}, \frac{T_{ttl}\cdot(m+1)}{M})\} \label{eq:data_packet} \end{equation} 图\ref{fig:state_ch}描述了状态重构的结果。 \begin{figure} \begin{small} \begin{center} \includegraphics[width=0.95\textwidth]{chap/figures/state_change_1.png} \end{center} \caption{状态重构示意图} \label{fig:state_ch} \end{small} \end{figure} \subsection{动作决策与Q网络设计} \ref{sec:qwl}描述了深度Q学习中Q网络的基本结构。 在传统的基于动作价值函数的DRL方法中,根据网络输出的最大值Q输出单一的动作选择。但在本问题所示的跳波束场景下,波束不仅需要选择点亮的小区还需要选择点亮时的信道分配模式,而这两个问题所需要的动作空间是不同的。为了能够使用这个方法解决跳波束问题,本文提出了一种合作性多智能体强化学习方案,系统中有两个独立的智能体,在训练的过程中分别学习各自的策略、拥有独自的经验回访池,分别选择独立的动作,即点亮的波束与信道的分配模式,两个动作共同作用与环境进行交互从而得到共同的奖励函数$r$。 \begin{figure}[hbpt] \centering \includegraphics[width=\textwidth]{chap/figures/multidqn.png} \caption{多智能体强化学习框架} \label{fig:multiagent} \end{figure} 传统的DQN算法中,Q网络的输出是一系列Q值的数组,这种情况下,智能体可以选择最大的Q值对应的动作即($a_t = \arg \max Q(s,a;\theta)$)。通常而言这种值的输出是一维的数值,而在跳波束问题中,两个网络的输出都是一个具有$K$个分量的向量。在这种情况下,文献\parencite{hu2020dynamic}采用的方法是通过循环的方式,连续进行$K$次决策:每次选择一个小区后,将该小区的数据需求量暂时更新为0,重复$K$次,执行的动作是$K$个动作的并集,$\vec{a} = \{a_1,a_2,\cdots,a_K\}$。这样做的缺点是系统需要更长的时间进行决策、并且会导致难以收敛。而文献\parencite{lin2022dynamic}采取的方式是将每个分量再次拆解为单独的智能体,即将每个波束视为单独的智能体,这样做大大简化了问题的复杂度,但是会导致智能体之间的合作性降低,容易陷入局部最优解。为了应对以上的问题,本文提出了一种折中的方法,即每一个智能体的Q网络在输出层通过多头分叉的方式输出多组不同的Q值,既能充分利用全局的状态信息,又能在一定程度上降低系统的复杂度。在更新时,本文对每个动作分量分别计算网络的误差,通过总误差求平均值获得网络的误差函数: \begin{equation} L(\theta) = \frac{1}{K} \sum_k \mathrm{E}[(r_t + \gamma \max Q(s_{t+1}, a'_{t+1,k}; \theta') - Q(s_t, a_{t,k}; \theta))^2] \label{eq:Loss_eq} \end{equation} 本章提出的算法使用了四层的全连接神经网络,每个网络共享的输入层、三层共享的隐藏层,输出层为多头分叉的输出层。具体的参数如表\ref{tab:multihead}所示。 \begin{table}[hbpt] \begin{small} \caption{网络参数设置} \label{tab:multihead} \begin{center} \begin{tabular}{cccc} \toprule 层 & 输入 & 输出& 激活函数 \\ \midrule 输入层 & $N \cdot T_{ttl}$ & 128 & ReLU \\ 隐藏层1 & 128 & 128 & ReLU \\ 隐藏层2 & 128 & 128 & ReLU \\ 隐藏层3 & 128 & 128 & ReLU \\ 智能体1输出层 & $128 \times K$ & $K \times N$ & - \\ 智能体2输出层 & $128 \times K$ & $N \times \frac{M\times(M+1)}{2}$ & -\\ \bottomrule \end{tabular} \end{center} \end{small} \end{table} \begin{figure}[hbpt] \centering \includegraphics[width=0.85\textwidth]{chap/figures/mheads.png} \caption{多头Q网络示意图} \label{fig:multiq} \end{figure} \subsection{算法流程} \begin{breakablealgorithm} \caption{基于多智能体与多目标优化的深度强化学习跳波束算法} \label{algo:2} \begin{algorithmic}[1] \renewcommand{\algorithmicrequire}{\textbf{参数初始化}} \REQUIRE \STATE 初始化多波束卫星场景 \STATE 初始化业务到达参数 \STATE 初始化两个智能体Q网络参数$\theta$初始化,目标Q网络参数$\theta '$初始化,初始化经验回放池$D = \emptyset, N = N_e$ \STATE 初始化业务队列信息 \renewcommand{\algorithmicrequire}{\textbf{训练与优化过程}} \REQUIRE \FOR{episode $i \leftarrow 1,2,\dots, S$} \STATE 初始化状态$s_0$,并进行状态的重构 \FOR{timestep $t \leftarrow 1,2,\dots, T$} \STATE 不同小区的业务需求量进行更新,抛弃超时的数据包$\epsilon = \max (\epsilon\cdot\lambda, \epsilon_f)$ \STATE 观察环境,构建状态$s_t$ \FOR{智能体 $j$} \STATE 智能体利用$\epsilon - greedy$选择一个概率$p$ \IF{$p \le \epsilon$} \STATE 随机选择动作$a_{t,j} \in \mathcal{A}(s_t)$ \ELSE \STATE 选择$a_{t,j} = \arg \max Q(s_t, a; \theta)$ \ENDIF \ENDFOR \STATE 合并动作$a_t = {a_{t, j}|j=1,2}$ \STATE 执行$a_{t}$,更新环境的状态,计算吞吐量与延时,得到奖励$r_t$,观察下一个状态$s_{t+1}$ \STATE 处理$s_{t+1}$,将$\langle s_t, a_t, r_t, s_{t+1}\rangle$添加到经验回访池$D$中 \IF{经验存储池$D$中的数据量大于经验回放门限} \STATE 从$D$中随机抽取一组经验数据进行训练 \STATE 计算目标网络的预测值 \STATE 根据\ref{eq:Ltheta}计算损失函数$L(\theta)$,通过神经网络的反向传播进行训练 \ENDIF \IF{$t \mod G = 0$} \STATE 更新目标网络$\theta' \leftarrow \theta$ \ENDIF \ENDFOR \ENDFOR \STATE 输出参数$\theta$ \renewcommand{\algorithmicrequire}{\textbf{算法结束}} \REQUIRE \end{algorithmic} \end{breakablealgorithm} \section{仿真结果分析} \subsection{仿真参数设计} 本节仿真基于 python3.10环境,使用了单颗Ka波段卫星,主要参数如表\ref{tab:bhparam}所示,卫星场景仿真参数参考\parencite{lin2022dynamic},跳波束时隙参考\ref{etsi2005digital}。其中业务的请求量按照泊松分布产生,根据具体的吞吐量需求计算得到对应$\varphi$比特的数据包到达率$ \lambda$。 \begin{table}[hbpt] \centering \caption{卫星场景仿真参数表} \label{tab:bhparam} \begin{tabular}{cc} \toprule 参数 & 值\\ \midrule 卫星高度 & \SI{36000}{km} \\ 中心频率 & \SI{20}{GHz} \\ 路径损失 & \SI{209.6}{dB} \\ 小区数量$N$ & 19 \\ 波束数量$K$ & 4 \\ 信道数量$M$ & 4 \\ 系统带宽$B_{tot}$ & \SI{500}{MHz} \\ 波束发射功率$P_{beam}$ & \SI{27}{dBW} \\ 天线半波束角 & \SI{0.75}{\degree} \\ 天线的发射增益$G_T$ & \SI{40.3}{dBi} \\ 用户接收增益 $G_R$ & \SI{31.6}{dBi} \\ 最小时间间隔$t_{slot}$ & \SI{2}{ms} \\ 星上缓存容量$T_{ttl}$ & $40\times t_{slot}$\\ 小区业务需求量 & $U(\SI{50}{Mbps}, \SI{150}{Mbps})$ \\ 经验回访池容量 & 10000 \\ 经验回放门限 & 4000 \\ 每次回放经验数 & 256 \\ 学习率 & 0.00001 \\ 初始探索概率 & 1.0 \\ 最终探索概率 & 0.001 \\ 目标网络更新步长 & 200 \\ 训练轮次 & 15000 \\ \bottomrule \end{tabular} \end{table} \subsection{仿真结果分析} \subsubsection{收敛性分析} 根据此前的分析,在$\beta$取不同的值时会导致算法偏向不同的优化目标,$\beta$越大时,算法会更倾向于满足通信的需求,而$\beta$越小会更偏重于时延的公平性。 本节对于不同的$beta$取值,分别进行了训练,如图\ref{fig:rwbeta}所示。从图中可以看出,在不同的$\beta$的取值下,本算法对于奖励函数都最终趋于平稳的数值,反映出算法在不同偏好下都具有一定的收敛性。由图中的奖励函数信息可以分析出,在,在$beta$取值较小时(0-0.2),奖励函数收敛性相比其他更慢,这说明为了为了实现时延的公平性,需要进行更多的探索,而其他取值则在4000轮次开始逐渐稳定。图\ref{fig:smooth}反映了$\beta = 0.5 $时,时延的收敛情况。 \begin{figure}[hbpt] \centering \includegraphics[width=0.85\textwidth]{chap/figures/reward.png} \caption{不同$\beta$取值的奖励函数收敛性} \label{fig:rwbeta} \end{figure} \begin{figure}[hbpt] \centering \includegraphics[width=0.75\textwidth]{chap/figures/smooth.png} \caption{时延的收敛情况} \label{fig:smooth} \end{figure} \subsubsection{性能分析} \textbf{(1)不同$\beta$取值对系统性能的影响} 根据收敛性分析,本章所提出算法对于不同的$\beta$都具有一定的效果,但是不同的$\beta$对系统收敛性存在一定的影响。为了明确的说明算法的在不同取值下的性能,图\ref{fig:beta_delay}说明随着$\beta$的升高,时延的公平性逐渐变差,而系统总的吞吐量随之增加,这一结论与此前的讨论相同。 \begin{figure}[hbpt] \centering \begin{subfigure}{0.45\textwidth} \includegraphics[width=\textwidth]{chap/figures/delay.png} \caption{时延随着$\beta$的变化} \label{fig:subfigure1} \end{subfigure} \begin{subfigure}{0.45\textwidth} \includegraphics[width=\textwidth]{chap/figures/th.png} \caption{吞吐量随着$\beta$的变化} \label{fig:subfigure2} \end{subfigure} \caption{不同$\beta$取值下的系统性能} \label{fig:beta_delay} \end{figure} \textbf{(2)在不同吞吐量需求下的吞吐量表现} 为了比较本章算法与其他算法在不同业务需求量的情况下的表现情况,本节将本文算法与其他的方法进行了对比。本章对比的算法列表有: \begin{enumerate} \item 周期算法:本算法通过平均分配时分复用的方式进行跳波束的切换操作,在本次实验中,小区的数量为19个,共有4个波束,按照每5个时隙为周期,每个波束按照固定的顺序点亮特定的小区。同时为了提高系统的频谱效率并且抑制同频干扰,每个波束频率复用因子为2。 \item 随机算法:每个时隙随机选择点亮的波束,并且随机选择每个波束所需要的信道模式。 \item 贪心算法:每个时隙选择吞吐量需求最大的$K$个小区点亮,同样频谱复用因子为2。 \item 遗传算法\parencite{angeletti2006beam}:通过遗传算法这一启发式算法进行小区的点亮,在本次实现中种群数量选择为200,迭代次数为60次。 \end{enumerate} 在实验中,为了比较算法的长期表现,本文通过进行500次独立的实验,取平均值的操作进行。在每次实验中,通过控制小区不同的流量需求在\SI{50}{Mbps}到\SI{300}{Mbps}之间分布模拟流量需求的空间不均匀特性,通过控制流量的分布得到总的平均流量需求,每次实验包含200个决策时隙。图\ref{fig:allth}展示了不同算法在此场景下的比较结果,其中计算的吞吐量按照实际数据包数量计算,即如果卫星提供的吞吐量超过实际数据量,以实际数据为准。从实验结果不难看出,在较低的流量需求下如图低于\SI{2000}{Mbps}时,所有算法都能够基本满足用户的流量需求,在这种情况下所有波束的容量都要比流量需求大。而随着系统需求的增加,随机算法最早出现了瓶颈,周期算法、贪心算法则在\SI{2200}{Mbps}左右达到吞吐量的饱和值,这是由于频率复用方案所决定的。而本文算法与遗传算法则可以在保持 到流量需求为\SI{3000}{Mbps}。 \begin{figure}[hbpt] \centering \includegraphics[width=0.75\textwidth]{chap/figures/allth.png} \caption{吞吐量随需求变化图} \label{fig:allth} \end{figure} \textbf{(3)在不同吞吐量需求下的时延公平性的表现} 在时延的公平性上,与吞吐量情况不同,各种算法的表现具有较大的差(图\ref{fig:alldl})。随机算法在各种带宽需求上表现都比较差。周期算法在低业务需求时表现较好,随着业务需求的增加迅速升高。贪心算法总体表现较好,在业务需求区间内都保持着低于\SI{25}{ms}的水平。本文提出的算法总体上呈现出随着业务量增大而上升的状况,在中低业务需求的情况下,在保证时延的公平性上,具有较好的性能,在\SI{2300}{Mbps}的业务需求下,能够比贪心算法的公平性低25\%左右,而在较大吞吐量需求时,为了保证吞吐量,仍然能够控制时延公平性在\SI{30}{ms}以内的水平,考虑到本仿真中星上缓存为40个时隙,本算法在较高业务流量时仍然能够保证大部分业务的正常传输。遗传算法总体与本文提出的算法在时延公平性上表现接近。 \begin{figure}[hbpt] \centering \includegraphics[width=0.75\textwidth]{chap/figures/dlall.png} \caption{时延公平性随需求变化图} \label{fig:alldl} \end{figure} \subsubsection{复杂度分析} 本文使用的DQN算法每一层算法复杂度为 \begin{equation} \mathcal{O}(M_{in}\cdot M_{out}) \label{eq:OMM} \end{equation} 而在本文共使用了$L$层隐藏层全连接神经网络,输出层为分叉输出所以算法复杂度为式\ref{eq:allC},其中$M$为信道的数量: \begin{equation} \mathcal{O} (\sum^L M_{in}\cdot M_{out} + M_{L,out}K^2\cdot(M^2+N)) \label{eq:allC} \end{equation} 为了作为比较,表\ref{tab:complexity}给出本文使用到的其他方法的时间复杂度和仿真实验中决策的平均时间: \begin{table}[hbpt] \centering \caption{各算法的平均复杂度} \label{tab:complexity} \begin{tabular}{ccc} \toprule 算法名称 & 时间复杂度 & 平均决策用时 \\ \midrule 周期算法 & $\mathcal{O}(1)$&{3.75}$\mu$s\\ 随机算法 & $\mathcal{O}(1)$&{3.54}$\mu$s \\ 贪心算法 & $\mathcal{O}({NT_{ttl}+N\cdot\log_2NK})$ & 98.76$\mu$s\\ 本文算法 & $\mathcal{O} (\sum^L M_{in}\cdot M_{out} + M_{L,out}K^2\cdot(M^2+N)) $ & 1288$\mu$s \\ 遗传算法 & $\mathcal{O}({PG(Kk^3 + (K^2+NT_{ttl})k^2)})$ & \SI{311}{ms}\\ \bottomrule \end{tabular} \end{table} 经过之前的实验结果分析可以得知,在各种方法中,遗传算法和本文提出的算法在满足流量不均匀的情况时都能够表现较好,但是在实际的决策中,由于遗传算法每次决策初始化种群并计算适应性函数进行迭代,其算法复杂度非常高,反映到实际的决策时间上, 遗传算法相比其他算法是数量级的差异并不合适面对流量变化迅速的实时决策。而本文提出的算法在满足流量需求时表现很好,时延公平性方面相比随机等算法也有较大的提升,在实际决策上,决策时间平均在\SI{1}{ms}左右,仍然能够都满足最小的时隙要求,换句话说,本文提出的算法在表现上能够解决遗传算法等启发式算法,但在决策时间上只是遗传算法的$0.03\%$。 \subsection{本章小结} 本研究针对低轨卫星通信下行链路中的跳波束问题,提出了一种基于DQN算法 跳波束和信道联合分配算法。在深入分析序列决策问题的基础上,通过数学建模与状态空间的重构,本章设计了适用于此场景的资源分配策略,并详细阐述了DQN算法的原理及实现细节。通过仿真实验,验证了该算法在保持较低的算法时间复杂度的同时,保障了多波束卫星在面对空间流量不均匀场景下的性能表现。