自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(287)
  • 收藏
  • 关注

原创 PyTorch 动态计算图构建的理解

在PyTorch中,计算图是在运行时动态构建的,这意味着在每次前向传播时,都会根据当前的操作创建一个新的计算图。总的来说,PyTorch的计算图是动态构建的,它会在你执行操作时自动记录计算历史。这使得PyTorch的代码更加直观和易于调试,因为你不需要事先定义计算图的结构。在这个过程中,PyTorch会自动地为我们构建一个计算图。进行反向传播时,PyTorch会利用这个计算图来计算梯度。在这个例子中,我们首先创建了一个形状为(2, 2)的张量。进行了一系列的操作,最后计算了结果的均值。以便跟踪其计算历史。

2024-04-25 08:14:42 115

原创 python 命名元组

命名元组在需要表示固定结构的数据时非常有用,例如表示一个点的坐标、一个日期(年、月、日)或者一个人的(姓名、年龄、性别)等。它们比普通的元组更加易读,同时又比定义一个完整的类要轻便。命名元组(NamedTuple)允许你创建一个元组,其中的元素可以通过名称(而不仅仅是索引)来访问。这是通过继承自Python标准库中的。使用命名元组,可以给元组中的每个位置赋予一个名字,并通过这个名字来访问或者引用元组中的元素。我们可以像访问对象的属性一样,通过。来访问元组中的元素。

2024-04-22 13:40:59 196

原创 PyTorch中to(self.device)在哪一阶段使用

在模型初始化后立即使用,并且在每次处理数据批次之前也要使用,以移动模型、输入数据和目标标签到想要使用的设备上。这样可以确保所有的计算都在同一设备上进行,避免出现设备不一致导致的错误。在初始化模型之后,应该立即将模型发送到指定的设备。这样可以确保模型的参数和缓存都在正确的设备上。这一步通常在主训练循环开始之前完成。在每次将数据送入模型进行前向传播之前,也需要将数据移动到相同的设备上。这通常发生在训练循环或评估循环内部。

2024-04-21 16:55:05 137

原创 【无聊问题之】transformer模型的encoder是对embedding的特征提取吗

通过这些层的堆叠处理,Transformer的encoder能够逐步提取输入序列的深层次特征,这些特征对于后续的解码过程(在Transformer的decoder中)或者对于其他基于Transformer的模型(如BERT、GPT等)进行各种NLP任务(如文本分类、问答、文本生成等)都是至关重要的。这两个子层之间都使用了残差连接和层归一化。在处理文字序列时,Transformer的encoder可以看作是一种在序列数据上进行的“卷积”,只不过它使用的是自注意力机制而不是卷积核来捕捉特征。

2024-04-21 08:42:14 457

原创 PyTorch nn.Embedding层的理解

的主要作用是将整数索引(通常代表词汇表中的单词或标记)转换为固定大小的向量,这些向量称为嵌入向量(embedding vectors)。在自然语言处理(NLP)任务中,这种嵌入层被广泛用于将文本数据转换为模型可以处理的数值形式。

2024-04-20 21:55:45 603

原创 Byte Pair Encoding (BPE) 算法的核心实现

BPE算法的关键在于它通过迭代地合并最频繁的字符对来构建一个新的、更有效的词汇表。这种方法能够有效地处理不在初始词汇表中的词(OOV词),因为它可以动态地创建新的词汇单元来表示这些未知词。同时,BPE还可以帮助减少词汇表的大小,提高模型的泛化能力,并有助于处理形态丰富的语言。

2024-04-20 20:51:16 864

原创 GPT-2 BPE分词中的encoder.json和vocab.bpe

通过分词、构建词汇表和编码映射等步骤紧密合作,将原始文本转换成GPT-2模型可以处理的数字形式。这两个文件在GPT-2模型中起着重要作用,它们之间紧密合作以实现文本的有效编码。

2024-04-20 19:15:33 120

原创 【无聊问题之】token和attention score的对应关系

即每个token都会有4个注意力分数,分别对应于其他4个token。这样,每个token都会根据这些注意力分数来加权其他token的值向量(Value),从而得到该token的上下文表示。这些分数用于加权求和所有token的值向量,从而得到当前token的上下文表示。这是Transformer模型中Self-Attention机制的核心部分。如果输入共有5个token,那么对于任意一个token来说,它会有与其他4个token相对应的4个注意力分数。

2024-04-19 08:56:23 598

原创 【无聊问题之】为什么transformer中query和key的相似度用点积来计算

