対象読者
ここでは、AIを実装する上で使用頻度の高い活性化関数を解説します。また、解説はAscendBeyond式にのっとり、複雑な概念理解には重きを置かず実装に必要な最低限の重要なポイント知識のみを提供しています。座学で時間を浪費するのは勿体ないです。
やはり、座学よりも実践に時間を費やすことが一流のAIエンジニアへの一歩となります。
p.s.AscendBeyond式とは数学嫌いや複雑な概念理解が苦手な人のためのAI勉強ロードマップをあらわsます。詳しくはこちらにあります。↓
シグモイド関数
シグモイド関数のポイント
- シグモイド関数は、入力を0から1の範囲に変換します。
- 入力が大きい場合→出力が1に近づく&微分値が小さくなる(勾配消失問題)
- 入力が小さい場合→出力が0に近づく&微分値が大きく
- 非線形性を持つ→複雑なパターンを学習できる
- 逆伝播アルゴリズムに適する
- シグモイド関数は、中間層や出力層で使用される
- シグモイド関数は、確率の推定に使われる
- 出力が0または1に近づきすぎる→学習が進まなくなる(勾配が急激に小さくなるため)
おまけ:シグモイド関数の数式
$$f(x)=\frac{1}{1+e^{-x}}$$
式の解釈:入力(x)が大きいと1に近づき、小さい値であるほど0に近づきます。
ReLU関数
ReLU関数のポイント
- ReLU関数は、
- 入力が0以下の場合→0を出力&勾配消失問題を引き起こす
- 入力が0より大きい場合→入力をそのまま出力&勾配が急激に増加し学習を加速させる
- 単純な計算であり、勾配消失問題を軽減できる(0以下は例外)
- 学習速度の向上を図れる
- ReLU関数は非線形関数→複雑なパターンを学習できる
- 逆伝播アルゴリズムに適する
- ReLU関数は、主に中間層の活性化関数として使用
- 入力のスケーリングや特徴抽出に適す
- 死んだニューロン問題:
ReLU関数では負の値は0になるため、1度0になったら活性化は起こりにくくなる
→死んだニューロンが増えると表現が制限される - 画像認識・音声認識や自然言語に適する
#画像などの画素値は負の値に意味を持たないため、スパースが有効活用できる
#逆に自然現象(温度、速度)や株価の変動率などは負の値に意味があるのでReLUは不向き - スパース:
0になっている箇所が多いこと。スパースなデータは多くの要素が無価値である可能性が高く、重要な情報が少数の要素に集中していることが多い。
おまけ:ReLU関数の数式
$$ReLU(x)=max(0,x)$$
式の解釈:入力が0より大きければ、その値をそのまま出力し0以下の場合は0を出力します。
ソフトマックス関数
ソフトマックス関数のポイント
- ソフトマックス関数は、モデルの出力を確率分布に変換する
- 入力の値を正規化する
- それぞれのクラスに対する確率を出力します。
- 出力は0から1の間の値であり、全ての出力の合計は1になります。
- ソフトマックス関数は非線形関数→複雑なクラス分類問題に適す
- 入力が大きい場合→より強調される(指数関数の性質)
- ソフトマックス関数は、多クラス分類問題に適す
- 画像分類や自然言語処理に適す
- モデルの最後の層で使用
- ソフトマックス関数は、計算コストが高くなる(指数関数の性質)
- クラス数が多い場合→勾配の不安定性や計算精度の問題が発生
- 回帰問題に不向き:
回帰問題は連続値の出力が必要であり、ソフトマックスの複雑な正規化は過剰となる - 2値分類に不向き:
#ソフトマックスは複数の入力に対応した出力となるため、計算コストが高くなる。わざわざ2つだけの分類に使うのは過剰。→シグモイド関数で十分
おまけ:ソフトマックス関数の数式
$$\text{softmax}(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{N} e^{x_j}}$$
式の解釈:与えられた入力(x_i)の各要素を指数関数で変換し、その指数関数の値を全て足し合わせてから、それぞれの指数関数の値を合計値で割ることで入力を確率分布として変換できます。
おわりに
ここで、紹介した関数がある程度、頭に入ったらあとは実践あるのみです。もしあなたがAIの知識人になりたい場合は、座学を極めるべきですがAIの作り手になりたいのならどんどん経験することが大切だと思います。
こちらに、解説した関数を使った入門コースを置いておくので興味があったらご自由にお使いください。