【最新】ディープラーニングを使う数学を学ぶおすすめ本 – 勉強を始めたいと考える方に

ディープラーニングとは?数学との関係は?

ディープラーニングとは、人間が自然に行うタスクをコンピュータに学習させる機械学習の手法のひとつであり、これらを理解するには数学能力が必要です。ですが、ディープラーニングの基礎部分は高校数学の分野で構成されており、そこまで難しくはありません。ここでは、ディープラーニングを使う数学を理解するために役立つ本をご紹介します。

ランキングも確認する
出典:出版社HP

高校数学からはじめるディープラーニング 初歩からわかる人工知能が働くしくみ

ディープラーニング入門書

ニューロン、多層ニューラルネットワーク、最適化、誤差逆伝播などの基礎、応用はCNNまで網羅されており、入門書に最適の一冊です。また、本書はできるだけ、イメージが持てるよう図を多用しており、数学の記号の使い方のルールや発音についても、丁寧な言及があるため、かなりわかりやすく丁寧に説明されています。

はじめに

●ディープラーニングの数学
本書は、執筆時にブームとなっている人工知能(Artificial Intelligence, AI)の要素技術の一つである「ディープラーニング(深層学習)」で用いられている数学について解説します。ディープラーニングとは、人間の脳で行われている情報処理の手法を工学的に応用する「ニューラルネットワーク」という学問分野で使われる一手法です。
スマートフォンの音声認識機能や翻訳機能、カメラの画像補正機能に使われるなど、ディープラーニングは私たちの日常にも浸透しつつあります。
摩訶不思議で謎めいた技術と思われがちなディープラーニングが、高校で学ぶ範囲の数学に支えられていることを知ることで、皆さんが人工知能やディープラーニングに親しみを感じられるようになることを狙いとしています。

●ニューロンのモデル
ニューラルネットワークとは、人間を含む生物の脳を構成する要素である神経細胞(ニューロン)を数学やコンピュータで取り扱えるようモデル化し、それを多数組み合わせたネットワークモデルがどのような性質や機能をもつかを探究する学問です。1943年に神経生理学者のマカロックと数学者のピッツにより発表されたニューロンのモデルが最初期のニューラルネットワークです。彼らはニューロンを複数組み合わせたモデルまでを考え、それがAND素子やOR素子などの論理素子を構成できることを示しました。論理素子は現代のコンピュータを構成するために不可欠な要素ですから、ニューロンの組み合わせによりコンピュータと同等の機械を構成できることが示されたのです。
ここで、ニューロンに対する入力は、高校数学で学ぶ「ベクトル」として取り扱われます。ニューロンは入力であるベクトルから計算に基づいて1つの数値を出力します。その計算には、ベクトルの内積が用いられ、その結果の理解には直線や平面といった座標空間上の図形の知識が必要です。

●学習機能をもったニューロン
ニューロンに学習機能をもたせたのが、1958年に心理学者のローゼンブラットにより発表されたパーセプトロンというモデルです。文字認識などの機能を学習によりデータから自動的に獲得できるようになりました。
現代の考え方でニューロンの学習を解説すると、「損失関数と呼ばれる関数の微分を利用して、ニューロンが機能を獲得するよう自分自身を調節すること」となります。関数を微分する際に、指数関数や対数関数の知識が用いられます。

●多層ニューラルネットワークの学習
ニューロンを層状に多数結合したネットワークを多層ニューラルネットワークといいます。多層ニューラルネットワークに学習を導入するには、1986年にラメルハートらが提案した誤差逆伝播法(バックプロパゲーション)を用います。これにより、ニューロン1つのみを学習させるモデルよりもより実用的な問題が取り扱えるようになりました。
誤差逆伝播法にも損失関数の微分が用いられます。この際、学習時の誤差がネットワークの出力側から入力側へ戻っていく(逆に伝播する)ことが誤差逆伝播法の特徴です。誤差逆伝播法は合成関数の微分により実現されます。

●ディープラーニングへ
多層ニューラルネットワークの居の数を増やす(層を深くする)ことでディープラーニングを行うニューラルネットワークとなります。ディープラーニングでは1980年代以降に提案されてきた性能向上のためのさまざまなアイディアが活用されています。
ディープラーニングを行うニューラルネットワークの中から、画像認識で高い正解率を得られる畳み込みニューラルネットワーク(Convolutional Neural Network, CNN)を紹介します。CNNには画像処理で使われる畳み込み演算によるフィルタ処理が活用されています。

●演習による理解の補強
ディープラーニングを支える数学の理解を補強するため、プログラムを含んだExcel用マクロファイルを用意しました。Excelをお持ちでない方は無料のLibreOffice用のマクロファイルを用いることもできます。わかりにくい概念が出てきたとき、この演習用ファイルがきっと理解の助けとなるはずです。
以上で見たように、ディープラーニングには1940年代から始まったニューラルネットワークのさまざまな手法がたくさん注ぎ込まれています。ですから、焦って一気に理解しようとするより、ひとつひとつ段階を踏みながら着実に理解していくのが、結局は早道になると筆者は考えます。
最新の技術が、伝統的な数学とニューラルネットワーク研究者の地道な研究に支えられていることが本書を通じて伝われば、筆者としては幸いです。
最後に、本書の執筆をサポートしてくださったブルーバックス編集部の皆さんと筆者の家族に感謝いたします。

