深層学習 Day3.4

<h1>深層学習 Day3</h1>



<h2>Section1 再帰型ニューラルネットワーク(RNN)の概念</h2>
<ol>
  <li>RNN
    <ul>
      <li>時系列データに対応可能な、ニューラルネットワークのこと。</li>
      <li>ノード間の結合が配列に沿った有向グラフを形成する人工ニューラルネットワークのこと。</li>
      <li>時系列モデルを扱うには、初期の状態と過去の時間t-1の状態を保持し、そこから次の時間でのtを再帰的に求める再帰構造が必要になる。</li>
    </ul>
  </li>

  <li>RNNの課題
    <ul>
      <li>時系列を遡れば遡るほど、勾配が消失していく。</li>
    </ul>
  </li>

  <li>時系列データ
    <ul>
      <li>時間的順序を追って一定間隔ごとに観察され，しかも相互に統計的依存関係が認められるようなデータの系列のこと。</li>
    </ul>
  </li>

  <li>BPTT(通時的誤差逆伝播法)
    <ul>
      <li>特定のタイプのリカレントニューラルネットワークをトレーニングするための勾配ベースの手法のこと。</li>
    </ul>
  </li>

  <li>実装演習　Section1
    <ul>
      <li>下部に記載。</li>
    </ul>
  </li>

  <li>おまけ　RTRL法
    <ul>
      <li>誤差の逆伝播を行わず、１時刻前の勾配の情報を用いて実時間で学習を行う方法のこと。</li>
    </ul>
  </li>
</ol>



<h2>Section2 LSTM</h2>
<ol>
  <li>LSTM
    <ul>
      <li>長期的な依存関係を学習することのできる、RNNの特別な一種のこと。</li>
      <li>RNNにおける勾配消失問題を解決する。</li>
    </ul>
  </li>

  <li>CEC
    <ul>
      <li>誤差消滅問題に対応するために導入された非常にシンプルなアプローチのこと。</li>
    </ul>
  </li>

  <li>入力・出力ゲート
    <ul>
      <li>力・出力ゲートを追加することで、それぞれのゲートへの入力値の重みを、重み行列W,Uで可変可能とする。</li>
      <li>CECの課題を解決する。</li>
    </ul>
  </li>

  <li>忘却ゲート
    <ul>
      <li>過去の情報が要らなくなった場合、そのタイミングで情報を忘却する機能のこと。</li>
    </ul>
  </li>

  <li>覗き穴結合
    <ul>
      <li>CEC自身の値に、重み行列を介して伝播可能にした構造のこと。</li>
    </ul>
  </li>

  <li>実装演習　Section2
    <ul>
      <li>下部に記載。</li>
    </ul>
  </li>

  <li>おまけ　LSTMの応用事例
    <ul>
      <li>大規模音声認識(Google)</li>
      <li>英語-フランス語翻訳(Google)</li>
      <li>テキスト読み上げ(Microsoft)</li>
      <li>Google Voice</li>
      <li>画像からのキャプション生成(Google)</li>
    </ul>
  </li>
</ol>



<h2>Section3 GRU</h2>
<ol>
  <li>GRU
    <ul>
      <li>従来のLSTMにおける多数のパラメータを大幅に削減し、精度は同等またはそれ以上が望める様になった構造のこと。</li>
      <li>内部様態のバリエーションはGRUの方が確実にLSTMより少ないため、表現能力という点では落ちている。</li>
      <li>LSTMの忘却ゲートと入力ゲートを単一の更新ゲートにマージし隠れ状態のみを伝達していくニューラルネットワークのモデルのこと。</li>
    </ul>
  </li>

  <li>実装演習　Section3
    <ul>
      <li>下部に記載。</li>
    </ul>
  </li>

  <li>おまけ　勾配クリッピング
    <ul>
      <li>勾配のノルムに対して一定の制約値を設け、ミニバッチの学習毎に大きくなりすぎた勾配のノルムを補正するという方法のこと。</li>
      <li>誤差逆伝播法を実行するときに時折発生する勾配爆発問題に対処するために使用される手法のこと。</li>
    </ul>
  </li>
</ol>



<h2>Section4 双方向RNN</h2>
<ol>
  <li>双方向RNN
    <ul>
      <li>過去の情報だけでなく、未来の情報を加味することで、精度を向上させるためのモデルのこと。</li>
      <li>中間層の出力を、未来への順伝播と過去への逆伝播の両方向に伝播するネットワークのこと。</li>
    </ul>
  </li>

  <li>双方向RNN　順伝播
    <ul>
      <li>状態tにおける中間層は、入力値と状態t-1から入力を受け取り、それぞれに重みをかけて、活性化関数に代入して得られる値を、この中間層の出力値としている。</li>
    </ul>
  </li>

  <li>双方向RNN　逆伝播
    <ul>
      <li>状態tにおける中間層は、入力値と状態t+1から入力を受け取り、それぞれに重みをかけて、活性化関数に代入して得られる値を、この中間層の出力値としている。</li>
    </ul>
  </li>

  <li>実装演習　Section4
    <ul>
      <li>下部に記載。</li>
    </ul>
  </li>

  <li>おまけ　双方向長短期記憶層
    <ul>
      <li>時系列データまたはシーケンスデータのタイムステップ間の双方向の長期的な依存関係を学習し、各タイムステップで時系列全体からネットワークに学習させる層のこと。</li>
    </ul>
  </li>
