【 Transformer 系列,故事从 d k \sqrt{d_k} dk说起】
LLM这么火,Transformer厥功甚伟,某天心血来潮~,再去看看!
它长这个样子: 深入浅出 Transformer
看完后,想起了老生常谈 d k \sqrt{d_k} dk问题,必须一探究竟:Transformer 中缩放点积注意力机制探讨:除以根号 dk 理由及其影响
感觉不够清楚,还是再Review下考研概率论,有了:基于考研概率论知识解读 Transformer:为何自注意力机制要除以根号 dk,中间会涉及初始化、标准化、Sofrmax函数,于是继续
【初始化相关】:深度学习中的常见初始化方法:原理、应用与比较
【标准化系列】: 数据为什么要进行标准化:Z-标准化的神奇蜕变,带出了关联知识点: 深度 “炼丹” 术之 Batch Normalization 与 Z - 标准化:开启数据的神秘转换
【Softmax复习】:Softmax 层反向传播梯度计算实例解析,中间想到了经常配套使用的交叉熵,于是梳理了交叉熵的前世今生KL 散度:多维度解读概率分布间的隐秘 “距离”
熵与交叉熵:从不确定性角度理解 KL 散度
机器学习、深度学习关于熵你所需要知道的一切
一、背景
在神经网络的训练过程中,反向传播算法起着至关重要的作用,它通过计算梯度来更新模型的参数,使得模型能够不断优化。Softmax 函数作为神经网络中常用的激活函数,其反向传播过程中的梯度计算是理解模型训练机制的关键环节。本文将通过一个具体例子详细阐述 Softmax 层反向传播过程中梯度的计算过程。
二、网络结构定义
假设我们有一个神经网络,其最后一层为 Softmax 层,输入向量为 z = ( z 1 , z 2 , z 3 ) \mathbf{z}=(z_1, z_2, z_3) z=(z1,z2,z3)。经过 Softmax 函数处理后,得到输出向量 σ ( z ) = ( σ ( z ) 1 , σ ( z ) 2 , σ ( z ) 3 ) \boldsymbol{\sigma}(\mathbf{z}) = (\sigma(z)_1, \sigma(z)_2, \sigma(z)_3) σ(z)=(σ(z)1,σ(z)2,σ(z)3),其中:
σ ( z ) 1 = e z 1 e z 1 + e z 2 + e z 3 \sigma(z)_1=\frac{e^{z_1}}{e^{z_1}+e^{z_2}+e^{z_3}} σ(z)1=ez1+ez2+ez3ez1
σ ( z ) 2 = e z 2 e z 1 + e z 2 + e z 3 \sigma(z)_2=\frac{e^{z_2}}{e^{z_1}+e^{z_2}+e^{z_3}} σ(z)2=ez1+ez2+ez3ez2
σ ( z ) 3 = e z 3 e z 1 + e z 2 + e z 3 \sigma(z)_3=\frac{e^{z_3}}{e^{z_1}+e^{z_2}+e^{z_3}} σ(z)3=ez1+ez2+ez3ez3
为了便于计算,我们假设 z 1 = 1 z_1 = 1 z1=1, z 2 = 2 z_2 = 2 z2=2, z 3 = 3 z_3 = 3 z3=3,由此可得:
σ ( z ) 1 ≈ e 1 e 1 + e 2 + e 3 ≈ 2.718 2.718 + 7.389 + 20.086 ≈ 0.09 \sigma(z)_1\approx\frac{e^{1}}{e^{1}+e^{2}+e^{3}}\approx\frac{2.718}{2.718 + 7.389 + 20.086}\approx0.09 σ(z)1≈e1+e2+e3e1≈2.718+7.389+20.0862.718≈0.09
σ ( z ) 2 ≈ e 2 e 1 + e 2 + e 3 ≈ 7.389 2.718 + 7.389 + 20.086 ≈ 0.24 \sigma(z)_2\approx\frac{e^{2}}{e^{1}+e^{2}+e^{3}}\approx\frac{7.389}{2.718 + 7.389 + 20.086}\approx0.24 σ(z)2≈e1+e2+e3e2≈2.718+7.389+20.0867.389≈0.24
σ ( z ) 3 ≈ e 3 e 1 + e 2 + e 3 ≈ 20.086 2.718 + 7.389 + 20.086 ≈ 0.67 \sigma(z)_3\approx\frac{e^{3}}{e^{1}+e^{2}+e^{3}}\approx\frac{20.086}{2.718 + 7.389 + 20.086}\approx0.67 σ(z)3≈