点积作为一种基本的数学运算,可以很容易地扩展到高维空间,并且可以与深度学习模型的其他部分无缝集成。此外,点积还可以与其他操作(如缩放因子、softmax函数等)结合使用,以产生更加复杂和精细的注意力权重。:在注意力机制中,我们通常希望相似度度量是无偏的,即不受向量长度或模长的影响。虽然点积本身对向量的长度敏感,但可以通过缩放因子(如除以维度的平方根)来调整,以减少这种敏感性。:在深度学习框架中,点积操作通常都有高效的实现,并且可以很容易地进行反向传播和优化。:点积能够捕捉向量之间的线性关系。

2024-04-19 07:53:11 120

原创 【无聊问题之】激活函数的“饱和”是什么

对于ELU函数来说,在负输入区域,随着输入值的减小,ELU 的输出将趋近于一个固定的负值(通常是 -α,其中 α 是一个超参数),而不会继续无限下降。这种饱和特性有助于减少神经元在负输入区域的过度激活,并且可以使得网络的输出更加稳定。在 x ≤ 0 的区域,随着 x 的减小,exp(x) 的值会迅速趋向于 0,从而使得 ELU(x) 趋向于 -α。在神经网络中,当一个激活函数在某个输入区域内达到其最大值或最小值,并且对输入的进一步增加或减少不再敏感时,我们就称该函数在这个区域内是"饱和"的。

2024-04-16 09:00:11 222

原创 卷积神经网络(CNN)中的通道和维度是什么关系

在卷积层中,每个卷积核会生成一个新的特征映射,这些特征映射作为输出特征图的通道。:如果每个卷积核的输出特征图的大小仍然是 256x256(这取决于卷积核的步长、填充等参数),那么输出的维度将是 (256, 256, 16)。通过这个例子,我们可以看到通道和维度之间的关系:通道是特征图深度方向的组成部分,表示不同的特征映射;简单来说,通道是特征图深度方向的组成部分,而维度则包括了特征图的高度、宽度和深度(通道)。这里的 256x256 是图像的高度和宽度,而 3 是图像的通道数,也即特征图的深度。

2024-04-15 23:13:53 291

原创 张量与一个具体数据样本之间的关系

因此,虽然张量本身并不直接规定哪些特征需要表征,但它提供了一种有效的数据结构来组织和表示这些特征,使得模型能够更好地学习和理解数据的内在规律和模式。在选择特征时,需要根据具体问题和数据特性来做出决策,以确保模型能够捕捉到对任务有用的信息。在深度学习和机器学习中,特征选择是一个重要的步骤,它涉及到决定哪些信息对于模型的学习是重要的。这些特征可以是原始的输入数据(如图像的像素值),也可以是经过某种变换或提取得到的高级特征(如边缘检测、纹理特征等)。在实际应用中,选择哪些特征来表征数据取决于具体的问题和任务。

2024-04-15 00:12:09 300

原创 张量的“维“如何理解

张量在机器学习中的应用非常广泛,可以灵活地表示和处理各种类型的多维数据。通过合理地构建张量数据结构,我们可以有效地提取数据的内在特征,并应用于各种实际问题的求解中。张量的“维”可以从两个方面来理解:一是张量的阶数(order),即张量的维度数量;二是每个维度的大小,即每个轴上的元素数量。

2024-04-14 23:49:04 361

原创 对单个数据样本使用 unsqueeze(0)转换为batch的理解

这样做的好处是,你不需要修改模型来适应单个样本的输入。模型可以保持不变,继续以批处理的方式工作,即使这个批只包含一个样本。这在测试和推理阶段特别有用,因为你可能需要对单个样本进行预测,而不是一个完整的批。转换成batch时,我们实际上是在为这个样本增加一个额外的维度,以模拟批处理的形式。现在,这个"伪批"可以直接输入到模型中,因为形状已经匹配了模型的期望输入形状。"batch"指的是一批数据样本,这些样本被同时输入到模型中进行训练或推理。的批数据,那么单个样本将无法直接输入到模型中,因为它的形状不匹配。

2024-04-14 10:52:12 191

原创 卷积神经网络参数:filters 和 kernel_size

filters。

2024-04-13 20:33:56 224

原创 MCTS——管中窥豹之管

通过这种方式,MCTS不仅提升了神经网络的决策能力,还帮助神经网络更好地学习和理解游戏的复杂性和长期策略。在每次自我对弈结束后,神经网络会根据MCTS提供的搜索概率和游戏结果来更新其参数,从而使其在未来的决策中更加准确和高效。这样,MCTS能够为神经网络提供一个更长远、更全面的视角,帮助神经网络看到超出其当前视野的“未来”。通过这个“管子”,神经网络能够“窥视”到未来可能的游戏状态,并根据这些状态来调整其当前的认知和决策。的工具,它让神经网络能够“看到”并理解更多关于游戏状态和未来可能性的信息。

