Masutangu

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

【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 倍以上,这意味着梯度回传过程中越来越小,靠前的神经网络训练比靠后的慢,这个现象称为梯度消失。由于我们网络参数是随机生成的,如果第一层训练不好,意味着很多信息在第一层就丢失了,即使后面几层训练得很好,模型也无法达到预期。 此外,也可能出现梯度在回传过程中越来越...

正则化

过拟合和欠拟合 过度拟合指着模型对训练集的模拟和学习过度贴合。训练时的检测率很高效果很好,但实际检验时效果很差,即泛化能力不足。用于对抗过拟合的技术称为正则化(regularization)。 欠拟合是指模型和数据集间的拟合程度不够,学习不足。可能是学习轮数不够、数据集特征不规则、模型选择有问题等。欠拟合时,模型的泛化能力同样会很差。 权重衰减 Weigh...

注意力机制

查询、键和值 Query & Key-Value 注意力机制中,给定一个查询(query)和一组键值对(key-value pairs)作为输入,通过 Compatibility Function 计算出查询和每个键的关联度,再用计算出的关联度作为权重系数乘以每个键对应的值,得到的加权值(weight sum)作为输出。 An attention ...

循环神经网络

有些场景下我们需要使用序列模型来进行预测,比如: 文本翻译:输入是连续的,需要结合前文进行翻译 股价:需要结合昨天的股价进行预测 自回归模型 使用过去的数据进行预测,即计算 $P(x_t \mid x_{t-1}, \ldots, x_1)$。通常可以对过去的数据进行建模,即: \[P(x_t \mid x_{t-1}, \ldots, x_1)...