最近激アツな人工知能、機械学習、ディープラーニングを勉強しよう!!!
でも、結局数学の知識が足りず、数式の意味が分からず付いていけなくなり妥協してしまった。。。。
今回は、このような方のために機械学習のための数学の基礎の基礎である平方根と累乗根についてまとめました。
この記事を書いている僕はシステムエンジニア6年目
普段はJavaでWebアプリを作ったりSQL書いたり・・・、
なので最近流行りのPython、数学、人工知能、デープラーニングができる人には正直憧れています。。。。
自分も一から勉強してこの辺りできるようになりたい、、画像認識モデルを作ったりして、アプリに組み込みたい!
これが機械学習、深層学習の勉強を始めたきっかけでした。
体系的に、この分野の基礎から学ぼうとJDLAのG検定の勉強をして合格するところまでいきました。
次のステップとして、
実際にPythonでコードを書きながら機械学習や深層学習の知識を深めようと考え、これら買って勉強してみたのですが、、、
学生時代に勉強したはずの数学を忘れてしまっていて、機械学習の勉強以前にでつまずきました。。。
今回は、機械学習とディープラーニングの勉強をしていて、
復習が必要と感じた部分、抑えておくべきと感じた数学の基礎である指数関数と対数関数についてまとめてみました。
指数関数と対数関数
指数関数の定義とグラフ
まず指数関数の定義を確認します。
【定義】
数\( a > 0\)、\( a \neq 1\)として
$$ y = a^{x} $$
と表される関数を指数関数という。
指数関数のグラフは以下のようになります。
上のグラフを見ると、\( a > 1\)のときにグラフが右上がりで、
\( 0 < a < 1\)のとき、右下がりとなる特徴があることが分かります。
また、2つのグラフは共に
\( x = 0\)のときには\( a^{0} = 1\)、
\( x = 1\)のときには、\( a^{1} = a\)になります。
ちなみに、上のグラフを出力したPythonのコードは以下です。
# matplotlib.pyplotをpltとしてimport
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-3, 3, 0.1)
ay = np.power(2, x)
by = np.power(0.5, x)
positions = [-3, -1, 0, 1, 3]
labels = ["-3", "1", "0", "1", "3"]
# Figureオブジェクトを作成
fig = plt.figure(figsize=(12, 6))
# 1×2のfigureにオブジェクトを追加
ax = fig.add_subplot(1, 2, 1)
bx = fig.add_subplot(1, 2, 2)
# サブプロットのグラフにグリッドを表示する
ax.grid(True)
bx.grid(True)
# サブプロットのグラフのタイトルを設定する
ax.set_title("a > 1(a = 2)")
bx.set_title("0 < a < 1(a = 0.5)")
# サブプロットaxのグラフのx軸、y軸にラベルを設定する
ax.set_xlabel("x")
ax.set_ylabel("y")
bx.set_xlabel("x")
bx.set_ylabel("y")
# サブプロットのグラフのx軸に目盛りを設定する
ax.set_xticks(positions)
ax.set_xticklabels(labels)
bx.set_xticks(positions)
bx.set_xticklabels(labels)
# データx, yをグラフにプロットする
ax.plot(x, ay)
bx.plot(x, by)
plt.show()
対数の定義と公式
対数関数の前に対数の定義を確認します。
【定義】
ある数\( x\)が\( a^{y}\)で表されるときの指数\( y\)を\( a\)を底とする\( x\)の対数といい、記号\(\log\)を用いて\(y = \log_{a}x\)と表される。
(\( a\)を底、\( x\)を真数という。
ただし、\( a > 0\)、\( a \neq 1\)かつ\( x > 0\))
対数と指数は逆の関係になります。
例えば\(\log_{2}4\)の値を求める場合、
\(2^{□} = 4\)となる数を探すことになるので、\(\log_{2}4 = 2\)となります。
対数の公式は以下。
【公式】
以下\( a > 0\)、\( a \neq 1\)、\( X\)、\( Y > 0\)とする。
①\(\log_{a}a = 1\)
②\(\log_{a}1 = 0\)
③\(\log_{a}XY = \log_{a}X + \log_{a}Y\)
④\(\log_{a}\frac{X}{Y} = \log_{a}X – \log_{a}Y\)
⑤\(\log_{a}X^{p} = p\log_{a}X\)
⑥\(C > 0\)、\(C \neq 1\)
\(\log_{a}X = \frac{\log_{c}X}{\log_{c}a}\)
上の公式を見ると、①は\(a^{1} = a\)、②は\(a^{0} = 1\)より導けます。
③、④は\(\log\)の中の積を足し算に、商を引き算に変換できることを表しています。
⑤は\(\log\)の中の指数は、係数にできることを表しています。
⑥は、底の変換公式で底の部分を任意の数に変換できることを表しています。
対数関数の定義とグラフ
対数の定義と公式を確認できたので、
次は対数の真数を変数とした対数関数の定義を確認します。
【定義】
\( a > 0\)、\( a\neq 1\)とする。xの正の変数として
$$\log_{a}x$$
と表される関数を対数関数という。
対数関数のグラフは以下のようになります。
上のグラフをみると、\( a > 1\)のとき右上がりで、
\( 0 < a < 1\)のとき右下がりになる特徴があることが分かります。
また、\( a > 1\)のとき、
\( a^{-∞} \approx 0 \)なので\(\log_{a}x\)は負の無限大に近づき、
\( 0 < a < 1\)のとき、
\( a^{∞} \approx ∞ \)なので\(\log_{a}x\)は正の無限大に近づきます。
対数の計算練習
対数計算練習をしてみましょう。
❶\( \log_{3}\sqrt{27}\)を計算する
\( = \log_{3}27^{\frac{1}{2}}\)
\( = \log_{3}(3^{3})^{\frac{1}{2}} = \log_{3}3^{\frac{3}{2}}\)
公式⑤を利用して
\( = \frac{3}{2}\log_{3}3 \)
公式①を利用して
\( = \frac{3}{2} \times 1 = \frac{3}{2} \)
A.\( \frac{3}{2} \)
❷\( \log_3 \frac{3}{4} + 4\log_3 \sqrt{2}\)を計算する
公式⑤を利用して
\( = \log_3 \frac{3}{4} + \log_3 (\sqrt{2})^4\)
\( = \log_3 \frac{3}{4} + \log_3 4\)
公式④を利用して
\( = \log_3 (\frac{3}{4} \times 4) = \log_3 3 = 1\)
A.\( 1 \)
まとめ
ということで、今回は指数関数と対数関数について確認しました。
この辺りは抑えておきましょう。
- 指数関数や対数関数は\( a \)が1より大きいか小さいかによってグラフの形が変化する。
- 対数関数は\( \log \)を用いて\( y = \log_{a}x \)と表される。
機械学習やディープラーニングの教材に出てくる数式には、
頻繁にこれらが出てきます。
そのせいで自分は何度も数式を理解しようとするのを断念しそうになりました、、
機械学習やディープラーニングを勉強する前に、
指数関数と対数関数の計算ができるレベルまでにしておきましょう!