ディープラーニングを支える技術-「正解」を導くメカニズム[技術基礎]
ディープラーニングを支える技術 ——「正解」を導くメカニズム[技術基礎] Tech × Books plus
技術評論社
著者:岡野原大輔
本書について
本書の構成
本書の補足情報
第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 確率
索引
Column
モデルとは何か
汎用人工知能 AGI
ビッグデータと機械学習、ディープラーニング
連続値のパラメータから成るモデルの仮説数 仮説数、パラメータ数、モデル複雑度
生成モデルと識別モデル
ディープラーニングに登場する「関数」
クロスエントロピーの導出
なぜ勾配が、値を最も急速に下げる方向になるのか
なぜ 0/1 損失関数は「学習」に使われないのか サロゲート損失関数
ニューラルアーキテクチャ探索 NAS
tf-idfによる特徴抽出
脳科学と人工知能の接点 脳を含む情報処理装置を理解するために
線形モデルと非線形モデルと万能近似定理
特異モデル
帰納バイアス
ディープラーニングフレームワークの基礎知識
多くの分野で、誤差逆伝播法は再発見されている
Fast Weight
MLPと注意機構
Geoffrey Hinton
ヒートマップを使った検出手法 CornerNet、CenterNet
音声認識の損失関数 CTC、RNN-T