レポート[深層学習 day4]

##強化学習
長期的に報酬を最大化するよう行動するエージェントを作ることを目標とする機械学習の一分野であり，行動の結果として与えられる報酬をもとに，行動を決定する原理を改善していく仕組みである．強化学習は報酬を最大化するように方策を訓練し，行動させる．強化学習の教師あり・教師なし学習との違いは，目的の違いにある．教師あり・なし学習はデータから特徴量を見つけ未知データを予測することが目的であったが，強化学習は優れた方策を見つけることが目的である．

強化学習を適切に行うには，未知データの探査と過去データの利用の両立が必要である．
数学モデルを説明する．ここでの目標は方策の良さ$J$を最大化させることである．次式により勾配法を用いる．
$$\theta^{(t+1)}=\theta^{(t)}+\epsilon \nabla J(\theta)$$
方策勾配$\nabla J(\theta)$は方策勾配定理より次式から求めることができる．
$$\nabla J(\theta)=\mathrm E_{\pi _\theta}[(\nabla \log \pi _\theta(a|s)Q^\pi(s,a))]$$

##AlphaGo
AlphaGOは囲碁のプログラムである．以下の学習ステップからなる．

- 教師あり学習によるRollOutPolicyとPolicyNetの学習
- 強化学習によるPolicyNetの学習
- 強化学習によるValueNetの学習

コンピュータ囲碁ソフトで現在最も有効とされている探査法はモンテカルロ木探査で，AlphaGoにも用いられている．
主に2つのモデル，AlphaGo LeeとAlphaGo Zeroがある．
AlphaGo Leeは入力が19x19のデータ，48チャンネルである．チャンネルは例えば，自石，敵石，空白などである．
AlphaGo ZeroはAlphaGo Leeとの違いとして以下が挙げられる．

- 教師アリ学習を一切行わず，強化学習のみでモデルを作成する．
- 特徴入力からヒューリスティックな要素を排除し，石の配置のみにする．
- PolicyNetとValueNetを一つのネットワークに統合する．
- Residual Netを導入する．
- モンテカルロ木探査からRollOutシミュレーションをなくす．

ここでResidual Networkはネットワークにショートカット構造を追加して勾配消失・爆発を抑制を狙うネットワーク構造である．



##データ並列化
深層学習は多くのデータを使用し，パラメータ調整のために多くの時間を使用することから，計算の高速化技術が必要である．十分な計算資源を使用し，並列的にニューラルネットを構成することで効率的な学習を行いたい．データ並列化は下図のように親モデルを各ワーカーに子モデルとしてコピーし，分割データを各ワーカーごとに計算させる．

データ並列化の手法は主に同期型と非同期型の2種類に分かれる．同期型は各ワーカー計算後，勾配の平均を計算し，親モデルのパラメータを更新する．非同期型は各ワーカーで計算が終了したものからパラメータサーバに子モデルをPushし，新たにモデルをPopするようにパラメータを更新する．非同期型は計算速度が速いが最新モデルのパラメータを利用できないため，学習が不安定になりやすいStable Gradient Problemが発生する．現在は同期型の方が精度が高く，主流となっている．


##モデル並列化
親モデルを各ワーカーに分割し，各モデルを学習させる．学習終了後，モデルを一つに復元する．モデルが大きいときはモデル並列化，データが大きいときはデータ並列化を行うとより高速計算できる．
モデルのパラメータ数が多いほど計算速度の効率化効果が大きい．

##量子化
ネットワークが大きくなると大量のパラメータが必要となり，学習に多くのメモリと高い演算処理能力を必要とする．メモリと演算処理量の削減手段としては，64bit浮動小数点を32bitなど下位の精度に落とすことが挙げられる．小数をbitで表現することは量子化と呼ばれる．量子化の精度を落とす，つまり，各ニューロンの重みの浮動小数点のbit数を減らし有効桁数を減らすことで，モデルが消費するモデルのメモリ使用量を抑えることができる．ここで，64bitの浮動小数点表現は「倍精度」，32bitの場合は「単精度」と呼ぶ．実務上，ディープラーニングでの浮動小数点表現は16bit（半精度）がよく用いられる．

##蒸留
大規模なニューラルネットワークは多くのメモリと高い演算処理が必要である．蒸留は大規模なモデルの知識を用いて軽量なモデルを生成し，計算コストを削減することである．元のモデルとして精度の高いものを作り，知識の継承により軽量でかつ複雑なモデルに匹敵する軽量なモデルを作成する．蒸留は教師モデルと生徒モデルの2つを用いる．ある入力に対して，生徒モデルの重みを更新し，重みが固定された教師モデルとの誤差を計算後，生徒モデルの重みを更新するような手順を繰り返す．これにより，生徒モデルを教師モデルに近づけていく．

##プルーニング
ネットワークが大きくなると大量のパラメータがすべてのニューロンの計算精度に寄与しているわけではない．そこで，寄与度の少ないニューロンの削減を行いモデル圧縮することで計算の高速化を行う．これをプルーニングを呼ぶ．寄与度の少ないニューロンとは言い換えれば値の小さい重みである．重みが閾値以下の場合，そこのニューロンを削減する．