</ol>



<h2>Section5 Seq2Seq</h2>
<ol>
  <li>Seq2seq
    <ul>
      <li>Encoder-Decoderモデルの一種のこと。</li>
      <li>文字列から文字列への変換モデルのこと。</li>
      <li>機械対話や、機械翻訳などに使用されている。</li>
    </ul>
  </li>

  <li>Encoder RNN
    <ul>
      <li>ユーザーがインプットしたテキストデータを、単語等のトークンに区切って渡す構造になっている。</li>
    </ul>
  </li>

  <li>Decoder RNN
    <ul>
      <li>システムがアウトプットデータを、単語等のトークンごとに生成する構造になっている。</li>
    </ul>
  </li>

  <li>Encoder-Decoder RNN
    <ul>
      <li>入力用のEncoderと出力用のDecoderの2つのLSTMを組み合わせたもの。</li>
    </ul>
  </li>

  <li>HRED(the hierarchical recurrent encoder-decoder)
    <ul>
      <li>階層的なRNNのこと。</li>
      <li>過去n-1個の発話から次の発話を生成する。</li>
      <li>Seq2seqのエンコーダーとデコーダーに加えて、文脈を学習するRNNを追加する。</li>
    </ul>
  </li>

  <li>Context RNN
    <ul>
      <li>Encoderのまとめた各文章の系列をまとめて、これまでの会話コンテキスト全体を表すベクトルに変換する構造になっている。</li>
    </ul>
  </li>

  <li>VHRED
    <ul>
      <li>HREDにVAEの潜在変数の概念を追加したもの。</li>
      <li>HREDの課題を、VAEの潜在変数の概念を追加することで解決した構造になっている。</li>
    </ul>
  </li>

  <li>オートエンコーダ
    <ul>
      <li>入力されたデータを一度圧縮し、重要な特徴量だけを残した後、再度もとの次元に復元処理をするアルゴリズムのこと。</li>
      <li>ニューラルネットワークの1つのこと。</li>
    </ul>
  </li>

  <li>VAE(変分自己符号化器)
    <ul>
      <li>EncoderとDecoderという2つのネットワークからなり、オートエンコーダのような構造をしている。</li>
      <li>データを潜在変数zの確率分布という構造に押し込めることを可能にしている。</li>
    </ul>
  </li>

  <li>実装演習　Section5
    <ul>
      <li>下部に記載。</li>
    </ul>
  </li>

  <li>おまけ　様々なVAE
    <ul>
      <li>Vanilla VAE</li>
      <li>Conditional VAE</li>
      <li>β-VAE</li>
      <li>Vector Quantised-VAE</li>
      <li>Vector Quantised-VAE-2</li>
    </ul>
  </li>
</ol>



<h2>Section6 Word2vec</h2>
<ol>
  <li>Word2vec
    <ul>
      <li>単語の埋め込みを生成するために使用される一連のモデル群のこと。</li>
      <li>学習データからボキャブラリを作成する。</li>
    </ul>
  </li>

  <li>one-hotベクトル
    <ul>
      <li>1つの成分が1で残りの成分が全て0であるようなベクトルのこと。</li>
    </ul>
  </li>

  <li>word2vecメリット
    <ul>
      <li>大規模データの分散表現の学習が、現実的な計算速度とメモリ量で実現可能になった。</li>
    </ul>
  </li>

  <li>実装演習　Section6
    <ul>
      <li>下部に記載。</li>
    </ul>
  </li>

  <li>おまけ　Word2vecで使用するニューラルネットワークのモデル
    <ul>
      <li>CBOW(continuous bag-of-words)</li>
      <li>skip-gram</li>
    </ul>
  </li>
</ol>



