logit の代わりにtanh を使ってはいけないのですか?

MikuHatsune2017-11-20

講義の最中にこんな質問があって、「logit は0-1 の範囲にあって、確率として扱いやすいから」という回答だったが、あとで
スケールが変わっただけで本質的には同じということがアナウンスされていた。
 
logit は
f(x)=\frac{e^x}{1+e^x}
tanh
g(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}
となり、これらの関係は
g(x)=2f(2x)-1
となる。f(x)=g(x) となるのは、x_0=\log(1+\sqrt{2}) のときである。
 
logit が確率として頻用されるのは[0, 1] で収まるからだし、tanh が[-1, 1] で収まるのはdeep learning の活性化関数で頻用される。
また、こういう関数たちは連続なので微分が可能だから扱いやすいのだろう、と数学素人的に思う。

x <- seq(-5, 5, length=3000)
y <- cbind(logistic=gtools::inv.logit(x), tanh=tanh(x))
x0 <- log(1+sqrt(2))
cols <- c("blue", "red")
matplot(x, y, type="l", col=cols, lwd=5, lty=1)
legend("bottomright", legend=colnames(y), col=cols, lwd=5, cex=2)
points(x0, tanh(x0), pch=16, cex=2)