深度强化学习求解虚拟网络映射设计与Java实现(三)

admin 2026-01-26 02:29:23 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详解深度强化学习核心超参数Gamma、Alpha及Epsilon在虚拟网络映射中的作用。Gamma权衡长期奖励,Alpha控制学习步长,Epsilon平衡探索与利用。结合论文公式与Java代码,阐明参数设置对模型收敛的影响及动态调整策略。 综合评分: 83 文章分类: AI安全,网络安全


cover_image

深度强化学习求解虚拟网络映射设计与Java实现(三)

原创

豆豆 豆豆

豆豆咨询

2026年1月24日 08:34 浙江

一、超参数介绍

1. γ (gamma) – 折扣因子 – gamma = 0.99

作用:

  • 未来奖励的折扣率,决定智能体对未来奖励的重视程度
  • 取值范围:0 ≤ gamma ≤ 1

详细解释:

  • gamma = 0.99:智能体高度关注未来奖励(长期规划)

  • 当前奖励权重:1.0

  • 1步后的奖励权重:0.99

  • 10步后的奖励权重:0.99¹⁰ ≈ 0.904

  • 100步后的奖励权重:0.99¹⁰⁰ ≈ 0.366

  • gamma = 0:智能体只关心即时奖励(贪婪策略)

  • gamma = 1:智能体平等对待所有未来奖励(无限视野)

    注意:未来奖励有一个初始值,然后不断地学习更新,是一个动态变化的值。

在论文中的应用:

在论文的公式(18)和(19)中,虽然没有直接出现gamma,但在计算长期收益(long-term revenue)时,隐含了对未来奖励的考量:

math

\mathcal{LR} = \lim_{T\to \infty}\frac{\sum_{i=1}^{|\mathrm{DGRs}|}\sum_{t=0}^{T}\mathcal{R}(G_i^\nu)}{T}
gamma控制着这个无限求和的有效范围。

2. α (learningRate) – 学习率 – learningRate = 0.001

作用:

  • 控制参数更新的步长
  • 决定每次梯度下降时参数变化的幅度

详细解释:

  • 学习率 = 0.001:较小但常用的值,适合稳定的训练

  • 太小(如0.00001):收敛过慢,需要大量训练时间

  • 太大(如0.1):可能导致振荡或不收敛

  • 自适应:可以使用Adam优化器自动调整

论文对应:

在论文的算法1和训练过程中,虽然没有明确指定学习率,但深度学习模型必然需要这个参数来更新网络权重。

    根据上述公式我们可以看到,如果学习率ηη较大,那么参数的更新速度就会很快,可以加快网络的收敛速度,但如果学习率过大,可能会导致参数在最优解附近震荡,代价函数难以收敛,甚至可能会错过最优解,导致参数向错误的方向更新,代价函数不仅不收敛反而可能爆炸(如图1a所示)。如果学习率ηη较小,网络可能不会错过最优点,但是网络学习速度会变慢。同时,如果学习率过小,则很可能会陷入局部最优点(如图1b所示)。因此,只有找到合适的学习率,才能保证代价函数以较快的速度逼近全局最优解。

3. ε (epsilon) – 探索率 – epsilon = 0.1

作用:

  • ε-greedy策略中的探索概率
  • 控制智能体在”利用已知知识”和”探索新策略”之间的平衡

详细解释:

  • epsilon = 0.1:10%的时间随机探索,90%的时间选择最优动作
  • 探索(Exploration):随机选择动作,发现新策略
  • 利用(Exploitation):选择当前认为最优的动作,最大化即时奖励

代码实现:

public int selectAction(INDArray probabilities, double epsilon) {

    if (random.nextDouble() < epsilon) {

        return random.nextInt(probabilities.size(1)); // 探索

    } else {

        return Nd4j.argMax(probabilities, 1).getInt(0); // 利用

    }

}

论文对应:

论文中提到softmax函数和温度参数来控制探索与利用的权衡(第13页),ε-greedy是另一种常用方法。

4. ε衰减率 (epsilonDecay) – epsilonDecay = 0.995

作用:

  • 每个训练回合后减少探索率的系数
  • 实现从”广泛探索”到”精细利用”的过渡

详细解释:

  • 每回合更新epsilon = epsilon * epsilonDecay

  • epsilonDecay = 0.995:每回合探索率减少0.5%

  • 初始探索率 = 0.1时的衰减过程:

  • 回合1:0.100

  • 回合100:0.100 × 0.995¹⁰⁰ ≈ 0.061

  • 回合200:≈ 0.037

  • 回合500:≈ 0.008

代码实现:

// 每回合后衰减

epsilon = Math.max(minEpsilon, epsilon * epsilonDecay);

作用:

  • 探索率的下限值
  • 确保训练后期仍保持少量探索,避免完全停止探索

详细解释:

  • minEpsilon = 0.01:即使训练了很多回合,仍有1%的概率进行随机探索
  • 防止过拟合:避免智能体陷入局部最优解
  • 适应环境变化:如果环境动态变化,需要持续探索

二、代码例子解释相关作用

// 针对论文中描述的IoT数据生成场景

private double gamma = 0.97;          // 中等长期规划

private double learningRate = 0.0005; // 较小学习率,稳定训练

private double epsilon = 0.15;        // 初期较多探索

private double epsilonDecay = 0.998;  // 缓慢衰减(2000回合训练)

private double minEpsilon = 0.02;     // 保持少量探索

public void trainEpisode() {

    // 训练前:epsilon = 0.10,较多探索

    for (int step = 0; step < maxSteps; step++) {

        // 1. ε-greedy选择动作(10%探索,90%利用)

        int action = agent.selectAction(probs, epsilon);

        // 2. 执行动作,获得奖励

        // 3. 学习更新(使用learningRate=0.001)

    }

    // 训练后:epsilon = 0.10 * 0.995 = 0.0995(轻微衰减)

}

三、总结表格


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:豆豆咨询 豆豆 豆豆《深度强化学习求解虚拟网络映射设计与Java实现(三)》

评论:0   参与:  0