<h2>Section7 Attention Mechanism</h2>
<ol>
  <li>Attention Mechanism
    <ul>
      <li>エンコードされた入力文とデコーダーの内部状態を判断材料として、次の単語を訳出する際に注目すべき箇所を判断する役割をしている。</li>
      <li>文章が長くなるほどそのシーケンスの内部表現の次元も大きくなっていく、「入力と出力のどの単語が関連しているのか」の関連度を学習する仕組みになっている。</li>
    </ul>
  </li>

  <li>Attention機構の種類
    <ul>
      <li>空間方向のAttention</li>
      <li>チャネル方向のAttention</li>
    </ul>
  </li>

  <li>実装演習　Section7
    <ul>
      <li>下部に記載。</li>
    </ul>
  </li>

  <li>おまけ　連想記憶モデル(アソシアトロン)
    <ul>
      <li>ネットワークに記憶パターンを保持していて、記憶パターンと少し違う、或いは少し欠落したパターンを入力されても、正しい記憶パターンを出力する事が出来る。</li>
      <li>相互結合型ネットワークであり、全ての細胞同士の結合係数を考慮する。</li>
    </ul>
  </li>
</ol>

<li>実装レポート</li>
![深層学習_Day3実装レポート.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/925727/49ce680d-fffb-c63f-d4e0-a3c5a9483117.png)


<a href="https://study-ai.com/jdla/" target="_blank">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/925727/87f30b8e-7ace-dccc-b438-f0e0fa83bf7d.png" target="_blank" /></a>


<h1>深層学習 Day4</h1>



<h2>強化学習</h2>
<ol>
  <li>強化学習
    <ul>
      <li>長期的に報酬を最大化できるように環境のなかで行動を選択できるエージェントを作ることを目標とする機械学習の一分野のこと。</li>
      <li>行動の結果として与えられる利益(報酬)をもとに、行動を決定する原理を改善していく仕組みとなっている。</li>
    </ul>
  </li>

  <li>Q学習
    <ul>
      <li>行動価値関数を、行動する毎に更新することにより学習を進める方法のこと。</li>
    </ul>
  </li>

  <li>関数近似法
    <ul>
      <li>価値関数や方策関数を関数近似する手法のこと。</li>
    </ul>
  </li>

  <li>価値関数
    <ul>
      <li>状態価値関数と行動価値関数の2種類がある。</li>
      <li>重みの要素を、前の層のノード数の平方根で除算した値に対し√２をかけ合わせた値のこと。</li>
    </ul>
  </li>

  <li>状態価値関数
    <ul>
      <li>ある状態の価値に注目する関数のこと。</li>
    </ul>
  </li>

  <li>行動価値関数
    <ul>
      <li>状態と価値を組み合わせた価値に注目する関数のこと。</li>
    </ul>
  </li>

  <li>方策関数
    <ul>
      <li>方策ベースの強化学習手法において、ある状態でどのような行動を採るのかの確率を与える関数のこと。</li>
    </ul>
  </li>

  <li>方策勾配法
    <ul>
      <li>方策をあるパラメータで表される関数とし、そのパラメータを学習することにより、直接方策を学習していくアプローチのこと。</li>
    </ul>
  </li>

  <li>方策反復法
    <ul>
      <li>方策をモデル化して最適化する手法のこと。</li>
    </ul>
  </li>

  <li>おまけ　深層強化学習
    <ul>
      <li>強化学習の関数（システムが受け取る情報を入力とし、最適な行動を出力するもの）にディープ・ニューラルネットワークを使用した強化学習のこと。</li>
    </ul>
  </li>
</ol>



<h2>AlphaGo</h2>
<ol>
  <li>AlphaGo
    <ul>
      <li>Google DeepMindによって開発されたコンピュータ囲碁プログラムのこと。</li>
    </ul>
  </li>

  <li>PolicyNet
    <ul>
      <li>フィルター数128で15ブロックのResNetをTYGEM9dの棋譜約140万局で学習し（一致率は約 57%）、そこからcgosの強いプログラムの棋譜を使って少しFinetuningしたもの。</li>
    </ul>
  </li>

  <li>ValueNet
    <ul>
      <li>フィルター数192で13層のものをKGS、TYGEM、AYAの棋譜合計約400局面で学習したもの。</li>
      <li>谷間についてから最も低い位置(最適値)にいくまでの時間が早い。</li>
    </ul>
  </li>

  <li>モンテカルロ木探索
    <ul>
      <li>モンテカルロ法を使った木の探索のこと。</li>
      <li>決定過程に対する、ヒューリスティクス（＝途中で不要な探索をやめ、ある程度の高確率で良い手を導ける）な探索アルゴリズムのこと。</li>
    </ul>
  </li>

  <li>モンテカルロ法
    <ul>
      <li>求める値が複数の確率変数の関数（数値モデル）で表現できるとき、各変数で仮定される確率分布に沿った標本値を乱数を利用して大量に生成して、演算を多数回試行し、その結果から求める値の分布を得る方法のこと。</li>
    </ul>
  </li>

  <li>AlphaGo LeeとAlphaGo Zeroの違い
    <ul>
      <li>教師あり学習を一切行わず、強化学習のみで作成している。</li>
      <li>特徴入力からヒューリスティックな要素を排除し、石の配置のみにしている。</li>
      <li>PolicyNetとValueNetを１つのネットワークに統合している。</li>
      <li>ResidualNet（後述）を導入している。</li>
      <li>モンテカルロ木探索からRollOutシミュレーションをなくしている。</li>
    </ul>
  </li>

  <li>Residual Network
    <ul>
      <li>ネットワークにショートカット構造を追加して、勾配の爆発、消失を抑える効果を狙ったもの。</li>
    </ul>
  </li>

  <li>おまけ AlphaGoからの派生
    <ul>
      <li>AlphaGo Zero(2017)</li>
      <li>AlphaZero(2017)</li>
      <li>OpenAi Five(2019)</li>
      <li>AlphaStar(2019)</li>
    </ul>
  </li>