2020年3月 金丸隆志

CONTENTS

はじめに
●ディープラーニングの数学/●ニューロンのモデル/●学習機能をもったニューロン/●多層ニューラルネットワークの学習/●ディープラーニングへ/●演習による理解の補強

1章ディープラーニングとニューラルネットワーク
1-1ディープラーニングと人工知能
●人工知能とディープラーニング/●人工知能の歴史~第一次人工知能ブーム/●第二次人工知能ブーム/●第三次人工知能ブーム

1-2ディープラーニングと脳科学およびニューラルネットワーク
●ニューラルネットワークとはなにか/●ニューラルネットワークの目指すもの/●ニューラルネットワークの歴史/●第一次ニューラルネットワークブーム/●ニューラルネットワークと人工知能/●第二次ニューラルネットワークブーム/●第三次ニューラルネットワークブーム
/●接近するニューラルネットワークと人工知能

1-3本書のサンプルファイルとExcelのセキュリティ設定
●演習プログラムによる数学の理解/●表計算ソフトウェアによる演習/●演習ファイルのダウンロードと展開/●Excelのマクロの設定の確認/●まとめ

2章ニューロンの働きをベクトルで理解しよう
2-1本章で学ぶ内容

2-2ニューロンとは何か
●脳における情報伝達/●ニューロンによる情報伝達/●外部入力に対するニューロンの応答/●人工ニューロン

2-3ニューロンを数式で表現しよう
●ニューロンで用いられる変数/●ニューロンへの入力x/●ニューロンの活性uの計算/●ニューロンの活性uの計算の解釈とシナプスの重みwの意味/●ニューロンのバイアストの解説/●ニューロンの出力yの解説/●活性化関数1:ヘビサイドの階段関数/●活性化関数2:ロジスティック関数/●ネイピア数と指数関数/●指数関数のグラフ/●日常でも登場する指数関数/●ロジスティック関数の解説/●活性化関数3:恒等関数/●活性化関数4:ReLU/●活性化関数5:ソフトマックス関数/●バイアスbのグラフでの理解

2-4ニューロンをベクトルで理解しよう
●ベクトルとは/●ベクトルの3つの演算/●ベクトルの成分表示と座標空間/●入力と重みをベクトルで表記/●ベクトルの内積/●重みベクトルと入力ベクトルの内積/●ニューロンが発火するかしないかの境界/●ベクトルの大きさと角度/●cosθの性質/●内積x・yの性質/●2次元平面における直線と3次元空間における平面/●2つの入力をもつニューロンの出力の境界は重みペクトルwに垂直な直線である/●3つの入力をもつニューロンの出力の境界は重みベクトルwに垂直な平面である/●個の入力をもつニューロンの出力の境界は重みべクトルかに垂直な超平面である/●境界と出力の関係/●まとめ

2-5ニューロンの出力の境界を自分で決めてみよう
●マクロを含むExcelファイルの実行/●Excelのシートに重みベクトルとバイアストの値を入力する/●重みペクトルとバイアストに対して別の値を入力

3章損失関数の微分によりニューロンを学習させよう
3-1本章で学ぶ内容

3-2機械学習における教師あり学習の枠組み
●入力・出力・ターゲット/●添え字に関する注意/●機械学習における教師あり学習/●課題例1:2入力の論理演算/●ニューラルネットワークに論理演算を学習させる意味/●論理演算の他の例:ORとXOR/●課題例2:64ピクセルの手書き数字/●手書き数字のデータ出力・ターゲット

3-3グラフによる例題の理解
●ANDのグラフ表示/●ORのグラフ表示およびデータの線形分離について/●XORのグラフ表示/●手書き数字を線形分離するイメージ/●教師あり学習の分類と回帰/●多クラスの分類/●回帰

3-4損失関数の定義
●教師あり学習を行うニューラルネットワークが目指すもの/●平均二乗誤差による損失関数/●平均二乗誤差による損失関数のグラフによるイメージ/●グラフを見るときの注意/●分類に対する損失関数(クロスエントロピー)/●対数関数/対数関数の日常での利用/●クロスエントロピーのイメージ(N-1の場合)/●クロスエントロピーのイメージ(N=2の場合)

3-5重みベクトルとバイアスの関数としての損失関数
●損失関数はどの変数の関数か/●合成関数としてのL/●合成関数の復習/●L(w,b)のイメージ/●論理演算ANDのL(w,b)/●論理演算ANDのL(w,b)のグラフ表示

3-6損失関数の微分を用いた重みとバイアスの調整
●損失関数Lを変化させる変数がw,のみの場合/●接線を用いたLの近似/●w,の調整/●損失関数を変化させる変数がwとwの場合/●損失関数Lの偏微分を手掛かりにwとwを調整/●w,と,の調整のイメージ/●w,と,の調整による損失しの変化/●学習の進行を損失しのエポックごとの変化で確認する/●重みベクトルとバイアストの調整についての補足
3-7損失関数の微分の計算

