【機械学習】主要な活性化関数をまとめてみた
こんにちは!
今回は機械学習でよく使われる活性化関数をまとめてみたいと思います。
活性化関数とは、ある入力を、別の数値に変換して出力するものです。
機械学習でよく使われる活性化関数は、主に4つあります。
①STEP関数(ヘヴィサイドステップ関数)
②Sigmoid関数(ロジスティック関数)
③Tanh関数
④ReLU関数
一つずつ見ていきましょう。
1. STEP関数
はじめに、STEP関数を紹介します。
これは、とてもかんたんな関数で、
「入力された値が、ある値以上であれば1を、それ以下であれば0を返す」関数です。
この関数を使うことによって、入力された値がある値以上か、またはそれ以下を判別することができます。
最もよく使われる関数は、ヘヴィサイドステップ関数とよばれるもので、これは入力された値が0以上か0未満かを判別します。
数式だと、このように表現します。
グラフにするとこんな感じになります。
用途によっては、x=0のときは0としたり、1/2としたり、様々なバリエーションがあるみたいです。
とてもシンプルで使いやすい関数なのですが、実は勾配降下法というアルゴリズムに使えなかったりと不便な点もありました。
そこで、次に紹介するSigmoid関数が登場します。
2. Sigmoid関数(ロジスティック関数)
Sigmoid関数とは、以下のように表せられる関数のことです。
グラフにするとこんな感じです。
0から1の値をなめらかにとるS字型の曲線ですね。
実は、この形がギリシャ文字のシグマ(sigma)に似ていることから、Sigmoid関数という名称がつけられています。
ギリシャ文字のシグマは、大文字でΣ、小文字でσなのですが、単語の末尾ではςのように書きます。このςに似ているとみなされたとのことです。(あんまり似てない気がするけど・・・)
Sigmoid関数は、生物のニューロン(神経細胞)がこれに似た関数を使っているようにみえることから、長年科学者たちに重要視されていました。
しかし、人工ニューラルネットワーク(ANN)では、このSIgmoid関数よりも一般的に良い性能を持つ関数があることがわかってきました。
そこで、次にまずはSigmoid関数に似ているTanh関数を紹介します。
3. Tanh関数
Tanh関数とは、別名ハイパボリックタンジェント(hyperbolic tangent)関数と呼ばれる関数で、Sigmoid関数に似た形をしています。
実際、Tanh関数は、Sigmoid関数σを用いて
と表されます。
具体的に表すと、
になります。
この関数は、グラフにすると
という形をしていて、Sigmoid関数によく似た形状をしていることがわかります。
Tanh関数がSigmoid関数と異なるところは、Sigmoid関数の出力が0から1の範囲なのに対し、Tanh関数は-1から1を出力としてもつところです。
これによって、ニューラルネットワークの各層の出力が0を中心に散らばる傾向があり、収束するまでの時間を短縮できるという利点があります。
4. ReLU関数
最後に、ReLU関数を紹介します。
ReLu関数は、一般にSigmoid関数より性能が良い関数として、重宝されています。
ReLU関数は、入力された値と0のうち、大きい方を返すという、とてもシンプルな関数です。
ReLU関数とは、Rectified Linear Unit関数の略であり、Rectifiedは「整流された」という意味を持ちます。
確かに、負の値には0を返し、正の値はそのまま通すのは、ダイオードみたいなところがありますね。
このReLU関数は、x=0で微分できず、またx<0で導関数が0になってしまうため、一見すると使いづらそうですが、短時間で計算できるうえに、出力が最大値を持たないことから、勾配消失/爆発問題と呼ばれる問題の緩和に貢献します。
また、ReLU関数には、SELU関数や、leakey ReLU関数などの改良版があり、基本的にはそちらの改良版が使われています。
これらの関数についてもまとめてみたいところですが、分量の都合上次回以降の記事に回したいと思います。
5. まとめ
機械学習でよく使われる活性化関数には、
①STEP関数(ヘヴィサイドステップ関数)
②Sigmoid関数(ロジスティック関数)
③Tanh関数
④ReLU関数
等があります。
STEP関数は、入力された値がある値以上か以下かを判別する関数で、
Sigmoid関数、Tanh関数、ReLU関数は勾配を持つ活性化関数です。
Sigmoid関数は、自然界のニューロン(神経細胞)のアルゴリズムの一部に似ていて、Tanh関数やReLu関数は時間短縮であったりSigmoid関数より一般的に良い性能を持つものとして重宝されています。
さらに、ReLU関数には、SELU関数やleakey ReLu関数などの改良版があり、これらは機械学習の分野で広く活用されています。
6.参考文献
Aurelien Geron 「scikit-learn、Keras、TensorFlowによる実践機械学習 第2版」オライリー・ジャパン 2020/10/30