</ol>



<h2>データ並列化</h2>
<ol>
  <li>データ並列化
    <ul>
      <li>親モデルを各ワーカーに子モデルとしてコピーする。</li>
      <li>データを分割し、各ワーカーごとに計算させる。</li>
      <li>各モデルのパラメータの合わせ方で、同期型か非同期型か決まる。</li>
      <li>モデルが大きい時に使用する。</li>
    </ul>
  </li>

  <li>データ並列化 同期型
    <ul>
      <li>各ワーカーが計算が終わるのを待ち、全ワーカーの勾配が出たところで勾配の平均を計算し、親モデルのパラメータを更新する。</li>
    </ul>
  </li>

  <li>データ並列化 非同期型
    <ul>
      <li>各ワーカーはお互いの計算を待たず、各子モデルごとに更新を行う。</li>
    </ul>
  </li>

  <li>同期型と非同期型の比較
    <ul>
      <li>処理のスピードは、お互いのワーカーの計算を待たない非同期型の方が早い。</li>
      <li>非同期型は最新のモデルのパラメータを利用できないので、学習が不安定になりやすい。</li>
      <li>現在は同期型の方が精度が良いことが多いので、主流となっている。</li>
    </ul>
  </li>

  <li>おまけ データ並列化処理　2種類の詳細
    <ul>
      <li>Distributed Gradient(Gradient Averaging)
        <ul>
          <li>勾配計算の並列化</li>
          <li>重みの更新は基本的に単一ノード</li>
          <li>モデルは共有しない。</li>
        </ul>
      </li>
      <li>Parameter Mixing(Model Averaging)
        <ul>
          <li>確率的勾配降下法の学習処理を並列化</li>
          <li>重みの更新が各学習器の計算ノードで行われ、その後モデルの並列化処理が行われる。</li>
          <li>モデルを共有する。</li>
        </ul>
      </li>
    </ul>
  </li>
</ol>



<h2>モデル並列化</h2>
<ol>
  <li>モデル並列化
    <ul>
      <li>親モデルを各ワーカーに分割し、それぞれのモデルを学習させ、全てのデータで学習が終わった後で一つのモデルに復元する。</li>
      <li>データが大きい時に使用する。</li>
      <li>モデルのパラメータ数が多いほど、スピードアップの効率も向上する。</li>
    </ul>
  </li>

  <li>GPGPU(General-purpose on GPU)
    <ul>
      <li>元々の使用目的であるグラフィック以外の用途で使用されるGPUの総称のこと。</li>
    </ul>
  </li>

  <li>CPU
    <ul>
      <li>高性能なコアが少数である。</li>
      <li>複雑で連続的な処理が得意である。</li>
    </ul>
  </li>

  <li>GPU
    <ul>
      <li>比較的低性能なコアが多数である。</li>
      <li>簡単な並列処理が得意である。</li>
      <li>ニューラルネットの学習は単純な行列演算が多いので、高速化が可能である。</li>
    </ul>
  </li>

  <li>GPGPU開発環境
    <ul>
      <li>CUDA</li>
      <li>OpenCL</li>
      <li>CUDA</li>
    </ul>
  </li>

  <li>おまけ 第三次AIブームの理由
    <ul>
      <li>「ディープラーニング」の登場</li>
      <li>コンピュータの性能が改善</li>
      <li>スマートフォンの普及</li>
    </ul>
  </li>
</ol>



