双曲線正接関数とその微分

双曲線正接ハイパボリックタンジェント関数

前回のシグモイド関数に続き、ニューラルネットワークの活性化関数でよく用いられる双曲線正接関数のお話です。

双曲線正接関数の定義を 式  (1) に示します。

 
\begin{align}
\displaystyle
\tanh (x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} \tag{1}
\end{align}

ちなみにこの双曲線正接関数は、三角関数正接  \tan (x) の定義(式  (2))とよく似ているので、このような名前になっています。

 
\begin{align}
\displaystyle
\tan (\theta) = \frac{e^{i \theta} - e^{-i\theta}}{i \left( e^{i \theta} + e^{-i \theta} \right) } \tag{2}
\end{align}

余談ですが、式  (2) は、高校で教わった定義  \tan (\theta) = \frac{\sin (\theta)}{ \cos (\theta)} とはずいぶん雰囲気が違います。 中身は同じはずなのに、なぜか得体の知れない複素数  i が紛れ込んでおり、実に奇妙です。

大学の微分の授業で「テイラー展開」を学んだ際に、 \tan (\theta ) を 式  (2) の形で記述できることを教わった覚えがありますが、当時の僕は(今もだけど)こんな式を見ても何物なのかまったく想像がつきませんでした(今もだけど)。

そこで、本題に入る前にちょっと横道に逸れて、オイラーの公式  e^{i \theta} = \cos ( \theta ) + i \sin (\theta) を出発点にして、 \tan (\theta) = \frac{e^{i \theta} - e^{-i\theta}}{i \left( e^{i \theta} + e^{-i \theta} \right) } を導出してみましょう。

導出:  \tan (\theta) = \frac{e^{i \theta} - e^{-i\theta}}{i \left( e^{i \theta} + e^{-i \theta} \right) }

 
\begin{align}
\displaystyle
e^{i \theta} &= \cos ( \theta ) + i \sin (\theta) \tag{3}
\end{align}

 (3) \theta に、改めて  -\theta を代入すると以下を得ます。
 
\begin{align}
\displaystyle
e^{-i \theta} &= \underbrace{ \cos (- \theta) }_{\cos (\theta ) } + i \underbrace{ \sin (- \theta) }_{- \sin (\theta)} \\
 &= \cos (\theta) - i \sin (\theta ) \tag{4}
\end{align}

 (3), 式  (4) から、 \cos (\theta) \sin (\theta ) をそれぞれ求めます。
 
\begin{align}
\require{cancel}
\displaystyle
e^{i \theta} + e^{-i \theta}  &= \cos ( \theta ) + i \sin (\theta) +  \cos (\theta) - i \sin (\theta ) \\
&= \cos ( \theta ) + \cos ( \theta ) + \cancel{ i \sin (\theta) - i \sin (\theta)} \\
&= 2 \cos ( \theta ) \tag{5} \\
\cos(\theta) &= \frac{e^{i \theta} + e^{-i \theta}}{2} \tag{6} \\
e^{i \theta} - e^{-i \theta}  &= \cos ( \theta ) + i \sin (\theta) - \left(  \cos (\theta) - i \sin (\theta ) \right) \\
 &= \cancel{ \cos ( \theta ) -  \cos (\theta)} + i \sin (\theta) + i \sin (\theta ) \\
 &= 2i \sin(\theta) \tag{7} \\
\sin(\theta ) &= \frac{e^{i \theta} - e^{-i \theta}}{2i} \tag{8}
\end{align}

あとは、上の式  (6), 式  (8) を高校で習った定義  \tan (\theta) = \frac{\sin (\theta)}{ \cos (\theta)} に代入すればおしまい。
 
\begin{align}
\require{cancel}
\displaystyle
\tan (\theta ) &= \frac{\sin (\theta ) }{ \cos (\theta)} \\
&= \frac{e^{i \theta} - e^{-i \theta}}{\cancel{2}i} \! \cdot \! \frac{\cancel{2}}{e^{i \theta} + e^{-i \theta }} \\
&= \frac{e^{i \theta} - e^{-i\theta}}{i \left( e^{i \theta} + e^{-i \theta} \right) } \tag{9}
\end{align}

めでたし。

で、ここまでは前置き。 今日のテーマは双曲線正接関数を微分することです。

本編と 1ミリも関係ない三角関数の話でこの記事の半分以上を浪費してしまいました。

双曲線正接関数の微分

前回のシグモイド関数よりも素性のよい関数なので、商の微分公式  \left( \frac{f}{g} \right)' = \frac{f' \cdot g - f\cdot g'}{g^2} を使うだけで導関数を求められます。

 
\begin{align}
\require{cancel}
\displaystyle
\tanh' (x) &= \left( \frac{e^x - e^{-x}}{e^x + e^{-x}} \right)' \\
&= \frac{ \left( e^x - e^{-x} \right)' \cdot \left(  e^x + e^{-x} \right) - \left( e^x - e^{-x} \right) \cdot \left(  e^x + e^{-x} \right)'  }{\left( e^x + e^{-x} \right)^2} \\
&= \frac{ \left( e^x + e^{-x} \right) \cdot \left(  e^x + e^{-x} \right) - \left( e^x - e^{-x} \right) \cdot \left(  e^x - e^{-x} \right)  }{\left( e^x + e^{-x} \right)^2} \\
&= \frac{ \left[ \left( e^x \right)^2 + 2 e^{x} e^{-x} + \left(e^{-x} \right)^2 \right]  - \left[ \left( e^x \right)^2 - 2e^{x}e^{-x} + \left( e^{-x} \right)^2  \right] }{\left( e^x + e^{-x} \right)^2} \\
&= \frac{  \left( e^x \right)^2 + 2 \cancel{ e^{x} e^{-x} } + \left(e^{-x} \right)^2  -  \left( e^x \right)^2 + 2 \cancel{ e^{x}e^{-x}} - \left( e^{-x} \right)^2   }{\left( e^x + e^{-x} \right)^2} \\
&= \frac{ 2 + 2 +  \cancel{ \left( e^x \right)^2 - \left( e^x \right)^2 } + \cancel{ \left( e^{-x} \right)^2 -\left( e^{-x} \right)^2 }  }{\left( e^x + e^{-x} \right)^2} \\
&= \frac{ 4 }{\left( e^x + e^{-x} \right)^2} \tag{10}
\end{align}

以上。 簡単でした。