1変数関数の微分~0から学ぶ機械学習のための基本数学~
こんにちは。管理人のピヨ猫でーす。AIを作りたい。世に広めたい。応援よろ(^○^)
機械学習をする上で基本的な数学は頭に入れておいた方が良いので、復習がてら記事にすることにしました。と思ったら、復習どころか全然覚えてない(-_-;)
めげずに頑張ります。
本日は微分について記事に致します。
記事に書こうかとも思いましたが、調べてみると先人が既に完璧な記事を書いて下さっていました。
いやーすごい分かり易い!!
以上。本日の記事おしまい。
・・・ではつまらないので、pythonで微分のおさらいをしてみました。
関数とはある値を与えると決まった計算結果を返してくれるもののことでした。
簡単のために今回は1変数関数を使います。
1変数関数とはその名の通り変数が一つの関数です。
例えば、y = 3x^2+2x+1は、xにある値を与えると 3x^2+2x+1の計算結果を返してくれる関数です。x=1であればy=6、x=0であればy=4となります。
これをPythonで表してみましょう。
import matplotlib.pyplot as plt
import numpy as np
import sympy as sym
x = np.arange(-5, 5, 0.1)
y = 3*x**2 + 2*x + 1
plt.plot(x, y)
◆ 結果
1変数関数の微分はシンプルです。
つまり、x^3の微分は3x^2、x^2の微分は2x^1 (=2x)、xの微分はx^0 (=1)です。
y = 3x^2+2x+1 であれば、y' = 6x+2となります。
Pythonで表すとこうなります。
import numpy as np
import sympy as sym
x = Symbol('x')
# y = 3x^2 + 2x + 1
y = 3*x**2 + 2*x + 1
# yの微分
sym.diff(y)
◆ 結果
6*x + 2
ここまでならPythonを使うまでもないですが、1変数関数といっても沢山あります。
高校のころに習った三角関数や指数関数も1変数関数です。
復習がてらPythonで書いてみました。
- sin
ソース:y = sin(x)
結果:cos(x)
- cos
ソース:y = cos(x)
結果:-sin(x)
他にも色々あります。
後はQiitaさんにバトンタッチ(-_-;)
色々な微分があることが分かりました。
筆者は全てを空では言えませんがQiitaさんを調べれば色々書いてあるし、Pythonを使うと簡単に微分が導けることも分かったので、簡単な微分なら調べ、思い出して何とか計算できそうです。
でところで微分って何に使うんでしたっけ??
機械学習の記事なのに、機械学習で微分を何に使うか記載していなかったので、最後に記載します(-_-;)
実は1節で紹介した神記事「機械学習のための数学のおさらい」に記載されていますが、大事なのでここだけは記事から引用させてもらい記載します。
- 機械学習とはデータから関数、y=f(x, b)を作る仕事
- 目的のデータに『良く合う(適合する)』関数を作りたい
- 関数の形はパラメータbで来ます
- bによる関数fの適合度関数E=h(b)とする
- 関数hの最大(極大)値・最少(極小)値を求めるのに、微分法が使える。
- なので、微分が機械学習に必要となる。
うーん。わかったようで、まだ自分が理解していないかも。
今度は適合関数の最大、最少値の導き方を記事にしてみたいと思います。
◆ 推薦図書
詳解 ディープラーニング TensorFlow・Kerasによる時系列データ処理 [ 巣籠 悠輔 ] 価格:3,672円 |
【送料無料】 機械学習 データを読み解くアルゴリズムの技法 / 竹村彰通 【本】 価格:6,696円 |