<h2>量子化</h2>
<ol>
  <li>モデルの軽量化
    <ul>
      <li>モデルの精度を維持しつつパラメータや演算回数を低減する手法の総称のこと。</li>
    </ul>
  </li>

  <li>量子化(Quantization)
    <ul>
      <li>モデルの軽量化の１つである。</li>
      <li>通常のパラメータの64bit浮動小数点を32bitなど下位の精度に落とすことでメモリと演算処理の削減を行う。</li>
    </ul>
  </li>

  <li>量子化の利点
    <ul>
      <li>計算を高速化できる。</li>
      <li>省メモリかできる。</li>
    </ul>
  </li>

  <li>量子化の欠点
    <ul>
      <li>精度が低下する。</li>
    </ul>
  </li>

  <li>計算の高速化
    <ul>
      <li>倍精度演算(64bit)と単精度演算(32bit)は演算性能が大きく違うため、量子化により精度を落とすことによりより多くの計算をすることができる。</li>
    </ul>
  </li>

  <li>省メモリ化
    <ul>
      <li>ニューロンの重みを浮動小数点のbit数を少なくし有効桁数を下げることでニューロンのメモリサイズを小さくすることができ、多くのメモリを消費するモデルのメモリ使用量を抑えることができる。</li>
    </ul>
  </li>

  <li>精度の低下
    <ul>
      <li>ニューロンが表現できる少数の有効桁が小さくなることでモデルの表現力が低下する。</li>
    </ul>
  </li>

  <li>おまけ 量子化の分類
    <ul>
      <li>Quantized Format(Bit数 / Signed or Unsigned)</li>
      <li>Symmetric or Asymmetric</li>
      <li>Per-tensor or Per-channel(per-axis)</li>
      <li>Static or Dynamic</li>
      <li>Post quantization or Quantization-aware training</li>
    </ul>
  </li>
</ol>



<h2>蒸留</h2>
<ol>
  <li>蒸留(Distillation)
    <ul>
      <li>モデルの軽量化の１つである。</li>
      <li>規模の大きなモデルの知識を使い軽量なモデルの作成を行う。</li>
      <li>教師モデルと生徒モデルの2つで構成される。</li>
    </ul>
  </li>

  <li>モデルの簡約化
    <ul>
      <li>学習済みの精度の高いモデルの知識を軽量なモデルへ継承させる。</li>
      <li>知識の継承により、軽量でありながら複雑なモデルに匹敵する精度のモデルを得ることが期待できる。</li>
    </ul>
  </li>

  <li>教師モデル
    <ul>
      <li>予測精度の高い、複雑なモデルやアンサンブルされたモデルのこと。</li>
    </ul>
  </li>

  <li>生徒モデル
    <ul>
      <li>教師モデルをもとに作られる軽量なモデルのこと。</li>
    </ul>
  </li>

  <li>順伝播
    <ul>
      <li>層の値を入力層から出力層に向かって順番に計算していく過程のこと。</li>
    </ul>
  </li>

  <li>逆伝播
    <ul>
      <li>偏微分を出力層から入力層に向かって順番に計算していく過程のこと。</li>
    </ul>
  </li>

  <li>おまけ　勾配消失問題
    <ul>
      <li>誤差逆伝播法が下位層(出力層から入力層)に向かって進んでいくにつれて、勾配がどんどん緩やかになっていくため、勾配降下法による更新では下位層のパラメータはほとんど変わらず、訓練は最適値に収束しなくなること。</li>
    </ul>
  </li>
</ol>



<h2>プルーニング</h2>
<ol>
  <li>プルーニング(Pruning)
    <ul>
      <li>モデルの軽量化の１つである。</li>
      <li>モデルの精度に寄与が少ないニューロンを削減することでモデルの軽量化、高速化が見込まれる。</li>
    </ul>
  </li>

  <li>計算の高速化
    <ul>
      <li>寄与の少ないニューロンの削減を行いモデルの圧縮を行うことで高速に計算を行うことができる。</li>
    </ul>
  </li>

  <li>ニューロンの削減
    <ul>
      <li>重みが閾値以下の場合ニューロンを削減し、再学習を行う。</li>
    </ul>
  </li>

  <li>おまけ 転移学習
    <ul>
      <li>ある領域の知識を別の領域の学習に適用させる技術のこと。</li>
      <li>同じ分野で十分に学習された学習済みモデルを利用すると、少ないデータ量かつ短い時間で学習可能である。</li>
      <li>データが少なくても高い精度を出せる。</li>
    </ul>
  </li>
</ol>



<h2>MobileNet</h2>
<ol>
  <li>MobileNets
    <ul>
      <li>Depthwise ConvolutionとPointwise Convolutionの組み合わせで軽量化を実現したもの。</li>
    </ul>
  </li>

  <li>Depthwise Convolution
    <ul>
      <li>入力マップのチャネルごとに畳み込みを実施する。</li>
      <li>出力マップをそれらと結合(入力マップのチャネル数と同じになる)する。</li>
      <li>通常の畳み込みカーネルは全ての層にかかっていることを考えると計算量が大幅に削減可能である。</li>
      <li>各層ごとの畳み込みなので層間の関係性は全く考慮されない。</li>
    </ul>
  </li>

  <li>Pointwise Convolution
    <ul>
      <li>1x1 convとも呼ばれる(正確には1x1xc)。</li>
      <li>入力マップのポイントごとに畳み込みを実施する。</li>
      <li>出力マップ(チャネル数)はフィルタ数分だけ作成可能(任意のサイズが指定可能)である。</li>
    </ul>
  </li>

  <li>おまけ MobileNetの種類
    <ul>
      <li>MobileNet-v1(2017)</li>
      <li>MobileNet-v2(2018)</li>
      <li>MobileNet-v3(2019)</li>
    </ul>
  </li>
