“Dot-then-exponentiate” 运算
“dot-then-exponentiate” 是一种运算顺序,首先进行点积运算(dot product),然后对结果进行指数运算(exponentiation)。在数学和计算机科学中,尤其是机器学习和深度学习中,这种运算顺序经常出现。例如:
-
点积运算(dot product):假设有两个向量 x \mathbf{x} x 和 w \mathbf{w} w,它们的点积表示为 x ⋅ w \mathbf{x} \cdot \mathbf{w} x⋅w。点积运算的结果是一个标量,计算公式为:
x ⋅ w = ∑ i = 1 n x i w i \mathbf{x} \cdot \mathbf{w} = \sum_{i=1}^{n} x_i w_i x⋅w=i=1∑nxiwi
-
指数运算(exponentiation):对点积的结果进行指数运算,例如自然指数函数 e z e^z ez,其中 z z z 是点积的结果。
所以,dot-then-exponentiate 可以表示如下的运算过程:
y = e x ⋅ w y = e^{\mathbf{x} \cdot \mathbf{w}} y=ex⋅w
这种运算在神经网络的激活函数和概率模型中经常出现。例如,在逻辑回归模型中,线性组合 x ⋅ w \mathbf{x} \cdot \mathbf{w} x⋅w 通过 sigmoid 函数(其包含指数运算)转化为概率值。在某些情况下,softmax 函数也会使用类似的点积然后指数运算的步骤,将输入转化为概率分布。
Softmax 函数
Softmax 函数是多分类问题中常用的一种激活函数,它将一个向量中的元素映射到 [0, 1] 区间,并使它们的和为 1,表示概率分布。它确实运用了类似于点积然后指数运算的步骤。
假设有一个输入向量 z = [ z 1 , z 2 , … , z n ] \mathbf{z} = [z_1, z_2, \dots, z_n] z=[z1,z2,…,zn],softmax 函数的输出是一个与输入向量长度相同的向量 y = [ y 1 , y 2 , … , y n ] \mathbf{y} = [y_1, y_2, \dots, y_n] y=[y1,y2,…,yn],其中:
y i = e z i ∑ j = 1 n e z j y_i = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}} yi=∑j=1nezjezi
可以分解为以下步骤:
-
计算点积:在神经网络中,输入向量 x \mathbf{x} x 与权重向量 w i \mathbf{w}_i wi 的点积计算得到 z i z_i zi,即:
z i = x ⋅ w i + b i z_i = \mathbf{x} \cdot \mathbf{w}_i + b_i zi=x⋅wi+bi
其中 b i b_i bi 是偏置项。
-
指数运算:对每个 z i z_i zi 进行指数运算 e z i e^{z_i} ezi。
-
归一化:将所有指数运算的结果归一化,使它们的和为 1,即:
y i = e z i ∑ j = 1 n e z j y_i = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}} yi=∑j=1nezjezi
示例
假设有一个简单的神经网络输出 z = [ 1.0 , 2.0 , 3.0 ] \mathbf{z} = [1.0, 2.0, 3.0] z=[1.0,2.0,3.0],我们要计算 softmax 函数的输出。
-
计算指数运算:
e z 1 = e 1.0 ≈ 2.718 e^{z_1} = e^{1.0} \approx 2.718 ez1=e1.0≈2.718
e z 2 = e 2.0 ≈ 7.389 e^{z_2} = e^{2.0} \approx 7.389 ez2=e2.0≈7.389
e z 3 = e 3.0 ≈ 20.085 e^{z_3} = e^{3.0} \approx 20.085 ez3=e3.0≈20.085 -
求和:
∑ j = 1 3 e z j ≈ 2.718 + 7.389 + 20.085 = 30.192 \sum_{j=1}^{3} e^{z_j} \approx 2.718 + 7.389 + 20.085 = 30.192 j=1∑3ezj≈2.718+7.389+20.085=30.192
-
归一化:
y 1 = e 1.0 30.192 ≈ 2.718 30.192 ≈ 0.090 y_1 = \frac{e^{1.0}}{30.192} \approx \frac{2.718}{30.192} \approx 0.090 y1=30.192e1.0≈30.1922.718≈0.090
y 2 = e 2.0 30.192 ≈ 7.389 30.192 ≈ 0.245 y_2 = \frac{e^{2.0}}{30.192} \approx \frac{7.389}{30.192} \approx 0.245 y2=30.192e2.0≈30.1927.389≈0.245
y 3 = e 3.0 30.192 ≈ 20.085 30.192 ≈ 0.665 y_3 = \frac{e^{3.0}}{30.192} \approx \frac{20.085}{30.192} \approx 0.665 y3=30.192e3.0≈30.19220.085≈0.665
最终,softmax 函数的输出向量为 [ 0.090 , 0.245 , 0.665 ] [0.090, 0.245, 0.665] [0.090,0.245,0.665],表示输入向量被映射为一个概率分布。
这种过程可以看作是"点积然后指数运算"的具体实现,其中点积产生的线性组合被指数函数变换为非线性值,最后通过归一化得到概率分布。