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

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

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

ニューロン、多層ニューラルネットワーク、最適化、誤差逆伝播などの基礎、応用は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の場合

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