</ol>



<h2>DenseNet</h2>
<ol>
  <li>DenseNet
    <ul>
      <li>畳込みニューラルネットワークアーキテクチャの一種である。</li>
    </ul>
  </li>

  <li>DenseBlock
    <ul>
      <li>ショートカット側で畳み込みを行う。</li>
    </ul>
  </li>

  <li>ボトルネック層
    <ul>
      <li>1x1畳み込みのこと。</li>
    </ul>
  </li>

  <li>成長率(Growth rate)
    <ul>
      <li>どの程度新しい情報をグローバルな状態（メイン側）に追加するのかをコントロールする。</li>
    </ul>
  </li>

  <li>Transition Layer
    <ul>
      <li>1x1畳み込みと2x2のAveragePoolingをする。</li>
    </ul>
  </li>

  <li>Global Average Pooling
    <ul>
      <li>各チャンネル（面）の画素平均を求め、それをまとめたもの。</li>
    </ul>
  </li>

  <li>RMSProp
    <ul>
      <li>誤差をパラメータで微分したものと再定義した学習率の積を減算する。</li>
    </ul>
  </li>

    <li>DenseNetとResNetの違い
      <ul>
        <li>DenseBlockでは前方の各層からの出力全てが後方の層への入力として用いられる。</li>
        <li>RessidualBlockでは前1層の入力のみ後方の層へ入力する。</li>
      </ul>
    </li>

  <li>おまけ DenseNetのメリット
    <ul>
      <li>勾配消失の削減</li>
      <li>特徴伝達の強化</li>
      <li>特徴の効率的な利用</li>
      <li>パラメータ数の削減</li>
      <li>正則化効果の期待</li>
    </ul>
  </li>
</ol>



<h2>BatchNorm</h2>
<ol>
  <li>BatchNorm
    <ul>
      <li>ミニバッチに含まれるsampleの同一チャネルが同一分布に従うよう正規化する。</li>
      <li>レイヤー間を流れるデータの分布を、ミニバッチ単位で平均が0・分散が1になるように正規化する。</li>
    </ul>
  </li>

  <li>Layer Norm
    <ul>
      <li>それぞれのsampleの全てのpixelsが同一分布に従うよう正規化する。</li>
    </ul>
  </li>

  <li>Instance Norm
    <ul>
      <li>さらにchannelも同一分布に従うよう正規化する。</li>
    </ul>
  </li>

  <li>Batch Normalization
    <ul>
      <li>ニューラルネットワークにおいて、学習時間の短縮や初期値への依存低減、過学習の抑制など効果がある。</li>
    </ul>
  </li>

  <li>おまけ Batch Normalization
    <ul>
      <li>活性化関数を変更する。（ReLUなど）</li>
      <li>ネットワークの重みの初期値を事前学習する。</li>
      <li>学習係数を下げる。</li>
      <li>ネットワークの自由度を制約する。（Dropoutなど）</li>
    </ul>
  </li>
</ol>



<h2>LayerNorm</h2>
<ol>
  <li>LayerNorm
    <ul>
      <li>入力データや重み行列に対して、入力データのスケールに関してロバストを施しても、重み行列のスケールやシフトに関してロバストを施しても出力が変わらない。</li>
      <li>バッチサイズが十分に確保できない場合の対策として、全チャンネルに跨って平均・分散をとる。</li>
      <li>HxWxCの全てのpixelが正規化の単位である。</li>
      <li>RGBの3チャネルのsampleがN個の場合は、あるsampleを取り出し、全てのチャネルの平均と分散を求め正規化を実施する。</li>
      <li>ミニバッチの数に依存しない。</li>
      <li>オンライン学習やRNNに拡張可能である。</li>
    </ul>
  </li>

  <li>おまけ Group Normalization
    <ul>
      <li>Batch Normalization</li>
      <li>Layer Normalization</li>
      <li>Instance Normalization</li>
      <li>Group Normalization</li>
    </ul>
  </li>
</ol>