##MobileNet
一般的な畳み込みレイヤーは計算量が多い．MobileNetはこの計算量を軽量化させるネットワークであり，Depthwise ConvolutionとPointwise Convolutionの組み合わせで実現させる．まず，Depthwise Convolutionの仕組みを述べる．こちらは，フィルタ数を1つにすることで，通常の畳み込みに対して，フィルタ数分だけの計算量を削減できる．次にPointwise Convolutionの仕組みを述べる．こちらは，フィルタ数は複数にして，カーネルを1x1にする．全体の計算量はカーネルのサイズ分だけ削減できる．最終的に，DepthWise Conv.とPointWise Conv.の加算を行うことで，通常の畳み込みより計算量を削減することができる．

##DenseNet
ニューラルネットワークでは層が深くなるにつれて学習が難しくなるという問題があったが，Residual NetworkなどのCNNアーキテクチャでは前方の層から後方の層へアイデンティティ接続を介してパスを作ることで問題を対処した．DenseNetもそのようなネットワーク構成の一つであり，DenseBlockと呼ばれるモジュールを用いる．DenseBlockは出力層に前の層の入力を足し合わせることで層間の情報の伝達を最大化するようなモジュールである．

##BatchNorm
Batch Normalizationは各層でのアクティベーションの分布を適度な広がりを持つように調整することで，学習促進，初期値依存度低下，過学習の抑制を行うことである．名前の通り，学習を行う際のミニバッチを単位として，ミニバッチ事に正規化を行う．具体的には，平均0，分散1になるように正規化を行う．
Batch Normの問題として，Batchサイズが小さい条件では，学習が収束しない場合がある．この問題を受けて，代わりにLayer Normが用いられる場合がある．

##LayerNorm
Batch Normの効果はミニバッチのサイズに依存し，サイズを大きく取れない場合には効果が小さいという問題がある．そこでLayer Normを導入する．Batch Normが同一チャンネルのN個のデータに対して正規化を行っていたのにたいして，Layer Normはあるデータでのすべてのチャンネルの正規化を行う．こうすることで，ミニバッチのサイズに依存することがない．

##WaveNet
WaveNetは生の音声波形を生成する深層学習モデルであり，Pixel CNNを音声に応用したものである．こちらは，時系列データに対して畳み込み（Dilated convolution）を適用する．層が深くなるにつれて畳み込むリンクを離すことで受容野を簡単に増やすことができる．

##Seq2seq
Seq2seqとは系列（Sequence）を入力として，系列を出力するモデルである．Encoder-Decoderモデルとも呼ばれる．実用例としては翻訳，音声認識などがある．ここでは言語モデルでSeq2seqを説明する．Seq2seqはRNNを利用する．RNNは系列情報を固定長の内部状態ベクトルに変換できる．各単語が現れる確率は事後確率で求めることができる．したがって，言語モデルを再現するようにRNNの重みが学習されていれば，ある時点の次の単語を予測することができる．

##Transformer
Seq2seqの欠点は，翻訳元の文の内容をひとつのベクトルで表現するため，文が長くなると表現力が不足することである．これを解決するのがAttention（注意機構）である．Transformerと呼ばれるモデルはRNNではなくAttentionを使って処理をするものである．具体的には，翻訳先の各単語を選択する際に，翻訳元の文中の各単語の隠れ状態を利用する．TransformerはSelf-Attentionが重要な役割を果たす．これはひとつの時系列データを対象にしたAttentionであり，ひとつの時系列データ内において各要素が他の要素に対してどのような関連性があるのかを見ていこうというものである．

##物体検知
物体検知は画像入力に対してBounding Boxを出力する．代表的なデータセットとして，VOC12，ILSVRC17，MS COCO18，OICOD18などがある．
物体検知はクラスラベルだけでなく，物体位置の予測も必要であることから，分類問題より難しい．物体位置の予測精度指標としてIoU(Intersection over Union)，AP(Average Precision)，mAP(mean Average Precision)がある．
それぞれ次式で表される．
$$\mathrm{IoU}=\frac{\mathrm{Area\ of\ Overlap}}{\mathrm{Area\ of\ Union}}$$
つまり，IoUは予測と正解の2つの領域がどれだけ重なっているかの精度を0～1で表現する．
$$\mathrm{AP}=\int_0^1P(R)dR$$
ここで$P$はprecisionの変数，$R$はRecallの変数である．
$$\mathrm{mAP}=\frac{1}{C}\sum_{i=1}^C\mathrm{AP}_i$$
ここで$C$はクラス数である．つまり，mAPはクラスごとのAPの算術平均である．

##セグメンテーション
セマンティックセグメンテーションを説明する．これはBounding Boxのような矩形領域を切り出すのではなく，画像の各画素がどのクラスに属するかを求める．セマンティックセグメンテーションの問題としては，ConvolutionやPoolingによって解像度が低下することが挙げられる．解像度低下によって各ピクセルに対してクラス分類することができないからである．そこでUp-samplingという手法によって元の解像に戻す．