ディープラーニングのための数学勉強結果「ニューラルネットワーク、関数」

最近、引っ越しをした。

その時の掃除で、以下の本が発掘された。

https://amzn.to/3jFxhxs

読んだ記憶がなく、折角なので勉強していくことにした。

今回から、その勉強結果をまとめていこうと思う。

本の目次から、メインはニューラルネットワークのようだ。

そして、ニューラルネットワーク自体の概要は以前別シリーズで解説したことがある。

ということで、概要はそちらに譲り、本シリーズはタイトルの通り、それの理解に必要な数学的知識の解説をメインで取り扱おう。

なお、勉強結果ということで、間違い等あったら申し訳ない。

では、始めていこう。

スポンサーリンク

ニューラルネットワークとは

先に、ニューラルネットワークの概要をまとめた記事を紹介しておく。

以下の記事だ。

この記事では、ニューラルネットワークが何者かと、計算式の結果だけを紹介していた。

この計算式の内容を理解できるように追っていくのが本シリーズというイメージだ。

関数

では、早速数学の解説に入っていこう。

今回は、関数というものを改めて解説していく。

基本は中学、高校でやったことメインだが、言葉も色々と補足する。

学生時代の復習だと思って見てもらえれば大丈夫だ。

関数とは

この言葉から改めて定義しよう。

二つの変数\(x\)、\(y\)があり、\(x\)の値を決めると\(y\)の値がただ一つに定まる、という関係が成り立っていたとしよう。

このとき、\(y\)は\(x\)の関数であるという言い方をする。

また、このときの\(x\)のことを独立変数、\(y\)のことを従属変数と呼んだりする。

独立変数を決めると、それに従って従属変数が定まる、という感じだ。

また、独立変数を括弧内に入れて、\(f(x)\)という書き方をすることも多い。

例えば、これから解説するような一次関数\(y = ax + b\)なんかは関数の一例だ。

一次関数

では、一次関数を解説していこう。

とはいえ、これは中学の内容で覚えている方も多いと思う。

\(a\)、\(b\)を定数として、\(x\)と\(y\)が以下の関係で表されるとき、これを一次関数と呼ぶ。

$$y = ax + b$$

このとき、\(a\)を傾き、\(b\)を切片と呼ぶ。

グラフにすると、直線になる。

…と、ここまでは中学の内容だ。

ここから、独立変数の種類を増やそうと思う。

まず、2つに増やしてみよう。

$$y = ax_1 + bx_2 + c$$

\(a\)、\(b\)、\(c\)が定数のとき、これも一次関数になる。

このように、三変数、四変数、…とどんどん増やすことができる。

ニューラルネットワークでは、各ユニットへの重み付きの入力がこの多変数の一次関数の形になっている。

また、学習時の誤差逆伝搬法でも使うので覚えておこう。

二次関数

一次関数では、各独立変数を含む項が高々一次だった。

二次関数は、その名の通り二次になる。

というわけで、改めて定義を見ていこう。

\(a\)、\(b\)、\(c\)が定数、かつ\(a\)が0ではないとして、\(x\)と\(y\)が以下の関係で表されるとき、これを二次関数と呼ぶ。

$$y = ax^2 + bx + c$$

まあそのままだ。

これをグラフにすると、放物線という物を投げたときの軌跡の形になる。

また、定数\(a\)が正の数のとき、必ず最小値が存在する、という性質がある。

この性質は、後程紹介する最小二乗法の基本になっている。

なお、\(a\)が0ではないというのは、0にすると一次関数になってしまうからつけているだけだ。

さて、一次関数と同じように独立変数を増やしてみよう。

独立変数を二つに増やすと、以下のようになる。

$$y = ax_1^2 + bx_1x_2 + cx_2^2 + px_1 + qx_2 + r$$

\(a\)、\(b\)、\(c\)、\(p\)、\(q\)、\(r\)は全て定数だ。

一気に長くなったが、これが二つの独立変数を持つ二次関数になる。

一次関数と同じく、三変数以上の多変数にすることももちろん可能だ。

単位ステップ関数

ここから、多分学校では習わなかった関数が出てくる。

まずは、この単位ステップ関数というもの。

とはいえ、これは非常に単純だ。

これを\(u(x)\)として、定義を式で書くと以下のようになる。