●合成関数の微分の復習/●損失関数Lのwでの偏微分∂L/∂w,の計算/●偏微分∂u/∂wの計算/●偏微分の計算結果/●偏微分∂L/∂uとその意味/●偏微分∂L/∂wの計算/●まとめ

3-8(演習)ニューロンによる論理演算の学習
●演習の流れ/●演習ファイルの起動/●演習ファイルのシート/●ボタンを1回クリックして計算/●ボタンを1回クリックした状態での入力と出力の関係/●ボタンのクリック(2回目~4回目)/●5回目のボタンのクリックで1エポック/●複数エポックの学習が進むと損失の時間変化のグラフが現れる/●200エポック一気に学習を進める/●2つのシートを同時に関覧する/OORの学習/●XORの学習

3-9(演習)ニューロンによる手書き数字の学習
●学習に用いる手書き数字の確認/●「数字2」と「それ以外の数字」の分類/●「数字2」と「それ以外の数字」の分類でのいくつかの注意/●学習後の重みベクトルとバイアスト/●学習後の重みベクトルwを画像として表示/●学習後の重みwには入力の特徴が反映される/●2以外の数字の分類

3-10(演習)学習済みのニューロンによる手書き数字の認識
●学習済みのニューロンを用いた推論/●演習ファイルの実行/●マウスで数字を描く/●ニューロンはどのように数字を認識しているのか・さまざまな数字の分類を試してみよう/●自分で求めた重みベクトルとバイアスで数字を認識する方法/●まとめ

4章合成関数の微分を用いて多層ニューラルネットワークを学習させよう
4-1本章で学ぶ内容

4-2多層ニューラルネットワークの枠組み
●隠れ層の追加/●ニューラルネットワークの名称/●多層ニューラルネットワークの計算の流れ/●入力と出力層の特徴/隠れ層の特徴/●隠れ層と出力層のニューロンが行う計算/●添え字の用途を固定する効果/●出力層のニューロンの数を増やす/●出力層にある複数のニューロンをどう使うか/●多クラスの分類には活性化関数としてソフトマックス関数を用いる/●ソフトマックス関数の変数/●和でそれぞれの要素を割ることの意味/●ソフトマックス関数の意味/●隠れ層を増やすとディープニューラルネットワークとなる

4-3多層ニューラルネットワークの学習(2クラスの場合)
●ニューラルネットワークはパラメータを学習する/●出力層のパラメータの学習はニューロン1つの場合と同じ/●誤差の導入/●隠れ層のパラメータの学習/●∂L/∂wの計算/●隠れ層における誤差の計算/●隠れ層における誤差の意味/●隠れ層の活性化関数として何を選ぶべきか/●ReLUによりニューロンの発火がスパースになる/隠れ層のニューロンのバイアスがb_j^w_0の学習

4-4多層ニューラルネットワークの学習(多クラスの場合)
●ネットワークの構造/●損失関数としてクロスエントロピーを用いる/●出力層のパラメータの学習/●出力層の誤差の計算/●隠れ層のパラメータの学習/●DNNの隠れ層のパラメータの学習

4-5(演習)3つのニューロンからなる多層ニューラルネットワークでXORを実現しよう
●演習の目的とファイルの起動/●演習ファイルの意味と実行/●XORの実現(ケース1)/●XORの実現(ケース2)/●まとめ

4-6(演習)3つのニューロンからなる多層ニューラルネットワークでXORを学習しよう
●演習の目的とファイルの起動/●ステップ毎の学習/●自動での学習/●なぜ学習に失敗するのか?/●局所最適解と最適解/●損失関数の減少が遅くなる領域/●プラトー/●ニューラルネットワークの学習の難しさ

4-7(演習)隠れ層のニューロンの個数を変えてXORを学習しよう
●演習の目的とファイルの起動/●隠れ層のニューロン数を増やすと、学習に成功する確率が上がる/●ハイパーパラメータ/隠れ層のニューロン数は損失関数にどう影響するか/●なぜ隠れ層のニューロンの個数を増やすと学習の成功率が上がるのか

4-8多層ニューラルネットワークで手書き数字を認識しよう
●演習の目的と学習用ファイルの起動/●学習用のファイルでは学習を実行しないことを推奨/●学習済みファイルの解説/●推論用のファイルでの数字の認識/●多層ニューラルネットワークは数字のどのような特徴をとらえているのか/●4章のまとめ

5章ディープラーニングとさまざまな手法
5-1本章で学ぶ内容
●これまで学んだ内容の現代的な意味/●本章で学ぶ手法/●これまでの章との違い

5-2ディープラーニングでの隠れ層の役割
●隠れ層を増やす理由/●万能近似定理/●視覚情報処理での特徴抽出/●複数の隠れ層で複雑な特徴を抽出したい/●オートエンコーダでの例/●オートエンコーダの入力と重み/●オートエンコーダの構造/オートエンコーダの学習/●オートエンコーダを教師あり学習の分類に用いる/●その後の展開

5-3Adamで効率よくパラメータを変化させる
●Adamとは/●Adamの定義/●Adam利用の効果

