活性化関数

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

活性化関数(かっせいかかんすう、: activation function)もしくは伝達関数(でんたつかんすう、: transfer function)とは、ニューラルネットワークにおいて、線形変換をした後に適用する非線形関数もしくは恒等関数のこと。

概要[編集]

人工神経は1つ以上の入力を受け取り(1つ以上の樹状突起に相当)、それらの総和から出力(シナプス)を生成する。通常、各ノードの総和には重み付けがされ、活性化関数に渡される。

Artificial neuron.png

数式では、以下の が活性化関数。

活性化関数としてはパーセプトロンが登場した頃の1950年代はステップ関数が多く、1986年のバックプロパゲーションの発表以降はシグモイド関数が最も一般的だったが、現在は ReLU(ランプ関数)の方が良いと言われる[1]。活性化関数は単調増加関数が使われる事が多いが、必ずしもそうしなければいけないという物でもなく動径基底関数なども使われる。

種類[編集]

人工神経の活性化関数は、ネットワークを強化または単純化するような特性を持つものが選ばれる。実際、線型伝達関数を使った多層パーセプトロンには、全く等価な単層ネットワークが必ず存在する。従って、多層ネットワークの利点を生かすには非線形関数が必須である。

以下ステップ関数と線形結合の説明では、人工神経への全入力の重み付けされた総和を u で表し、入力数を n で表す。

ここで w はシナプスの重み付けベクトルであり、x は入力ベクトルである。これはバイアス項を加える前の値。

ステップ関数(形式ニューロン)[編集]

ステップ関数の出力 y は 0 か 1 の二値であり、u がしきい値 b より大きいか小さいかで出力が決定される。入力の総和がしきい値を超えたとき、出力信号が 1 として出力される。

パーセプトロンが登場した頃はよく使われた関数であり、ステップ関数も非線形関数。

線形結合(単純パーセプトロン)[編集]

出力 yu にバイアス値 b を加えた値となる

この式に基づいたネットワークを「単純パーセプトロン」と呼ぶ。一般にこのような純粋な形式の伝達関数は回帰設定の場合のみしか使えない。二値分類設定では出力の符号で 1 または 0 に対応させる。これはすなわち、上述のステップ関数で b の符号を反転した場合と等価であり、学習アルゴリズムで有効である。

シグモイド関数[編集]

比較的単純な非線形関数であるシグモイド関数は、微分の計算も容易であることから1986年に発表されたバックプロパゲーションを伴うニューラルネットワークで使われる。ネットワークを数学的に扱うことが容易になるため、シミュレーションの計算負荷を減らしたいと思っていた初期の研究者がシグモイド関数をこぞって採用した。

ς型の関数の比較

1990年代になり、活性化関数は原点を通すべきと言う考えから、標準シグモイド関数よりもそれを線形変換した tanh の方が良いと提案された[2][3]

ソフトサイン[編集]

下記関数をソフトサイン(: softsign)と呼び、2010年の Xavier Glorot らの研究では tanh と同程度に良かった[3]

ソフトプラス[編集]

青がReLU(ランプ関数)、緑がソフトプラス

下記関数をソフトプラス(: softplus)と呼び、これが活性化関数として使われることもある。

ReLU(ランプ関数)[編集]

2011年、Xavier Glorot らは隠れ層の活性化関数として max(0, x) を使った方が tanh やソフトプラスよりも改善するということを発表した[4]。一般的にはこれはランプ関数と呼ばれるが、ニューラルネットワークの世界では ReLU (: Rectified Linear Unit, Rectifier, 正規化線形関数)と呼ばれる。Yann LeCun やジェフリー・ヒントンらが雑誌ネイチャーに書いた論文では、2015年5月現在これが最善であるとしている[1]。発想としては区分線形関数を使った1次スプライン補間である。線形補間を参照。

2013年に max(0.01x, x) が LReL (leaky rectified linear) と命名された。ただし、命名者はこの活性化関数を使う意味はなかったと報告している[5]

切断冪関数[編集]

ランプ関数(ReLU)を一般化すると切断冪関数になり、n次スプライン補間。2乗はクォーターパイプ関数(: quarter-pipe)とも呼ばれる[6]

多項式[編集]

2次以上の多項式も非線形関数であり、活性化関数に使える。

絶対値[編集]

絶対値はReLU(ランプ関数)と同様、線形に近い非線形関数。傾きが0の場所が無いという特徴がある。

動径基底関数[編集]

1988年に David S. Broomhead らが活性化関数に動径基底関数を使う物を動径基底関数ネットワーク(RBFネットワーク)と命名した。[7]

ウェーブレット[編集]

1992年に Qinghua Zhang らが活性化関数にウェーブレットを使う物をウェーブレットネットワークと命名した[8]

maxout[編集]