2024-04-13 08:31:36 128

原创 棋盘游戏的卷积神经网络表示:[batch_size, channels, board_height, board_width]

这种数据格式非常适合用卷积神经网络处理,因为CNN能够有效地处理这种具有空间结构的数据,并从中提取有用的特征。在深度学习,特别是在卷积神经网络(CNN)的上下文中,这种张量形状是非常常见的。

2024-04-12 08:13:04 313

原创 Python 函数参数前的**起什么作用(**kwargs)

*kwargs表示可以接受任意数量的关键字参数,并将它们存储在一个字典中。kwargs是一个约定俗成的命名,但也可以使用其他名称,关键是前面的**。

2024-04-11 17:31:50 204

原创 蒙特卡洛树搜索(MCTS)中的扩展(Expansion)和模拟(Simulation)

在蒙特卡洛树搜索(MCTS)中,扩展(Expansion)和模拟(Simulation)都涉及到在搜索树中添加新的节点或状态,但目的和方法有所不同。扩展确定了哪些未来状态值得考虑,而模拟则提供了对这些状态价值的估计。两者共同作用,使得MCTS能够在复杂的搜索空间中找到有希望的行动路径。总结一下,扩展是增加搜索树结构的过程,而模拟是对新增或已有节点进行评估的过程。评估新添加的子节点(或已有但未评估的节点)的潜在价值。扩展仅仅是增加了树的结构,为后续的模拟步骤做准备。

2024-04-10 21:41:12 430

原创 理解强化学习中的 returns (回报)和 rew (奖励)

形状相同的数组,用于存储每个时间步的回报(return)。这里的回报是指从当前时间步开始到序列结束时的所有奖励的总和,但未来的奖励会被打折(discounted)。即从第一个时间步开始,考虑到未来的折扣奖励,总的累积奖励是8.146。在强化学习中,通常我们会经历一系列的状态-动作对,并在每个时间步接收到一个奖励。是一个小于1的数值,通常接近1(例如0.99),它用于减少未来奖励的影响。关心的不仅仅是即时的奖励,而是长期的累积奖励。,因为没有未来的奖励了。和打折后的下一个时间步的。和打折后的下一个时间步的。

2024-04-09 22:56:03 610

原创 强化学习中rollouts和episodes的区别

Episodes是智能体与环境之间一次完整的交互过程。Rollouts是在训练过程中,智能体根据当前策略进行的一系列模拟交互步骤,用于收集数据和评估策略。一个rollout可以包含一个或多个episodes的数据。

2024-04-09 20:37:04 209

原创 np.argmax()和np.max()的区别

给出的是最大值在数组中的位置(索引)。给出的是数组中的最大值本身,而。

2024-04-08 23:40:23 111 1

原创 目标网络的评估模式:target_dqn.eval()

如果在进行模型评估或测试时没有将模型设置为评估模式,那么由于Dropout层或BatchNormalization层的行为差异,可能会得到不一致或不可预测的结果。但在评估模式下,Dropout层不会丢弃任何元素,而是会对所有元素进行缩放,以确保输出的总和与训练模式下相同(在统计意义上)。是一个重要的函数调用,它涉及到模型的两种模式:训练模式(train mode)和评估模式(evaluation mode,或者称为推理模式 inference mode)。的作用是将目标DQN网络设置为评估模式。

2024-04-08 23:13:39 163

原创 【无聊问题之】DQN算法为什么要使用两个网络(主网络和目标网络)

