文章来源:
Parcollet T, Ravanelli M, Morchid M, et al. Quaternion Recurrent Neural Networks[C]//International Conference on Learning Representations. 2018.
在四元数密集层(desne layer)中,所有参数都是四元数,包括输入、输出、权重和偏移。QRNN的方法是本文提出的,在全连接的推论过程中,使用了与普遍操作不同的定义过程,之前的可以理解为矩阵相乘,这里为四元数矩阵的哈密顿乘积(矩阵中的每一项是一个四元数)。
如果输入向量为
N
N
N,输出向量为
M
M
M,维度可以被划分为四个部分:第一个部分是
r
r
r, 第二个部分是
x
i
x_i
xi,第三个部分是
y
j
y_j
yj, 第四个部分是
z
k
z_k
zk。四元数被表示为:
Q
=
r
1
+
x
i
+
y
j
+
z
k
Q=r1+x_\mathbf{i}+y_\mathbf{j}+z_\mathbf{k}
Q=r1+xi+yj+zk
四元数的共轭表示为:
Q
=
r
1
−
x
i
−
y
j
−
z
k
Q=r1-x_\mathbf{i}-y_\mathbf{j}-z_\mathbf{k}
Q=r1−xi−yj−zk
两种方法以矩阵方式表示四元数。第一种是通过二阶复数矩阵。第二种是以四阶实数矩阵表示四元数:
Q
mat
=
[
r
−
x
−
y
−
z
x
r
−
z
y
y
z
r
−
x
z
−
y
x
r
]
Q_{\text {mat}}=\left[\begin{array}{cccc} r & -x & -y & -z \\ x & r & -z & y \\ y & z & r & -x \\ z & -y & x & r \end{array}\right]
Qmat=
rxyz−xrz−y−y−zrx−zy−xr
标准化的四元数表示为:
Q
◃
=
Q
r
2
+
x
2
+
y
2
+
z
2
Q^\triangleleft = \frac{Q}{{\sqrt {{r^2} + {x^2} + {y^2} + {z^2}} }}
Q◃=r2+x2+y2+z2Q
两个四元数的哈密顿积表示为:
Q
1
⊗
Q
2
=
(
r
1
r
2
−
x
1
x
2
−
y
1
y
2
−
z
1
z
2
)
+
(
r
1
x
2
+
x
1
r
2
+
y
1
z
2
−
z
1
y
2
)
i
+
(
r
1
y
2
−
x
1
z
2
+
y
1
r
2
+
z
1
x
2
)
j
+
(
r
1
z
2
+
x
1
y
2
−
y
1
x
2
+
z
1
r
2
)
k
\begin{aligned} Q_{1} \otimes Q_{2}=&\left(r_{1} r_{2}-x_{1} x_{2}-y_{1} y_{2}-z_{1} z_{2}\right)+\left(r_{1} x_{2}+x_{1} r_{2}+y_{1} z_{2}-z_{1} y_{2}\right) \boldsymbol{i}+\\ &\left(r_{1} y_{2}-x_{1} z_{2}+y_{1} r_{2}+z_{1} x_{2}\right) \boldsymbol{j}+\left(r_{1} z_{2}+x_{1} y_{2}-y_{1} x_{2}+z_{1} r_{2}\right) \boldsymbol{k} \end{aligned}
Q1⊗Q2=(r1r2−x1x2−y1y2−z1z2)+(r1x2+x1r2+y1z2−z1y2)i+(r1y2−x1z2+y1r2+z1x2)j+(r1z2+x1y2−y1x2+z1r2)k
输入是一个四元数,输出是一个四元数,权重是四元数,偏置也是四元数
四元数有三个虚部,并且
i
2
=
j
2
=
k
2
=
i
j
k
\mathbf{i}^2=\mathbf{j}^2=\mathbf{k}^2=\mathbf{ijk}
i2=j2=k2=ijk
依据RNN的前向传播(注意拼接和加)表示为,
h
t
=
α
(
W
h
h
h
t
−
1
+
W
h
x
x
t
+
b
h
)
h_{t}=\alpha\left(W_{h h} h_{t-1}+W_{h x} x_{t}+b_{h}\right)
ht=α(Whhht−1+Whxxt+bh)
四元数的前向传播表示为:
h
t
=
α
(
W
h
h
⊗
h
t
−
1
+
W
h
x
⊗
x
t
+
b
h
)
h_{t}=\alpha\left(W_{h h} \otimes h_{t-1}+W_{h x} \otimes x_{t}+b_{h}\right)
ht=α(Whh⊗ht−1+Whx⊗xt+bh)
一个四元数的激活函数表示为:
α
(
Q
)
=
f
(
r
)
+
f
(
x
)
i
+
f
(
y
)
j
+
f
(
z
)
k
\alpha(Q)=f(r)+f(x) \mathbf{i}+f(y) \mathbf{j}+f(z) \mathbf{k}
α(Q)=f(r)+f(x)i+f(y)j+f(z)k
f
(
⋅
)
f(\cdot)
f(⋅)是一个标准的激活函数。
四元数的几何意思
为什么要用四元数?
https://zhuanlan.zhihu.com/p/27471300?group_id=862339882582945792
向量之间具有内积和外积之分,这种乘法是不完美的,因为不满足群条件。
四元数可以解决万向节死锁问题。
https://blog.csdn.net/junshen1314/article/details/43085003