5-4確率的勾配降下法でミニバッチごとに学習を行う
●確率的勾配降下法はデータ数が大きいときに必須/●バッチ学習とミニバッチ学習/●確率的勾配降下法で用いられる勾配/●ミニバッチによる確率的勾配降下法を用いるメリット/●バッチサイズについての注意/●確率的勾配降下法を手書き数字の学習に適用したときの効果

5-5正則化により過学習を防ぐ
●過学習/●学習データと検証データ/●過学習と汎化能力/●過学習が起こっている様子/●シナプスの重みの絶対値が大きいと何が起こるか/●正則化により重みの大きさに制限を設ける/●正則化の意味/●正則化を行うときのパラメータの更新(重み減衰)/●正則化の効果(バッチ学習の場合)/●正則化の効果(確率的勾配降下法の場合)/●いくつかの注意

5-6ドロップアウトで過学習を防ぐ
●ランダムにニューロンを無効化するドロップアウト/●ドロップアウトは異なる複数のネットワークを同時に学習させる/●学習時と検証時の違い/●ドロップアウトの効果/●手書き数字の分類におけるドロップアウトの効果/●まとめ

6章画像認識に適した畳み込みリニューラルネットワーク
6-1本章で学ぶ内容
●畳み込みニューラルネットワークとは何か/●畳み込みニューラルネットワークの特徴/●畳み込みニューラルネットワークの歴史/●本章で新たに用いる数学

6-2畳み込みニューラルネットワークの解説(1)畳み込み層とは
●手書き数字の分類に適用するCNN/●入力画像/●全結合層/●新たに畳み込みを追加してDANを構成/●畳み込みとはなにか/●畳み込みによる局所的な特徴抽出/●畳み込み層内の1つの層でシナプスの重みとバイアスは共有される/●複数の特徴マップ/●学習による特徴マップの獲得/●「畳み込み」という言葉の意味

6-3(演習)入力画像と結合した畳み込み層の働き
●この演習の目的とファイルの実行/●画面の解説/●演習の実行/●畳み込みの出力(特徴マップ)の解説/●もう一つの例で確認/●まとめ

6-4畳み込みニューラルネットワークの解説(2)畳み込みニューラルネットワークの完成とその学習
●2つ目の畳み込み層/●マックスプーリング/●マックスブーリング層は位置のずれに強い/OCNNの学習についての注意/OCNNにおける誤差逆伝播法/●CNNにおける損失関数の偏微分/●CNNの性能

6-5畳み込みニューラルネットワークを用いた手書き数字の分類
●演習ファイルについての注意/●学習用ファイルの解説/●学習用ファイルの「重み」シートの解説/●学習用ファイルの「重みの画像表示」シートの解説/●推論用ファイルの解説/●推論用ファイルの「畳み込み層の出力」シートの解説~畳み込み層1/●推論用ファイルの「畳み込みの出力」シートの解説~畳み込み層2/●逆畳み込みによる畳み込み層2の理解~数字
「2」の場合/●逆畳み込みによる畳み込み層2の理解~数字「8」の場合/●逆畳み込みによる畳み込み層2の理解~まとめ/まとめ

6-6畳み込みニューラルネットワークを用いた物体検出~R-CNNとYOLO
●物体検出とはなにか●CNNと物体検出の違い/●物体検出の手法1~R-CNN/●学習データの少なさを補う転移学習/●物体検出の手法2~YOLO/●YOLOのバージョン/●YOLOのグリッドと物体を囲む枠/●YOLOの出力/●YOLOの残りの出力/●YOLOのその他の層/●物体検出のまとめ

付録A LibreOfficeのインストールと設定
●LibreOfficeに関する注意/●Windows版LibreOfficeのインストールと設定/●macOS版LibreOfficeについての注釈/●Linux版LibreOfficeについての注釈

付録B アプリケーションの強制終了
●アプリケーションを強制終了する必要性/●Windowsの場合/●macOSの場合/●Linuxの場合

おわりに
参考文献
さくいん

高校数学でわかるディープラーニングのしくみ

予備知識なしでわかる

ディープラーニング(深層学習)の大まかな基礎や時代の流れから、数理的なアルゴリズムの説明までとても丁寧に説明しています。初心者にも、一度ディープラーニングを理解するのを諦めてしまった人にもオススメできる一冊です。今までよくわからなかったところの知識の向上も期待できます。

涌井 貞美 (著)
出版社 : ベレ出版 (2019/12/11)、出典:出版社HP

はじめに

新聞やテレビの報道において、AI(人工知能)や、それを組み込んだロボットが毎日のように話題になっています。
「AIがプロ棋士に勝つ」
「AIがCT画像からベテラン医師以上にガンの患部を発見」
「ロボットが人の話を聞いて道案内」
「AIによる自動運転が自動車業界に革命をもたらす」
どれか一つは、思い当たることでしょう。さらに極め付きの話題が、「AIに仕事を奪われる」といわれる問題で、「2045年には人工知能が人間の知性を超える」という「シンギュラリティ」予測です。SF映画の世界が現実感を持って語られるようになっているのです。
さて、このような時代において、AIのしくみをしっかりと理解しておくことは何にも増して大切でしょう。得体の知れないものに自分の病気を診断されたり、しくみも知らない自動運転のクルマに乗ったり、何を考えているかわからないロボットと仕事場を共有するというのは、なんとも不気味です。さらに、「AIで大量失業」と脅かされると、AIに対して無用な恐怖心さえ持ってしまいます。
本書は、現代のAIブームを引き起こした仕掛け人である「ディープラーニング」について、そのしくみを基本から解説した入門書です。図を多用し、高校レベルの数学の知識で十分わかるように、その考え方を解説しています。「AIはこのような考え方で判断を下しているのだ!」ということが実感されるように話を進めています。
細かい数学的な議論をしなければ、ディープラーニングの原理はそれほど難しいものではありません。本書がその理解に少しでも役立てれば幸甚です。
最後になりましたが、本書の企画から上梓まで一貫してご指導くださったベレ出版の坂東一郎氏、および編集工房シラクサの畑中隆氏にこの場をお借りして感謝の意を表させていただきます。