2013年に Ian J. Goodfellow らが発表した活性化関数[9]。一般的な活性化関数は実数から実数への写像だが、maxout は線形変換した後の複数の実数の最大値を活性化関数の出力とする。発表者は dropout (層内を全結合にしない手法)との併用で論文を書いている。

出力層の活性化関数と誤差関数[編集]

出力層は隠れ層とは区別して設計する。活性化関数と誤差関数をセットで設計する必要がある。そして、問題の種類ごとにそれらは異なる。絶対的なルールはないが、下記の方法が一般的な方法である。ここであげた手法は誤差関数の偏微分が全て出力と目標値の差になっていて扱いやすい。

変数の使い方は以下の通り。

  • :訓練データの個数
  • :n番目の訓練データの目標値
  • :n番目の訓練データの出力

回帰[編集]

  • 活性化関数:
  • 誤差関数:
  • 誤差関数の偏微分:

二値分類[編集]

出力は1つで確率と解釈する。 は 0 または 1 もしくは確率。誤差関数は最尤推定で導出できる。

  • 活性化関数:
  • 誤差関数:
  • 誤差関数の偏微分:

多クラス分類[編集]

K 個のクラスに分類する。出力は K 個で、総和は 1 であり、そのクラスに所属する確率と解釈する。 は 0 または 1 もしくは確率で、n 番目の訓練データがクラス k に所属する時 1。交差エントロピーを使用している。この活性化関数はソフトマックス関数と呼ばれる。このまま計算すると浮動小数点数に入りきらなく、オーバーフローすることが多いが、 は全て同じ数を引いた場合は結果が同じになる事を利用して、 を全てから減算して活性化関数を計算すると良い。

  • 活性化関数:
  • 誤差関数:
  • 誤差関数の偏微分:

論理演算の表現力[編集]

単純パーセプトロンでは XOR を表現できない。このことを1969年にマービン・ミンスキーらに批判された。下記、ステップ関数(形式ニューロン)とランプ関数(ReLU)により論理演算を表現する。なお、入力は形式ニューロンでは真 = 1で偽 = 0、ReLU は真 = 1で偽 = -1である。ReLU は出力の正負で真偽を判断する。

論理演算の表現力
論理演算 ステップ関数(形式ニューロン) ランプ関数(ReLU)
NOT
AND
OR
XOR

関数近似[編集]

ランプ関数(ReLU)にて を近似してみる。

訓練データ
(x, y) = {(-3, 9), (-2, 4), (-1, 1), (0, 0), (1, 1), (2, 4), (3, 9)}
学習結果

これは折れ線によって近似している(線形補間)。これを一般化すると十分な数のニューロンがあれば任意の関数がランプ関数(ReLU)を活性化関数として使って表現できることが分かる。

参照[編集]

  1. ^ a b Yann LeCun; Yoshua Bengio; Geoffrey Hinton (2015-05-28). “Deep learning”. Nature 521 (7553): 436-444. doi:10.1038/nature14539. 
  2. ^ Yann LeCun; Leon Bottou; Genevieve B. Orr; Klaus-Robert Muller (1998). Efficient BackProp. http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf. 
  3. ^ a b Xavier Glorot; Yoshua Bengio (2010). Understanding the difficulty of training deep feedforward neural networks. http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf. 
  4. ^ Xavier Glorot; Antoine Bordes; Yoshua Bengio. “Deep Sparse Rectifier Neural Networks”. Proceedings of the Fourteenth International Conference on Artificial Intelligence and Statistics (AISTATS-11) 15: 315-323. http://jmlr.csail.mit.edu/proceedings/papers/v15/glorot11a/glorot11a.pdf. 
  5. ^ Andrew L. Maas; Awni Y. Hannun; Andrew Y. Ng (2013). Rectifier Nonlinearities Improve Neural Network Acoustic Models. http://web.stanford.edu/~awni/papers/relu_hybrid_icml2013_final.pdf. 
  6. ^ Youngmin Cho; Lawrence K. Saul (2009). “Kernel Methods for Deep Learning”. Advances in Neural Information Processing Systems 22: 342-350. http://papers.nips.cc/paper/3628-kernel-methods-for-deep-learning.pdf. 
  7. ^ Broomhead, David S.; Lowe, David (1988). Radial basis functions, multi-variable functional interpolation and adaptive networks. http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA196234. 
  8. ^ Qinghua Zhang; Albert Benveniste (1992). “Wavelet networks”. IEEE Trans. Neural Networks 3: 889-898. http://people.rennes.inria.fr/Albert.Benveniste/pub/Wavenets.pdf. 
  9. ^ Ian J. Goodfellow; David Warde-Farley; Mehdi Mirza; Aaron Courville; Yoshua Bengio (2013). “Maxout Networks”. 30th International Conference on Machine Learning. http://arxiv.org/abs/1302.4389.