<h2>WaveNet</h2>
<ol>
  <li>Wavenet
    <ul>
      <li>生の音声波形を生成する深層学習モデルのこと。</li>
      <li>Pixel　CNN(高解像度の画像を精密に生成できる手法)を音声に応用したもの。</li>
      <li>時系列データに対して畳み込み(Dilated convolution)を適用する。</li>
    </ul>
  </li>

  <li>Dilated Convolution
    <ul>
      <li>フィルターとの積を取る相手の間隔をあける畳み込みのこと。</li>
    </ul>
  </li>

  <li>おまけ WaveNet要点
    <ul>
      <li>音声合成や音声生成に多く貢献している。</li>
      <li>従来のTTSを改善した。</li>
      <li>パラメトリックTTSと波形接続TTSの両方を超える結果を出した。</li>
    </ul>
  </li>
</ol>



<h2>Seq2Seq</h2>
<ol>
  <li>Seq2seq
    <ul>
      <li>Encoder-Decoderモデルの一種のこと。</li>
      <li>文字列から文字列への変換モデルのこと。</li>
      <li>機械対話や、機械翻訳などに使用されている。</li>
    </ul>
  </li>

  <li>Encoder RNN
    <ul>
      <li>ユーザーがインプットしたテキストデータを、単語等のトークンに区切って渡す構造になっている。</li>
    </ul>
  </li>

  <li>Decoder RNN
    <ul>
      <li>システムがアウトプットデータを、単語等のトークンごとに生成する構造になっている。</li>
    </ul>
  </li>

  <li>Encoder-Decoder RNN
    <ul>
      <li>入力用のEncoderと出力用のDecoderの2つのLSTMを組み合わせたもの。</li>
    </ul>
  </li>

  <li>HRED(the hierarchical recurrent encoder-decoder)
    <ul>
      <li>階層的なRNNのこと。</li>
      <li>過去n-1個の発話から次の発話を生成する。</li>
      <li>Seq2seqのエンコーダーとデコーダーに加えて、文脈を学習するRNNを追加する。</li>
    </ul>
  </li>

  <li>Context RNN
    <ul>
      <li>Encoderのまとめた各文章の系列をまとめて、これまでの会話コンテキスト全体を表すベクトルに変換する構造になっている。</li>
    </ul>
  </li>

  <li>VHRED
    <ul>
      <li>HREDにVAEの潜在変数の概念を追加したもの。</li>
      <li>HREDの課題を、VAEの潜在変数の概念を追加することで解決した構造になっている。</li>
    </ul>
  </li>

  <li>オートエンコーダ
    <ul>
      <li>入力されたデータを一度圧縮し、重要な特徴量だけを残した後、再度もとの次元に復元処理をするアルゴリズムのこと。</li>
      <li>ニューラルネットワークの1つのこと。</li>
    </ul>
  </li>

  <li>VAE(変分自己符号化器)
    <ul>
      <li>EncoderとDecoderという2つのネットワークからなり、オートエンコーダのような構造をしている。</li>
      <li>データを潜在変数zの確率分布という構造に押し込めることを可能にしている。</li>
    </ul>
  </li>

  <li>おまけ 時系列データの最適化
    <ul>
      <li>Reverse</li>
      <li>Peeky</li>
    </ul>
  </li>
</ol>



<h2>Transformer</h2>
<ol>
  <li>Transformer
    <ul>
      <li>自然言語処理における業界標準になっている。</li>
      <li>コンピュータビジョン、音声合成の分野で活用されている。</li>
      <li>再帰構造を使わず、Attentionメカニズム（注意機構）のみを使用して入力と出力の間のグローバルな依存関係を捉える。</li>
      <li>ほぼ全ての自然言語処理タスクを実行できる。</li>
    </ul>
  </li>

  <li>Transformer エンコーダ
    <ul>
      <li>六つのエンコーダ層が積み重ねられている。</li>
      <li>複数ヘッドの自己注意層（Multi-head self-attention Layer）と位置単位の順伝播ネットワーク（position-wise fully connected feed-forward network）の2つ主要な層から構成されている。</li>
    </ul>
  </li>

  <li>自己注意層（Self-attention Layer）
    <ul>
      <li>Query（W_q）、Key（W_k）、Value（W_v）の三つの重み行列で初期化されている。</li>
    </ul>
  </li>

  <li>位置単位の順伝播ネットワーク（Position-wise fully connected feed-forward network）
    <ul>
      <li>単に出力Zに対して様々な線形層とドロップアウト層を適用する。</li>
    </ul>
  </li>

  <li>位置エンコーディング（positional encoding）
    <ul>
      <li>単語の値と文中のその位置を再表現したもの。</li>
    </ul>
  </li>

  <li>デコーダのアーキテクチャ
    <ul>
      <li>マスク付き複数ヘッドの自己注意層（masked multi-head self-attention layer）</li>
      <li>複数ヘッドの自己注意層（multi-head self-attention layer）</li>
      <li>位置単位の順伝播ネットワーク（position-wise fully connected feed-forward network）</li>
    </ul>
  </li>

  <li>マスク付き複数ヘッドの自己注意層（masked multi-head self-attention layer）
    <ul>
      <li>「シフトさせた出力（デコーダへの入力）」にマスクをかけて、ネットワークが次に来る単語を見ることができないようにする。</li>
    </ul>
  </li>

  <li>複数ヘッドの注意層（Multi-Headed Attention Layer）
    <ul>
      <li>単語の値と文中のその位置を再表現したもの。</li>
    </ul>
  </li>

  <li>おまけ Seq2seq要点
    <ul>
      <li>翻訳タスクにおいて、Seq2seq(RNNベースEncoder-Decoderモデル)よりも早くて精度が高い。</li>
      <li>RNNもCNNも使わずにAttentionのみを使用したEncoder-Decoderモデルで計算量も精度も改善し、並列計算可能である。</li>
      <li>アーキテクチャのポイントは、エンコーダー-デコーダモデル、Attention、全結合層である。</li>
      <li>NLPの最近のSoTAたち(BERT,XLNet,GPT-2など)のベースとなるモデルである。</li>
    </ul>
  </li>
