ディープラーニングの要素技術

17.全結合層

◆全結合層の概要を理解する

  ⇒前後のすべてのノードと結合している

   活性化関数を用いて利用しやすい値に変換していく

◆全結合層のパラメータ数について理解する

◆ディープラーニングにおける全結合層の役割を説明できる

 

全結合層では、層に入力された特徴に対して重みをかけて総和した値を

ユニットの値とする。通常のニューラルネットワークと同じく線形関数となっている。

 

 

18.畳み込み層(CNN)

◆畳み込み層の基礎的な知識を理解する

  ⇒生物の資格の情報処理にヒントを得たニューラルネットワークの処理法

  ⇒局所的受容野、重み共有 という2つの特徴

   局所的受容野:入力範囲が局所的なもの(特定のユニットと結合していて全結合ではない)

   重み共有:

 

◆全結合層と畳み込み層の差異について、説明できる

◆畳み込み層の役割について説明できる

◆畳み込み層のパラメータ数について理解する 

  ⇒同じカーネルを使うことでパラメータ数を減らし計算量を減らしている

◆畳み込み層が適用できるデータの特性について理解する

 

,, Dilation Convolution, カーネル,可変サイズのデータへの適用, , 疎結合, 畳み込み操作,  

 

畳み込み処理(CNN)】:フィルタ(またはカーネル)を用いて特徴を特徴マップとして抽出する。

            画像とフィルタの同じ位置の値を乗じて総和をとる処理

            フィルタの値は学習により獲得する

            カーネルのサイズをカーネル幅という

 

パディング処理】:畳み込み処理をすると特徴マップのサイズは小さくなるが、

          入力と同じサイズの特徴マップにしたい場合はパディング処理をする。

          上下左右に要素を追加し、値は0とする。

 

ストライド】:フィルタを重ねる位置をずらしていくが、そのずらし幅をストライドという。

 

Atrous Convolution】:広い範囲の情報を集約しようとフィルタサイズを大きくすると

           計算量が増えるため、Atorus Convolutionを用いる。

           間隔を空けて広い範囲に畳み込み処理を行う。

 

Depthwise Separable Convolution】:空間方向とチャネル方向にそれぞれ独立に

           畳み込み処理をする。特徴マップのチャネル毎に畳み込み処理を行う。

           近似計算なので精度は落ちる。

   

 

 

19.正規化層

◆正規化層の基礎的な知識を理解する

◆代表的な正規化手法について理解する

◆正規化層がディープラーニングモデルの学習において、どのような役割を果たすのか説明できる

 

特徴の分布のバラツキを抑制するため、各層の特徴の平均が0、分散が1になるように

正規化処理を行う。

 

【バッチ正規化】:活性化関数をかける前に特徴を正規化する。

         データ間の特徴のバラツキをチャネルごとに正規化するよう学習

 

正規化する範囲によって次の3つがある

【レイヤー正規化】:データごとに全チャネルをまとめて正規化

【インスタンス正規化】:データごとに各チャネルを正規化

【グループ正規化】:データごとに複数のチャネルをまとめて規化

 

20.プーリング層

◆プーリング層の基礎的な知識を理解する

◆代表的なプーリング操作について理解する

◆プーリング層がディープラーニングモデルの学習において、どのような役割を果たすのか説明できる

 

プーリング処理は、特徴マップをルールに従って小さくする処理

ダウンサンプリング、またはサブサンプリングと呼ぶ)

特徴を集約して、特徴次元を削減する効果がある。次元削減

計算コストを下げる

畳み込み処理同様、画像のズレに対して頑健性があり、不変性を獲得する。

プーリング層は、あらかじめ決めたルールで演算を行うだけで

畳み込み処理と異なり学習はしない。

 

【最大値プーリング】:小領域ごとの最大値を抽出する

【平均値プーリング】:小領域ごとの平均値を抽出する

【グローバルアベレージプーリング (GAP)】:全結合層の代わりに特徴マップの平均値を

           1つのユニットの値にする処理

           

21.スキップ統合

◆スキップ結合の概要を理解する

◆ディープラーニングにおけるスキップ結合の役割を説明できる

◆スキップ結合を活用したResidual Network(ResNet)の概要を理解する

 

, 勾配消失問題, 逐次的な情報処理, ボトルネック

 

畳み込み層、プーリング層、全結合層を重ねることで非常に深いネットワークを

作ることができるが、超深層では学習時に誤差を入力層近くまで逆伝播しにくくなるため

識別精度が落ちるという問題がある。

超深層を実現するために考えられたのがスキップ結合(層を飛び越えた結合)である。

 

