「G検定模試をひたすら解説する!(YouTube)」視聴後まとめ

「G検定模試をひたすら解説する!(YouTube)」視聴後まとめ

May 6, 2023

機械学習の勉強のために次の動画を視聴した。振り返りのために内容を補完しつつ整理しておく。

上記の動画をはじめとして、本記事投稿時点で全6本のシリーズが動画があり、すべての動画を視聴済み。


ノート #

  • 「未学習なら高バイアス」「過学習なら高バリアンス」
    • 機械学習(や統計学)のモデルによる予測においてバイアス(偏り:Bias)とは、予測値と真の値(=正解値)とのズレ(つまり「偏り誤差:Bias error」)を指す。この予測誤差は、モデルの仮定に誤りがあることから生じる(なお、ニューラルネットワークのニューロンおける重みとバイアスの「バイアス」とは別物なので注意)。またバリアンス(分散:Variance)とは、予測値の広がり(つまり「ばらつき誤差:Variance error」)を指す。この予測誤差は、訓練データの揺らぎから生じる。モデルによる予測においてバイアス(偏り誤差)が大きすぎる場合、そのモデルは入力と出力の関係性を正確に表現できていない(=訓練データでさえも正確に予測できない)といえる。いわゆる「未学習(under-fitting)」の状態である。またモデルの予測においてバリアンス(ばらつき誤差)が大きすぎる場合、そのモデルは訓練データのノイズまで学習してしまっている(=テストデータなど未知のデータでは正確に予測できない)。いわゆる「過学習(over-fitting)」の状態である。
  • 内部共変量シフト:大規模なニューラルネットワークを学習すると、ある層の入力がそれより下層の学習が進むにつれて変化してしまうことがある。これにより学習が止まってしまうことが考えられる。このことを内部共変量シフトと呼ぶ。出力の偏りをなくす「バッチ正規化(Batch Normalization)」で対応される。
  • ベイズ最適化:ハイパーパラメータで指定する値がモデルの性能に大きく影響する。ハイパーパラメータはエンジニアが設定するものであり、どのようにハイパーパラメータを最適化するのかというのは「ハイパーパラメータ最適化(hyperparameter optimization, HPO)問題」と呼ばれる。ハイパーパラメータを含め最適化問題とする「ベイズ最適化」が探索手法として注目されている。
  • 「コスト関数 or ロス関数 or 誤差関数 or 損失関数」とは、機械学習モデルが算出した予測値と、実際の正解値のズレを計算するための関数。ズレであるため、小さいほど正確ということ。ディープニューラルネットワークの学習の目的はコスト関数を「最小化」することである。
  • 勾配降下法とは、最適化問題において、関数の勾配に関する情報を解の探索に用いるアルゴリズムの総称。具体的な最適化アルゴリズム(オプティマイザ)は以下。
    • 確率的勾配降下法(stochastic gradient descent, SGD)
    • モメンタム(Momentum)
    • RMSProp
    • AdaGrad
    • Adam:現在のデファクトスタンダードがこれ。
  • 敵対的サンプル(Adversarial Example):機械学習モデルに間違った予測をさせる、意図的に小さな摂動を持たせたサンプルのこと。パンダの画像に特定のノイズを加えることで、AI にテナガザルの画像と誤認識させたケースが有名。
  • 現在、人工知能研究は抽象概念や知識理解に辿り着くため大きく分けて三つの路線を辿っている。この三つの路線はとりわけある企業や大学によって研究が進められている。
    1. Google・Facebook 路線:言語データや映像データからの知識理解を目指す
    2. UC Barkeley 路線:実世界を対象に研究を進め、知識理解を目指す(身体性を重視)
    3. DeepMind 路線:オンライン空間上でできることをターゲットにして知識理解を目指す
  • VGGNet:ISLVRC-2014 で第 2 位を獲得したモデル。このアーキテクチャはネットワークの層数と分類の性能の関係を明らかにした研究結果でもある。この研究の結果、層を深くすればするほど性能が高くなることが論理的に明らかとなった。この発見が、以降のディープニューラルネットワーク開発において深さを探求するという方針を決定づけたとも言える。
  • ディープラーニングはソフトウェアフレームワークを利用して実装するのが一般的である。多層のニューラルネットワークモデルを定義し、データを用いて学習・予測を実行するのがフレームワークの役割だが、重要なのはネットワークの記述方法とその柔軟性である。ネットワークには大きく分けて二つの記述方法がある。一つ目は「設定ファイル」による記述方法である。これらの記述方法を採用しているソフトウェアには Caffe や CNTK があげられる。この方法を用いることによって、モデルの定義がテキストで設定でき、簡単に学習を開始させることが出来るというメリットがある。一方で、ループ構造をもつような RNN など、複雑なモデルを扱う際には、モデルの定義を記述することは難しくなる傾向にある。二つ目は、「プログラムに」よる記述方法である。代表的なフレームワークとして TensorFlow や Chainer があげられる。一度書き方を覚えてしまえば、複雑なモデルでも比較的簡単に記述することが出来るが、モデルは、それぞれのフレームワーク固有のソースコードで出来上がるため、モデルが使用しているソフトウェアに依存してしまうという問題がある。