Diary

Diary

日々学んだことをアウトプットする場として初めてみました

tanhとシグモイド関数の関係

tanhシグモイド関数の関係

とりあえず描画してみる

tanh


\tanh(x) = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}
import numpy as np
import matplotlib.pyplot as plt


x = np.linspace(-5, 5)

plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'
plt.ylim([0,1])
plt.plot(x, np.tanh(x))

f:id:kokoichi206:20210714222034p:plain

sigmoid


\sigma(x) = \frac{1}{1+e^{-x}}
def sigmoid(x):
  return 1 / (1 + np.exp(-x))

y = sigmoid(x)

plt.plot(x, y)

f:id:kokoichi206:20210714221350p:plain

どう違うの?

  • ぱっと見どっちも形似てて一緒じゃん?と思ったので比べてみました
  • 両方を図示してみる
    • tanhの方が早く収束してそう?
    • 絶対値が違う

f:id:kokoichi206:20210714222410p:plain

  • 数式の上では?

\begin{eqnarray*}
\tanh(x) &=& \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} \\
&=& \frac{-(e^{-x}+e^{x})+2e^{x}}{e^{x}+e^{-x}} \\
&=& -1 + 2\frac{e^{x}}{e^{x}+e^{-x}} \\
&=& -1 + 2\frac{1}{1+e^{-2x}} \\
&=& -1 + 2\sigma(2x)
\end{eqnarray*}
def sigmoid(x):
  return 1 / (1 + np.exp(-x))

def tanh_from_sigmoid(x):
  return -1 + 2 * sigmoid(2*x)

最後に

  • previewモードでは数式の見た目が崩れていたので書き方があってるか何回も調べたが、結局投稿すると大丈夫だった