【Residual Network (ResNet)】:スキップ結合を導入したネットワーク

 

スキップ結合を導入すると

・層が深くなっても層を飛び越える部分は伝播しやすくなる

・様々な形のネットワークのアンサンブル学習になる

 

 

 

 

22.回帰統合層(rNN)

◆回帰結合層の概要を理解する

  ⇒時系列データを扱うために回帰結合層が考案された。過去の情報を保持できる

   ネットワークの中間状態を次の入力処理に利用する。

 

◆回帰結合層を含むネットワークであるRNNを理解する

  ⇒回帰結合層を含むネットワークをリカレントニューラルネットワークRNN)という

 

◆RNNがどのような特性のデータに適したモデルか説明できる

  ⇒言語モデルでよく使われる。過去に入力された単語から次に来る単語を予測。

   機械翻訳音声処理文章生成言語モデルなどで使用される。

 

◆RNNの学習方法について理解する

  ⇒過去の情報をどの程度現在の情報に反映させるかを学習する

  ⇒基本的には他のネットワークと同様、出力層の値をソフトマックス関数で確率に変換し、

   正解との誤差を計算して誤差逆伝播法でパラメータの調整を行う。

   

◆RNNの学習における課題とその解決手法を説明できる

  ⇒訓練時は正解データがあるがテスト時はないので、1つ前の出力を次の入力に使う。 

   テスト時は訓練時ほどパフォーマンスが出ない「露出バイアス」とエラーの原因の1つ。

 

 

,, , ,, 勾配爆発問題, , , 

 

【エルマンネットワーク】:回帰結合層の情報を伝播して、次の時刻の入力とともに利用する

【ジョルダンネットワーク】:出力層の情報を伝播して、次の時刻の入力とともに利用する

 

 

【勾配消失問題】:RNNは時間軸を展開する深いニューラルネットワークであるため

         誤差を逆伝播する際、勾配が消えて行ってしまう。

 

【入力重み衝突】:現時点では関係ないが将来は関係がある、という場合に生じる

         重み付けの矛盾。

【出力重み衝突】:同様

【Long Short Term Memory (LSTM)】:回帰結合層の構造を変えることで、

                  勾配消失問題も重み衝突も解決。

       LSTMブロックという機構で時系列情報をネットワーク内に保持する。

       ・誤差を内部にとどまらせるためのセル(CEC)

       ・必要な情報を必要なタイミングで保持/忘却させるためのゲート

【ゲート機構】:入力ゲート⇒入力重み衝突を防ぐゲート

        出力ゲート⇒出力重み衝突を防ぐゲート

 

          忘却ゲート⇒誤差の過剰滞留を防ぐためのリセット機能

 

【Gated Recurrent Unit (GRU)】:LSTMは計算量が多いため、ゲートの数を減らして

               計算量を抑えたGRUが代用されることがある。

【双方向 RNN (Bidirectional RNN)】:過去から未来のみでなく未来から過去方向も含めて

                 学習できるモデル。

 

【Back Propbagation Through Time (BPTT)】:時間軸に沿って誤差を逆伝播する

           過去の情報をどの程度現在の情報に反映するかを学習する。

【教師強制】:正解データを次の入力データとして利用すること。(機械翻訳でも使う)

       正解がある訓練時のみ。       

 

23.Attention

◆Attention の基礎的な知識を理解する

  ⇒どの時刻の状態がどれだけ次の時刻に影響するかという観点から

   時間の重みを考慮したモデルがAttention

  ⇒Attentionは、出力から見たときの各入力の貢献度(重み)を表している

 

◆Attention がどのような役割を果たすのか説明できる

  ⇒過去の各時刻での回帰結合層の状態を保持しておき、それぞれの重みを求め

   回帰結合層の状態の重み付き和を出力することで時間の重みを考慮したモデルとなる。

  ⇒Attention機構のない機械翻訳では長文の正しい翻訳は困難。

 

◆RNN の問題点を Attention はどのように解決できるか説明できる

  ⇒RNNは並列計算ができず遅い

   最初の時刻に入力した情報の影響が徐々に薄れてしまう

    (遠い単語の関係が捉えられない)トランスフォーマーが解決!

 

◆Attention を用いた代表的モデルのTransformerについて理解する

◆Self-AttentionとEncoder-Decoder Attention(Source Target Attention)について理解する

 

 

 

【Encoder-Decoder Attention】:入力も出力も時系列ならそれぞれにRNNを対応させる

         符号化/複合化  デコーダは

【Seq2Seq】:入力が時系列で出力も時系列のモデル。 (機械翻訳)

       RNNエンコーダ・デコーダによって実現される

  

