konchangakita

KPSを一番楽しんでいたブログ 会社の看板を背負いません 転載はご自由にどうぞ

ディープラーニング 用語の個人的まとめ

f:id:konchangakita:20200331195744p:plain

G検定(ジェネラリスト検定)」を無事取得できてしまったので、本格的にE資格に向けてお勉強していかなければならぬ
本業とはほとんど関わらないけど、Xi IoTの合間に自分用メモ置き場
※文章題にされる急に弱くなってしまうので、主に自分の理解がおっついてないところ
※随時更新予定

Deep Neural Network基礎

ロジスティックス回帰分析
線形モデルである
線形モデルは変数の線形的な変化しか捉えることができないため、二変数の相互作用を捉えることはできない。

分布用語
ベルヌーイ分布:結果が0か1である分布。2値分布との違い理解できていない
マルチヌーイ分布:多項分布
ガウス分布正規分布のこと

◆隠れユニット(中間層)

シグモイド、ReLU(ランプ関数)、Leaky ReLU
tanh(ハイパボリックタンジェント
f:id:konchangakita:20200328124447p:plain:w160

実際にはReLUを使うことが多い模様

◆出力ユニット

線形ユニット:活性化関数が恒等関数のアフィン変換層
f:id:konchangakita:20200328123739p:plain:w130

ロジスティックシグモイド関数(シグモイドユニット)
f:id:konchangakita:20200328123459p:plain:w160

ソフトマックス関数(ソフトマックスユニット)
f:id:konchangakita:20200328123548p:plain:w190


◆コスト関数(損失関数)

ニューラルネットを学習するためには、予測した目的変数と正解データとの差を定量化したコスト関数を定義する
・コスト関数が小さいほど、モデルの予測が訓練データに近いと言える
・目的、対象に応じて異なるコスト関数を定義することが必要になる

対数尤度
f:id:konchangakita:20200327024333p:plain:w150

コスト関数 J(θ) は負の対数尤度関数、最尤推定をする=負の対数尤度最小化(交差エントロピー、クロスエントロピー
f:id:konchangakita:20200327024744p:plain:w400

回帰問題のとき
線形ユニット出力に対するコスト関数
f:id:konchangakita:20200327031150p:plain:w520

分類問題のとき
シグモイドユニット出力(ベルヌーイ分布)における最尤学習の損失関数
f:id:konchangakita:20200328123235p:plain:w450

ソフトマックスユニット出力(マルチヌーイ分布)に対するコスト関数
f:id:konchangakita:20200327031508p:plain:w400
第1項は入力z が常にコスト関数に直接影響を与えていることを示している。
第2項はすべてのz を小さくする方向に寄与する。この項はmax z で概ね近似できる
もし正解がすでにソフトマックスへの入力の最大値ならば第1項と第2項は打ち消し合い、このデータは訓練にほとんど影響を与えない。

誤差逆伝播

勾配消失問題
順伝播と逆伝播はそれぞれ層ごとの行列計算として表すことができ、形式的には似ているが、順伝播は非線形計算であるのに対し、逆伝播は線形計算であるという点で異なる。
そのため、逆伝播の入力から計算グラフの勾配を計算において、各層の重みが小さいと勾配は急に小さくなる。また、各層の重みが大きいと勾配は急に大きくなる。


前処理と工夫

◆スパース性

高次元の行列・ベクトルの成分の多くを0にすること
重みや入力などを適度にスパースにすることにより学習が効率的に進む
L1正則化は重みをスパースにする(いくつかのパラメータの最適値を0)

◆ノイズ耐性

デノイジングオートエンコーダ
学習サンプルにランダムノイズを与え、入力画像からノイズを除去できるオートエンコーダ
 ・オートエンコーダとネットワーク構成は変わらない
 ・少ない学習データでより良い学習成果 を得られる
 ・入力した情報を維持したまま、よりよい特徴を抽出できる

ドロップコネクト
中間層の重みの一部をランダムに選んで0にする方法
 ・性能面ではドロップアウトより優れている
 ・乱数の値の与え方が異なると同じ性能を達成するのが困難

ラベル平滑化
ソフトマックス関数の正則化に用いられる方法
目的関数の値を 1, 0 ではなく、f:id:konchangakita:20200329224316p:plain:w30、1 ー ε に設定する
目標が 0 、 1 だと重みがどんどん大きくなり極端な予想をする可能性がある

ドロップアウト

ニューラルネット正則化の手法の一つ
CNN の全結合層等に施す処理
ノードのうちのいくつかを無効にして学習を行う(予測ではない)
一般的に 50 前後 を指定すると有効とされる
テスト時にはすべてのネットワークを使う


◆パラメータ

パラメータ拘束
2 つのタスクが非常に類似している場合、2つのモデルのパラメータが近いと想定できる
この情報は 正則化として、この値に上限を設けることによりパラメータに互いに制限をかけることが出来る

パラメータ共有
パラメータ共有はパラメータ拘束をさらに進めたもの、パラメータのある部分を同じにする
・複数のモデルが同じパラメータ持つのでメモリの節約になる
・典型的な例:CNN の 畳み込み処理 での フィルタ の処理


最適化

◆学習と最適化計画

経験損失最小化
f:id:konchangakita:20200330131221p:plain:w400
平均訓練誤差の最小化に基づく学習過程
しかし過剰適合しがち(特に容量の大きいモデル)なので、現在は勾配降下法が最も効果的

ミニバッチ
・ミニバッチは選択前に シャッフルされる必要がある
・シャッフルされずに事例を順番に抽出すると計算時のバイアス が大きくなる
・バッチサイズが大きい場合、計算時間がかかる、必要メモリ量が増える
・バッチサイズが小さい場合、推定分散が大きく、安定性を維持するために学習率を小さくする必要が生じやすい
・バッチサイズを10000倍にすると計算量は10000倍だが、精度は100倍しか改善しない

◆学習のアルゴリズム

Momentum SGD:過去の勾配の減衰和を用いて更新する手法で、学習率は自分で設定する必要がある
AdaGrad:各方向の勾配の大きさを用いて次元ごとに学習率を変える手法で、学習率は単調に減衰する
RMSprop(AdaGradの改良):各方向の勾配の大きさの減衰和を用いて、次元ごとに学習率を変える手法
Adam(AdaGradとRMSpropの組み合わせ):勾配と勾配の大きさの両方の減衰和を用いて、次元ごとに学習率を変える手法。初期値に依存する不安定性を安定化させる

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]の範囲





その他の用語

万能近似定理:隠れユニットの数が多ければ任意の関数を近似できることを主張しているが、その関数を学習できることは保証していない

動的計画法は、良い制御器を見つける問題を良い価値関数を見つける問題に落とし込む手法である。
動的計画法とは、以下の2つの性質を満たすアルゴリズムの総称である。
帰納的な関係の利用:比較的小さな問題例の解や計算結果を帰納的な関係を利用して比較的大きな問題例を解くのに使用する。
計算結果の記録:小さな問題例、計算結果から記録し、同じ計算を何度も行うことを避ける。帰納的な関係での参照を効率よく行うために、計算結果は整数、文字などを見出しにして管理される。


わからなさ過ぎて、いったん放置

ヤコビ行列、ヘッセ行列
行列 X の擬似逆行列 X^+ の定義

プラトー(平坦な領域):勾配もヘッセ行列も0に近いため、学習ステップを進めてもなかなか抜け出せない領域である
FitNets:狭くて深いネットワークの学習の難しさに取り組むために、教師-生徒フレームワークの観点から広くて浅いネットワークを教師として活用している。