</ol>



<h2>物体検知</h2>
<ol>
  <li>物体検知
    <ul>
      <li>画像内の物体を検知する技術のこと。</li>
    </ul>
  </li>

  <li>物体検出手法
    <ul>
      <li>R-CNN</li>
      <li>YOLO</li>
      <li>SSD</li>
    </ul>
  </li>

  <li>SSD デフォルトボックス
    <ul>
      <li>一枚の画像をSSDに読ませ、その中のどこに何があるのか予測させるとき、SSDは画像上に大きさや形の異なるデフォルトボックスを8732個乗せ、その枠ごとに予測値を計算する。</li>
      <li>位置の予測とクラスの予測を行う。</li>
    </ul>
  </li>

  <li>クラスの予測
    <ul>
      <li>その枠が囲っているのがどの物体である可能性が高いかが、予測するクラスごとに確率で表現される。</li>
    </ul>
  </li>

  <li>R-CNN
    <ul>
      <li>物体検出タスクを行ってから、画像認識タスクを行う。</li>
    </ul>
  </li>

  <li>YOLO
    <ul>
      <li>リアルタイムオブジェクト検出アルゴリズムのこと。</li>
      <li>検出窓をスライドさせるような仕組みを用いず、画像を一度CNNに通すことで、オブジェクトを検出する。</li>
    </ul>
  </li>

  <li>おまけ 物体検出の応用例
    <ul>
      <li>ECサイトにおいて、商品画像の中の物体を検出して、自動的にサイトの適正な場所に配置する。</li>
      <li>道路交通において、道路、交差点などの車両情報と位置を検出し、道路交通状況を分析し、渋滞予測を提供する。</li>
      <li>工業において、作成した商品の外観検査、カメラ画像から不具合箇所を自動で検出する。</li>
      <li>セキュリティーにおいて、多くのサイト内容に不適切な可能性のあるコンテンツ(画像や動画)を検出する。</li>
      <li>医療業界において、レントゲン写真から癌や病変領域の検出する。</li>
      <li>環境と動物において、ドローンにより、空撮画像から動物や漁船などの監視や環境の変化を監視する。</li>
    </ul>
  </li>
</ol>



<h2>セグメンテーション</h2>
<ol>
  <li>画像セグメンテーション（セマンティックセグメンテーション）
    <ul>
      <li>バウンディングボックスなど矩形領域を切り出すのではなく、画像の各画素がどのカテゴリーに属するかを求める、画像アノテーションの手法のこと。</li>
      <li>画像内の全画素にラベルやカテゴリを関連付けるディープラーニングのアルゴリズムのこと。</li>
    </ul>
  </li>

  <li>セマンティックセグメンテーションの手法
    <ol>
      <li>画素にラベルが付けられた画像の集まりを解析する。</li>
      <li>セマンティックセグメンテーションのネットワークを作成する。</li>
      <li>画像を画素カテゴリに分類するためネットワークに学習させる。</li>
      <li>ネットワークの精度を評価する。</li>
    </ol>
  </li>

  <li>インスタント・セグメンテーション（Instant Segmentation）
    <ul>
      <li>画像のピクセルを「どの物体クラス(カテゴリー)に属するか、どのインスタンスに属するか」で分類する方法のこと。</li>
    </ul>
  </li>

  <li>パノプティック・セグメンテーション（Panoptic Segmentation）
    <ul>
      <li>セマンティックセグメンテーションとインスタントセグメンテーションを組み合わせた方法のこと。</li>
    </ul>
  </li>

  <li>おまけ 画像のセグメンテーション手法
    <ul>
      <li>Level set法</li>
      <li>Snakes</li>
      <li>eep Learningに基づく方法</li>
    </ul>
  </li>
</ol>



<h2>為替データの扱い</h2>
<ol>
  <li>該当なし</li>
</ol>