引言
你可能每天都在使用 Functor 但你并没有意识到这一点:当你每次使用各种容器类型的 map
方法的时候,其实就是在利用 Functor 的性质
本篇文章会分别从范畴论的视角、编程语言视角讲解 Functor,希望能对你有所帮助 :)
用 $\mathbf x_i$ 表示没有位置编码的 token embedding,那么 $\mathbf q_m,\mathbf k_n,\mathbf v_n$ 的计算如下
$$ \begin{aligned} \mathbf q_m&=f_q(\mathbf x_m,m)\\ \mathbf k_n&=f_k(\mathbf x_n,n)\\ \mathbf v_n&=f_v(\mathbf x_n,n) \end{aligned} $$
这里的 $n, m$ 表示的是不同的位置,这里假设 $\mathbf k$ 和 $\mathbf v$ 是都是位置 $n$ 的,而 $\mathbf q$ 是位置 $m$ 的,并且 $m > n$
从 2017 年 Transformer 架构被提出以来,到现在 2025 已经 8 年过去了,Transformer 架构已经发生了很多变化。比如,现如今越来越多的大模型采用的是 RMSNorm1 而不是 LayerNorm。今天这篇文章就是对 RMSNorm 的一个简单介绍,在了解 RMSNorm 之前,我们不妨先回顾一下什么是 LayerNorm
在做算法题练习的时候遇到了一道有趣的题目 - 1682. Flight Routes Check。要解决这一道题需要高效确定一个有向图上有多少强连通分量。在看了一下题解之后,我发现 Kosaruju 算法可以用于解决这个问题,它可以在线性时间内找到有向图的所有强连通分量。这里说的线性时间是