見出し画像

第8話 ディープラーニングに必要な数学知識 -総和・ネイピア数・自然対数-

AI(ディープラーニング)のプログラムを作ることを決意し、勉強を初めて早1ヶ月。

教科書「はじめてのディープラーニング」(我妻幸長著)の学習を進めて、3章「ディープラーニングに必要な数学」に突入しました。
これからしばらくは数学のお勉強です。

今回の学習は高校数学について。
具体的な内容は次のとおりです。

・数列の総和 Σ(シグマ)
・ネイピア数 e
・自然対数 log
・(余談)数学の関数とプログラミングの関数の違い

ちなみに学習の進捗状況はこんな感じです。

名称未設定

それでは今回の学習のスタートです!

数列の総和 Σ(シグマ)

複数の数値の総和を簡潔に表記することができる記号です。
初登場は高校数学ⅡBだったかな?
とても便利な記号です。

名称未設定2

数列の総和の求め方をプログラミングでやるのはスーパーeasy(^^)
実はいままでに何度もやっていましたね。

名称未設定3

このようにsum関数を使います。
少々複雑な計算例(数列の掛け算)も見ていきましょう。

名称未設定4

numpy配列同士の掛け算は、要素ごとに掛け算されるのでしたね。
掛け算した後、sumを使って総和を求めることができました。

ネイピア数 e

自然対数の底とも言う、終わりのない数のことです。

名称未設定

指数関数の形でよく使われます。
表記は次のように2種類の仕方があります。

名称未設定

プログラムとして実装するときはこのようにします。

スクリーンショット 2020-03-31 14.44.20

うーん・・・これは教科書に載っているソースコードですが、これくらいの内容をわざわざ関数にしなくてもいいのでは?
ぼくならズバリこれです。

スクリーンショット 2020-03-31 14.45.45

ちなみにexpはexponential(指数)の略です。

!注意!
10の何乗というのをコンピュータ上ではeの何乗と表記することがあります。
ネイピア数の何乗と解釈してはいけませんね。

名称未設定2

自然対数 log

対数の底がeのものを自然対数といい、次のように書きます。

名称未設定2

eをy乗するとxになるよ、と言う意味です。
例えばx=eなら、xはeの1乗なのでy=1となります。

numpyではこのように書けます。

スクリーンショット 2020-03-31 15.13.40

(余談)数学の関数とプログラミングの関数の違い

数学でもプログラミングでも関数という言葉がありますが、どのような違いがあるのでしょうか。

数学でいう関数は y = f(x) といった形をとり、xという入力があったとき、yが出力されるというものです。

プログラミングでいう関数は、ある入力(引数)があったときに何らかの処理がされるものです。
数学の関数と似ていますが、次の点で異なります。

・出力(返り値)は必ずあるわけではない。
・連続表現はできない。(離散値しかと取れないのでどうしても近似になる。)

厳密にはこのような違いがありますが、入力に対して出力があるのであれば、同じものと考えて差し支えはないと思います。


というわけで・・・
今回はディープラーニングで必要な高校数学の知識を勉強しました。
(勉強というより復習といった感じですが。)

次回は線形代数について勉強します。

それではまた(^_^)ノシ

よろしければサポートお願いします!いただいたサポートは書籍代等に活用いたします!