スポンサーリンク

「ディープラーニング」で必要な「数学」の分野と、そのポイントをまとめました(関数・微分・積分編)

スポンサーリンク
ディープラーニング 深層学習 数学 おすすめ
ディープラーニング 深層学習 数学
スポンサーリンク
スポンサーリンク

ディープラーニング(深層学習)の進歩は著しく、現在の人工知能の発展を牽引しています。

ディープラーニングは、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つとして活用されています。

損失関数なので、最小値を求める必要がありますが、

そのため、対数関数を含む交差エントロピー式を微分する必要があります。

なので、対数関数の微分を理解しておくことが必要になります。

指数関数や対数関数について理解するには、

まず、指数・対数をひととおりやって、その後、指数・対数関数の微分を学ぶのが早道です。

指数や対数の基礎についてはこちらがおすすめです↓

 

 

指数・対数関数やその微分については、数3の範囲で、

  • いろいろな関数の微分

といった節の中で、三角関数などの微分と一緒に紹介されているかと思います。

数3の範囲の微分積分では、こちらがございます↓

 

 

「多変数関数」の扱い方

大学数学といっても、難しく考える必要はありません。

上で紹介した高校数学の内容を、多変数に拡張した、という違いになります。

例えば、高校数学だったら、ほとんどの場合には、

  • xの式をxで微分する

というように、1変数の微分が多かったと思います。

ここで使う多変数関数では、

  • x、yの式をxで微分する

のように、いくつかの変数がある式で、微分をするやり方を理解することになります。

(ちなみに、多変数関数で、ある変数について着目した微分を「偏微分(へんびぶん)」と呼びます)

ディープラーニングでは、数万以上の変数を微分するので、超多変数の偏微分計算を行っていることになります。

超多変数なんて難しそう・・・

と思われるかもしれませんが、大丈夫です。

その原理を知るには、

  • 2、3の変数での多変数関数の偏微分

を学べば十分だからです。

その2、3変数関数の偏微分は、大学初年度レベルの微分積分で習います。

なので、それらを勉強すればオッケーで、サクッと学ぶには以下のものがおすすめです↓

最初に高校数学の微分積分の復習もサクッとあるので、

大学数学に入る前に、頭の整理をしてから学ぶことができます。

微分のやり方も、1つひとつの式変形について

何を使って、どう変形したのかなど、

丁寧に解説が付いています。

それらを追っていくことで、ここで何をやっているかなど、

授業で解説を受けているように理解することができます。

こちらもございます↓

一般的な微分積分の入門書としては、以下のものもございます↓

 

 

 

というわけで、本記事では、

ディープラーニングを原理から理解するための数学について、より小分けにして説明し、

読者の方にとって、

  • 必要な部分をサクッと学べる
  • どこを集中的に勉強すればいいか
  • 苦手部分を克服するには何を学べばいいか

といった、より必要な数学の部分について、

おすすめの本や参考書などをご紹介しました。

 

 

 

こちらもございます↓

タイトルとURLをコピーしました