Masutangu

也許我這一生 始終在追逐那顆九號球

【论文笔记】Attention Is All You Need

本文为论文 Attention Is All You Need 的笔记。 Introduction 在 Transformer 出现之前,主流的序列转换模型基于复杂的循环神经网络或卷积神经网络,通常都包括一个编码器和一个解码器。表现最好的模型是通过注意力机制将编码器和解码器连接起来。这篇论文提出了一种新的简单网络架构 Transformer,仅基于注意力机制,完...

【PyTorch 源码阅读】Dispatcher 源码篇

前言 本文分为三部分: 类:罗列注册和调用运算符所涉及的类和类之间的关系 注册运算符:结合源码梳理注册运算符的链路 调用运算符:结合源码梳理调用运算符的链路 类 Dispatcher & OperatorDef https://github.com/pytorch/pytorch/blob/main/aten/src/ATen/core/dispatch/Di...

【PyTorch 源码阅读】DispatchKeySet 源码篇

代码路径 https://github.com/pytorch/pytorch/blob/main/c10/core/DispatchKey.h https://github.com/pytorch/pytorch/blob/main/c10/core/DispatchKeySet.h 定义 BackendComponent 根据注释: 1 2 3 4 5 6 7 8 9 10 1...

【PyTorch 源码阅读】dispatch 机制概念篇

PyTorch 的 dispatch 机制比较复杂,在深入源码之前,建议先学习 Let’s talk about the PyTorch dispatcher 这篇文章,对源码中各个类的角色有初步的了解。本文是对该文章的精简翻译,图片也取自该文章。 背景 当调用torch.mm时,会发生两次 dispatch: 第一次 dispatch 基于 input tensor 的设备...

【PyTorch 源码阅读】intrusive_ptr 篇

代码路径 https://github.com/pytorch/pytorch/blob/main/c10/util/intrusive_ptr.h 定义 根据注释: 1 2 3 4 5 6 7 8 /** * intrusive_ptr<T> is an alternative to shared_ptr<T> that has better * per...

2023,迎来改变

又到了写年终总结的时候,时间过得真快,从毕业参与工作到现在,已经是第九个年头了。今年比较曲折,带来不少的思考和转变。 工作转变 在去年的展望中,我提到“希望自己能成为机器学习方面的专家”。然而很遗憾,今年并没有真正的往这个方向前进,反而在大部分时间里,我陷入了困惑和困境中。今年年初发生了些事情,让我对团队和自身的价值产生了怀疑。虽然已经工作了这么多年,但我并不是一个可以把工作和生活完全隔...

迟到的总结和展望

这次没有和往年一样按时发年终总结,是因为…两周前,阳了。当时我估摸一个星期就能恢复正常了,刚好不会错过圣诞和元旦。万万没想到发烧烧了两天,退烧后头晕却晕了一周多,然后元旦三天不头晕了又开始失眠,把我折腾得够呛。整个人非常疲惫,什么都不想搞只想躺着,直到今天才恢复了些精神劲。 先简单回顾下 2022 年吧。工作方面,今年这段个人和项目一起成长的经历让我非常难忘和兴奋。回过头对比年初,成就感满...

强化学习:策略梯度算法(一)

前言 关于强化学习的思想和概念介绍,可以参考 Part 1: Key Concepts in RL。 强化学习的算法分类可以参考 Part 2: Kinds of RL Algorithms 。 这篇文章主要介绍基于策略梯度的强化学习算法。 策略梯度 定义策略为 $\pi(a|s) = P(A_t = a | S_t =s)$,即处于状态 $s$ 时采取动...

优化算法

优化挑战 深度学习优化存在许多挑战,例如局部最小值、鞍点和梯度消失。 局部最小值 目标函数通常有许多局部最优解。当数值解接近局部最优值时,梯度接近或变为零,迭代得到的解可能是局部最优,而不是全局最优。 鞍点 鞍点(saddle point)是指函数的所有梯度都消失但既不是全局最小值也不是局部最小值。比如函数 $f(x)=x^3$: 梯度消失 见...

数值稳定性

多层神经网络基于梯度训练时容易出现训练不稳定。比如下图: 第一层参数的学习速度比最后一层慢了 100 倍以上,这意味着梯度回传过程中越来越小,靠前的神经网络训练比靠后的慢,这个现象称为梯度消失。由于我们网络参数是随机生成的,如果第一层训练不好,意味着很多信息在第一层就丢失了,即使后面几层训练得很好,模型也无法达到预期。 此外,也可能出现梯度在回传过程中越来越...