在强化学习中,特别是在使用Q-learning或深度Q网络(DQN)算法时,经常会遇到两个网络:一个是主网络(通常称为。总结来说,使用两个网络(主网络和目标网络)是DQN算法中的一个关键技巧,它有助于减少学习过程中的不稳定性。有助于减少目标Q值(即预期的回报)与当前Q值(即实际的回报)之间的相关性,从而减少了学习过程中的波动性。目标网络的权重是定期从主网络复制的,但更新的频率远低于主网络。这两个网络的结构是相同的,但它们的权重是不同步更新的。则用于估计未来状态的Q值,从而指导主网络的更新。

2024-04-08 21:45:45 394

原创 PyTorch autograd库: 基于反向模式的自动微分

需要计算梯度时,autograd库会沿着这个计算图反向传播,从输出开始,逐步计算每个中间变量的梯度,直到达到我们关心的变量(如模型的参数)。这个过程就是反向传播,它会根据计算图反向地计算每个tensor的梯度,并将结果存储在tensor的。时,autograd就会开始追踪该tensor上的所有操作。这意味着,除非明确指定,否则PyTorch不会追踪这个tensor上的操作以用于后续的梯度计算。如果想让PyTorch追踪这个tensor上的操作以计算梯度,需要在创建tensor时将。在PyTorch中,

2024-04-08 21:36:51 308

原创 交叉熵、KL散度和熵

在分类任务中,尤其是针对离散随机变量,给定真实分布 𝑃(𝑥) 和预测分布 𝑄(𝑥),交叉熵通常用于衡量预测分布 𝑄 描述真实分布 𝑃 的不准确性。这意味着交叉熵实际上是KL散度和熵的组合,其中熵 𝐻(𝑃) 是常数(对于固定的真实分布 𝑃 而言),因此当我们最小化交叉熵时,实际上也在间接最小化KL散度。KL散度是用来量化分布 𝑃 相对于分布 𝑄 的非对称性差异的一个度量。如果 𝑃 是实际观测的数据分布(即真实标签),而 𝑄 是模型预测的概率分布,则交叉熵是一个损失函数,我们通常试图最小化这个值。

2024-04-06 18:08:14 292

原创 prev_advantage、prev_value和prev_return的区别

这三个变量都在计算GAE过程中起着关键作用,且它们相互关联,共同服务于优化策略的目的。特别是在计算优势函数时,

2024-04-05 19:22:09 238

原创 概率密度函数(Probability Density Function, PDF)

在一个实数区间上,概率密度函数 𝑓(𝑥) 表示随机变量在某一点 𝑥 取得值的概率密度,而非具体的概率值。对于连续随机变量,不存在具体的概率值对应某一固定点,而是在区间上累积的概率密度才有实际意义。在计算涉及多个概率密度函数的连乘或连加时,使用对数概率密度函数(Log Probability Density Function, Log PDF)可以避免浮点数下溢或下精度丢失的问题。在强化学习中,智能体在环境中的行为策略可以用概率密度函数来表示,通过最大化期望累积奖励来更新策略。对于正态分布 𝑁(𝜇,

2024-04-05 17:14:52 275

原创 Python常用内置装饰器

getter、setter和deleter。相当于在类的命名空间中的普通函数。

2024-04-05 11:21:47 146

原创 numpy.linalg.norm 函数计算范数

函数是NumPy库中的一个函数,用于计算各种范数(Norm)或其他类型的矢量/矩阵量度。在处理多维数组时,这个函数可以用来计算向量的长度或者矩阵的某种“大小”。在进行行归一化时,我们通常会对权重矩阵沿行方向计算 L2 范数,这样可以得到每行的长度,随后通过除以这些长度完成归一化。同时,为了避免除以零的情况,在实际操作中可能会添加一个小于 1 的正值(如。参数可选,指定计算哪种范数,默认是 L2 范数,即向量元素绝对值平方和的平方根。,它会沿着指定轴分别计算各列或各行的范数。计算的是该向量的范数。

2024-04-05 09:05:45 297

原创 【无聊问题之】超参数“超”在哪里

在实际应用中,超参数的设置可能需要多次迭代和试验,以找到最佳的组合,从而获得最好的模型性能。因此,超参数之所以被称为“超”参数,是因为它们控制着模型的内部工作方式,而这些内部工作方式又决定了模型如何学习和适应数据,直接影响模型的训练过程和最终性能。在机器学习和深度学习中,超参数(Hyperparameter)是指那些需要在训练模型之前设置的参数,它们不会通过模型的训练过程进行优化。超参数的概念借鉴了这种超越性的概念,表示它们超越了模型内部的参数,对模型的性能和泛化能力有着决定性的影响。

2024-04-04 16:54:51 86

原创 HER(Hindsight Experience Replay) 伪代码理解

HER 算法的核心思想是,即使在没有达到原始目标的情况下,也可以从失败的经历中学习到如何实现其他可能的目标。通过将当前经历与不同目标关联起来,算法可以更有效地利用回放缓冲区中的数据,从而提高学习效率。HER 是一种用于目标条件强化学习的算法,它通过重用失败的经验来解决稀疏奖励问题。

2024-04-03 21:03:00 1326

原创 强化学习中的 transition 和 episode

(回合): 在强化学习的任务中,一个 episode 是智能体从某一初始状态开始,经过一系列的 transitions,直到达到某种终止条件为止的完整互动过程。在 episodic 任务中,每一个 episode 都是一个独立的任务实例,它可以是一个完整的游戏回合、机器人完成指定任务的过程或者是任何其他有明确开始和结束标志的情境。具体来说,它指的是在一个给定状态下,智能体采取一个动作,然后环境基于其内在规则反馈下一个状态以及相应的奖励。通常,一个 transition 可以形式化地表示为一个四元组。

2024-04-03 18:51:44 336

原创 MDP五元组成员介绍

MDP(Markov Decision Process,马尔可夫决策过程)五元组是用来完全描述一个马尔可夫决策过程的基本组成部分,它是一个形式化的数学模型,用于解决强化学习环境中的决策问题。

2024-04-03 17:39:38 199

原创 强化学习中的概率P和策略π

𝜋:策略𝜋是一个函数,它描述了在给定状态𝑠𝑡的情况下,代理(agent)选择某个动作𝑎𝑡的概率分布。在强化学习中,策略函数通常表示为𝜋𝜃(𝑎𝑡∣𝑠𝑡),其中𝜃表示策略函数的参数,这些参数可以通过训练来调整,以优化策略。在强化学习中,𝑃通常用于表示在给定状态𝑠𝑡的情况下,选择某个动作𝑎𝑡的概率,即𝑃[𝑎𝑡∣𝑠𝑡]。概率𝑃是一个数值,表示某个事件发生的可能性,而策略𝜋是一个函数,它描述了代理在给定状态下选择动作的概率分布。虽然概率𝑃和策略𝜋都与代理在给定状态下选择动作的可能性有关,但它们的含义和用途不同。

2024-04-02 21:48:01 167

原创 IMPALA示例代码和公式解释

它旨在克服传统强化学习算法在分布式计算环境下效率低下的问题,通过利用多个Actor并行地生成样本轨迹,并将这些轨迹汇总到一个中央的Learner进行学习和更新。IMPALA通过利用分布式计算资源和重要性加权的概念,有效地解决了大规模并行化训练强化学习模型时面临的挑战,提高了训练效率和性能。:由于并行生成的样本可能具有不同的重要性,IMPALA使用重要性加权的方法来确保对不同样本的梯度更新进行适当的加权,以确保训练的稳定性和效率。这有助于提高学习的效率和稳定性。

2024-04-02 17:06:53 301

原创 【无聊问题之】目标函数和损失函数,其实有点像?

非监督学习的目标函数通常是根据学习任务本身的特点来定义的,比如在聚类问题中,目标可能是使簇内相似性最大化、簇间相似性最小化,这时可以使用轮廓系数(Silhouette Coefficient)或凝聚度(Inertia)作为目标函数;在自编码器(Autoencoder)中,目标函数可能是重构损失,即重建输入数据的能力,这可以通过计算输入和解码后的输出之间的差异(如均方误差)来度量。例如,在分类问题中,常见的损失函数有交叉熵损失(Cross-Entropy Loss),在回归问题中,可能会使用均方误差(

2024-04-01 21:20:59 114

原创 倒三角符号 “∇“ :梯度算子(Gradient operator)

时,这里的倒三角 "∇" 表示的是关于参数θ的梯度,也就是策略函数 J 关于参数θ的偏导数向量,这表示了为了最大化目标函数 J,策略参数应该如何变化。在强化学习中,J(θ) 通常指的是期望累积奖励,策略梯度的目的就是通过更新策略参数来最大化这个期望累积奖励。在数学和物理学中,倒三角符号 "∇" 通常代表梯度算子(Gradient operator),表示对多元函数在各个坐标方向上的偏导数组成的向量。在策略梯度方法中,当我们写。

2024-04-01 18:58:26 285

原创 强化学习中估计策略梯度的常用采样方式:MC采样和TD采样

MC采样通过完整的Episode后进行更新,而TD学习在每个时间步都可以根据即时奖励和未来状态的估计值进行更新,因此TD学习通常比MC采样更新速度更快。

2024-04-01 18:20:39 834

原创 多头注意力中的多头如何实现(示例代码)

就代表了“头”的数量。这样就实现了对输入向量的多头分解。接下来,对于每个头,会独立地进行注意力计算,最后将所有“头”的注意力结果拼接起来,实现了“多头注意力”。这三个线性变换层将输入的键、查询、值向量进行。方法将投影后的向量 reshape 成。将输入向量投影到多个较小的子空间(头)在每个子空间内独立进行注意力计算。最后将所有子空间的注意力输出合并。的过程,这就是“多头注意力”。

2024-03-31 18:32:06 151

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除