トランスフォーマー

ニューラル機械翻訳の新モデル。

トランスフォーマー以前は、エンコーダとデコーダをAttention機構で橋渡しする構造

 Source-Target Attention : 入力文と出力文の単語間の関連度を計算するAttention

              (入力文をSource、出力文をTargetという)

 と 

 Encoder-Decoder Attention: 

がある。

 

トランスフォーマーでは、RNN、Encoder-Decoder を排除し、

代わりにSelf-Attentionというネットワーク構造を採用。

 

並列計算がしやすく高速に学習可能。

遠い位置にある単語同士の関係もうまく捉えることができる

 

応用としてPretrained Model が開発された。

 

Self-Attention(自己注意機構)

入出力する文内の単語間の関連度を計算したもの。

Encoder側の計算に利用される

自分と他のすべての単語の関係を重み付きで考慮することで、

各単語が文章内でどこのような役割かを捉えることができる。

すべての計算が並列で行えるため高速に処理可能。

 

単語間の関係を直接計算できるが語順の情報が失われる

トランスフォーマーではこれを回避するため位置エンコーディングという

情報を付加する。

位置エンコーディングにより、時系列データの並列処理が可能になる。

 

クエリ、キー、バリューによるAttentionの計算

トランスフォーマーで使われている2種類のAttention
(Source-Target Attention、Self-Attention)は、どちらも

クエリ(Query)、キー(Key)、バリュー(Value)という3つの値を用いて計算する。

これらの値は、ベクトルまたはベクトルをまとめた行列。

 

<計算フロー>

DBにキーベクトルとバリューベクトルが格納されており、

与えられたクエリベクトルに対してキーベクトルで各ペアの重要度が計算し、

バリューベクトルの値を重要度で重み付けして足し合わせたものを出力する。

 

Multi-Head Attention

Attentionの計算を複数並列で行うこと

各Attentionの計算をHeadという

3つの値を異なる全結合層に通して変形し、Headの数だけ異なる全結合層を用意することで

各Headが視点の異なるパターンでクエリとキーの関係を見ることができるようになる。

 

24.オートエンコーダ

◆オートエンコーダの概要を理解する

  ⇒可視層と隠れ層からなるネットワーク

   可視層は入力層と出力層がセットになったもの

  ⇒入力と出力が同じになるようなネットワーク

   隠れ層に入力情報が圧縮されたものが反映される

   情報が隠れ層で要約される

  ⇒エンコード:入力層→隠れ層

   デコード :隠れ層→出力層

 

◆ディープラーニングにおけるオートエンコーダの役割を説明できる

   ⇒教師なし学習。画像のノイズ削除などに活用される

◆オートエンコーダの代表的な亜種を理解する

   ⇒積層オートエンコーダ:ディープラーニング黎明期に考案

              オートエンコーダを順番に学習させ積み重ねていく

              隠れ層の重みが調整されたネットワークとなる

              オートエンコーダAの隠れ層がオートエンコーダBの可視層になる

  ⇒変分オートエンコーダ(VAE):統計分布に変換する

                平均と分散で表現するように学習

                入力データは統計分布の1つの点である潜在変数になる

 

 

【事前学習】:オートエンコーダを順番に学習していく手順のこと

 

【VQ-VAE】:潜在変数を連続値ではなく離散値にしたもの

【info VAE】:潜在変数とデータとの相関を高めて精度を上げる応用

【β-VAE】:VAEの目的変数の正則化を工夫し、画像の特徴を潜在空間上で

      分離し画像生成を行いやすくした。

 

25.データ拡張

◆データ拡張の基礎的な知識を理解する

  ⇒多くの学習データを用意するため、手元にあるデータから

   疑似的に別のデータを生成する。データの水増し。

◆代表的なデータ拡張手法について理解する

  ⇒上下左右にずらす、上下左右を反転する、拡大・縮小する、

   回転する、斜めにゆがめる、一部を切り取る、明るさやコントラストを変える

   ノイズを加える、

   paraphrasing:データの一部を別の値に入れ替える

   Cutout:データの一部を0にする

   Random Erasing:データの一部をランダムにする

   Mixup:2つのデータを合成する

   CutMix:CutoutとMixupを組み合わせた手法

   RandAugument:データ拡張をどのくらいの強さで行えばよいかを学習で決める

 

◆ディープラーニングにおけるデータ拡張の役割を説明できる

  ⇒学習には多くのデータが必要であるが、データを準備することが困難

   そのためすでにあるデータを水増しする

 

◆タスクやデータセットに応じて、使用するデータ拡張手法を選択できる