GELUとは?GPTが採用する活性化の仕組み
GELUという活性化関数をご存知でしょうか?
GELUとは、Gaussian Error Linear Unit(ガウス誤差線形ユニット)の略称です。OpenAIのGPTやGoogleのBERTなど、よく知られた言語モデルで使われている活性化関数です。
よく使われる活性化関数の代表としてReLUがありますが、GELUの論文ではGELUはReLUと比較してニューラルネットワーク訓練の収束がより高速になるという実験結果が掲載されています。
この記事では、GELUがどんな仕組みで機能するのかについて解説します。
GELUの定義
GELUの定義は以下になります。
$$
\text{GELU}(x) = x \Phi(x)
$$
つまり、GELUは入力値$${x}$$と$${\Phi(x)}$$の積です。そして$${\Phi(x)}$$は標準正規分布の累積分布関数です。これは後で解説します。
図にすると以下のようになります。ReLUに似ていますね。
ReLUとGELUの間には共通点と相違点があります。これについても後で解説します。
まずは、標準正規分布と累積分布関数について順番に見ていきましょう。
標準正規分布と累積分布関数
標準正規分布は下図の釣鐘の形をしています。平均が0で分散(標準偏差)が1です。
この分布に従うデータは平均0の周りによく現れる特徴があります。また左右対称なので平均を境に50%の確率を上まるかどうかが決まります。
つまり、正規分布に従うデータからランダムに値を引き出したとにき$${-\infty}$$から平均値の間、つまり平均値以下である確率が50%になります。
しかし、(平均値以外で)データがある値以下になる確率をこの図から読み取るのは難しいです。例えば、データが -0.8以下である確率は確率分布の図から直接には知ることができません。
これは確率分布の縦軸は確率密度を示しており、確率を求めるには赤の曲線と青の線で囲まれた部分の面積を知る必要があるからです。
そこで累積分布が役に立ちます。一般に、累積分布関数が与える値は確率密度を横軸に沿って$${-\infty}$$からある値$${x}$$まで積分したものです。つまり、累積分布関数の図の縦軸はデータが$${x}$$以下の値になる確率を示しています。
下図は標準正規分布の累積分布関数です。
これを見るとデータが$${-0.8}$$以下の値になる確率は20%より少し高いのがわかります。また、平均である$${0}$$以下の値になる確率は50%です。
まとめると、一般に累積分布関数はある確率分布に従うデータが値$${x}$$以下になる確率を返します。標準正規分布を基にした累積分布では平均値が0でそれ以下の値になる確率が50%となっています。累積分布関数があれば基になった確率分布を知らなくともデータがある値以下になる確率を計算することができます。
シグモイドとの比較
標準正規分布の累積分布関数は、シグモイド(Sigmoid)関数にも似ています。シグモイドにある値$${x}$$を与えると、その値に対応する確率が返されます。
よくある使い方としては、ある値$${x}$$に対して50%以上の確率かどうかで何らかの判断を下したりします。例えば、センチメント分析のモデルが出力した値をシグモイドに与えて、確率が50%以上なら映画が楽しいものであると判断するといった使い方をします。
このように確率を使うと何らかの判断するのに役立ちます。そういった意味では標準正規分布でも一般の正規分布でもシグモイドでも考えは同じです。
実際、GELUの論文でもSiLU(Sigmoid Linear Unit)を使うこともできると書かれています。SiLUでは標準正規分布の累積分布関数の代わりにシグモイド関数を使います。
$$
\text{SiLU}(x) = x \sigma(x)
$$
また、一般の正規分布の累積分布関数でも平均が0で無くなるだけで考え方は同じです。
ただし、GELUの論文では主に標準正規分布の累積分布関数を扱っています。そこには理由があります。
なぜ標準正規分布なのか
この記事が気に入ったらサポートをしてみませんか?