2019年初秋 著者

contents

1章
活躍するディープラーニング
[1]AI時代の扉を開いたディープラーニング
[2]ディープラーニングとAI
[3]機械学習とディープラーニング
[4]ディープラーニングの本質は特徴抽出
[5]教師あり学習と教師なし学習
[6]画像解析とディープラーニング
[7]音声認識とディープラーニング
[8]ビッグデータとベストマッチするディープラーニング
[9]第4次産業革命を支えるディープラーニング

2章
絵でわかるディープラーニングのしくみ
[1]話の始まりはニューロンから
[2]ニューロンロボットに解説させる
[3]ニューロンロボットを層状に配列
[4]ニューラルネットワークが知能を持つしくみ
[5]ニューラルネットワークの「学習」の意味
[6]絵でわかる畳み込みニューラルネットワーク
[7]絵でわかるリカレントニューラルネットワーク

3章
ディープラーニングのための準備
[1]シグモイド関数
[2]データ分析におけるモデルとパラメーター
[3]理論と実際の誤差

4章
ニューラルネットワークのしくみがわかる
[1]ニューロンの働きを数式で表現
[2]ユニットと活性化関数
[3]シグモイドニューロン
[4]ニューラルネットワークの具体例
[5]ニューラルネットワークの各層の働きと変数記号
[6]ニューラルネットワークの目的関数
[7]ニューラルネットワークの「学習」
[8]ニューラルネットワークの「学習」結果の解釈

5章
畳み込みニューラルネットワークのしくみがわかる
[1]畳み込みニューラルネットワークの準備
[2]畳み込みニューラルネットワークの入力層
[3]畳み込みニューラルネットワークの畳み込み層
[4]畳み込みニューラルネットワークのプリング層
[5]畳み込みニューラルネットワークの出力層
[6]畳み込みニューラルネットワークの目的関数
[7]畳み込みニューラルネットワークの「学習」
[8]畳み込みニューラルネットワークの「学習」結果の解釈
[9]畳み込みニューラルネットワークをテスト
[10]パラメーターに負を許容すると

6章
リカレントニューラルネットワークのしくみがわかる
[1]リカレントニューラルネットワークの考え方
[2]リカレントニューラルネットワークの展開図
[3]リカレントニューラルネットワークの各層の働き
[4]式でリカレントニューラルネットワークを表現
[5]リカレントニューラルネットワークの目的関数
[6]リカレントニューラルネットワークの「学習」

7章
誤差逆伝播法のしくみがわかる
[1]最適化計算の基本となる勾配降下法
[2]誤差逆伝播法(バックプロパゲション法)のしくみ
[3]誤差逆伝播法をExcelで体験
[4]誤差逆伝播法をPythonで体験

Appendix
付録
[付録A]本書で利用する訓練データ(1)
[付録B]本書で利用する訓練データ(II)
[付録C]VBAの利用法
[付録D]ソルバのセットアップ法
[付録E]Windows10のコマンドプロンプトの利用法
[付録F]Pythonのセットアップ法
[付録G]微分の基礎知識
[付録H]多変数関数の近似公式と勾配
[付録I]畳み込みの数学的な意味
[付録J]ユニットの誤差と勾配の関係
[付録K]ユニットの誤差の層間の関係
索引

涌井 貞美 (著)
出版社 : ベレ出版 (2019/12/11)、出典:出版社HP

《本書の使い方》

●本書はディープラーニングのアルゴリズムの基本的な解説を目的としています。図を多用し、具体例で解説しています。そのため、多少厳密性に欠ける箇所があることはご容赦ください。
●高校数学3年生程度の数学の知識を想定しています。
●本書でニューラルネットワークという場合、畳み込みニューラルネットワークなど、広くディープラーニングと呼ばれているものも含めています。また、活性化関数はシグモイド関数を前提としています。
●本書で微分を考える関数は、そのグラフが十分滑らかと仮定します。
●理論を確かめるために、本書はマイクロソフト社Excelと、データ処理のための汎用言語Pythonを利用しています。ワークシートはExcel2013以降で動作を確かめてあります。また、PythonはWindows10上で動作するバージョン3.74を利用しています。
●計算結果で示した小数は、表示された位数の下の位を四捨五入しています。

 

涌井 貞美 (著)
出版社 : ベレ出版 (2019/12/11)、出典:出版社HP

最短コースでわかる ディープラーニングの数学

ディープラーニングの本質がわかる

