目次
第1章 ディープラーニングと人工知能 ——なぜディープラーニングが成功しているのか
1.1 ディープラーニング,知能,人工知能とは何か
- 多様な問題を一つのアプローチで解ける「ディープラーニング」
- ディープラーニングは「データ」から解法を学習する
- 知能とは何か。人工知能とは何か。
- ポランニーのパラドックス
- 人は無意識下で膨大かつ複雑な処理をしている
- システム1とシステム2
- コンピュータ上で実現可能な知能を求める
- 人にとっての難しさと人工知能にとっての難しさは違う
- なぜ人工知能の実現が難しいか
- 人は言語をどのように獲得しているか
- 人は画像をどのように認識しているか
- 人は画像を分解し,そこから3次元情報を復元する
- 人は経験を積むことで多くの機能を獲得できる
- 意識下と無意識下の処理の融合
1.2 人工知能の歴史
- ダートマス会議
- シンボリック,ノンシンボリック
- シンボリック派:記号処理によって問題解決を図る
- ノンシンボリック派:パターン処理によって問題解決を図る
- ノンシンボリック派の代表例:パーセプトロン
- 将来は,シンボリック派とノンシンボリック派の融合が必要となる
- AI楽観主義と現実との戦い
- 第五世代コンピュータ:そして,AI冬の時代
- 機械学習の時代
- 機械学習はデータからルールや知識を獲得する
- 機械学習はエキスパートを必要とせず,さまざまな問題にも適用できる
- 1990年代に多くの機械学習手法が登場する
- 機械学習の応用がビジネスにも大きなインパクトを与える
- ディープラーニングの時代
- [基礎]ニューラルネットワーク:基本構造,勾配降下法,アーキテクチャ設計
- ニューラルネットワークは従来,注目を受けていなかった
- 驚異のディープラーニングの登場:AlexNetの衝撃
- ディープラーニングは,インターンをきっかけに広がった
- ディープラーニングは,多くの問題で既存手法を凌駕する性能を達成した
- ディープラーニングと強化学習の融合
- 研究分野への注目
1.3 なぜディープラーニングは急速に発展したか
- [急速な発展の背景❶]計算機の指数的な性能向上
- 指数的な性能向上により,突然解けるようになる
- GPUがディープラーニング発展の中心的な役割を果たした
- ディープラーニングに特化した専用チップも登場している
- スマートフォンのチップ
- ハードウェアの性能改善が人工知能の発展で重要
- [急速な発展の背景❷]データの爆発的な増加
- 動画データとゲノムデータが急激に増える
- 巨大な学習データが最初に必要
- 従来の機械学習からディープラーニングへと変わっていく
1.4 ディープラーニングと計算コスト
- 人の学習と,今の機械学習/ディープラーニングの学習
- なぜディープラーニングは大量のデータと計算リソースを必要とするのか
- [仮説❶]人は学習結果を応用し,再利用している
- [仮説❷]人も膨大な量のデータを使って学習している
- [仮説❸]人の脳は,省エネかつ高い計算能力を持つ
1.5 ディープラーニングは今後どう使われるのか
- 自動運転,先進運転支援システム
- 人の運転は高度な認識と予測を駆使している
- センサーや認識技術の発展が進む
- ロボット
- [タスクの例]説明書を読み,家具を組み立てるために必要なのは?
- ディープラーニングは指示理解,認識,制御,プランニングで必要とされる
- 医療/ヘルスケア
- 診断,医学の進歩に貢献する
- 人と人工知能の共存
- コンピュータにしかできないことを活かす
- 人の判断とコンピュータの判断を組み合わせる
- [補足]数字で見るディープラーニングの今
1.6 本章のまとめ
第2章 [入門]機械学習 ——コンピュータの「学習」とは何か
2.1 機械学習の背景
- 演繹的なアプローチと帰納的なアプローチ
- 機械学習と従来のプログラミング
- 機械学習の簡単な例:気温とアイスクリーム
2.2 モデル,パラメータ,データ
- モデルとパラメータ:「状態」や「記憶」を持つことができる
- データ
- 独立同分布(i.i.d.)
- データは同一分布から独立にサンプリングされるという仮定
- 非i.i.d.環境
- 訓練データの偏りから誤った結論を導かないために
- データからモデルのパラメータを推定する:データから「学習」する
- パラメータ数とモデルの表現力
2.3 汎化能力:未知のデータに対応できるか
- データをすべて丸暗記
- 世の中のデータは種類数が無数にあり,丸暗記できない
- 汎化能力:有限の訓練データから無限のデータを予測する
- 過学習:汎化能力と迷信
- 過学習はなぜ起こるのか:たまたま訓練事例を説明する間違ったモデルが見つかってしまう
- [過学習を防ぐ❶]訓練データを増やす
- [過学習を防ぐ❷]仮説数を必要最低限に抑える
- ニューラルネットワークはパラメータ数が多いが汎化する
2.4 問題設定:教師あり学習,教師なし学習,強化学習
- [代表的な学習手法❶]教師あり学習
- 教師あり学習のタスクの例
- パラメトリックモデル
- 学習と推論の2つのフェーズから成る
- [代表的な学習手法❷]教師なし学習
- 教師なし学習でできること
- 教師なし学習の代表例:クラスリング,表現変換と次元削減,生成モデル
- ディープラーニングによる「表現学習」:自己教師あり学習
- [代表的な学習手法❸]強化学習
- [ゲームの例]強化学習はどのような学習なのか
- エージェントと環境
- 決定的な遷移と確率的な遷移
- 強化学習の「報酬」と「報酬仮説」
- 教師あり学習と強化学習は何か違うのか
- [違い❶]i.i.d.を仮定するか
- [違い❷]受動的か,能動的か
- [違い❸]フィードバックは直接的か,間接的か
2.5 問題設定の分類学
- 学習問題設定の三つの軸
- [学習問題設定の基準❶]訓練データが網羅的か,サンプリングか
- 訓練データが網羅的に列挙できる場合:三目並べ
- 訓練データが網羅的に列挙できない場合:囲碁
- [学習問題設定の基準❷]ワンショットか,逐次的か
- 問題の内部で逐次的な出力を順に求める場合
- [学習問題設定の基準❸]学習フィードバックが教師的か,評価的か
- 教師的なフィードバックの方が学習は簡単
- 評価的なフィードバックの方が設定しやすい
- [三つの基準の活用術]学習手法の分類/整理
- バンデッド問題
- 構造出力の教師あり学習
2.6 機械学習の基本:機械学習のさまざまな概念を知る
- 教師あり学習による画像分類
- 機械学習による「学習」の実現:特徴抽出の重要性
- ❶訓練データを用意する
- ❷学習対象のモデルを用意する:要素,重み,バイアス
- 内積を使う
- 入力と重みをスカラー値からベクトルに一般化
- パラメータの表し方
- 線形モデル
- スコアから分類結果に変換する:閾値関数
- [小まとめ]❶入力〜❷学習モデルまで
- ❸損失関数を設計する:モデルを学習させるための準備
- マージンと更新
- 損失関数の設計と損失関数の微分の形はとても重要
- 損失関数に用いられる関数の例
- 0/1損失関数
- クロスエントロピー損失関数
- クロスエントロピー損失関数とシグモイド関数
- 二乗損失,絶対損失
- ❹目的関数を導出する:訓練誤差
- ❺最適化問題を解く:勾配降下法,勾配
- 勾配降下法と勾配の基本
- 勾配降下法:勾配の負の方向に向かってパラメータを逐次的に更新する
- 確率的勾配降下法
- 確率的勾配降下法の効果:高速化,正則化
- 正則化:汎化性能を改善する
- ❻学習して得られたモデルを評価する:汎化誤差
- モデルの評価とデータ準備における注意点
2.7 確率モデルとしての機械学習
- 最尤推定,MAP推定,ベイズ推定
- 学習問題を確率の枠組みでとらえるメリット:ベイジアンニューラルネットワーク
2.8 本章のまとめ
第3章 ディープラーニングの技術基礎 ——データ変換の「層」を組み合わせて表現学習を実現する
3.1 表現学習:「表現」の重要性と難題
- 情報をいかに表現するか:機械学習における重要な問題
- 文書の表現問題
- BoW:「局所的な情報」である「単語の出現情報」で文書を表す
- BoW表現の問題
- 画像の表現問題:BoVW
- 従来の専門家による特徴設計/表現方法の設計
- ディープラーニングは表現学習を実現しているから高性能である
3.2 ディープラーニングの基礎知識
- ディープラーニングとは何か
- ニューラルネットワークは「脳のしくみ」からスタートした
- 強度に共通する重み(パラメータ)
- ニューラルネットワークは挙動を望むように変えられる
- ニューラルネットワークで複雑な問題を扱う:大量の関数の組み合わせと学習データが必要
3.3 ニューラルネットワークはどのようなモデルなのか
- 単純な線形識別器の例
- 線形識別器の拡張:複数の線形の関係を扱う
- 線形識別器を重ねて多層のニューラルネットワークを作る
- モデルの表現力:そのモデルがどのくらい多くの関数を表現できるか
- 非線形の活性化関数を挟むことでモデルの表現力を上げる
- 活性化関数と万能近似定理
- 層とパラメータ
- ニューラルネットワークの別の見方
- 神経回路網として見たニューラルネットワーク:基本構成,活性化,活性値
- 計算グラフとして見たニューラルネットワーク:分岐/合流/繰り返し,パラメータ共有
3.4 ニューラルネットワークの学習
- 学習とは何か:「パラメータ調整」による挙動の修正
- ニューラルネットワークの「学習」の実現:最適化問題と目的関数
- 学習を実現する最適化問題を解く:どのように最適化するか
- [最適化戦略❶]パラメータを1つずつ修正していく
- [最適化戦略❷]パラメータをランダムにまとめて修正していく
- [最適化戦略❸]パラメータを勾配を使ってまとめて修正していく戦略
3.5 誤差逆伝播法:勾配を効率的に計算する
- 勾配の求め方:偏微分
- 誤差逆伝播法による勾配の効率的な計算
- 誤差逆伝播法の導入:大きなシステムにおける離れた変数間の相互作用
- 合成関数の微分:構成する各関数の微分の積で全体の微分を計算する
- 動的計画法による高速化:逆向きに微分を掛け合わせていくと効率が良い
- 微分の共通部分
- ニューラルネットワークに誤差逆伝播法を適用する
- [小まとめ❶]学習と誤差逆伝播法:各変数についての偏微分を効率良く求める
- [小まとめ❷]たくさんの入力とパラメータが一つの出力につながる:共有化,高速化と計算コストの目安
- 1層の隠れ層を持つニューラルネットワークに対する誤差逆伝播法
- ディープラーニングフレームワークは順計算さえ定義すれば,誤差逆伝播法は自動的に実現される
- ディープラーニングにおけるアーキテクチャ設計
3.6 ニューラルネットワークの代表的な構成要素
- ニューラルネットワークの構成要素:テンソル,接続層,活性化関数
- [主要な構成要素❶]テンソル:構造化されたデータ
- [主要な構成要素❷]接続層:ニューラルネットワークの挙動を特徴づける
- 総結合層:Fully Connected Layer
- MLP:多層パーセプトロン
- 畳み込み層:Convolutional Layer
- 画像とパターンが一致しているかは「内積の大きさ」で評価できる
- 画像中にパターンがどの位置で出現しているかを調べる:特徴マップ
- 特徴マップ
- フルカラー画像中にパターンがどの位置で出現しているかを考える
- 複数のパターンがそれぞれどこに出現しているのかを調べる
- パターン検出は「畳み込み操作」で実現される:カーネル,フィルタ,ストライド
- パターン検出後の特徴マップからパターンを再度検出する
- 畳み込み層とCNN
- [畳み込み層と総結合層の違い❶]疎な結合
- [畳み込み層と総結合層の違い❷]重み共有
- パラメータ数の劇的削減
- 可変サイズの画像や音声を扱える:FCN
- プーリング操作とプーリング層
- 回帰結合層:Recurrent Layer
- 回帰結合層は系列データ向けに作られている
- RNNは任意長の入力を扱える状態機械
- ループがある場合,誤差逆伝播法はどのように計算するか
- RNNは工夫しなければ,学習が難しい
- RNNは状態を有限の値に収めることが難しい
- 勾配爆発/消失問題
- ゲート機構
- 代表的なゲート
- LSTM:広く使われているゲート機構
- GRU
- [主要な構成要素❸]活性化関数:活性化関数に必要な3つの性質
- ReLU:スイッチのような活性化関数
- ReLUの優れた性質
- ReLUはディープラーニングの「学習」における三大発明の一つ
- シグモイド関数
- シグモイド関数の微分
- Tanh関数
- シグモイド関数との関係
- Hard Tanh関数
- LReLU
- PReLU
- Softmax関数
- さまざまな活性化関数:ELU,SELU,Swishなど
- MaxOut
- CReLU
- Lifting Layer
3.7 本章のまとめ
第4章 ディープラーニングの発展 ——学習と予測を改善した正規化層/スキップ接続/注意機構
4.1 学習を可能にした要素技術の一つ:ReLUのような活性化関数
- [再入門]ReLUのような活性値,誤差を保つ活性化関数
4.2 正規化層
- 正規化関数と正規化層:活性値の正規化
- なぜ活性値を正規化するのが学習に大事なのか
- [活性値の正規化の重要性❶]非線形を生み出し,表現力を高く保つ
- [活性値の正規化の重要性❷]学習の高速化と安定化
- [活性値の正規化の重要性❸]汎化性能を改善する
- バッチ正規化
- ミニバッチを使って全体の統計量を近似する
- 正規化後の分布を2つめのパラメータで制御する
- 「推論時」に使う統計量は「学習時」に推定しておく
- バッチ正規化の適用
- バッチ正規化は学習を劇的に安定化し,学習率を大きくできる
- 正規化後の分布を決めるβとγは挙動を変える重要な役割を持っている
- バッチ正規化を使う際の注意点:スケール情報の消失,他データへの依存性
- テンソルデータの正規化:チャンネルごとの正規化
- 層/サンプル/グループ正規化
- 層正規化
- サンプル正規化
- グループ正規化
- 重み正規化
- 重み標準化
- 重み標準化の効果と使い方
- [アドバンス解説]白色化
- 共分散行列から固有値を求める
- ZCA変換を使い,特徴を白色化する
4.3 スキップ接続
- スキップ接続のしくみ:変換をスキップして出力に接続
- 勾配消失問題:なぜ誤差逆伝播時に誤差が途中で消失してしまうのか
- スキップ接続は高速道路のように情報や誤差をそのまま伝える
- スキップ接続は逐次的推論を実現する
- スキップ接続は情報を落とさず,ボトルネックを使える
- スキップ接続の変種
- [スキップ接続の変種❶]PreActivation
- [スキップ接続の変種❷]Single ReLU
4.4 注意機構:入力に応じて,データの流れ方を動的に変える
- 注意機構の基本
- 「注意」の重要な役割と注意機構:選択/フィルタリング
- [注意機構の役割❶]表現力を改善できる
- データに応じて関数の形を変えられる能力
- [注意機構の役割❷]学習効率を改善できる
- 影響を与える範囲を限定的にするしくみ
- [注意機構の役割❸]汎化能力を改善できる
- 「時間スケール」の異なる記憶のしくみ
- ニューラルネットワークの記憶の方法
- [記憶のしくみ❶]活性値/内部状態:すぐアクセス,小容量
- [記憶のしくみ❷]重み/パラメータ:過去と一致しているかを調べている
- [記憶のしくみ❷']Fast Weight
- [記憶のしくみ❸]過去の内部状態を「注意機構」で読み出す
- 代表的な注意機構
- 最初の注意機構
- 遠距離の情報をどのように考慮するか
- 注意機構を使って,遠距離の情報を読み取る
- 注意機構は読み取る情報を選択できる
- 注意機構は「微分可能」で,「end-to-end」で学習できる
- 注意機構は遠く離れた情報を1ステップで読み込む
- ソフト注意機構とハード注意機構
- 自己注意機構/Transformer
- スケール化内積注意機構
- 複数ヘッドを使った注意機構
- 要素ごとのMLPを使った変換
- 符号化と復号化から成る「Transformer」
- 位置符号化
- 効率的な自己注意機構へ:自己注意機構の致命的欠点
- Big Bird:線形の計算量で処理できる自己注意機構
4.5 本章のまとめ
第5章 ディープラーニングを活用したアプリケーション ——大きな進化を遂げた画像認識,音声認識,自然言語処理
5.1 画像認識
- 画像分類
- ニューラルネットワークによる画像処理
- 画像認識の基本的な処理の流れ
- 画像分類の発展の歴史
- AlexNet
- AlexNetの基本:画像認識の基本的なアイディアを導入した
- AlexNetのパラメータ数と特徴マップ
- VGGNet
- GoogleNet:Inceptionモジュール
- 画像認識ではスケールが異なる対象の処理が必要
- 各層の結果を足す場合と結合する場合の違い
- ResNet:スキップ接続の導入
- DenseNet
- SENet:注意機構の先駆け
- Squeeze操作とExcitation操作を組み合わせる
- 画像全体から求めた「注目すべきチャンネル」だけ残す
- ILSVRCとその後
- ViT,MLP-Mixer
- [分類以外のタスク]検出,セグメンテーション
- 検出
- セマンティックセグメンテーション
- U-Net
- インスタンスセグメンテーション
- パノプティックセグメンテーション
- Mask R-CNN:検出とインスタンスセグメンテーションの実現例
- [Mask R-CNN❶]CNNを使った特徴抽出
- [Mask R-CNN❷]検出候補の列挙
- [Mask R-CNN❸]検出候補の推定
- [Mask R-CNN❹]セグメンテーションの推定
- 画像認識の高速化
- グループ化畳み込み操作
- チャンネルシャッフル:グループ化畳み込みの問題への対応
- デプスワイズ畳み込み操作
- シフト
- その他の畳み込み操作:Dilated畳み込み操作,Deformable畳み込み操作
5.2 音声認識
- 音声認識処理の三つのステップ
- [ステップ❶]フロントエンド
- [ステップ❷]音響モデル
- [ステップ❸]言語モデル
- ニューラルネットワークと音声認識
- LASによる音声認識
- LASの基礎知識
- Listener
- Speller
- 学習時と推論時の分布の違いに対応する
- 推論
5.3 自然言語処理
- 言語理解:コーパスで「事前学習」する
- BERT:マスクされた単語を予測する
- BERTのモデルの学習
- 学習時と推論時の分布の不一致を学習する
- 多くのタスクに役立つBERT
- [BERTの特徴❶]自己注意機構で表現力を大きく向上できる
- [BERTの特徴❷]前後の文脈情報を見て文を深く理解する
- [BERTの特徴❸]大量のコーパスを利用し事前学習させる
- GPT-2/GPT-3
5.4 本章のまとめ
Appendix [厳選基礎]機械学習&ディープラーニングのための数学
- A.1 線形代数
- A.2 微分
- A.3 確率