文章来源:
Parcollet T, Ravanelli M, Morchid M, et al. Quaternion Recurrent Neural Networks[C]//International Conference on Learning Representations. 2018.
在四元数密集层(desne layer)中,所有参数都是四元数,包括输入、输出、权重和偏移。QRNN的方法是本文提出的,在全连接的推论过程中,使用了与普遍操作不同的定义过程,之前的可以理解为矩阵相乘,这里为四元数矩阵的哈密顿乘积(矩阵中的每一项是一个四元数)。
如果输入向量为NNN,输出向量为MMM,维度可以被划分为四个部分:第一个部分是rrr, 第二个部分是xix_ixi,第三个部分是yjy_jyj, 第四个部分是zkz_kzk。四元数被表示为:
Q=r1+xi+yj+zkQ=r1+x_\mathbf{i}+y_\mathbf{j}+z_\mathbf{k}Q=r1+xi+yj+zk
四元数的共轭表示为:
Q=r1−xi−yj−zkQ=r1-x_\mathbf{i}-y_\mathbf{j}-z_\mathbf{k}Q=r1−xi−yj−zk
两种方法以矩阵方式表示四元数。第一种是通过二阶复数矩阵。第二种是以四阶实数矩阵表示四元数:
Qmat=[r−x−y−zxr−zyyzr−xz−yxr]
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◃=Qr2+x2+y2+z2Q^\triangleleft = \frac{Q}{{\sqrt {{r^2} + {x^2} + {y^2} + {z^2}} }}Q◃=r2+x2+y2+z2Q
两个四元数的哈密顿积表示为:
Q1⊗Q2=(r1r2−x1x2−y1y2−z1z2)+(r1x2+x1r2+y1z2−z1y2)i+(r1y2−x1z2+y1r2+z1x2)j+(r1z2+x1y2−y1x2+z1r2)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
输入是一个四元数,输出是一个四元数,权重是四元数,偏置也是四元数
四元数有三个虚部,并且i2=j2=k2=ijk\mathbf{i}^2=\mathbf{j}^2=\mathbf{k}^2=\mathbf{ijk}i2=j2=k2=ijk
依据RNN的前向传播(注意拼接和加)表示为,
ht=α(Whhht−1+Whxxt+bh)
h_{t}=\alpha\left(W_{h h} h_{t-1}+W_{h x} x_{t}+b_{h}\right)
ht=α(Whhht−1+Whxxt+bh)
四元数的前向传播表示为:
ht=α(Whh⊗ht−1+Whx⊗xt+bh)
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.youkuaiyun.com/junshen1314/article/details/43085003