ディープラーニングの基礎となる、微分積分や確率の説明から始まり、前に説明された公式や考え方を何度も引用することにより少しづつステップアップして理解を深めていく形式になっているので、初学者でも少しずつ理解を深めていける構成となっています。この本で、高校数学を勉強し直すこともできます。

赤石 雅典 (著)
出版社 : 日経BP (2019/4/11)、出典:出版社HP

 

まえがき

2012年の画像認識のコンテストで驚異的な認識率をひっさげて登場した「ディープラーニング」は、その後すさまじい勢いで進歩をとげ、大ブームとなりました。
人工知能(AI)のブームは、第1次、第2次と過去にもありましたが、第3次となる今回とこれまでとの最大の相違点は、今まで解けなかった実際の問題に対して次々と結果を出している点です。どのような形になるかはわかりませんが、今後も社会に不可欠な技術として定着することは間違いないと筆者は考えています。
このように大きなインパクトを示したディープラーニングに対して、多くの人が「その動作原理を理解したい」と考えます。筆者もその一人でした。幸いにして基礎的なところは本を出せるレベルまでは理解できるようになりました。
そこで感じたのは「これって結局のところ数学だな」ということです。もう1つ感じたことがあります。それは世の中に大量に出回っている「ディープラーニング」や「機械学習」をタイトルとしている書籍が

・初心者を意識する余り、ディープラーニングの本質までたどり着けずに終わっている
・ちゃんと書かれているが、出だしからハードルが高すぎて、最初からわからない

の2つのパターンに分かれてしまい、その中間のレベルのものがほとんど見当たらないことです。初心者向けの本でありがちなパターンとして
「初心者」=「数学が苦手」という前提を基に、「数学の話になるとすぐ例え話で代用しようとする」→「結局なんだかわからなくなる」
という傾向も感じました。
今回、筆者が本書を執筆しようとした最大の思いは、まさにこの現状のギャップを埋めたかったということになります。そして本を出すにあたって真っ先に考えたのは、従来の初心者向け書籍と逆の発想で「数学から逃げない」形にすることでした。

数学の解説の出発点をどこに置くかについては、いろいろと検討した結果「高校1年(数I)の復習から」というレベルに設定しました。必要な数学の一番上のレベルは大学の教養課程です。具体的には多変数関数の微分や行列(1)などがこのレベルに該当しています。
(1)「高校で行列はやった」と思われた方は最新の高校数学の教育課程を見てみてください。比較的最近のことですが、今はまったくなくなっています。

ちょっと考えると相当険しそうな道です。だからこそ、今までの初心者向けの本はこの道を避けて通ったものと思われます。しかし、筆者はここで諦めず、ディープラーニングのアルゴリズムを理解する上で本当に必要な概念は何かを洗い出し、それを理解するためにはどの概念がわかっていればよいかを数Iレベルに達するまで逆にたどっていったのです。そうやって必要な概念を洗い出してみると、書籍1冊の半分程度の分量で解説できそうでした。残りの半分で機械学習ディープラーニングのアルゴリズムの解説を加えれば、筆者が欲しいと思う本になるのでは、というのが、本書の基本的なアイデアとなりました。
本書は「導入編」「理論編」「実践編」「発展編」の4部構成となっています。冒頭の「導入編」は、この本全体の見取り図になっています。当初は、基礎概念の説明にとどめるつもりだったのですが、編集者より「高校1年の数学の範囲で解ける簡単な例題を入れられないか」という無理な注文がありました。そこで、微分を一切使わずに解く方法をひねり出しました(2)。結果的に、最初の段階でこの問題を解くことで、

・機械学習ディープラーニングとは結局「予測関数」から「損失関数」を導出し、「損失関数の最小化」という数学モデルを解くことで最適なモデルを作る方式である点
・しかし、より一般的な問題を解こうとすると、指数関数、対数関数、偏微分といった高校1年の数学ではカバーしきれない概念が多数出てくるため、数学を知らずして先に進めない点

(2)「線形単回帰」の問題を座標系の平行移動で単純な完全平方の問題に帰着させました。
の2つが実感として持てる形になったかと思います。

本書前半部分を構成する「理論編」は数学の解説書になっています。理論編において特に意識したことが3つあります。
1つ目は「出てくる公式・定理はできる限り直感的にわかる(ないしはわかった気になれる)ようにする」ことです。本書を書くにあたって、高校数学の参考書もいろいろ見てみたのですが、重要な公式・定理が天下り的に出てきて、いきなり演習問題から入る本がすごく多くありました。これでは納得できなくて先に進めない人も多いのではないかと考えました。

そこで本書では新しい公式を導入する場合は、「なぜこの公式が出てくるかの説明」(3)をできる限り丁寧に、また図形で表現できる場合は図形的な説明をできるだけ取り入れて行いました。「この公式は要するにこういうことだな」というイメージさえ持てれば、その公式をすぐに使いこなせると筆者は考えています。例えば、2章で解説するように微分とは結局「関数のグラフをどんどん拡大していくと最後は直線と見なせる」という話にすぎません。この性質をうまく使うと、他のもっと複雑な微分公式を簡単に導出できたりするのです。具体的には2章を読んでいただければわかると思います。

