chainer.functions.black_out(x, t, W, samples, reduce='mean')[source]

BlackOut 損失関数。

 

BlackOut 損失関数は次のように定義されます。

\[-\log(p(t)) - \sum_{s \in S} \log(1 - p(s)),\]

ただし \(t\)は正解ラベル \(S\) は負例の集合、 \(p(\cdot)\) は与えられたラベルの尤度。

また、\(p\) は次のように定義されます。

\[p(y) = \frac{\exp(W_y^\top x)}{ \sum_{s \in samples} \exp(W_s^\top x)}.\]

出力は reduceオプションの値に依存した値となります。'no'が設定されている場合、ロス値を保持しません。 'mean'が設定されている場合、この関数はロス値の平均をとります。

 

Parameters:
  • x (Variable) – 入力ベクトルのバッチ。shapeは\((N, D)\)でなければならない。
  • t (Variable) – Ground Truthラベルのベクトル。 shapeは\((N,)\) でなければならない。各エレメント \(v\)\(0 \geq v \geq V\) もしくは \(V\) がラベルタイプの数である場合は \(-1\) を満たさなければならない
  • W (Variable) – 荷重行列。 shapeは\((V, D)\)でなければならない。
  • samples (Variable) – 負例。 shape は  \((N, S)\) 、ただし、 \(S\) は負例の数。
  • reduce (str) – 削減オプション。  'no' または 'mean'のいずれか。それ以外を指定した場合、ValueError が発生する。
Returns:

ロス値を保持している variable オブジェクト。reduce'no'の場合、 出力 variableは shape が \((N,)\) であるような配列を保持している変数。  'mean'の場合、スカラを保持する。

Return type:

Variable

お読みください(元論文): BlackOut: Speeding up Recurrent Neural Network Language Models With Very Large Vocabularies

See also

BlackOut.