Showing posts with label Activation Functions. Show all posts
Showing posts with label Activation Functions. Show all posts

2016-02-11

ニューラルネットの活性化関数 その3

次のページに活性化関数の式と導関数の一覧があるので、紹介する。
Activation function - Wikipedia, the free encyclopedia
https://en.wikipedia.org/wiki/Activation_function#Comparison_of_activation_functions

[関連記事]

2015-02-14

ニューラルネットの活性化関数 その2

記事「ニューラルネットの活性化関数 その1」の閲覧数がそこそこあるので、近年の活性化関数も記しておきます。

(1) Rectified linear unit (ReLU)
(2) Maxout activation functions (Maxout)

以下、簡単に解説しますが、不正確な表現も含みますので、正確な解釈は論文を読んでください。

(1) Rectified linear unit (ReLU) について

活性化関数は、
f(x) = max(0, x)
で、x > 0 の時は f(x) = x、x <= 0 の時は f(x) = 0 となります。
導関数は、
x > 0 の時は f'(x) = 1
です。x <= 0 の時は f'(x) = 0 となるので、結合荷重は変化しません。

こんな簡単な活性化関数で大丈夫なのかと思われるかもしれませんが、隠れ層のユニットの数がそこそこあれば、問題ないようです。

詳しくは次の Wikipedia のページを参照してください。
Rectifier (neural networks) - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Rectifier_(neural_networks)
(2) Maxout activation functions (Maxout) について

活性化関数は、複数の異なる傾きと切片の直線関数 f(x) = ax + b の最大値 (max) を求めて凸関数を作り、凸関数と凹関数(=凸関数の上下が逆)を組み合わせて、様々な関数を近似するというものです。

詳しくは次の論文を参照してください。
[1302.4389] Maxout Networks
http://arxiv.org/abs/1302.4389

[関連記事]

2013-08-25

ニューラルネットのシグモイド関数と tanh 関数の関係

ニューラルネットの標準シグモイド関数と tanh 関数の関係は次のようになります。

標準シグモイド関数は、
\[ sigm(x) = \frac{1}{1 + e^{-x}} \]
です。

tanh 関数の別表現は、
\[ \tanh(x) = -1 + \frac{2}{1 + e^{-2x}} \]
となります。

よって、
\[ \tanh(x) = -1 + 2sigm(2x) \]
となります。

つまり、標準シグモイド関数の入力値を2倍にして、出力値の値域を (-1, 1) に引き伸ばした感じです。

関連
参考

2012-11-10

ニューラルネットの活性化関数 その1

ニューラルネットの活性化関数 (activation function) としては次のようなものがある。
  1. 標準シグモイド関数 (standard sigmoid function):   y = 1 / (1 + exp(-x))   【グラフ】
  2. 双曲線正接関数:   y = tanh(x)   【グラフ】
  3. abs を使った関数:   y = x / (1 + abs(x))   【グラフ】
それぞれの導関数 (derivative) は次のとおり。
  1. y * (1 - y)
  2. 1 - y * y
  3. 1 / pow(1 + abs(x), 2) または pow(1 - abs(y), 2)
上記の活性化関数とその導関数は次の論文から引用した。
A Better Activation Function for Artificial Neural Networks, David Elliott, 1993
http://drum.lib.umd.edu/handle/1903/5355
次のサイトによると、活性化関数の計算の速さは (3) の abs を使った関数の方が (1) の標準シグモイド関数よりも2倍以上速いらしい。
※ 2004年の結果なので、最近の CPU では異なるかも知れない。
Neural Network Code Optimizations
http://sharpneat.sourceforge.net/network_optimization.html
その他、参考にしたサイト。
Backpropagator's Review
http://www.dontveter.com/bpr/activate.html

[追記]

[関連記事]