深層学習の学習:指標など

BLEU

機械翻訳の評価指標の一つでBLEUがある。
この評価方法の前提は、「プロの翻訳者の訳と近ければ近いほど、その機械翻訳の精度は高い」という考え方である。
BLEUは0~1の間で表現され、それを100倍したものをBLEUスコアとして用いる。
目安としては40以上なら高品質と言える。

BLUEスコアは、下記のような式で計算される。
 BLEU=BP\times exp\left(\displaystyle\sum_{n=1}^Nw_nlogp_n\right)
ここで、
 p_n=\dfrac{\sim_i翻訳文iと参照文iで一致したn-gram数}{\sum_i2翻訳文i中の全n-gram数}
 w_n=\dfrac{1}{N}

BLEUでは、機械翻訳が参照翻訳より短い場合は、ペナルティを与え、機械翻訳が参照翻訳より長い場合はペナルティを与えないBP(Brevity penalty)がある。
cを機械翻訳の長さとして、下記のようにあらわされる。
 BP=   \left\{
    \begin{array}{l}
      1 \ \   c\geq r\\
      exp(1-r/c) \ \ c < r
    \end{array}
  \right.

soft plus関数およびsigmoid関数との関係

soft plus関数は、下記のように定義する。
 f(x)=log(1+exp(x))
グラフにすると、下記のような形で、ReLu関数に近いが、連続的につながっていて、全域で微分可能であることが特徴である。
f:id:tibet:20220109161929p:plain

sigmoidとsoft plus関数の関係

シグモイドは下記の関数である。
 σ(x)=\dfrac{1}{1+exp(-x)}
 \dfrac{d}{dx}f(x)=σ(x)
 f(x)=\int_{-∞}^xσ(y)dAy

soft plus関数の実装

簡易的には、pythonで下記の実装もありえる。

import numpy as np
def softplus(x):
 return np.log(1.0+np.exp(x))

ただ、x=1000を超えるような数をいれるとオーバーフローをする場合がある。
そこで、下記のような実装の工夫があり得る。
 f(x)=log(1+exp(x))=log(1+exp(x))-log(exp(x))+x
 =log \dfrac{1+exp(x)}{exp(x)}+x=log\left( 1+\dfrac{1}{exp(x)}\right) + x=log(1+exp(-x))+x
この変形を用いて、

import numpu as np
return maximum(x,0)+log(1+np.exp(-np.abs(x)))

KLダイバージェンスとJSダイバージェンス

KLダイバージェンスは、正解分布p(x)に対して、推定分布q(x)がどの程度近似しているかを評価する指標である。
 DLK(P||Q)=\int_{-∞}^{∞}p(x)log(\dfrac{p(x)}{q(x)}dx

KLダイバージェンスは、p(x)とq(x)が非対称なため、使いにくい場合もある。そこで、等価な形に改めたのがJSダイバージェンスである。
 D_{DS}(P||Q)=\dfrac{1}{2}(D_{KL}(P||Q)+D_{KL}(Q||P))