深層学習DAY4要約1
Section1)強化学習
強化学習とは
・長期的に報酬を最大化できるように環境の中で行動を選択できるエージェントを作ることを目標とする機械学習の一分野。行動の結果として与えられる利益をもとに、行動を決定する原理を改善していく仕組み。
探索と利用のトレードオフ
環境について事前に完璧な知識があれば、最適な行動を予測し、決定することは可能。
強化学習の場合、上記の家庭は成り立たないとする。不完全な知識をもとに行動しながら、データを収集。最適な行動を見つけていく。
過去のデータでベストとされる行動のみを常に取り続ければ、他にもっとベストな行動を見つけることはできない。一方で未知の恋有働のみを常に取り続ければ、過去の経験が活かせない。
・目標が異なる。教師あり、教師なし学習では、データに含まれるパターンを見つけ出す、及びそのデータから予測することが目標。
強化学習では、優れた方策を見つけることが目標。
強化学習の歴史
・冬の時代があったが計算速度の進展により大規模な状態を保つ場合の、強化学習を可能としつつある。
・関数近似法と、Q学習を組み合わせる手法の登場
・Q学習とは、行動価値観数を、行動するごとに更新し、学習を進める手法。
・関数近似法とは価値観数や方策関数を関数近似する手法のこと。
価値関数
・価値を表す関数としては、状態価値関数と行動価値関数の2種類がある。
・ある状態の価値に注目する場合は、状態価値関数。
状態と価値を組み合わせた価値に注目する場合は、行動価値観数。
方策関数
・方策関数とは、方策ベースの強化学習手法において、ある状態でどのような行動を取るのかの確率を与える関数のこと。
方策勾配法について
・方策反復法:方策をモデル化して最適化する手法。
・Jとは方策の良さで定義する必要がある。
・定義方法は平均報酬と割引報酬話がある。
上記の定義に対応して行動価値関数の定義を行う。
Section2) AlphaGo
Alpha go Lee
・Policy Netは19×19の着手予想確率が出力される
・Value Netは現局面の勝率を−1~1で表したものが出力される。
・Rolloutpolicy:NNではなく線形の方策関数。探索中に高速に着手確立を出すために使用される。
PolicyNetの教師あり学習
・KGS GO Serverの寄付データから3000万局分の教師を用意し、教師と同じ着手を予測できるよう学習を行なった。
ValueNetの学習
・Policy Netを使用して対極シミュレーションを行い、その結果の勝敗を教師として学習した。
モンテカルロ木探索
・Alphagoのモンテカルロ機探索は選択、評価、バックアップ、成長という4つのステップで構成される
ResidualNetwork
・ネットワークにショートカット構造を追加して、勾配の爆発消失を抑える効果を狙ったもの。ResidualNetworkを使用することにより、100層を超えるネットワークでの安定した学習が可能となった。
Seciton3) 軽量化・高速化技術
分散深層学習とは
・深層学習は多くのデータを使用したり、パラメータ調整のために多くの時間を使用したりするため、高速な計算が求められる。
。複数の計算資源を使用し、並列的にニューラルネットを構成することで、効率の良い学習を行いたい。
・データ並列化、モデル並列化、GPUによる高速技術は不可欠である。
データ並列化
・親モデルを各ワーカーに小モデルとしてコピー
・データを分割し、各ワーカーごとに計算させる。
同期型
・各ワーカーが計算が終わるのを待ち、全てのワーカーの勾配が出たところで勾配の平均を計算し、おやモデルのパラメータを更新する。
非同期型
・各ワーカーはお互いの計算を待たず、各個モデルごとに更新を行う。
・学習が終わった子モデルはパラメータサーバーにPushされる。
・新たに学習を始めるときは、パラメータサーバからPopしたモデルに対して学習していく。
同期型と非同期型の比較
・処理スピードは、お互いのワーカーの計算を待たない非同期型の方が早い。
・非同期型は最新のモデルのパラメータを利用できないので、学習が不安定になりやすい。
・現在は同期型の方が精度が良いことが多いので、主流となっている。
モデル並列化
・親モデルを各ワーカーに分割し、それぞれのモデルを学習させる。全てのデータで学習が終わった後、一つのモデルに復元。
・モデルが大きいときはモデル並列化を、データが大きいときはデータ並列化をするとよい。
モデル並列
・モデルのパラメータ数が多いほど、スピードアップの効率も向上する。
GPUによる高速化
・GPGPU(Gneral-purpose on GPU)元々の使用目的であるグラフィック以外の用途で使用されるGPUの総称
・CPU:高性能なコアが少数、複雑で連続的な処理が得意
・GPU:比較的低性能なコアが多数、簡単な並列処理が得意、ニューラルネットの学習は単純な行列演算が多いので、高速化が可能
GPGPUの開発環境
CUDA
・DL用に提供されているので使いやすい
・GPUで並列コンピューティングを行うためのプラットフォーム
・オープンな並列コンピューティングのプラットフォーム
・DL用の計算に特化しているわけではない
モデルの軽量化の利用
・モデルの軽量化はモバイル、IoT機器において有効な手法
・モデルの軽量化は計算の高速化と省メモリ化を行うためモバイル、IoT機器と相性が良い手法になる。
軽量化の手法
・量子化、蒸留、プルーニング
・量子化とは、ネットワークが大きくなると大量のパラメータが必要になり、学習や推論に多くのメモリと演算処理が必要になる。
・通常のパラメータの64Bit浮動小数点を32Bitなど回の精度に落とすことでメモリと演算処理の削減を行う
量子化の利点と欠点
・利点:計算の高速化、小メモリ化
・欠点:精度の低下
蒸留とは
・精度の高いモデルはニューロンの規模が大きなモデルになっている。そのため、推論に多くのメモリと演算処理が必要。規模の大きなモデルの知識を使い、軽量なモデルの作成を行う。
モデルの簡略化
・学習済みの精度の高いモデルの知識を軽量なモデルへ継承させる
・蒸留は教師モデルと生徒モデルの2つで構成される。
・教師モデル:予測精度の高い、複雑なモデルやアンサンブルされたモデル
・生徒モデル教師モデルをもとに作られる軽量なモデル
・教師モデルの重みを固定し、生徒モデルの重みを更新していく。
・誤差は教師モデルと生徒モデルのそれぞれの誤差を使い重みを更新していく
プルーニング
・ネットワークが大きくなると大量のパラメータが必要になるが、全てのニューロンの計算が精度に寄与しているわけではない。
・モデルの精度に寄与が少ないニューロンを削減することでモデルの軽量化、高速化が見込まれる。
Section4)応用技術
Mobile Nets
・ディープラーニングモデルは精度は良いが、その分ネットワークが深くなり計算量が増える。
・計算量が増えると、多くの計算リソースが必要で、お金がかかってしまう。
・ディープラーニングモデルの軽量化・高速化・高精度化を実現。
Depthwise convolution
・入力マップのチャンネルごとに畳み込みを実施(チャンネルごとのフィルタを一つにし、重みを共有する)
・出力マップをそれらと結合(入力マップのチャンネル数と同じになる)
・通常の畳み込みカーネルは全ての層にかかっていることを考えると計算量が大幅に削減可能
・各層ごとの畳み込みなので層の間の関係性は全く考慮されない。通常はPW畳み込みとセットで使うことで解決
Pointwise Conovlution
・1×1畳み込みとも呼ばれる(正確には1×1×c)
・入力マップのポイントごとに畳み込みを実施
・出力マップ(チャネル数)はフィルタ数分だけ作成可能
MobileNetのアーキテクチャ
・Depthwise Separable Convolutionという手法を用いて計算量を削減している。通常の熱海込みが空間方向とチャネル方向の計算を同時に行うのに対して、Depthwise Separable ConvolutionではそれらをDepthwise convolutionとPointwiseConvolutionと呼ばれる演算によって個別に行う。
・Depthwise convolution絵はチャネルごとに空間方向へ畳み込む。すなわちチャネルごとにDk×Dk×1のサイズのフィルターをそれぞれ用いて計算を行うため、その計算量はH×W×C× DK×Dkとなる。
・次にDepthwise Convolutionの出力をPointwise Convolutionによってチャネル方向に畳み込む。すなわち出力チャネルごとに1×1×Mサイズのフィルターをそれぞれ用いて計算を行うため、その計算量はH×W×C×Mとなる。
Batch Norm
・レイヤー間を流れるデータの分布を、ミニバッチ単位で平均が0・分散が1になるように正規化。
・Batch Normalizationはニューラルネットワークにおいて、学習時間の短縮や初期値依存低減、過学習の抑制など効果がある。
・問題点として、バッチサイズが小さい条件下では、学習が収束しないことがあり、代わりにLayer Normalizationなどが使われることが多い
Layer Norm
・それぞれのサンプルの全てのピクセルが同一分布に従うよう正規化
Instance Norm
・Channelも同一分布に従うよう正規化
WaveNet
・生の音声波形を生成する深層学習モデル
・Pixel CNNを音声に応用したもの
・時系列データに対して畳み込み(ダイレイト畳み込み)を適用する。
・ダイレイト畳み込みとは、層が深くなるにつれて畳み込むリンクをはなす
・ダイレイト畳み込みを用いた際の大きな利点は単純なConolutionConolution Layerと比べて受容野が広いことである。