ここが「証明」でなく「説明」であることが本書のミソの1つです。公式を使いこなすためには「要するにこういうことだよね」というイメージを持つことが重要で、数学者でない限り厳密な証明は必ずしも必要ないと筆者は考えています。

2つ目に注意した点は「取り扱う概念はできる限り必要最小限なものに絞り込む」という点です。ディープラーニングを理解するということが読者の目的であるとするなら、それに関係ない概念は知らなくてよいことになります。このような取捨選択をすることで高くなりがちな「数学」のハードルをできる限り低くするよう工夫したつもりです。筆者としては、「三角関数の微分との関係の話」とか、「行列の固有値・固有ベクトル」のような話も書きたかったのですが、ディープラーニングでは使用しない概念なので涙をのんで落としています。
3つ目は「概念間の関係性」を重視した点です。こうやって絞り込んだ数学の概念の間では、概念間の関係性・依存性があります。高校1年の数学を出発点として、ある概念の解説の中に定義・解説をしていない新しい概念が出てこないようにするため、理論編の章の順番は何度も見直しました。最終的には今の章構成に落ち着いたのですが、その集大成として完成した概念間の関係については、巻頭の特製綴じ込みページにまとめています。ある概念の理解につまずいたとき、それは、どこがわかっていないせいなのか、このページを見ると簡単に見てとれますので、ぜひご活用ください。

本書後半部分の「実践編」は、簡単にいうとディープラーニングのアルゴリズムの解説です。実践編に関しては、以下のことを特に意識しました。
1つ目は、「スモールステップで一歩ずつ先に進める」ということです。基本となる「線形回帰」から出発してディープラーニングに至るまでのいくつかの機械学習モデルは、生物の進化の系統図のような関係にあります。進化の順にモデルを並べて、モデル間でどこに違いがあるかを洗い出してみると、モデルを1つ進化させるのに必要な新しい概念の数は非常に少なくなることがわかりました。個々のモデルと必要な概念の関係も、本書の綴じ込みページにまとめていますので、見ていただければわかると思います。
一歩先の新しいモデルになるたびに、章も新しくして、その章で新たに出てきた概念に集中して詳しい解説を加えるということで「一歩ずつ着実にディープラーニングに近づいていく」というアプローチが可能になりました。例えば、ディープラーニングは10章で解説しますが、その前の9章(多値ロジスティック回帰)に加えて出てくる新しい話は実はほとんどありません。少しずつ理解を深めながらディープラーニングにたどり着けるのです。
実践編で2つ目に配慮したのは、「PythonコードのJupyter Notebook化」です。筆者はPythonに限らずコンピュータ・プログラムというのは、自分の理解したことを確認するための道具だと思っています。そこで、本書ではできる限り読者にPythonコードを実行して確認しながら読み進めてもらうため、プログラムの作成と実行、実行結果の確認を同時に進められるツールであるJupyter Notebook対応としました。

巻末の付録では、Jupyter Notebookの導入手順も記載しました。読者はぜひ章ごとのNotebookを読み込み、Pythonの動きを確認しながら本書を読み進めてください。Jupyter Notebookなので、いっぺんにすべてのコードを流すのではなく、セルごとに実行させて、必要に応じて変数の中身を確認したり、あるいはパラメータの値を変えて再度セルを実行したりすることが可能です。こういう確かめ方を繰り返すと、コードに対する理解もより深まります。
Pythonに関しては、アルゴリズムの前提となる数式との対応づけも意識しました。Pythonの言語の特徴として(4)、行列やベクトルが1つの変数でまとめて表現でき、行列・ベクトル間のかけ算も簡単に表現できるということがあります。本書ではその特徴を極力生かして、特に予測・学習に関するアルゴリズムの根幹にかかわる数式はループ処理を一切使わず、数式とPythonのブログラムの式が一対一に対応するようにしました。こうすることでアルゴリズムの実装イメージをより持ちやすくできたかと考えています。
Pythonの実習に関しては、もう1つちょっとした工夫をしました。それはところどころで失敗するのがわかった上で、わざとそのコードを流すような進め方にした点です。ここで出てくるトラブルは読者が自分で機械学習のコーディングで進める上で実際に出てきそうなことばかりです。トラブルがなぜ起きたのか、それに対してどうすればいいのかを身をもって経験することで、より理解を深めてもらえばと思います。

本書を締めくくる「発展編」では、本編で説明しきれなかった、ディープラーニングにおける重要な手法・概念をまとめて紹介しました。かなり高度な内容をコンパクトに紹介しているのですが、実践編まで読み終えられた読者は、その記述内容がすらすらと頭に入ってくることに驚くと思います。これがものごとを基礎から理解することの強みだと筆者は考えています。

それでは、いざ、数学とPythonを道しるべに、ディープラーニングへの登山に出発してください。山頂までたどり着いたとき、今まで見たことのない景色が開けていると思います。

2019年3月
赤石典

赤石 雅典 (著)
出版社 : 日経BP (2019/4/11)、出典:出版社HP

CONTENTS

まえがき

