「G検定(ジェネラリスト検定)」を無事取得できてしまったので、本格的にE資格に向けてお勉強していかなければならぬ
本業とはほとんど関わらないけど、Xi IoTの合間に自分用メモ置き場
※文章題にされる急に弱くなってしまうので、主に自分の理解がおっついてないところ
※随時更新予定
Deep Neural Network基礎
ロジスティックス回帰分析
線形モデルである
線形モデルは変数の線形的な変化しか捉えることができないため、二変数の相互作用を捉えることはできない。
分布用語
ベルヌーイ分布:結果が0か1である分布。2値分布との違い理解できていない
マルチヌーイ分布:多項分布
ガウス分布:正規分布のこと
◆コスト関数(損失関数)
ニューラルネットを学習するためには、予測した目的変数と正解データとの差を定量化したコスト関数を定義する
・コスト関数が小さいほど、モデルの予測が訓練データに近いと言える
・目的、対象に応じて異なるコスト関数を定義することが必要になる
対数尤度
コスト関数 J(θ) は負の対数尤度関数、最尤推定をする=負の対数尤度最小化(交差エントロピー、クロスエントロピー)
回帰問題のとき
線形ユニット出力に対するコスト関数
分類問題のとき
シグモイドユニット出力(ベルヌーイ分布)における最尤学習の損失関数
ソフトマックスユニット出力(マルチヌーイ分布)に対するコスト関数
第1項は入力z が常にコスト関数に直接影響を与えていることを示している。
第2項はすべてのz を小さくする方向に寄与する。この項はmax z で概ね近似できる
もし正解がすでにソフトマックスへの入力の最大値ならば第1項と第2項は打ち消し合い、このデータは訓練にほとんど影響を与えない。
前処理と工夫
◆スパース性
高次元の行列・ベクトルの成分の多くを0にすること
重みや入力などを適度にスパースにすることにより学習が効率的に進む
L1正則化は重みをスパースにする(いくつかのパラメータの最適値を0)
◆ノイズ耐性
デノイジングオートエンコーダ
学習サンプルにランダムノイズを与え、入力画像からノイズを除去できるオートエンコーダ
・オートエンコーダとネットワーク構成は変わらない
・少ない学習データでより良い学習成果 を得られる
・入力した情報を維持したまま、よりよい特徴を抽出できる
ドロップコネクト
中間層の重みの一部をランダムに選んで0にする方法
・性能面ではドロップアウトより優れている
・乱数の値の与え方が異なると同じ性能を達成するのが困難
ラベル平滑化
ソフトマックス関数の正則化に用いられる方法
目的関数の値を 1, 0 ではなく、、1 ー ε に設定する
目標が 0 、 1 だと重みがどんどん大きくなり極端な予想をする可能性がある
◆ドロップアウト
ニューラルネットの正則化の手法の一つ
CNN の全結合層等に施す処理
ノードのうちのいくつかを無効にして学習を行う(予測ではない)
一般的に 50 前後 を指定すると有効とされる
テスト時にはすべてのネットワークを使う
◆パラメータ
パラメータ拘束
2 つのタスクが非常に類似している場合、2つのモデルのパラメータが近いと想定できる
この情報は 正則化として、この値に上限を設けることによりパラメータに互いに制限をかけることが出来る
パラメータ共有
パラメータ共有はパラメータ拘束をさらに進めたもの、パラメータのある部分を同じにする
・複数のモデルが同じパラメータ持つのでメモリの節約になる
・典型的な例:CNN の 畳み込み処理 での フィルタ の処理
最適化
◆学習と最適化計画
経験損失最小化
平均訓練誤差の最小化に基づく学習過程
しかし過剰適合しがち(特に容量の大きいモデル)なので、現在は勾配降下法が最も効果的
ミニバッチ
・ミニバッチは選択前に シャッフルされる必要がある
・シャッフルされずに事例を順番に抽出すると計算時のバイアス が大きくなる
・バッチサイズが大きい場合、計算時間がかかる、必要メモリ量が増える
・バッチサイズが小さい場合、推定分散が大きく、安定性を維持するために学習率を小さくする必要が生じやすい
・バッチサイズを10000倍にすると計算量は10000倍だが、精度は100倍しか改善しない
CNN
◆モデル
AlexNet 2012年
特徴量設計を機械学習で実現した初のモデル
ReLU、データ拡張、ドロップアウトを利用
GoogLeNet2014年
多重化に特化したネットワーク設計
・Inception Module:複数種類の小サイズフィルタで畳み込みの並列化
・Auxiliary Loss:中間層における誤差の計測、勾配消失の防止(ネットワーク正則化)
・Global Average Pooling:フィルタ平均による出力
・Pointwise Convolution:縦×横方向の畳み込みとチャンネル方向の畳み込みを分割
VGG2014年
フィルタを3x3、プーリングを2x2に固定
・学習パラメータの削減による過学習の抑制
・層の多重化による表現力の向上(活性化関数の使用回数が増加して)
ResNet2015年
・Residual Block:勾配を伝搬するショートカット構造(Identity mapping)
・最大152層のネットワーク
R-CNN2013年
CNNを用いた物体検出アルゴリズム
1.領域候補を検出(Selective Search)
2.CNNに合うように画像リサイズ
3.CNNで特徴量抽出
4.各領域をSVMで分類
Fast R-CNN
R-CNNを改良し学習時間を短縮、損失関数を候補領域抽出タスクと分類タスクで共有(multi-task loss)
→R-CNN複数の学習モデルを一括で学習可能
1.CNNで畳み込み特徴量抽出
2.特徴マップからregion proposalにあたる部分領域をうまく「固定サイズのfeature map」として抽出(RoI Pooling)
3.分類
RNNは理解が文章にした時難しい。。。
RNN
次の時刻での入力となる値を線形変換し、softmax関数を施したものを出力する
双方向RNN:順方向RNNと逆方向RNNをそれぞれ系列データを順方向,逆方向に入力して最後にそれぞれの出力をマージする.
Leakyユニット:前時刻からの接続をα倍,入力層からの接続を1-α倍する
教師強制:訓練時の正解ラベルは与えられているため、時刻tの訓練をする際に時刻t-1の中間層からの入力を計算を待つ必要がない。並列処理が可能
勾配消失と勾配爆発:勾配消失と勾配爆発の現象は、RNNでよく見られる。これらの現象が起こる理由は、掛け算の勾配が層の数に対して指数関数的に減少/増加する可能性があるため、長期の依存関係を捉えるのが難しいから
勾配クリッピング: 勾配爆発問題に対処するために使用される手法。勾配の上限値を定義することで、実際にこの現象が抑制
エコステートネットワーク:学習が容易なパラメータに絞って学習を行う。学習の難しいパラメータとは時系列情報の回帰重みと入力データに対する重み
BLEU:翻訳タスクなど、正解の文が既知な状況で生成された文がどれだけそれに似
ているかを評価する指標
LSTM
・Inputゲート:現時刻の入力をどの程度メモリに取り込むかを制御
・Forgetゲート:メモリのデータをどの程度保持するかを制御
・Outputゲート:現在のメモリの値をどの程度出力するかを制御
GRU:LSTMを単純化、ゲートを3つから2つに減らし、出力と内部状態を同じにする
・Resetゲート:前の状態をどの程度計算に使用するか
・Updateゲート:計算した値と前の状態をどの割合で出力するか
単語埋め込み(word embedding):単語をベクトル空間に落とし込む
・RNNのパラメータと同時に学習することが多い
・学習の結果、似た意味の単語は似たベクトルになることが期待できる
Seq2Seq
・エンコーダ(符号化器)は系列の情報を要約して固定長ベクトルでContextに詰め込む
・デコーダ(復号化器)はContextから別の系列を生成する
入力と出力の長さが異なってもいい
強化学習
◆価値関数ベース
モンテカルロ法:実績に基づき、次の行動を状態評価に従って決定する
SRSA:次の行動を方策評価に従って決定する
Q-learning:次の行動を状態行動価値Q(s,a)の最大化で決定する
貪欲法:最初にまとめて探索を行って、最大の報酬が得られた行動を固定し、以後活用のみを行う
UCB1:最初にとりうる行動を一通り試したのち、信頼区間の上限の値を加味した最良のケースでの報酬期待値から最適な行動を決めて実行する
ε-greedy:ある一定の確率で探索と活用をそれぞれ行い続ける
トンプソンサンプリング:ベイズ戦略の一種で、事後確率に従って行動をランダムに選択する
DQN:行動価値関数をディープニューラルネットワークで表現
・状態に画像やテキストそのまま入力できる
・TD誤差を用いて重みを学習させる
報酬のクリッピングは[-1, 1]の範囲