尧图精选

蜂窝网资源分配中的深度强化学习:DQN算法原理与实现解析

🕒 发布时间:2026/9/18 2:26:40 📁 来源:尧图网络
简介这是一篇题为《基于深度强化学习的蜂窝网资源分配算法》的学术论文PDF面向通信网络、人工智能交叉领域的研究者与工程师重点解决蜂窝网资源分配中的多目标优化问题。论文提出利用深度神经网络优化传输速率将能量效率作为奖惩值借助Q-learning机制构建误差函数并通过梯度下降法训练网络权值内容覆盖深度强化学习原理、深度神经网络设计、Q-learning更新机制、梯度下降训练流程以及仿真实验完整呈现了从算法构思到性能对比的全过程。资源为单个PDF文档大小约1.09MB包含论文正文、中英文摘要、关键词和参考文献便于下载后直接引用或深入研读。目前已有315人学习浏览特别适合需要参考深度强化学习在无线资源管理中应用方案的读者可作为课题研究、课程设计或论文写作的支撑材料。1. 蜂窝网的资源分配卡在哪儿了无线网络里最不缺的就是“看似有解”的问题频谱、功率、用户接入随便拎一个出来都是约束优化可真放到高密集、动态化的场景里传统的博弈论和遗传算法就露怯了——要么假设基站预先知道全部信道状态信息要么求解复杂度高到没法实时跑。这篇论文把问题收敛成两个目标传输速率要上去能量效率也不能掉而这两个目标在数学上往往是互斥的。作者的思路是把多目标优化转成深度强化学习里的一个序贯决策问题用 DNN 做值网络用 Q-learning 做训练机制前向传输求速率最优反向训练用能量效率当奖惩值两个过程反复迭代直到收敛。对做无线通信算法或边缘计算调度的工程师来说这套“优化问题改造成 DRL 框架”的思路比具体调参更有参考价值。本文从系统模型、算法推导、仿真复现到排查建议完整拆一遍这篇论文的实现路径。2. 从多目标优化到 DQN系统模型与算法框架的推演2.1 OFDM 下行链路的干扰模型论文假设蜂窝网下行链路里有 M 个微基站、N 个授权用户每个小区内用 OFDM频率在小区内不复用、小区间完全重用。这意味着某个用户用频率 k 通信时不仅收到本基站的信号还收到其他所有基站里其他用户在频率 k 上的干扰。式(1)把这种干扰写成了累加形式$$ I_{m,n}^{k} \sum_{i1}^{M} \sum_{j1}^{N} L_{i,j} D_{i,j}^{k} p_{i,j}^{k} h_{i,n}^{k}, \quad i \ne m, j \ne n $$其中 $L_{i,j}$ 是用户 j 是否接入基站 i 的 0-1 变量$D_{i,j}^{k}$ 是基站 i 把频率 k 分给用户 j 的 0-1 变量$p_{i,j}^{k}$ 是对应发射功率$h_{i,n}^{k}$ 是基站 i 在频率 k 上对用户 n 的信道增益。这里有几个隐含假设值得注意所有基站和用户都是单天线系统是集中式控制中心节点只知道用户上报的位置、干扰和速率精确 CSI 是未知的。这跟实际 LTE/NR 系统里终端只反馈 CQI 的场景很像不是理想 CSI 假设。用户的信干噪比SINR可以写成$$ \gamma_{m,n}^{k} \frac{D_{m,n}^{k} p_{m,n}^{k} h_{m,n}^{k}}{I_{m,n}^{k} \sigma_{m,n}^{2}} $$系统总传输速率为$$ R \sum_{m1}^{M} \sum_{n1}^{N} \sum_{k1}^{K} L_{m,n} D_{m,n}^{k} B_{m,n}^{k} \log_2(1 \gamma_{m,n}^{k}) $$能量效率则定义成每焦耳能量能传多少比特$$ H \frac{R}{\sum_{m1}^{M} \sum_{n1}^{N} \sum_{k1}^{K} D_{m,n}^{k} p_{m,n}^{k}} $$注意这里的 $B_{m,n}^{k}$ 是带宽作者在式(3)里把它放进去了但后面的仿真参数里子信道带宽取的是 180 kHz这就是 LTE 的一个 PRB 带宽仿真时可以直接参考这个量级。2.2 为什么传统的拉格朗日乘子法不够用约束条件是每个基站的发射总功率不超过最大值$$ \sum_{n1}^{N} \sum_{k1}^{K} L_{m,n} D_{m,n}^{k} p_{m,n}^{k} \le P_{m}^{\max} $$优化目标是同时最大化 R 和 H。关键问题在 $D_{m,n}^{k}$ 是离散的 0-1 变量$p_{m,n}^{k}$ 是连续变量这种混合整数非线性规划MINLP在用户数和信道数上来之后就是 NP-hard。传统的增广拉格朗日乘子法需要先把问题松弛成连续优化再迭代求解但求出来的解只能算次优而且每次环境变化都要重新迭代实时性很差。作者对这个问题的处理方式是典型的“问题转换”思路不直接求解 MINLP而是把资源分配建模成一个马尔可夫决策过程MDP用 DQN 去学最优分配策略。这里有个细节值得留意虽然论文没有显式写出 MDP 的五元组但从算法流程可以还原出来——状态是用户接入信息 $L_{m,n}$ 和干扰信息 $I_{m,n}^{k}$动作是频率分配 $D_{m,n}^{k}$ 和功率分配 $p_{m,n}^{k}$奖励是能量效率 H转移由环境决定。折扣因子 $\gamma$ 则用来平衡“眼前收益”和“长期收益”这正好对应多目标优化里的权重调节。2.3 Q-learning 到 DQN 的误差函数推导Q-learning 的迭代更新式是$$ Q_{k1}(s_t, a_t) Q_k(s_t, a_t) \alpha_k \left[ r_t \gamma \max_{a \in \mathcal{A}} Q_k(s_{t1}, a) - Q_k(s_t, a_t) \right] $$当 Q 值逼近到 $Q_{k1}(s_t,a_t) \approx Q_k(s_t,a_t)$ 时括号里的 TD 误差趋近于零。因此论文把均方 TD 误差作为损失函数$$ E \mathbb{E}\left[ r_t \gamma \max_{a} Q(s_{t1}, a) - Q(s_t, a_t) \right]^2 $$然后用梯度下降法更新 DNN 的权重。这个损失函数是这篇论文的核心创新点之一因为它没有用标准的 cross-entropy 或 MSE而是直接用 TD 误差本身把“能量效率”这个物理量通过 $r_t$ 嵌进了损失函数。实际做 DQN 时如果用 PyTorch 实现损失函数一般写成loss F.mse_loss(q_values.gather(1, action_indices), target_values.detach())其中target_values就是 $r_t \gamma \max_{a} Q(s_{t1}, a)$detach()是为了防止梯度回传到 target 网络。论文里虽然没提 target network 和 experience replay但这属于工程实现层面的标准做法复现时建议加上否则训练稳定性会很差。3. 前向传输与反向训练DNN 构造和梯度更新的完整推导3.1 增广拉格朗日乘子法构造 DNN 数据流前向传输的核心是先构造一个“物理驱动的 DNN”。这里面的思路很巧妙不是凭空搭一个全连接网络而是把一个迭代算法的每一步展开成神经网络的一层。第一步把原始优化问题改写成等价的最小化形式$$ \min_{D_{m,n}^{k}, p_{m,n}^{k}} -R $$约束条件变成$$ P_{m}^{\max} - \sum_{n1}^{N} \sum_{k1}^{K} L_{m,n} D_{m,n}^{k} p_{m,n}^{k} \ge 0, \quad \forall m \in {1,2,\ldots,M} $$第二步构造增广拉格朗日函数$$ \phi(D_{m,n}^{k}, p_{m,n}^{k}, \mu_m, \eta) -R \sum_{m1}^{M} \mu_m \left[ P_{m}^{\max} - \sum_{n1}^{N} \sum_{k1}^{K} L_{m,n} D_{m,n}^{k} p_{m,n}^{k} \right] \frac{\eta}{2} \sum_{m1}^{M} \left[ \max\left(0, P_{m}^{\max} - \sum_{n1}^{N} \sum_{k1}^{K} L_{m,n} D_{m,n}^{k} p_{m,n}^{k} \right) \right]^2 $$其中 $\mu_m$ 是拉格朗日乘子$\eta$ 是惩罚因子。$\mu$ 和 $\eta$ 的含义要区分清楚$\mu_m$ 是每次迭代更新的对偶变量$\eta$ 是固定的惩罚系数控制约束违反的惩罚强度。$\eta$ 设太小会允许功率越界设太大会让优化问题变得病态工程上一般取 0.1 到 1.0 之间然后手工调。第三步是最关键的一步对 $D_{m,n}^{k}$ 和 $p_{m,n}^{k}$ 分别求偏导并令其为零得到迭代更新方程。论文直接给出了式(15)的闭式解我不完整抄那个长公式但可以分析一下结构$$ D_{m,n}^{k(l1)} \frac{h_{m,n}^{k}}{2\eta} \sqrt{\frac{\xi_{m,n}^{(l)} \xi_{m,n}^{(l)} \cdot \text{终端因子}}{(I_{m,n}^{k(l)} \sigma_{m,n}^{2}) \ln 2}} - \frac{I_{m,n}^{k(l)} \sigma_{m,n}^{2}}{h_{m,n}^{k}} $$$$ p_{m,n}^{k(l1)} \frac{1}{h_{m,n}^{k}} \left[ \frac{h_{m,n}^{k} D_{m,n}^{k}}{\sqrt{(I_{m,n}^{k} \sigma_{m,n}^{2}) \ln 2}} - (I_{m,n}^{k} \sigma_{m,n}^{2}) \right] $$注意 $D_{m,n}^{k}$ 的迭代式里出现了一个“终端因子”这是干扰项 $I_{m,n}^{k}$ 和信道增益 $h_{m,n}^{k}$ 的交互结果。这两个迭代式的存在意味着 $D$ 和 $p$ 不是独立更新的$D$ 依赖当前的 $p$$p$ 又依赖当前的 $D$所以必须交替迭代才能收敛。收敛判据是两个相邻迭代步之间的差异小于阈值$$ |D_{m,n}^{k(l1)} - D_{m,n}^{k(l)}| \theta_D, \quad |p_{m,n}^{k(l1)} - p_{m,n}^{k(l)}| \theta_p $$论文仿真里 $\theta_D \theta_p 0.01$迭代到第 6 层时就满足了。这个阈值不能设太紧否则 DNN 层数会暴涨也不建议大于 0.05因为精度不够会影响后续 Q 值的计算。拉格朗日乘子的迭代式是一个带 max 操作的投影$$ \mu_m^{(l1)} \max\left(0, \mu_m^{(l)} \eta \left( P_{m}^{\max} - \sum_{n1}^{N} \sum_{k1}^{K} L_{m,n} D_{m,n}^{k(l)} p_{m,n}^{k(l)} \right) \right) $$这个 max 操作是投影算子的离散模拟保证乘子非负和凸优化里对不等式约束的标准处理一致。整个迭代数据流可以写成$$ (L_{m,n}, I_{m,n}^{k}) \rightarrow D^{(1)} \rightarrow p^{(1)} \rightarrow \mu^{(1)} \rightarrow D^{(2)} \rightarrow p^{(2)} \rightarrow \mu^{(2)} \rightarrow \cdots $$3.2 DNN 架构频率分配层、功率分配层和乘子层把上面的迭代数据流“展开”成神经网络就得到了如图 3 所示的 DNN 结构。输入层是 $L_{m,n}$ 和 $I_{m,n}^{k}$输出层是频率分配方案和功率分配方案中间的隐藏层分为三类频率分配层完成 $D_{m,n}^{k}$ 的迭代更新激活函数是式(15)中 $D$ 的迭代函数功率分配层完成 $p_{m,n}^{k}$ 的迭代更新激活函数是式(15)中 $p$ 的迭代函数乘子层完成 $\mu_m$ 的迭代更新激活函数是式(16)的投影函数每一层对应一次迭代所以 DNN 的深度等于迭代次数。论文仿真中 DNN 深度 6 就满足了 $\theta_D \theta_p 0.01$ 的收敛条件。这里有个重要的细节网络的“权重”不是自动学习出来的而是直接取信道增益 $h_{m,n}^{k}$ 和噪声 $\sigma_{m,n}^{2}$初始化时分别用瑞利分布和高斯白噪声。这与传统 DNN 的随机初始化完全不同本质上是把一个迭代算法“展开”成网络而不是让网络自己学特征。这种做法的好处是前向传播有物理意义每个神经元对应一个具体的资源分配计算缺点是可扩展性差网络结构必须跟着问题规模走。换个场景就得重新设计迭代公式。如果想动手复现简化版本用 TensorFlow 的话大致框架是import tensorflow as tf # 输入: 接入关系 L (M*N) 和干扰 I (M*N*K) L_input tf.keras.Input(shape(M * N,), nameaccess_indicator) I_input tf.keras.Input(shape(M * N * K,), nameinterference) # 频率分配层根据迭代公式计算 D D_layer tf.keras.layers.Dense( M * N * K, activationlambda x: compute_D_iteration(x), namefrequency_allocation_layer )(tf.concat([L_input, I_input], axis-1)) # 功率分配层依赖 D 的结果 p_layer tf.keras.layers.Dense( M * N * K, activationlambda x: compute_p_iteration(x), namepower_allocation_layer )(D_layer) # 乘子层投影操作 mu_layer tf.keras.layers.Dense( M, activationlambda x: tf.maximum(0, x), namemultiplier_layer )(p_layer) model tf.keras.Model(inputs[L_input, I_input], outputs[D_layer, p_layer]) model.compile(optimizertf.keras.optimizers.Adam(learning_rate0.001), lossmse)这里每一层的activation函数不是常规的 ReLU 或 sigmoid而是前面推导的迭代更新方程。实际做的时候不建议直接用Lambda层写很复杂的公式最好自定义层因为迭代公式里有循环依赖Lambda 层难以处理。3.3 反向训练能量效率作为奖惩值梯度下降更新权重前向传播输出的是当前时刻 t 的资源分配策略反向训练过程则要利用 Q-learning 来更新 DNN 的权值。具体步骤如下执行当前分配方案后观测系统能量效率 H将其作为奖惩值 $r_t$。这里要注意奖励不是标量化的 0/1而是浮点数形式的能量效率 $H_t$这要求 Q 网络的输出层设计成可以处理连续值。如果环境反馈的能量效率波动幅度大建议先做归一化否则训练容易震荡。将新的观测用户接入信息和干扰信息再次输入 DNN得到下一时刻的资源分配策略 $D_{m,n}^{k}$ 和 $p_{m,n}^{k}$。构建误差函数损失函数$$ E r_t \gamma \max_{a} Q(s_{t1}, a) - Q(s_t, a_t) $$这里的关键是折扣因子 $\gamma \in [0,1]$ 的含义当 $\gamma \to 0$ 时损失函数中当前时刻的 $Q(s_t,a_t)$ 趋近于 $r_t$也就是策略偏重于优化当前能量效率当 $\gamma \to 1$ 时当前收益和未来收益同等重要策略综合优化能量效率和传输速率这个设计相当于把多目标优化的权重选择问题转移成了折扣因子的调整问题非常巧妙。将损失函数值 E 与阈值 $\theta_E$ 比较。论文里 $\theta_E 0.001$如果 E 小于阈值就停止训练。如果 E 超阈值用反向传播计算梯度更新 DNN 的权值 $h_{m,n}^{k}$ 和 $\sigma_{m,n}^{2}$。权值更新公式是$$ h_{m,n}^{k(l)} \leftarrow h_{m,n}^{k(l)} - \lambda \frac{\partial E}{\partial h_{m,n}^{k}}, \quad \sigma_{m,n}^{2(l)} \leftarrow \sigma_{m,n}^{2(l)} - \lambda \frac{\partial E}{\partial \sigma_{m,n}^{2}} $$其中 $\lambda$ 是学习速率。梯度计算背后的链式法则如下$$ \frac{\partial E}{\partial h_{m,n}^{k(l)}} \frac{\partial E}{\partial p_{m,n}^{k(l)}} \cdot \frac{\partial p_{m,n}^{k(l)}}{\partial h_{m,n}^{k(l)}} \frac{\partial E}{\partial D_{m,n}^{k(l)}} \cdot \frac{\partial D_{m,n}^{k(l)}}{\partial h_{m,n}^{k(l)}} $$这意味着梯度既通过功率分配路径传播也通过频率分配路径回传两路梯度在信道增益处汇合。这也是为什么论文要单独给出式(19)和式(20)的原因——它们说明了梯度是如何从误差函数逐步反传到信道增益和噪声功率上的。4. 仿真复现与收敛性分析4.1 仿真场景和参数论文的仿真场景是3 个微基站小区半径 200 m最大发射功率 38 dBm载波频率 2.0 GHz子信道带宽 180 kHz可用信道数 0 到 8 个移动用户 10 个。所有用户随机分布在小区内用蒙特卡洛方法重复 1000 次取平均。我在复现这种仿真时一般用 Python 搭环境。核心环境代码框架如下import numpy as np class CellularEnv: def __init__(self, M3, N10, K8, P_max10**3.8, bandwidth180e3): self.M M # 微基站数 self.N N # 用户数 self.K K # 子信道数 self.P_max P_max # 最大发射功率 (mW) self.bandwidth bandwidth # 子信道带宽 (Hz) def reset(self): # 随机生成信道增益 (瑞利分布) 和噪声 (高斯白噪声) self.h np.random.rayleigh(scale1.0, size(self.M, self.N, self.K)) self.noise np.random.normal(0, 1, size(self.N, self.K)) self.L np.random.randint(0, 2, size(self.M, self.N)) self.D np.random.randint(0, 2, size(self.M, self.N, self.K)) self.p np.random.uniform(0, self.P_max / self.N / self.K, size(self.M, self.N, self.K)) return self._get_state() def _compute_interference(self, m, n, k): # 计算用户 n 在基站 m 的频率 k 上受到的干扰 interference 0 for i in range(self.M): if i m: continue for j in range(self.N): if j n: continue interference self.L[i, j] * self.D[i, j, k] * self.p[i, j, k] * self.h[i, n, k] return interference def step(self, action_D, action_p): # 执行资源分配计算传输速率和能量效率 rate 0 power_total 0 for m in range(self.M): for n in range(self.N): for k in range(self.K): signal self.D[m, n, k] * self.p[m, n, k] * self.h[m, n, k] interference self._compute_interference(m, n, k) sinr signal / (interference self.noise[n, k]) rate self.bandwidth * np.log2(1 sinr) power_total self.p[m, n, k] energy_efficiency rate / power_total # 奖励就是能量效率 return energy_efficiency, rate这个环境代码有几个关键点值得注意信道增益用瑞利分布是因为论文就是这么初始化的这是平坦衰落信道最常用的建模方式干扰计算必须排除 $im$ 和 $jn$ 的情况即本基站本用户不在干扰累加里这是式(1)里 $i\ne m, j\ne n$ 的直接翻译能量效率是速率除以总功率单位是 bit/J。4.2 折扣因子 γ 对分配策略的影响论文的一个核心结论是$\gamma$ 从 0 到 1 变化时资源分配策略从“偏重能量效率”平滑过渡到“偏重传输速率”。这个结论直接对应图 4 的仿真结果当 $\gamma0$ 时能量效率最高而传输速率最低$\gamma1$ 时反之。这表明 $\gamma$ 不只是一个强化学习里的标准超参数而是直接充当了多目标优化的帕累托权重调节旋钮。工程上如果运营商的需求是覆盖优先比如偏远地区可以把 $\gamma$ 设在 0.2 到 0.4 之间如果吞吐量优先比如热点区域$\gamma$ 设在 0.8 以上。这个机制比传统加权和法 $\alpha R (1-\alpha)H$ 更优雅因为 $\gamma$ 的作用不是直接加权而是通过影响 Q 值的长期累积来间接调节。代码层面这个调节体现在损失函数计算里def compute_loss(q_values, target_q_values, rewards, gamma): # gamma 控制策略偏重程度 td_target rewards gamma * target_q_values loss np.mean((q_values - td_target) ** 2) return loss建议先固定 $\gamma$ 跑一组实验画出一条能量效率-传输速率的曲线再根据曲线拐点确定最优 $\gamma$ 区间。4.3 DNN 深度和反向训练次数论文仿真显示当阈值 $\theta_D \theta_p 0.01$ 时DNN 深度为 6 就满足收敛条件。这个结果很重要因为它说明迭代展开的 DNN 不需要很深就能收敛避免了深层网络的梯度消失问题。反向训练次数更少设定 $\theta_E 0.001$ 时反向训练 5 次就能让损失函数小于阈值。这意味着算法的总训练开销很小前向传播 6 层、反向传播 5 次就能得到一个可用的资源分配策略。这个收敛速度对实际系统意义重大因为蜂窝网的资源分配需要实时响应信道变化如果每次信道变化都要训练几百轮根本没法用。论文的算法结构决定了它的训练效率天然有优势损失函数是明确的 TD 误差梯度方向清晰不需要像通用 DRL 那样探索大量无效动作空间。5. 对比实验、排错指南和工程化落地5.1 三种算法对比随机分配、贪婪算法、论文算法论文把提出的 DRL 算法分别与随机分配算法、贪婪算法对比。用表格可以更清晰地展示不同 $\gamma$ 取值下算法性能算法传输速率能量效率说明随机分配低高功率随机分配能耗分散但速率无优化贪婪算法接近最优较低每步选最大速率动作不考虑能耗论文算法 (γ1)接近贪婪高于贪婪偏重速率但能量效率优于贪婪论文算法 (γ0)低于贪婪高于所有对比算法偏重能量效率速率有一定损失这个对比结果说明论文算法不只是在两个指标之间“折中”而是能在一个指标占优的同时另一个指标也不至于崩掉。这是因为 DNN 的前向传播本身就包含了速率优化反向训练只是用能量效率来修正权重两个过程是耦合的。5.2 复现时容易踩的五个坑第一个坑是干扰计算里的索引错误。式(1)的累加范围是 $i \ne m$ 且 $j \ne n$翻译成代码时很容易漏掉 $j \ne n$ 的条件导致算出来的干扰偏大SINR 偏低最终速率和能量效率全部失真。排查方法很简单随机设一个全零功率的场景干扰应该为 0如果不是说明索引逻辑有误。第二个坑是 D 的更新没有做连续化松弛。原始问题里 $D_{m,n}^{k}$ 是 0-1 变量但迭代公式算出来是连续值。论文没有讨论这一点就直接用了复现时要注意如果严格把 D 取整成 0 或 1迭代可能不收敛建议在训练阶段保持连续值推理阶段再二值化。第三个坑是奖励值没有归一化。能量效率的数值范围取决于发射功率的绝对值可能从几百到几万如果不做归一化直接作为 Q 网络的训练目标梯度会非常不稳定损失函数也难以收敛到 $\theta_E 0.001$。常见做法是用最大能量效率值做归一化reward_normalized energy_efficiency / max_energy_efficiency第四个坑是折扣因子的取值和策略偏重的对应关系。$\gamma$ 不是线性调节两个目标的权重而是通过影响 TD 目标中未来收益的占比来改变策略。$\gamma$ 在 [0.5, 0.8] 区间内变化时策略变化可能不如预期平滑调参时要先粗粒度扫描确定敏感区间再细粒度调优。第五个坑是收敛阈值和三者的联动。$\theta_D$、$\theta_p$ 控制前向传播的 DNN 深度$\theta_E$ 控制反向训练的迭代次数。三个阈值应该联动调节如果 DNN 深度太大试试放宽 $\theta_D$ 和 $\theta_p$ 到 0.05如果反向训练次数爆炸适当放宽 $\theta_E$ 到 0.005。硬编码成固定值会让不同随机种子下的训练轮数差异很大。5.3 从论文到工程落地论文的算法虽然发表在 2019 年但其“迭代展开 强化学习微调”的架构在 5G 和边缘计算场景里依然有实用价值。几个具体的改造建议一是用 experience replay 提升数据效率。论文原版算法是每个时间步直接用当前转移更新权重样本利用率低。加上经验回放池后每次采样一个小批量更新训练稳定性会明显改善。二是用 target network 缓解 Q 值过估计。DDQN 的标准做法每隔若干步同步一次 target 网络参数可以避免价值估计偏大导致的策略退化。三是考虑多智能体扩展。论文假设集中式控制这在单小区或小规模场景可以但面对多小区大规模场景集中式 DNN 的输入维度会爆炸。改成多智能体 DQN比如每个基站一个智能体共享一个小型网络是更现实的路线。四是把 DNN 的权值更新从手工推导的链式法则改成自动微分。论文里式(19)到式(21)的手工梯度推导在实现上很容易出错用 PyTorch 或 TensorFlow 的自动微分可以省去这部分工作同时还能灵活调整网络结构。代价是前向传播的计算效率会比手工优化的迭代公式低一些但换来的是开发效率和可维护性。五是探索更优的 Q 网络结构。论文用迭代展开的办法构造了物理驱动的 DNN优点是收敛快缺点是可解释的中间层变量和具体问题强绑定。在工程上可以换成 CNN 或 Transformer 提取干扰图特征但要注意模型容量增加后过拟合和训练不稳定的问题也会随之而来需要更多的仿真数据支撑。最后提一个实际部署的细节论文算法的推理阶段只需要一次前向传播就能得到资源分配方案这比传统方法里反复迭代求最优解要快得多。如果目标是降低调度时延可以在基站侧放一个轻量级推理引擎把训练好的 DNN 权值导出成 ONNX 格式用 TensorRT 加速在边缘服务器上完成毫秒级分配决策再下发给基站执行。本文还有配套的精品资源点击获取
上一篇/下一篇内容由系统自动关联 返回资讯列表 →