多头注意力计算中的矩阵维度分析
本篇博客作为我的个人学习记录,详细梳理了标准实现与优化实现中的权重矩阵结构、维度变化过程,并结合我自己实现的 MultiHeadAttention
类深入分析了 PyTorch 中一些关键函数的作用,包括 view()
、reshape()
、contiguous()
等在实现过程中的实际含义与区别。
本篇博客作为我的个人学习记录,详细梳理了标准实现与优化实现中的权重矩阵结构、维度变化过程,并结合我自己实现的 MultiHeadAttention
类深入分析了 PyTorch 中一些关键函数的作用,包括 view()
、reshape()
、contiguous()
等在实现过程中的实际含义与区别。
"We call our model the Transformer. The model architecture is shown in Figure 1."
—— Attention is All You Need, Vaswani et al., 2017
在 Transformer 中,多头注意力机制(Multi-Head Attention, MHA)是核心组件之一。论文中虽然只用了短短几页进行描述,但其实现中蕴含着大量工程智慧与数学原则。本文将结合我自己复现的transformer和 GPT 模型,站在一个研零初学者的视角上,从 mask 使用、softmax 数值稳定性 角度,学习《Attention is All You Need》中的一些小细节,并结合实际代码加以分析。
施工中,未完待续...
划分树是一种来解决区间第
在学习划分树之前,建议各位可以先了解主席树,笔者计划在之后的博客中也会介绍
这篇博客介绍了强化学习中的Bellman算子以及使用Bellman算子来解释动态规划的迭代过程。
原本内容来自Stanford大学Ashwin Rao老师的lecture :Understanding (Exact) Dynamic Programming through Bellman Operators,本篇博客是这个lecture的翻译/整理/学习笔记,包括以下七个部分
使用python进行单纯形表的计算,解决线性规划问题
本文讲解吉老师在 2016 年国家集训队论文中提到的线段树处理历史区间最值的问题。
首先看一道题目:
洛谷 4097 HEOI2013Segment 要求在平面直角坐标系下维护两个操作(强制在线):
- 在平面上加入一条线段。记第
条被插入的线段的标号为 ,该线段的两个端点分别为 , 。 - 给定一个数
,询问与直线 相交的线段中,交点纵坐标最大的线段的编号(若有多条线段与查询直线的交点纵坐标都是最大的,则输出编号最小的线段)。特别地,若不存在线段与给定直线相交,输出 。 数据满足:操作总数
, , 。
我们发现,传统的线段树无法很好地维护这样的信息。这种情况下,李超线段树 便应运而生。
上一篇博客介绍了线段树的实际应用。在熟练使用前述操作的基础上,进一步介绍更多的线段树的操作。
在上一篇博客中,介绍了线段树的基本结构、建树过程、区间查询、区间修改等基本操作。在这篇博客中,我们将在此基础上介绍一些线段树的应(ti)用(mu)。