前回から、以下の本の解説を行っている。
要するに、ニューラルネットワークの理解をするための数学の解説だ。
初回は、関数についてざっと解説を行った。
以下の記事だ。
今回は、数列周りを解説していこう。
数列
まずはこいつから。
数列とは、単純に数の列のことだ。
一つ一つの数のことを項と呼び、最初の項だけ初項、二つ目以降はn番目の項を第n項と呼んだりする。
また、終わりがある数列を有限数列と呼んで、その最後の項を末項と呼ぶ。
さらに、有限数列に含まれる項の数のことをそのまま項数と呼ぶ。
と、まあこのあたりは用語なので一気に覚える必要もないだろう。
具体例を挙げてみる。
例えば、20以下の自然数について、奇数だけを抜き出して並べてみる。
1, 3, 5, 7, 9, 11, 13, 15, 17, 19
これも立派な数列だ。
初項は1、末項は19、項数は10個だ。
なお、数列全体を文字で表すこともある。
その場合、例えば\{a_n\}という感じで、後述する一般項を中括弧で囲むような書き方をする。
一般項
さて、ただ数を並べるだけではなく、法則を見つけて、数式で表したい。
そのときに、この一般項というやつを考える。
これは、第n項を、nを使った式で表そうという考え方だ。
ちなみに、この一般項は、通常はa_nという表し方をする。
では、実際に考えてみよう。
上の例で挙げた奇数の数列について、20以下という制限を取っ払おう。
その数列を\{a_n\}とする。
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, …
これについて、一般項を求めてみよう。
ちょっと丁寧に見てみると、
- 初項:1
- 第2項:1 + 2 = 3
- 第3項:1 + 2 + 2 = 5
- 第4項:1 + 2 + 2 + 2 = 7
- …
- 第n項:1 + 2 + 2 + … + 2 = ?
こんなイメージで、このハテナを求めればいい。
さて、式を見ると、各項について、1に2をn – 1回足しているのが分かるだろうか。
つまり、これを式にしてあげればいい。
よって、この数列の一般項は…
a_n = 2(n – 1) + 1 = 2n – 1
となる。
なお、高校の内容で、これは等差数列という数列になる。
そこから、公式を使ってもらってもいいだろう。
このように、基本的には隣り合った項がどのような関係になっているかに注目すると一般項のイメージがつきやすい。
また、一旦求めたら、具体的に計算してみることでそれが合っているかも確かめられる。
漸化式
さて、上の例では一般項をnから求める方法で計算した。
そうではなく、第n項の値を、一つ前の項との関係で表すのが、漸化式というやつだ。
ただ、これには初項の情報も必要になる。
これも具体例で見よう。
上で一般項を求めた奇数の数列\{a_n\}について、2を足すと次の項になるので…
\left\{ \begin{array}{ll} a_1 = 1 \\ a_n = a_{n – 1} + 2 \end{array} \right.
と表すことができる。
連立漸化式
さて、ここからちょっと複雑になる。
なんと、複数の数列を組み合わせて漸化式を考えることもできるのだ。
冒頭の本に紹介されていた例を出してみよう。
まず、二つの数列\{a_n\}と\{b_n\}について考える。
共に、初項は1だ。
そして、以下のように第n項を定義する。
\left\{ \begin{array}{ll} a_n = a_{n – 1} + 2b_{n – 1} + 2 \\ b_n = 2a_{n – 1} + 3b_{n – 1} + 1 \end{array} \right.
こうすると、それぞれの第n項を求めるためには、両方の一つ前の項が分かればよくなる。
このように、複数の数列の関係を結び付けたものを連立漸化式と呼ぶ。
試しに、第5項くらいまでこれらの項を求めてみよう。
n | a_n | b_n |
---|---|---|
1 | 1 | 1 |
2 | 5 | 6 |
3 | 19 | 29 |
4 | 79 | 126 |
5 | 333 | 537 |
さて、これらがどうニューラルネットワークに関連してくるかだが、学習時に使う誤差逆伝搬法というやつで応用される。
具体的な応用例は、その時にお見せしよう。
シグマ記号
ここまでは、数列にフォーカスを当ててきた。
ここからは、数学全般で使用される記号のお話だ。
ただ、数列と非常に相性がいいので、数列を題材に解説していこう。
例えば、ある数列\{a_n\}について、初項から第n項までの総和を求めたいとしよう。
その時、毎回全ての項を書くのは面倒だ。
そこで、このシグマ記号が使える。
シグマ記号は、以下の式で定義される。
\sum_{k = 1}^{n}a_k = a_1 + a_2 + … + a_{n – 1} + a_n
シグマ記号の下に、一時的に使う変数と、その初期値をイコールで書く。
記号の上には変数がどこまで増えるかを書く。
そして、その後ろに、和を取る数式を書く。
こうすることで、一時的な変数に初期値を代入したもの、1増やして代入したもの、さらに1増やして代入したもの、…とその数が上に書かれた数になるまで全てが足される。
非常に単純な式になるので、最初はかなり戸惑うだろうが、慣れてくればどういう意味かしっくりくるはずだ。
幾つか具体例を下に示すので、それも見ながら理解を深めて欲しい。
\sum_{k = 1}^{5}k = 1 + 2 + 3 + 4 + 5
\sum_{k = 1}^{4}k^2 = 1^2 + 2^2 + 3^2 + 4^2
\sum_{k = 1}^{3}a_k = a_1 + a_2 + a_3
シグマの線形性
このシグマには、線形性という性質が成り立っている。
具体的には、以下の性質だ。
\sum_{k = 1}^{n}(a_k + b_k) = \sum_{k = 1}^{n}a_k + \sum_{k = 1}^{n}b_k
\sum_{k = 1}^{n}ca_k = c\sum_{k = 1}^{n}a_k
どういうことか、日本語でも説明しよう。
一つ目、シグマ記号に書いた式の中に足し算(引き算)があれば、それぞれ別のシグマ記号に分けることができる。
二つ目、シグマ記号に書いた式が定数倍されていれば、それは足し終わった後に定数倍してもいい。
これらについて、証明してみよう。
まず一つ目。
シグマの定義から、まずはシグマを使わない形に書き直す。
\sum_{k = 1}^{n}(a_k + b_k) = a_1 + b_1 +a_2 + b_2 + … + a_n + b_n
次に、右辺を並び替える。
a_1 + b_1 +a_2 + b_2 + … + a_n + b_n = a_1 + a_2 + … + a_n + b_1 + b_2 + … + b_n
そして、シグマの定義を使って、a、bそれぞれでまとめる。
a_1 + a_2 + … + a_n + b_1 + b_2 + … + b_n = \sum_{k = 1}^{n}a_k + \sum_{k = 1}^{n}b_k
ということで、式変形だけで右辺を導き出せた、証明完了だ。
次に二つ目。
同じように、シグマを使わない形に書き直す。
\sum_{k = 1}^{n}ca_k = ca_1 + ca_2 + … + ca_n
右辺は全ての項にcが掛けられているので、これで括る。
ca_1 + ca_2 + … + ca_n = c(a_1 + a_2 + … + a_n)
この括弧内だけで、再度シグマの形に直す。
c(a_1 + a_2 + … + a_n) = c\sum_{k = 1}^{n}a_k
ということで、こちらも式変形だけで証明できた。
これらを覚えておくと計算がカンタンになることが多いので、是非身に付けておくといいだろう。
おわりに
本の内容はここまでだったので、今回はこのくらいにしておこう。
ただ、具体的な計算なんかがあまり紹介できなかったので、後日オマケとして追加することとしよう。
特にシグマの計算は慣れないと大変なので、幾つか練習問題を探して解いてみることをオススメする。
次回は、ベクトルを解説していく。
ベクトルはかなり密接に関係しているイメージなので、しっかりと要点を抑えながら進めていこう。
2020/11/01追記
ベクトルの解説を公開した。
以下リンクを貼っておくので、よかったら見ていってほしい。
コメント