第8話 ディープラーニングに必要な数学知識 -総和・ネイピア数・自然対数-
AI(ディープラーニング)のプログラムを作ることを決意し、勉強を初めて早1ヶ月。
教科書「はじめてのディープラーニング」(我妻幸長著)の学習を進めて、3章「ディープラーニングに必要な数学」に突入しました。
これからしばらくは数学のお勉強です。
今回の学習は高校数学について。
具体的な内容は次のとおりです。
・数列の総和 Σ(シグマ)
・ネイピア数 e
・自然対数 log
・(余談)数学の関数とプログラミングの関数の違い
ちなみに学習の進捗状況はこんな感じです。
それでは今回の学習のスタートです!
数列の総和 Σ(シグマ)
複数の数値の総和を簡潔に表記することができる記号です。
初登場は高校数学ⅡBだったかな?
とても便利な記号です。
数列の総和の求め方をプログラミングでやるのはスーパーeasy(^^)
実はいままでに何度もやっていましたね。
このようにsum関数を使います。
少々複雑な計算例(数列の掛け算)も見ていきましょう。
numpy配列同士の掛け算は、要素ごとに掛け算されるのでしたね。
掛け算した後、sumを使って総和を求めることができました。
ネイピア数 e
自然対数の底とも言う、終わりのない数のことです。
指数関数の形でよく使われます。
表記は次のように2種類の仕方があります。
プログラムとして実装するときはこのようにします。
うーん・・・これは教科書に載っているソースコードですが、これくらいの内容をわざわざ関数にしなくてもいいのでは?
ぼくならズバリこれです。
ちなみにexpはexponential(指数)の略です。
!注意!
10の何乗というのをコンピュータ上ではeの何乗と表記することがあります。
ネイピア数の何乗と解釈してはいけませんね。
自然対数 log
対数の底がeのものを自然対数といい、次のように書きます。
eをy乗するとxになるよ、と言う意味です。
例えばx=eなら、xはeの1乗なのでy=1となります。
numpyではこのように書けます。
(余談)数学の関数とプログラミングの関数の違い
数学でもプログラミングでも関数という言葉がありますが、どのような違いがあるのでしょうか。
数学でいう関数は y = f(x) といった形をとり、xという入力があったとき、yが出力されるというものです。
プログラミングでいう関数は、ある入力(引数)があったときに何らかの処理がされるものです。
数学の関数と似ていますが、次の点で異なります。
・出力(返り値)は必ずあるわけではない。
・連続表現はできない。(離散値しかと取れないのでどうしても近似になる。)
厳密にはこのような違いがありますが、入力に対して出力があるのであれば、同じものと考えて差し支えはないと思います。
というわけで・・・
今回はディープラーニングで必要な高校数学の知識を勉強しました。
(勉強というより復習といった感じですが。)
次回は線形代数について勉強します。
それではまた(^_^)ノシ
よろしければサポートお願いします!いただいたサポートは書籍代等に活用いたします!