ディープラーニング(深層学習)の進歩は著しく、現在の人工知能の発展を牽引しています。
ディープラーニングは、2012年くらいでは専門家でないと扱うのが難しかったのですが、
現在では裾野が広がり、
フレームワークやライブラリを組み合わせることで、比較的スムーズに実装することができます。
そういった中で、ディープラーニングを実装してみて、
独自データを使い、学習させてみたものの、
- あまりうまくいかないなぁ
といった経験をされた方もおられるのではないでしょうか。
また、うまくいったとしても、
- さらに良くするにはどうすればいいだろう
という方も多いかと思います。
より良い性能を出すために必要なのは、
- ディープラーニングを「原理から理解」しておくこと
が重要になります。
ディープラーニングの原理を理解するには、
- 詳細な解説書を読む
- フレームワークやライブラリを使わずに実装する
などの方法がありますが、
前提となっている「数学力が重要」になります。
- 数学が重要なのはわかってるよ〜
- 数学といっても、どんな分野を学べばいいの?
- ディープラーニングのために効率的に数学を学ぶには?
と思われる方も多いかと思います。
そこで本記事では、
ディープラーニングを原理から理解するための数学について、より小分けにして説明し、
あなたにとって、
- 必要な部分をサクッと学べる
- どこを集中的に勉強すればいいか
- 苦手部分を克服するには何を学べばいいか
といった、より必要な数学の部分について、
おすすめの本や参考書などをご紹介します。
本記事の概要 [表示]
「ディープラーニング」で必要な「数学」の分野と、そのポイントをまとめました(関数・微分・積分編)
ディープラーニングで必要となる数学は、
大きく分けると3分野になります。
(1), 微分積分
(2), ベクトル・行列(線形代数)
(3), 確率・統計
これらについて、サクッと復習するには、
全体をまんべんなくやるだけでなく、
重要な部分を理解した上で、内容を絞ってメリハリをつけてやるのもオススメです。
そこで (1), 微分・積分 (2), ベクトル・行列 (3), 確率・統計 の3分野のそれぞれについて、
- 数学のある分野が、ディープラーニングのどの部分で重要か
という対応関係を理解することで、勉強が加速されるかと思います。
それらの部分を重点的に復習することで、
より効率的に深層学習の数学力を高めることができます。
(1), ディープラーニングと関数・微分・積分
ディープラーニングの理解には、
微分・積分では、特に重要となるのは、以下の部分になります。
- 「関数の極大や極小」の扱い方
- 「関数の合成」や「合成関数の微分」
- 「指数関数」や「対数関数」の微分
- 「多変数関数」の扱い方
それぞれ苦手なところがあれば、
この順に学んでいくのがオススメです。
「関数の極大・極小」を求めるために微分を理解する
ディープラーニング(教師あり学習)では、
「損失関数」を定義して、それを最小化(最大化)する計算を行っています。
「損失」とは、現在の学習状況と、正解データからの状況と比べて、その違いの度合いを定義したものです。
正解との違い(損失)が少なくなれば、ニューラルネットワークがうまく学習したことになります。
この損失関数を小さくする、すなわち最小値を求める計算が行われているわけです。
損失は数学的には関数で表現するので、損失関数と言われます。
関数の最小値を求めるには、
- 関数の極小値を求める考え方
を理解しておく必要があります。
最小値と極小値は少し意味が違いますが、ここでは同じ意味と考えてもらって大丈夫です。
(ちなみに、関数の極大・極小は、ディープラーニングにかかわらず、
他の機械学習などでも重要ですので、学んでおいて損はないかと思います。)
学ぶ順番ですが、
関数の極大・極小って何?って方は、
まず、関数の考え方になじむのがオススメです。
手っ取り早いのは、2次関数の最大・最小を学ぶのが早道です↓
丁寧な解説があるので、独学でもわかりやすい内容となっています。
最大最小を求めるときの考え方や、関数のグラフの扱い方などを学んでおくと後で役立ちます。
ディープラーニングでは、指数関数、対数関数の知識も使われています。
なので、2次関数と一緒に、指数関数、対数関数についても学ぶならこちらもございます↓
関数の極大・極小では、関数の微分(導関数)を使うのですが、
微分の考え方について、丁寧な解説とともに理解し直せるのがこちらです↓
関数の微分(導関数)を求めることで、関数の極大・極小を求めることができることを、原理から、サクッと理解できます。
2次関数よりも複雑な3次関数などの極大・極小の考え方を学ぶことができます。
関数の増減表などの書き方や、微分との関係を理解しておくことが重要です。
- 関数の極大・極小って、こういう風に考えるんだ
というイメージをつかめるかと思います。
「関数の合成」や「合成関数の微分」の理解をする
ディープラーニングでは、合成関数や合成関数の微分が使われています。
「合成関数」とは、関数を合成する、ということですが、具体的に説明しますね。
具体的には、関数1と関数2があるとして、関数1と関数2の合成関数を考えます。
普通の関数では、
- 関数1の入力は、関数1の出力を出す
- 関数2の入力は、関数2の出力を出す
と考えます。
合成関数では、
関数1の入力による、関数1の出力を、関数2の入力にして、関数2の出力を得る
といった考え方になります。合成関数では、
- 複数の関数の入力と出力がくっついたもの
というイメージになります。
ディープラーニングにおいて「合成関数」が使われる例としては、神経細胞のモデルがあります。
「神経細胞のモデル」である(ディープラーニングの)それぞれの「ノード」は、以下の2段階でモデル化されています。
(1), ある神経細胞では、他の神経細胞からきた情報は、重要なものをより重視しながら、全部考慮して、結果を出す、と考えます。
→ これを数学で扱うには、他の複数のノードからの情報の和(重み付き和)を入力として、出力を出す。入力と出力の関係を関数として表現します。(関数1)
(2), 他の神経細胞からの情報によって、その神経細胞が興奮するか・そのままか、の反応が決まります。興奮したら信号を他の神経細胞に伝えます。
→ これを数学で扱うには、関数1の出力を、神経細胞の興奮する・しないの判断する関数(活性化関数)の入力として使います。活性化関数の結果が、ノードの出力として、興奮したか・しなかったかの反応として出されます(関数2)。
(1), (2)のプロセスは、関数1、関数2の合成として数式化することができます。
神経細胞は、合成関数の考え方を使ってモデル化されているわけです。
合成関数などは数3の範囲で学ぶことができます↓
他にも、分数関数などの微分公式を復習しておくと、
ディープラーニングの理解に役立ちます。
それが次の指数関数などと関係してきます。
「指数関数」や「対数関数」の微分
指数というのは、同じものをかけ算するときに、使う記号のことです。
2×2×2=2の3乗
と表現できますが、この3乗の3が指数になります。
- 同じものを何回かけ算したか
を表す数字になっています。
この「何回かけたか」の指数部分が変化する関数を指数関数と呼んでいます。
指数関数はディープラーニングだけでなく、統計や機械学習全般で重要です。
ディープラーニングでは、神経細胞のモデルであるノードの興奮と非興奮を判断する活性化関数がありますが、
活性化関数として使われる関数の1つに、
- シグモイド関数
があります。これは分数の形をしているのですが、
分母に指数関数を含んでいます。
なので、シグモイド関数の微分を考えるときなど、指数関数の微分も理解しておく必要があります。
また、ディープラーニングでは、対数関数も使われています。例えば
- 交差エントロピー
で使われていて、ディープラーニングでの損失関数の1つとして活用されています。
損失関数なので、最小値を求める必要がありますが、
そのため、対数関数を含む交差エントロピー式を微分する必要があります。
なので、対数関数の微分を理解しておくことが必要になります。
指数関数や対数関数について理解するには、
まず、指数・対数をひととおりやって、その後、指数・対数関数の微分を学ぶのが早道です。
指数や対数の基礎についてはこちらがおすすめです↓
「多変数関数」の扱い方
大学数学といっても、難しく考える必要はありません。
上で紹介した高校数学の内容を、多変数に拡張した、という違いになります。
例えば、高校数学だったら、ほとんどの場合には、
- xの式をxで微分する
というように、1変数の微分が多かったと思います。
ここで使う多変数関数では、
- x、yの式をxで微分する
のように、いくつかの変数がある式で、微分をするやり方を理解することになります。
(ちなみに、多変数関数で、ある変数のみについて着目した微分を「偏微分(へんびぶん)」と呼びます)
ディープラーニングでは、数万以上の変数を微分するので、超多変数の偏微分計算を行っていることになります。
超多変数なんて難しそう・・・
と思われるかもしれませんが、大丈夫です。
その原理を知るには、
- 2、3の変数での多変数関数の偏微分
を学べば十分だからです。
その2、3変数関数の偏微分は、大学初年度レベルの微分積分で習います。
なので、それらを勉強すればオッケーで、サクッと学ぶには以下のものがおすすめです↓
最初に高校数学の微分積分の復習もサクッとあるので、
大学数学に入る前に、頭の整理をしてから学ぶことができます。
微分のやり方も、1つひとつの式変形について
何を使って、どう変形したのかなど、
丁寧に解説が付いています。
それらを追っていくことで、ここで何をやっているかなど、
授業で解説を受けているように理解することができます。
こちらもございます↓
数研・チャート式は学びやすく、慣れている方などにもおすすめです↓
一般的な微分積分の入門書としては、こちらもございます↓
というわけで、本記事では、
ディープラーニングを原理から理解するための数学について、より小分けにして説明し、
あなたにとって、
- 必要な部分をサクッと学べる
- どこを集中的に勉強すればいいか
- 苦手部分を克服するには何を学べばいいか
といった、より必要な数学の部分について、
おすすめの本や参考書などをご紹介しました。
こちらもございます↓
深層学習に関連する背景知識や前提などを網羅しておくと、数学を学ぶときのイメージもわきやすいかと思います↓
こちらもございます↓
『高校数学を独学で学びたい、やり直したい社会人のあなたにおすすめの本はこちらです』
『「高校数学」をサクッと身につけたい・復習したい・やり直したいあなたにおすすめの本はこちらです』
『「中学数学」をサクッと身につけたい・復習したい・やり直したいあなたにおすすめの本、27冊はこちらです』
↓こちら無料で読めます