導入編
1章機械学習入門
1.1人工知能(AI)と機械学習
1.2機械学習とは
1.2.1機械学習モデルとは
1.2.2学習の方法
1.2.3教師あり学習と回帰、分類
1.2.4学習フェーズと予測フェーズ
1.2.5損失関数と勾配降下法
1.3はじめての機械学習モデル
1.4本書で取り扱う機械学習モデル
1.5機械学習・ディープラーニングにおける数学の必要性
1.6本書の構成

理論編
2章微分・積分
2.1関数
2.1.1関数とは
2.1.2関数のグラフ
2.2合成関数・逆関数
2.2.1合成関数
コラム合成関数の表記法
2.2.2逆関数
2.3微分と極限
2.3.1微分の定義
2.3.2微分と関数値の近似表現
2.3.3接線の方程式コラム、接線の方程式の問題と学習フェーズ・予測フェーズ
2.4極大・極小
2.5多項式の微分
2.5.1x^nの微分
2.5.2微分計算の線形性と多項式の微分
2.5.3x^rの微分
コラムC(Combination)と二項定理
2.6積の微分
2.7合成関数の微分
2.7.1合成関数の微分
2.7.2逆関数の微分
2.8商の微分
2.9積分
コラム積分記号の意味

3章ベクトル・行列
3.1ベクトル入門
3.1.1ベクトルとは
3.1.2ベクトルの表記方法
3.1.3ベクトルの成分表示
3.1.4多次元への拡張
3.1.5ベクトルの成分表示の表記法
3.2和・差スカラー倍
3.2.1ベクトルの和
3.2.2ベクトルの差
3.2.3ベクトルのスカラー倍
3.3長さ(絶対値)・距離
3.3.1ベクトルの長さ(絶対値)33
3.3.2Σ記号の意味
3.3.3ベクトル間の距離
3.4三角関数
3.4.1三角比
3.4.2三角関数
3.4.3三角関数のグラフ
3.4.4直角三角形の辺を三角関数で表す
3.5内積
3.5.1絶対値による内積の定義
3.5.2成分表示形式での内積の公式
3.6コサイン類似度
3.6.12次元ベクトル間のなす角度
3.6.2コサイン類似度
コラムコサイン類似度の応用例
3.7行列と行列演算
3.7.11出力ノードの内積表現
3.7.23出力ノードの行列積表現

4章多変数関数の微分
4.1多変数関数
4.2偏微分
4.3全微分
4.4全微分と合成関数
4.5勾配降下法
コラム勾配降下法と局所最適解

5章指数関数・対数関数
5.1指数関数
5.1.1累乗の定義と法則
5.1.2累乗の拡張
5.1.3関数への拡張
5.2対数関数
コラム対数関数の持つ意味
5.3対数関数の微分
コラムネイピア数をPythonで確認する
5.4指数関数の微分
コラムネイピア数(e)を底とする指数関数の表記法
5.5シグモイド関数
5.6softmax関数
コラム・シグモイド関数とsoftmax関数の関係|

6章確率・統計
6.1確率変数と確率分布
6.2確率密度関数と確率分布関数
コラム、正規分布関数とシグモイド関数
6.3尤度関数と最尤推定
コラムなぜ尤度関数の極値は極小値ではなく極大値をとるのか

実践編
7章線形回帰モデル(回帰)
7.1損失関数の幅微分と勾配降下法
7.2例題の問題設定
7.3学習データの表記法
7.4勾配降下法の考え方
7.5予測モデルの作成
7.6損失関数の作成
7.7損失関数の微分計算
7.8勾配降下法の適用
8.9プログラム実装
コラムNumPyを使ったコーディングテクニック
7.10重回帰モデルへの拡張
コラム学習本・繰り返し回数の調整方法

8章ロジスティック回帰モデル(2値分類)
8.1例題の問題設定
8.2回帰モデルと分類モデルの違い
8.3予測モデルの検討
コラム予測値を確率化する裏の意味
8.4損失関数(交差エントロピー関数)
8.5損失関数の微分計算
8.6勾配降下法の適用
8.7プログラム実装
コラムscikit-learmライブラリとの比較
コラム、サッカー好きの王様たちの悩みと交差エントロピー

9章ロジスティック回帰モデル(多値分類)
9.1例題の問題設定
9.2モデルの基礎概念
9.3重み行列
9.4softmax関数
9.5損失関数
9.6損失関数の微分計算
9.7勾配降下法の適用
9.8プログラム実装
コラムNumPy行列に対する集計関数の操作

10章ディープラーニングモデル
10.1例題の問題設定
10.2モデルの構成と予測関数
10.3担失関数
10.4担失関数の微分計算
10.5誤差逆伝播
10.5勾配降下法の適用
10.7プログラム実装(その1)
10.8プログラム実装(その2)
10.9プログラム実装(その3)
10.10プログラム実装(その4)

凳展編
11章実用的なディープラーニングを目指して
11.1フレームワークの利用
11.2CNN
11.3RNNとLSTM
11.4数値微分
11.5高度な学習法
11.6過学習対策
11.7学習の単位
11.8重み行列の初期化
11.9次の頂上に向けて
付録 Jupyter Notebookの導入方法(Windows、Mac)
索引

赤石 雅典 (著)
出版社 : 日経BP (2019/4/11)、出典:出版社HP