<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>数学 on Richelieu's Blog</title><link>https://beaiera.top/tags/%E6%95%B0%E5%AD%A6/</link><description>Recent content in 数学 on Richelieu's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 01 Jun 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://beaiera.top/tags/%E6%95%B0%E5%AD%A6/index.xml" rel="self" type="application/rss+xml"/><item><title>mhc_pre_torch 的数学公式与 CUDA 代码解释</title><link>https://beaiera.top/posts/mhc-preact-torch-math/</link><pubDate>Mon, 01 Jun 2026 11:00:00 +0800</pubDate><guid>https://beaiera.top/posts/mhc-preact-torch-math/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;mHC（multi-Head Combinatorial）是 DeepSeek V4 模型中引入的一种&lt;strong&gt;多头残差混合机制&lt;/strong&gt;。它将传统 Transformer 中单一的残差向量扩展为 $M$ 个并行的残差副本（multi-head residual），并在每个 block 前后通过可学习的门控和组合矩阵对多头残差进行变换。&lt;/p&gt;
&lt;p&gt;本文以 &lt;code&gt;mhc_pre_torch&lt;/code&gt; 为核心，从数学公式出发逐行对照 PyTorch 代码，并延伸至 &lt;code&gt;mhc_post_torch&lt;/code&gt; 和整个 mHC 流水线，帮助读者完整理解这一算子的设计思路与实现细节。&lt;/p&gt;</description></item><item><title>DeepSeek Attention 中为什么除以 √d_k — 从代码到数学</title><link>https://beaiera.top/posts/deepseek-attention-div64/</link><pubDate>Mon, 01 Jun 2026 10:30:00 +0800</pubDate><guid>https://beaiera.top/posts/deepseek-attention-div64/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;在 Transformer 的 Scaled Dot-Product Attention 中，有一个看似简单却至关重要的操作：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Q&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;K&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d_k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个 &lt;code&gt;÷√d_k&lt;/code&gt; 几乎出现在每一个 Attention 实现中。DeepSeek 的 MLA（Multi-head Latent Attention）也不例外。本文从 DeepSeek V4 的 vLLM 实现代码出发，深入探讨这个缩放因子的数学动机、工程实现，以及 DeepSeek 特有的优化变体。&lt;/p&gt;
&lt;h2 id="标准-attention-中的缩放因子"&gt;标准 Attention 中的缩放因子&lt;/h2&gt;
&lt;h3 id="softmax-的饱和问题"&gt;Softmax 的&amp;quot;饱和&amp;quot;问题&lt;/h3&gt;
&lt;p&gt;原始 Attention 计算公式为：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Attention(Q, K, V) = softmax(QK^T / √d_k) V
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;设 Q、K 的每个元素是独立同分布、均值为 0、方差为 1 的随机变量。对于向量 &lt;code&gt;q&lt;/code&gt; 和 &lt;code&gt;k&lt;/code&gt;（维度为 &lt;code&gt;d_k&lt;/code&gt;），其点积的均值和方差为：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;E[q·k] = Σ E[q_i·k_i] = 0
Var(q·k) = Σ Var(q_i·k_i) = d_k
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;即点积的方差正比于 &lt;code&gt;d_k&lt;/code&gt;。当 &lt;code&gt;d_k&lt;/code&gt; 较大时（如 128、512），点积的绝对值会很大，导致 softmax 进入梯度极小的饱和区：&lt;/p&gt;
&lt;p&gt;当某个 &lt;code&gt;x_i&lt;/code&gt; 远大于其他值时，&lt;code&gt;e^{x_i}&lt;/code&gt; 会主导分母，softmax 输出接近 one-hot，梯度趋近于 0，训练难以收敛。&lt;/p&gt;</description></item></channel></rss>