$$u(x) = \left\{
\begin{array}{ll}
0 & ( x < 0 ) \\
1 & ( x \geq 0 )
\end{array}
\right.$$

要するに、0より小さい値を入力すれば0を、0以上の値を入力すれば1を返す関数のことだ。

これは、ニューラルネットワークの原型モデルで使用されていたが、原点で不連続という性質が使いづらく、別の関数が使用されることになったそうだ。

指数関数とジグモイド関数

単位ステップ関数の代わりに使用され始めたのが、ジグモイド関数と呼ばれる関数…なのだが、その前にもう一つ、指数関数というものも紹介しておこう。

とはいえ、単純。

\(a\)を1以外の定数として以下の形で表される式を、指数関数と呼ぶ。

$$y = a^x$$

この\(a\)のことをていと呼んだりもする。

さて、この底でよく使用される、特別な定数がある。

それが、ネイピア数\(e\)だ。

これは、2.71828…と続く無理数で、特別な性質を持っている。

…が、それは微分辺りで話すとしよう。

さて、このネイピア数を底とした指数関数は、以下のようにも書くことができる。

$$exp(x) = e^x$$

これを含む形で、ジグモイド関数というものが定義できる。

$$\sigma(x) = \frac{1}{1 + exp(-x)} = \frac{1}{1 + e^{-x}}$$

この\(\sigma(x)\)というやつが、ジグモイド関数だ。

これは、中間層、出力層の各ユニットへの入力を\(x\)とし、出力を表す活性化関数の代表だ。

このジグモイド関数の特徴として、範囲は0より大きく、1より小さい

また、\(x\)が増えると\(\sigma(x)\)も増える、単調増加という性質もある。

さらに、どの点でも連続で、微分可能だ。

単位ステップ関数の弱点を克服できる形なのだ。

おわりに

今回は、関数に焦点を当てて解説を行った。

基本的なものが多いが、どれも重要なので覚えておこう。

次回は、数列と漸化式、そしてその総和を表す時によく使われるシグマ記号について解説しよう。

特にシグマは慣れないと難しいので、丁寧に解説するつもりだ。

今後の流れとして、このまま数学的な解説を続け、ニューラルネットワークの内容が説明できるようになったら、そちらに移ろうと思う。

それまで、今回の内容なんかは離れることになるが、しっかり覚えておきたい。

2020/10/31追記

次回となる数列、漸化式、シグマ記号についての記事を公開した。

リンクを貼っておくので、よかったらどうぞ。

オマケ:関数の連続

さて、単位ステップ関数とジグモイド関数の説明の中で、連続という言葉を使っていた。

これも定義できるので、オマケとして紹介しておこう。

ある関数\(f(x)\)が\(x = a\)で連続であるという時、以下三つの条件を満たす。

  • \(\lim_{x \to a+0}f(x) = \lim_{x \to a-0}f(x)\)より\(\lim_{x \to a}f(x)\)が存在する
  • \(f(a)\)が存在する
  • \(\lim_{x \to a}f(x) = f(a)\)

言葉で説明すると、\(x\)を\(a\)に両側から近づけたときの値が一致し、それとは別で\(f(a)\)も存在し、それらが等しいときにその部分で連続だと言える。

が、ちょっと分かりづらいだろう。

ということで、連続と不連続の例をそれぞれ見ていこう。

まずは連続の例で、一次関数\(f(x) = 2x + 1\)を見る。

これについて、\(x = 0\)の時に連続かどうかを見てみよう。

まず、小さい方(グラフで言うと左)から近づけてみると、\(\lim_{x \to a-0}f(x) = 1\)となる。

同じように、大きい方から近づけても、やはり\(\lim_{x \to a+0}f(x) = 1\)だ。

ということで、一つ目の条件はクリア、\(\lim_{x \to a}f(x) = 1\)となる。

次に二つ目、\(f(0) = 1\)なので問題なし。

最後に三つ目、これらの値が等しいので、関数\(f(x) = 2x + 1\)は\(x = 0\)で連続だと言える。

では、言えない例として、単位ステップ関数を見てみよう。

単位ステップ関数\(u(x)\)の定義を再掲しておく。

$$u(x) = \left\{
\begin{array}{ll}
0 & ( x < 0 ) \\
1 & ( x \geq 0 )
\end{array}
\right.$$

同じように、\(x = 0\)で連続かを見てみる。

まず、マイナス側から近づけると、\(x\)は0にはならないので、\(\lim_{x \to a-0}u(x) = 0\)となる。

次に、プラス側から近づけると、今度は\(\lim_{x \to a+0}u(x) = 1\)だ。

この二つが異なったため、\(\lim_{x \to 0}u(x)\)が決められず、連続ではない。

なお、グラフで見ても途中で線が切れているように見えるので、そういった意味では直感的に分かりやすい…のかもしれない。

この、連続かどうかは、後程解説する微分周りで重要になってくる。

基本的には連続であると分かっている関数を利用するので、ここは完全に理解しきる必要もないと思ったので、オマケにした。

というのと、本でもそれぞれの関数が連続かどうか、という記述しかなかったというのもある。

なお、より厳密に定義する方法もある。

気になる人は、「ε-δ論法」等で調べてもらえれば出てくるはずだ。

コメント

タイトルとURLをコピーしました