chainer.functions.bilinear(e1, e2, W, V1=None, V2=None, b=None)[source]

バイリニア関数に与えられたパラメータを適用する。

 

ニューラル・テンソル・ネットワークのビルディングブロックです。(下記の論文も参照してください)この関数は2つの入力Variableと1つもしくは4つのパラメータをとり、Variableを1つ出力します。

 

正確には、6角入力配列は数学的に \(e^1\in \mathbb{R}^{I\cdot J}\), \(e^2\in \mathbb{R}^{I\cdot K}\), \(W\in \mathbb{R}^{J \cdot K \cdot L}\), \(V^1\in \mathbb{R}^{J \cdot L}\), \(V^2\in \mathbb{R}^{K \cdot L}\), and \(b\in \mathbb{R}^{L}\)で表されます。ただし、 \(I\) はミニバッチのサイズです。このドキュメントで、  \(V^1\)、 \(V^2\)、 \(b\) をリニアパラメータと呼びます。

 

順伝播の出力は下記のように表されます。

\[y_{il} = \sum_{jk} e^1_{ij} e^2_{ik} W_{jkl} + \ \sum_{j} e^1_{ij} V^1_{jl} + \sum_{k} e^2_{ik} V^2_{kl} + b_{l}.\]

V1, V2, b はオプションですので注意してください。これらが指定されていないとき、この関数は上記の式からこの3項を省略します。

Note
この関数は入力variable e1 もしくは行列ではないデータ e2 を受け入れます。この場合、先頭にくる次元はバッチ次元として扱われ、他の次元は1次元に縮小されます。
Note
元論文においては、\(J\) と \(K\) は同値でなければならず、 \([V^1 V^2]\) (行列の結合を) を \(V\)によって表しています。
Parameters:
  • e1 (Variable) – Left input variable.
  • e2 (Variable) – Right input variable.
  • W (Variable) – Quadratic weight variable.
  • V1 (Variable) – Left coefficient variable.
  • V2 (Variable) – Right coefficient variable.
  • b (Variable) – Bias variable.
Returns:

出力値

Return type:

Variable

See:
Reasoning With Neural Tensor Networks for Knowledge Base Completion [Socher+, NIPS2013].