首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变压器前馈网络中偏差的形状

变压器前馈网络中偏差的形状
EN

Data Science用户
提问于 2023-05-15 08:07:04
回答 2查看 20关注 0票数 0

在变压器网络(Vaswani等人,2017年年)中,前馈网络有方程:

\mathrm{FNN}(x) = \max(0, xW_1 + b_1) W_2 + b_2

x \in \mathbb{R}^{n \times d_\mathrm{model}}W_1 \in\mathbb{R}^{d_\mathrm{model} \times d_{ff}}W_2 \in\mathbb{R}^{d_{ff} \times d_\mathrm{model}}。我们知道,偏差b_1b_2是向量。但是,要使方程有效,b_1b_2的形状必须一致,即b_1 \in\mathbb{R}^{n \times d_{ff}}b_2 \in\mathbb{R}^{n \times d_\mathrm{model}}。我的问题是:

b_1 = \begin{bmatrix} (b_1)_{1} & (b_1)_{2} & \dots & (b_1)_{d_{ff}}\\ (b_1)_{1} & (b_1)_{2} & \dots & (b_1)_{d_{ff}} \\ \vdots & \vdots & & \vdots \\ (b_1)_{1} & (b_1)_{2} & \dots & (b_1)_{d_{ff}} \end{bmatrix}

b_2 = \begin{bmatrix} (b_2)_{1} & (b_2)_{2} & \dots & (b_2)_{d_\mathrm{model}}\\ (b_2)_{1} & (b_2)_{2} & \dots & (b_2)_{d_\mathrm{model}} \\ \vdots & \vdots & & \vdots \\ (b_2)_{1} & (b_2)_{2} & \dots & (b_2)_{d_\mathrm{model}} \end{bmatrix}

EN

回答 2

Data Science用户

回答已采纳

发布于 2023-05-15 09:22:24

好吧,是和不是。

这是一个位置方向的前馈网络.x \in \mathbb{R}^{n\times d_{model}},其中n是序列长度。当我们应用矩阵乘法和偏差加法时,我们对每个单独的位置都这样做。因此,实际乘法是1\times d_{model}矩阵维数W_1的一个向量。

在实际的实现条件下,我们得到了单矩阵乘法n向量的结果。偏置是在加法运算中广播的单一矢量。广播被numpy引入,然后被深度学习框架所采用。它被定义为为:

广播一词描述了在算术运算期间NumPy如何处理不同形状的数组。在某些约束条件下,较小的数组在较大的数组中被“广播”,以便它们具有兼容的形状。广播提供了一种将数组操作向量化的方法,以便在C中而不是在Python中进行循环。这样做并不需要对数据进行不必要的复制,而且通常会导致高效的算法实现。

在这种情况下,广播相当于重复偏置向量n时间。

这并不意味着实际的向量是n \times d_{ff},而是我们将加法应用于每个n位置。

票数 0
EN

Data Science用户

发布于 2023-05-15 08:39:01

我不这样认为。第一个矩阵W1是形状D_模型,dff,因此它将输入向量1×d_模型转换为大小为1的向量。第一个偏置向量是1。第二个矩阵W2是反方向的,所以它是形状Dff,d_模型,它接受一个输入形状1并产生一个输出1×d_模型,所以第二个偏置应该是形状1×d_模型的矢量。偏倚b1和b2只是向量(忽略批处理)。hth。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/121542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档