関数・微分の演習と解説|高校数学の演習を通して理解するニューラルネットワーク #1

f:id:lib-arts:20181228181633p:plain

機械学習を理解するにあたって数学は必要かという質問はよく聞かれますが、程度によりますが最低限は必要だと答えるようにしています。最低限というのも色々と考え方がありますが、個人的には高校数学〜大学の教養過程の導入(完璧までいかなくてもOK)ほどは把握していないと直感的なイメージすら湧かないのでよくないと思います。
研究者でないのであれば理論書を完璧に理解しようというのも極端ですが、一方で数学を完全に避けて言葉だけで理解するというのもまた極端だと思います。そのため、難しすぎずそれによって得られる知見が多いのが、高校数学を中心とする範囲なのではと考えています。
分野としては、関数、微積、数列、極限、ベクトル、行列、確率、集合などは基礎的なレベルである程度掴んでおくのが望ましいと思います。

当連載は、高校数学の演習を通して機械学習アルゴリズムの一つであるニューラルネットワークを理解しようというものです。簡単な6題の例題をもとにニューラルネットワークの仕組みに現れる基礎的な数学についてフォーカスします。
#1では関数と微分について取り扱えればと思います。
以下、目次になります。

1. 例題① 関数
2. 例題② 微分の定義
3. まとめ


1. 例題① 関数

1節ではニューラルネットワークのベースとなる関数について取り扱います。難しそうに思えますが、実はニューラルネットワークも関数なので、関数を理解できれば大枠の概要をつかむことができます。

ex.01

f(x) = x^2 + 3x + 2においてf(0), f(4), f(a), f(x+h)を求めよ。

Answer.

f(0) = 0^2 + 3×0 + 2 = 2

f(4) = 4^2 + 3×4 + 2 = 16 + 12 + 2 =30

f(a) = a^2 + 3a + 2

f(x+h) = (x+h)^2 + 3(x+h) + 2

解説.

Wikipediaの記述によると関数とは「ある変数に依存して決まる値あるいはその対応を表す式の事」とされています。*1 前述の記述だと少々抽象的なので、問題において具体的に考えるとxの値を与えると数式にしたがって値を返すというのが関数です。あまり難しく考えるとわからなくなると思うので、上記の解答を元にイメージをつかんでいただくのが良いかと思います。

関数を考える上でのイメージとしては、箱に値を入力して出力を得るというイメージで考えておくのが良いかと思います。


2. 例題② 微分の定義

2節では微分の定義について取り扱います。ニューラルネットワークなどの機械学習の学習のアルゴリズムのいくつかは勾配(変数が多い際の微分の値)に基づいて学習が行われますので微分の知識は必須となります。

ex.02

f(x) = x^2微分を以下の微分の定義式に基づいて行え。

f'(x) = \lim_{h \to 0} {\Large \frac{f(x+h) - f(x)} {h}}

Answer.

f'(x) = \lim_{h \to 0} {\Large \frac{(x+h)^2 - x^2} {h}} = \lim_{h \to 0} {\Large \frac{2xh + h^2} {h}} = \lim_{h \to 0}(2x+h) = 2x

解説.

式の形は若干複雑ですが、ex.01で抑えた関数の計算を元に展開していけば上記のような結果を得ることができます。ここで、微分の定義式の意味は幅hの微小区間における関数の傾きにおいて幅hを0に近づけているので、点xでのf(x)の傾きを計算していることがわかります。このように微分とは微小区間における傾きの極限であることであるということについて意識しておくことは重要です。

また、(x^n)' = nx^{n-1}というのもAnswerと同様の流れで導出することができます。hがついている項は極限を取った時に0になるということと、二項定理においてhの一乗がかかる項の係数とxの乗数に着目すれば導出することができます。


3. まとめ

#1では簡単な関数の演習と、微分の定義を用いた関数の微分について取り扱いました。#2では最小値問題を機械学習の学習の際に用いられる勾配法などの最適化などと紐付けながら解説ができればと思います。

 

↓当シリーズ記事の内容を元に再構成と加筆を行い電子書籍化を行いました!pdf版が欲しいなどありましたら下記をご購入いただけたら大変嬉しいです!!

*1:Wikipediaを引用することについて賛否はあると思うのですが、定義について深く議論する目的以外では十分だと考えています。