20250217-POMO笔记
文章目录
- 前言
- 一、伪代码一:POMO Training
- 二、伪代码二:POMO Inference
- 三、POMO注意力模型
- 3.1、自注意力机制
- 3.2、AM模型
前言
以下主要讲解两个算法的伪代码以及注意力模型。
一、伪代码一:POMO Training
POMO Training是POMO模型训练的伪代码。具体如下:
该算法的输入信息包括训练集S,每个样本起始节点的个数N,训练步骤的数量T,批量大小B。
初始化策略网络的参数
θ
\theta
θ。
在训练循环中共进行T次训练。
从训练集S中采样输入数据
s
i
s_i
si其中i为批次数,批量大小为B。注:
s
i
s_i
si是一组数据。
在每一个样本
s
i
s_i
si中选择N个起始节点,使用策略网络依据样本
s
i
s_i
si所对应的每一个起始节点和样本数据
s
i
s_i
si生成共计N个轨迹。
计算每一个样本
s
i
s_i
si的平均奖励
b
i
b_i
bi,其就是N条轨迹奖励的平均值。
计算目标函数
J
(
θ
)
J(\theta)
J(θ)的梯度。再根据计算出的梯度更新策略网络的参数
θ
\theta
θ。
二、伪代码二:POMO Inference
该伪代码描述了如何使用已经训练好的策略网络进行推理。推理的目的是通过已训练的策略网络来选择最优的轨迹。具体如下:
算法输入为:输入数据s,策略
π
\pi
π,起始节点数N,和变换次数K。
将输入数据进行“augment”生成多个样本(常用的“augment”为,将节点坐标根据坐标轴进行对称反转),这里生成K个变种样本。
在每个样本中选取N个起始节点,对每个样本
s
k
s_k
sk和起始节点
α
k
j
\alpha^j_k
αkj进行贪婪轨迹生成,得到N个轨迹。
选取最大奖励的轨迹,其为输出的最佳轨迹。
三、POMO注意力模型
3.1、自注意力机制
自注意力机制的任务是通过计算每个输入元素之间的相似度来动态地调整其表示。对于每个元素(单词),通过查询(Query)、键(Key)和值(Value)来计算其与其他元素的关系,并生成一个加权的输出。
在编码器中,自注意力计算过程的步骤如下:
- 对于每个输入元素,计算其对应的查询(Query)、键(Key)和值(Value)向量。
- 计算查询和所有键的点积得到注意力分数,反映了每个元素对其他元素的关注程度。
- 使用Softmax对分数进行归一化,得到权重。
- 用这些权重加权每个值向量(Value),得到新的表示。
自注意力机制本质上是对值根据权重进行新的表示,这里的权重表达的含义是节点与节点之间的关系。
3.2、AM模型
POMO使用的注意力模型是AM模型。它主要由两部分组成:编码器和解码器。
AM模型中的编码器并不受POMO生成N条轨迹所影响。因为要生成N条轨迹所以解码器需要进行改动,将N个查询(queries)整合为一个单一的矩阵,将其传递给注意力机制进行并行处理。