尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

归一化:门控RMSNorm朴素

归一化:门控RMSNorm朴素 门控RMSNorm朴素.h// 门控RMSNorm朴素.h —— 门控 RMSNorm 朴素标量实现声明// 用途DeltaNet 输出层ssm_norm的门控归一化先 RMSNorm再乘 SiLU 门控#pragmaonce// 引入基础类型浮点/size_t 别名#include公共/基础定义.h// 门控RMSNorm朴素RMSNorm 结果逐元素乘以 SiLU(门控)// 公式输出 RMSNorm(输入, 权重) × SiLU(门控)即// $$ \hat{x}_i \frac{x_i}{\sqrt{\frac{1}{d}\sum_{j1}^{d} x_j^2 \epsilon}} \cdot \gamma_i \cdot \mathrm{SiLU}(z_i) $$// 纯文本x̂_i ( x_i / sqrt( (1/d)·Σx_j² ε ) · γ_i ) × SiLU(z_i)// 含义门控 RMSNorm 在归一化之后用门控向量 z 缩放每个输出通道z 通常来自投影输出// 使网络能按通道选择「保留或压零」归一化后的信息。// 参数输入 待归一化向量权重 缩放 γ门控 门控向量 z长度 维度// 输出 结果起点维度 向量长度epsilon 防除零常数void门控RMSNorm朴素(constfloat*输入,constfloat*权重,constfloat*门控,float*输出,size_t 维度,floatepsilon);门控RMSNorm朴素.cpp// 门控RMSNorm朴素.cpp —— 门控 RMSNorm 朴素标量实现// 用途RMSNorm 结果逐元素乘 SiLU(门控)#include内核/归一化/门控RMSNorm朴素.h#include内核/归一化/激活函数.h// 引入标准头平方根 sqrt#includecmath// 门控RMSNorm朴素RMSNorm 输出 × SiLU(门控)// 实现先求输入均方根与 RMSNorm 相同再逐元素 除均方根 × γ × SiLU(门控[i])void门控RMSNorm朴素(constfloat*输入,constfloat*权重,constfloat*门控,float*输出,size_t 维度,floatepsilon){// 第一步累加平方和double 累加防精度损失double平方和0.0;for(size_t i0;i维度;i){平方和static_castdouble(输入[i])*输入[i];}constdouble均方根std::sqrt(平方和/static_castdouble(维度)static_castdouble(epsilon));// 第二步逐元素 除均方根 × γ × SiLU(门控)double 中间量保证精度for(size_t i0;i维度;i){输出[i]static_cast浮点(static_castdouble(输入[i])/均方根*static_castdouble(权重[i])*static_castdouble(激活SiLU(门控[i])));}}
返回列表