【一学就会!】计算机科学中常说的dot-then-exponentiate是什么运算

“Dot-then-exponentiate” 运算

“dot-then-exponentiate” 是一种运算顺序,首先进行点积运算(dot product),然后对结果进行指数运算(exponentiation)。在数学和计算机科学中,尤其是机器学习和深度学习中,这种运算顺序经常出现。例如:

  1. 点积运算(dot product):假设有两个向量 x \mathbf{x} x w \mathbf{w} w,它们的点积表示为 x ⋅ w \mathbf{x} \cdot \mathbf{w} xw。点积运算的结果是一个标量,计算公式为:

    x ⋅ w = ∑ i = 1 n x i w i \mathbf{x} \cdot \mathbf{w} = \sum_{i=1}^{n} x_i w_i xw=i=1nxiwi

  2. 指数运算(exponentiation):对点积的结果进行指数运算,例如自然指数函数 e z e^z ez,其中 z z z 是点积的结果。

所以,dot-then-exponentiate 可以表示如下的运算过程:

y = e x ⋅ w y = e^{\mathbf{x} \cdot \mathbf{w}} y=exw

这种运算在神经网络的激活函数和概率模型中经常出现。例如,在逻辑回归模型中,线性组合 x ⋅ w \mathbf{x} \cdot \mathbf{w} xw 通过 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

可以分解为以下步骤:

  1. 计算点积:在神经网络中,输入向量 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=xwi+bi

    其中 b i b_i bi 是偏置项。

  2. 指数运算:对每个 z i z_i zi 进行指数运算 e z i e^{z_i} ezi

  3. 归一化:将所有指数运算的结果归一化,使它们的和为 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 函数的输出。

  1. 计算指数运算

    e z 1 = e 1.0 ≈ 2.718 e^{z_1} = e^{1.0} \approx 2.718 ez1=e1.02.718
    e z 2 = e 2.0 ≈ 7.389 e^{z_2} = e^{2.0} \approx 7.389 ez2=e2.07.389
    e z 3 = e 3.0 ≈ 20.085 e^{z_3} = e^{3.0} \approx 20.085 ez3=e3.020.085

  2. 求和

    ∑ 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=13ezj2.718+7.389+20.085=30.192

  3. 归一化

    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.030.1922.7180.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.030.1927.3890.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.030.19220.0850.665

最终,softmax 函数的输出向量为 [ 0.090 , 0.245 , 0.665 ] [0.090, 0.245, 0.665] [0.090,0.245,0.665],表示输入向量被映射为一个概率分布。

这种过程可以看作是"点积然后指数运算"的具体实现,其中点积产生的线性组合被指数函数变换为非线性值,最后通过归一化得到概率分布。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值