本篇博客作为我的个人学习记录,详细梳理了标准实现与优化实现中的权重矩阵结构、维度变化过程,并结合我自己实现的 MultiHeadAttention 类深入分析了 PyTorch 中一些关键函数的作用,包括 view()reshape()contiguous() 等在实现过程中的实际含义与区别。

Read more »

"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》中的一些小细节,并结合实际代码加以分析。

Read more »

施工中,未完待续...

引入

划分树是一种来解决区间第 大的一种数据结构,其常数、理解难度都要比主席树低很多。同时,划分树紧贴「第 大」,所以是一种基于排序的一种数据结构。

在学习划分树之前,建议各位可以先了解主席树,笔者计划在之后的博客中也会介绍

Read more »

这篇博客介绍了强化学习中的Bellman算子以及使用Bellman算子来解释动态规划的迭代过程。

原本内容来自Stanford大学Ashwin Rao老师的lecture :Understanding (Exact) Dynamic Programming through Bellman Operators,本篇博客是这个lecture的翻译/整理/学习笔记,包括以下七个部分

  1. 值函数的向量描述
  2. Bellman算子
  3. 算子的收缩性的单调性
  4. 策略评估
  5. 策略迭代
  6. 值迭代
  7. 策略最优性
Read more »

引入

首先看一道题目:

洛谷 4097 HEOI2013Segment 要求在平面直角坐标系下维护两个操作(强制在线):

  1. 在平面上加入一条线段。记第 条被插入的线段的标号为 ,该线段的两个端点分别为
  2. 给定一个数 ,询问与直线 相交的线段中,交点纵坐标最大的线段的编号(若有多条线段与查询直线的交点纵坐标都是最大的,则输出编号最小的线段)。特别地,若不存在线段与给定直线相交,输出

数据满足:操作总数

我们发现,传统的线段树无法很好地维护这样的信息。这种情况下,李超线段树 便应运而生。

Read more »

在上一篇博客中,介绍了线段树的基本结构、建树过程、区间查询、区间修改等基本操作。在这篇博客中,我们将在此基础上介绍一些线段树的应(ti)用(mu)。

Read more »
0%