#目的
ニューラルネットワークの活性化関数にSigmoid関数とReLU関数がある。
個人的には、その2つの関係を長らく勘違いしていたので手短にその内容を示す。
#Sigmoid関数とReLU関数
Sigmoid関数
h(x) = \frac{1}{1+exp(-x)}
ReLU関数
h(x) = \left\{
\begin{array}{ll}
x & (x \gt 0) \\
0 & (x \leq 0)
\end{array}
\right.
#勘違い
上記の関数の内容をみると、Sigmoid関数のほうが高度な、一般的な意味で、レベルの高い関数にみえる。
個人的には、Sigmoid関数のexp()含む計算の処理時間を短縮するために、ReLU関数というのが、新たに、導入されたと考えていた。
#Sigmoid関数とReLU関数の位置づけ
ただしくは、以下に引用するとおりの状況だと思う。
##「ゼロから作るDeep Learning -- Pythonで学ぶディープラーニングの理論と実装」(発行所 株式会社オライリー・ジャパン)
p53引用
シグモイド関数は、ニューラルネットワークの歴史において、古くから利用されてきましたが、最近ではReLU(Rectified Linear Unit)という関数が主に用いられます。
##wiki
ReLUについて
(出典:https://ja.wikipedia.org/wiki/活性化関数)
Yann LeCunやジェフリー・ヒントンらが雑誌ネイチャーに書いた論文では、2015年5月現在これが最善であるとしている。
(出典:https://en.wikipedia.org/wiki/Rectifier_(neural_networks))
It has been demonstrated for the first time in 2011 to enable better training of deeper networks, compared to the widely-used activation functions prior to 2011, e.g., the logistic sigmoid (which is inspired by probability theory; see logistic regression) and its more practical counterpart, the hyperbolic tangent. The rectifier is, as of 2017, the most popular activation function for deep neural networks.
#まとめ
ReLUを使うのが一般的、かつ、良い。
実際に、SigmoidとReLUの両方を使って性能比較されている報告も沢山ありますが、どう使うという条件を合わせるのが難しいと思うので、それらの情報、参考程度かとも思います。実際に、よい性能を出しているモデルがどちらを使っているのかで、判断するのが妥当だと思います。それは、今は、Sigmoidではないという結論だと思います。
コメントなどあれば、お願いします。
#関連(本人)
良書「ゼロから作るDeep Learning -- Pythonで学ぶディープラーニングの理論と実装」を読む