深層学習基礎概要

# ニューラルネットワーク
[TL;DR ニューラルネットワーク](https://qiita.com/cot-x/items/891285a54ac295e27562)

## 自己符号化器
Cottrellらは、多層パーセプトロンの隠れ層のノード数が入力層や出力層よりも少ない、砂時計型ニューラルネットワークを使い、入力信号自体を教師信号として誤差逆伝播学習させる事によって、隠れ層に入力信号の情報を保存し低次元化した表現が得られる事を示した。
この様なネットワークを自己符号化器と呼ぶ。

### 事前学習（ファインチューニング）
つまり、自己符号化器の隠れ層には入力信号の次元削減表現が収められているので、出力層を取り替えながらネットワークを積み重ねる事により、積層自己符号化器を作る事が出来る。（Bengioら）

### Encoder-Decoder
自己符号化器は、EncoderとDecoderの役割を担っていると考える事も出来る。


## 損失関数
平均二乗誤差や、交差エントロピー誤差、バイナリークロスエントロピー誤差等、様々な損失関数が考えられている。回帰問題や分類問題等、タスクによって使い分ける。


## 最適化アルゴリズム
確率的勾配降下法の他、最急降下法、モーメンタム、RMSProp、Adam等、理論的に整えられた様々なアルゴリズムが考えられている。


## 活性化関数
Sigmoid関数の他、ReLU，LeakyReLU，Swish，Mish，GLU，FReLU等、理論的に整えられた様々な活性化関数が考えられている。


# 画像認識
入力信号を二次元にし、その二次元ベクトルにカーネルと呼ばれる小さな二次元の重みベクトルをスライドさせながら畳み込み演算して適用する事で、多層パーセプトロンモデルを構築し学習を収束させる事が出来る。

### Normalization
Batch Normalization, Layer Normalization, Instance Normalization, Group Normalization等、データを正規化する事で学習の安定化や高速化を行う手法。

### Residual Networks
$out=Net(\vec{x})+\{x}$の様に、残差結合を用いて、深層の情報量の偏りを軽減し、層を深くするネットワーク。

### Data Augmentation
回転やスケール変換や虫食い画像等をデータセットに適用し、データの水増しをする手法。

## 画像生成
EncoderをGenerator、DecoderをDiscriminatorの様に用い、Discriminatorが真偽を判断し、GeneratorがDiscriminatorを騙す様に画像を生成しながら学習を進ませる事が出来る。（GAN）
また、特有のベクトルを挿入する事で生成画像をコントロールする事等も出来る。（cGAN）

### 勾配消失問題対策
GANにおける勾配消失問題を解決するため、Discriminatorの損失関数にリプシッツ連続性を持たせた手法等がある。
例えば、WGANはWasserstein距離を用い、Spectral Normalizationは各層の重みを最大特異値で正規化し、Discriminatorにリプシッツ連続性を持たせている。

### Data Augmentation
ICR, ADA, APA等、GANにData Augmentationを適用させる手法がある。
ICRはAugmentationと同時に誤差関数で正則化する手法、ADAは確率的にAugmentationする手法、APAは確率的にDiscriminatorを騙す事で理論値に収束させるAugmentation手法。

## 画像変換
GANへの入力を画像の２次元ベクトルにしたり、画像入力型のGANを２つ作り互いから互いを生成しながら学習させる手法（CycleGAN）等で、画像変換を行う事が出来る。


# 動画認識・生成・変換
上述の二次元畳み込みを三次元畳み込みにして動画に適用したもの。
各フレームの二次元畳み込みからの特徴ベクトルを三次元畳み込みに通して分類タスクとするECO等がある。


# 音声認識・合成・変換
上述の二次元畳み込みを一次元畳み込みにして波形に適用したもの。
波形生成のWaveGANや、音声合成アルゴリズムのTacotron等がある。
前処理に、$\mu-law$アルゴリズムを用いたり、メルスペクトログラムを用いたりする。


# 自然言語処理
## Word2Vec
文中のある単語の前後n単語を入力信号としてその単語を推論する様なネットワークを学習した時、その自己符号化器による次元圧縮表現を、その単語の単語埋め込み、単語ベクトル、単語表現等と呼ぶ。

## RNN
$$ \vec{h_t}=tanh(\vec{h_{t-1}}\vec{w_h}+\vec{x_t}\vec{w_x}+b) $$
とした、時系列データでリアルタイム学習の出来る、再帰ニューラルネットワーク。
単語ベクトル列から文（Sentence）$\vec{x}$を学習させる事等が出来る。

## Transformer
単語ベクトルを含んだ文（Sentence）$\vec{x}$を学習させる時、RNNではなく、$Softmax(\vec{x^T}\vec{x})$の様な形にした自己注意機構を取り入れたモデル。入力$\vec{x}$のクエリと、入力$\vec{x}$のキーの積を、ソフトマックス関数で作用させ、入力$\vec{x}$のバリューに掛けて適用する。
基本構成は自己注意機構と線型結合のフィードフォワードネットワーク。
また、入力文の順序を学習させるため、位置符号やマスク処理等を施す。

### Encoder構成（認識処理等）
位置符号を付加した基本構成モデル。
認識処理等を行う事が出来る。

### Decoder構成（生成処理等）
位置符号を付加した基本構成にマスク処理を施したモデル。
トークン出力分布を推定する事により文章生成等を行う事が出来る。

### Encoder-Decoder構成（変換処理等）
位置符号を付加した基本構成のEncoderからの出力を、自己注意機構のキーとバリューにした交差注意機構を中間に挟んだ、基本構成のDecoder（位置符号とマスク処理付き）に繋げ、Encoder-Decoderとしたモデル。
トークン出力分布を推定する事により変換処理等を行う事が出来る。


# 強化学習
マルコフ決定過程（MDP）（確率的オートマトン）を、割引報酬和$R=\Sigma^∞_{t=0}\gamma^tR_{t+1}$を最大化させる様に状態遷移させる事を割引報酬MDPと呼ぶ。
ここで、価値関数$V$を考え、最適価値関数を$V^\*$とした時、$T^\*V^\*=V^\*$とする$T^\*$を定義する事が出来る。この事から、
$$ V_{k+1}=T^\*V_k\quad k\geq0 $$
として$V^\*$に収束させる事が出来る。（ベルマン方程式）
これを状態$s$、行動$a$、行動確率$\pi(a|s)$、遷移確率$T(s'|s,a)$、報酬関数$R(s,s')$で書き直すと、$V$における期待値$V_\pi(s_t)$は
$$ V_\pi(s)=\Sigma_a\pi(a|s)\Sigma_{s'}T(s'|s,a)(R(s,s')+\gamma V_\pi(s')) $$
となる。

## 価値反復法（Value Iteration）
$$ V_{i+1}(s)=max_a(\Sigma_{s'}T(s'|s,a)(R(s)+\gamma V_t(s'))) $$
このイテレーションにより学習を最適価値関数$V^\*$に収束させる。

### Policy Iteration
上述の価値反復法のイテレーションを、戦略（Policy）により価値を計算し、価値を最大化するよう戦略を更新する、この様なイテレーションにしたアルゴリズム。

### Actor-Critic法
戦略担当のActor、価値評価担当のCriticを、交互に更新して学習するアルゴリズム。

## 深層強化学習（DQN）
ニューラルネットワークにより時系列に行動価値を算出しながら強化学習を収束させる手法。

### A2C
DQNにActor-Critic法を適用した手法で、戦略担当のActorが行動価値関数$Q(s,a)$を算出し、Cliticが状態価値$V(s)$を算出する。この際、状態における行動価値は行動よりも状態に左右されがちという前提から、$A(s,a)=Q_w(s,a)-V_v(s)$とするAdvantageを計算し純粋な行動の価値として算出する。
また、$V_v(s)$を省略するため、$Q_w(s,a)$として割引現在価値を使用し、そこから$V(s)$をマイナスしてAdvantageを得て$Q(s,a)$に作用させる。

# etc.