深層学習コース復習ノート
0. 問題の種類
問題の種類 | 数量 | 点数 |
---|---|---|
簡単な質問 | 4 | 60 |
設計問題 | 2 | 25 |
未知の問題の種類 | 1 | 15 |
先生は最後の問題についてはっきりとは言わず、「授業を聞いていれば、少しは点が取れる」と言いました。
1. 提綱
第2章
- 確率的勾配降下アルゴリズムを習得する
- バッチ勾配降下アルゴリズムを習得する
- 正則化(L1、L2)を理解する
- Dropoutの考え方、処理フローなどを習得する
- 一般的な定理を習得する:NFL、醜いアヒル、オッカムの剃刀など
第3章
- ロジスティック回帰、ソフトマックス回帰を習得する
- 一般的な損失関数の公式と具体的な適用シナリオに対する理解を深める(平方損失、クロスエントロピー損失など)
- 経験リスクと構造リスクを理解する
第4章
- 一般的な活性化関数(シグモイド、ReLU)の利点と欠点を習得する
- フィードフォワードニューラルネットワークの基礎知識を理解する
第5章
- 畳み込みニューラルネットワークの特徴を習得する(全結合ネットワークとの比較)
- 畳み込みネットワーク:畳み込みカーネル、特徴マップ、カラーチャネル数
- プーリング層の役割
- 一般的な典型的なCNN畳み込み構造のパラメータ計算(例:畳み込み層のパラメータ量、リンク数、出力画像のサイズなど)
- 残差ネットワークを習得する(動作原理、公式など)
第6章
- RNNの公式表現
- RNNで発生する勾配消失と勾配爆発の問題
- 対応する解決策
- シーケンスからシーケンスへのモデルを習得する(同期と非同期)
- 具体的な応用(同期と非同期-感情分析)
- 公式表現
- 利点と欠点
- LSTMを習得する
- 3つのゲートの役割と意味
- LSTMとRNNの利点と欠点の比較
- 入力と出力
- LSTMは勾配消失問題を解決でき、残差ネットワークの処理方法に似ている
- GRUを習得する
- LSTMと比較してどのような改良があるか
- GRUの公式
第7章 ネットワーク最適化
- 学習率の改善
- 学習率の減衰-見るだけでよい
- 周期的な調整-公式を見る必要はない
- 重点的に習得する:自適応調整:Adagrad, Adadelta, RMSProp
- 3つの方法の公式と原理を習得する、重点は公式
- 勾配最適化
- モメンタム法
- ネステロフ加速勾配
- Adamアルゴリズム
- 勾配の切断
- 高次元と低次元の場合のネットワーク最適化
鞍点からの脱出
- データ正規化の3つの方法
- 関連する次元の関連性を取り除く-白化
- バッチ正規化と層正規化を習得する(定義、方法、具体的な操作方法)
- ドロップアウト法
第8章
- 注意モデルを習得する
- 意味-なぜ注意モデルが必要か
- 公式
- 処理フローなど
- 自己注意モデルを習得する
- 意味-重点的に習得する、以前の改善、KQV計算など
- 公式
- 処理フロー
- Transformerを習得する(構造、技術など)
第14章
- 強化学習の5つの要素
- 第5要素:$\pi_s$ポリシー
- 2つの価値関数:状態価値関数、状態-行動価値関数
- ポリシー反復アルゴリズム、価値反復アルゴリズム、SARSAアルゴリズム、Q-Learningアルゴリズムを習得する
モンテカルロサンプリング
2.機械学習の概要
機械学習の3要素
モデル
線形モデル 一般化線形モデル $$f(x;\theta) = w^{T}\phi (x)+b$$
学習基準
線形回帰モデルでは、以下のすべての損失関数$\mathbb L$は平方損失関数です。
期待リスクは現実の状況に対するものです
しかし、実際のデータ分布を得ることはできず、経験リスクで近似するしかありません:
経験リスクで期待リスクを近似すると、一般化誤差が生じます。一般化誤差を減少させるためには、最適化と正則化(最適化を損なう、過学習を防ぐ)という2つの手段が必要です。 構造リスクは経験リスクに正則化項を追加したもので、構造リスクの最小化は過学習問題を解決(緩和)することができます。
最適化方法
(バッチ)勾配降下、確率的勾配降下、小バッチ勾配降下、早期停止
(バッチ)勾配降下
バッチ勾配降下法は、各反復で各サンプルの損失関数の勾配を計算して合計する必要があります(目的関数はトレーニングセット全体のリスク関数です)。トレーニングセットのサンプル数𝑁が非常に大きい場合、空間の複雑さが高く、各反復の計算コストも大きくなります。
確率的勾配降下
バッチ勾配降下法は、実際のデータ分布から𝑁個のサンプルを収集し、それらによって計算された経験リスクの勾配を使用して期待リスクの勾配を近似するものです。各反復の計算の複雑さを減らすために、各反復で1つのサンプルのみを収集し、そのサンプルの損失関数の勾配を計算してパラメータを更新することもできます。これが確率的勾配降下法です。
バッチ勾配降下と確率的勾配降下の違いは、各反復の最適化目標がすべてのサンプルの平均損失関数であるか、単一のサンプルの損失関数であるかです。確率的勾配降下は実装が簡単で、収束速度も非常に速いため、非常に広く使用されています。確率的勾配降下は、バッチ勾配降下の勾配にランダムノイズを導入したものに相当します。非凸最適化問題では、確率的勾配降下は局所最適点から逃れやすくなります。
小バッチ勾配降下*
正則化方法
正則化(Regularization)は、モデルの複雑さを制限することで、過学習を回避し、一般化能力を向上させる方法の一種です。例えば、制約を導入する、事前情報を追加する、早期停止するなどがあります。 正則化の方法は以下の通りです:
- Lノルム正則化
- 重みの減衰
- 早期停止
- ドロップアウト法
- データ拡張
- ラベルスムージング
Lノルム正則化
本質的には制約を導入し、ペナルティとして機能します。これにより、最適化時に目的関数だけでなく、導入されたペナルティ(正則化項)も考慮する必要があります。
L1正則化は重みの大小に関わらず、同じペナルティを与え、小さな重みは0になります。これにより、L1正則化の最大の効果は多数のパラメータを0にし、モデルをスパース化することです。 L2正則化は大きな重みに対して重いペナルティを課し、小さな重みに対しては軽いペナルティを課します。式に導入されるのは通常、計算を容易にするために二乗ノルムです(上記の図のように)。
ドロップアウト
詳細はネットワーク最適化-ドロップアウト部分を参照 $$mask(x) = \begin{cases} mx, \quad トレーニング段階 \ px, \quad テスト段階 \ \end{cases}$$
一般的な定理
無料のランチはない定理(NFL):反復に基づく最適化アルゴリズムにおいて、すべての問題(有限の探索空間内)に対して有効なアルゴリズムは存在しない.あるアルゴリズムが特定の問題に対して有効である場合、それは他の問題に対して純粋なランダム探索アルゴリズムよりも劣ることがある.つまり、具体的な問題を無視してアルゴリズムの優劣を論じることはできない.「具体的な問題に具体的に対応する」必要がある。
オッカムの剃刀(Occam’s Razor)原理:「必要がない限り、実体を増やすな」.オッカムの剃刀の考え方は、機械学習における正則化の考え方と非常に似ている:シンプルなモデルは一般化能力が高い.性能が近い2つのモデルがある場合、よりシンプルなモデルを選ぶべきである.そのため、機械学習の学習基準では、しばしばパラメータ正則化を導入してモデルの能力を制限し、過学習を避ける.
醜いアヒルの定理:「醜いアヒルと白鳥の違いは、2羽の白鳥の違いと同じくらい大きい」.世界には類似性の客観的な基準は存在せず、すべての類似性の基準は主観的である.体の大きさや外見の観点から見ると、醜いアヒルと白鳥の違いは2羽の白鳥の違いよりも大きいが、遺伝子の観点から見ると、醜いアヒルとその親の違いは、親と他の白鳥の違いよりも小さい.ここでの醜いアヒルは幼い白鳥を指す
3. 線形モデル
ロジスティック回帰
西瓜書では対数オッズ回帰と呼ばれ、一般的な2クラス分類問題のモデルです。
これは平凡な線形モデルです:$f(x;w)=w^{T}x$ 活性化関数を導入して非線形変換を行い、出力を$[0,1]$の範囲にマッピングし、正例の確率として使用します: $$p(y=1|x) = g(f(x;w))=\frac{1}{1+exp(-w^Tx)}$$ 実際には、出力の$f(x;w)$値はサンプルxが正例と反例の後部確率の比の対数であり、対数オッズと呼ばれます: $$w^{T}x = \log \frac{p(y=1|x)}{p(y=0|x)}$$ 損失関数にはクロスエントロピーを使用します: $$R(w) = -\frac{1}{N} \sum\limits_{i=1}^{N}(y_{i}\log (\hat y_{i})+(1-y_{i})\log (1-\hat y_{i})) $$ ここで$y_i$は真の値(ラベル)、$\hat y_{i}$は予測値です。 導関数の結果は入力と一次損失の積であるため、勾配降下法の更新は次のようになります: $$w_{t+1} = w_{t}+ \alpha \frac{1}{N} \sum\limits_{i=1}^{N}x_{i}(y_{i}-\hat y_{i})$$
ソフトマックス回帰
多クラス分類のロジスティック回帰であり、ロジスティックのより一般的な形式です。
リスク関数に正則化を追加してパラメータを制約します。正則化項を追加しないと、重みベクトルが大きくなる可能性があり、オーバーフローが発生することがあります。
平方損失関数が分類問題に適さない理由を分析します。 分類問題のラベルは連続性の概念がありません。各ラベル間の距離も実際には意味がないため、予測値とラベルの2つのベクトル間の平方差は分類問題の最適化程度を反映できません。
例えば、分類が1,2,3で、真の分類が1である場合、2と3に分類される誤りの程度は同じであるべきですが、平方損失関数の損失は異なります。
①目標関数の不一致:分類問題の目標はサンプルを異なるカテゴリに正しく分類することであり、連続値を予測することではありません。平方損失関数の目標は予測値と真の値の平方差を最小化することであり、分類問題の目標とは一致しません。 ②異常値の感度:平方損失関数は異常値に非常に敏感です。分類問題では、異常値は通常、サンプルの誤分類を示し、これは異常値の誤分類が非常に高い損失を引き起こすことを意味します。分類問題では異常値がより一般的であり、異常値が大きな誤差を引き起こす可能性があります。 ③勾配消失:分類問題では、平方損失関数は勾配消失の問題を引き起こしやすいです。分類問題の出力は確率またはカテゴリラベルであり、平方損失関数を使用すると、勾配が非常に小さくなり、モデルの学習や収束が難しくなります。 ④導関数の不可導性:分類問題では、一般的な活性化関数(シグモイド、ソフトマックスなど)は平方損失関数と互換性がありません。これらの活性化関数が生成する出力は連続していないため、平方損失関数は連続的な出力に対して導関数を持ちます。そのため、分類問題で平方損失関数を使用すると、通常の最適化アルゴリズムを使用してトレーニングすることができない場合があります。
4. ニューラルネットワーク
活性化関数
適切な活性化関数は以下の特性を持つべきです:
- 連続的で導関数が存在する
- 簡単で計算が容易
- 値域が適切な範囲にある
シグモイド系列
両者はシグモイド型関数であり、飽和性を持っています:
- 計算コストが高い
- 出力がスムーズで、ジャンプ値がない
- どこでも導関数が存在する
- 確率に適している
- 勾配消失
- 0を中心にしていない/0を中心にしている
ReLU系列
利点 - 計算コストが低く、単純な加算と乗算のみ - 生物学的合理性:片側抑制 - 左側が飽和し、x>0のとき導関数が1であり、勾配消失を緩和 - 勾配降下の収束速度を加速 欠点 非0中心化であり、後続層にバイアスをもたらす ReLUの死の問題:不適切な更新が1回行われると、永遠に活性化されない(ELUで解決可能)
フィードフォワードニューラルネットワーク
入力層はネットワーク層数に含まれず、ネットワーク層数は隠れ層の数を指します。
汎用近似定理
汎用近似定理によれば、線形出力層と少なくとも1つの「スクイーズ」特性を持つ活性化関数を使用する隠れ層で構成されるフィードフォワードニューラルネットワークは、隠れ層のニューロンの数が十分であれば、任意の精度で実数空間に定義された有界閉集合の関数を近似することができます。 ニューラルネットワークは「万能」な関数として使用でき、複雑な特徴変換を行ったり、複雑な条件付き分布を近似したりすることができます。
5. CNN
FCNが画像を処理する際の問題点:
- パラメータが多すぎる
- 局所不変特性 自然画像の物体は、スケールの縮小、平行移動、回転などの操作がその意味情報に影響を与えない局所不変性特性を持っています。全結合フィードフォワードネットワークはこれらの局所不変性特性を抽出するのが難しいです。
CNNの特徴
CNNは画像を処理するのに適しています:
- 局所接続:局所接続はネットワークのパラメータを大幅に減少させます。高次元入力を持つ画像を処理する場合、各ニューロンを前の層のすべてのニューロンと全結合することは現実的ではありません。各ニューロンを入力データの局所領域にのみ接続し、その接続の空間サイズをニューロンの受容野と呼びます。これはフィルタの空間サイズに相当します。
- 重みの共有:畳み込み層でパラメータの数を制御するためにパラメータの共有を使用します。各フィルタは前の層と局所接続され、各フィルタのすべての局所接続は同じパラメータを使用します。これにより、ネットワークのパラメータが大幅に減少します。
- 空間または時間のサブサンプリング:これはデータの空間サイズを徐々に減少させる役割を果たし、これによりネットワーク内のパラメータの数を減少させ、計算リソースの消費を減少させ、過学習を効果的に制御します。 これらの特性により、畳み込みニューラルネットワークはある程度の平行移動、スケール変換、回転不変性を持ちます。フィードフォワードニューラルネットワークと比較して、畳み込みニューラルネットワークのパラメータは少ないです。
畳み込み層
畳み込みカーネルのサイズ:畳み込みカーネルは畳み込みのサイズ範囲を定義し、ネットワーク内で受容野のサイズを表します。2次元畳み込みカーネルで最も一般的なのは3*3の畳み込みカーネルです。一般的に、畳み込みカーネルが大きいほど、受容野が大きくなり、画像情報が多くなり、得られる全体的な特徴が良くなります。しかし、大きな畳み込みカーネルは計算量が急増し、計算性能が低下します。(極端に大きくなるとFCNになります)
ストライド:畳み込みカーネルのストライドは抽出の精度を表し、ストライドは畳み込みカーネルが画像上で畳み込み操作を行う際の各畳み込みの移動距離を定義します。サイズが2の畳み込みカーネルの場合、ステップが1であれば、隣接するステップの受容野間に重複領域があります。ステップが2であれば、隣接する受容野は重複せず、カバーされない部分もありません。ステップが3であれば、隣接するステップの受容野間に1ピクセルの隙間が生じ、ある程度情報が欠落します。
パディング:畳み込みカーネルと画像のサイズが一致しない場合、畳み込み後の画像と畳み込み前の画像のサイズが一致しないことがあります。この問題を回避するために、元の画像に境界パディング処理を行う必要があります。
特徴マップ(Feature Map)は、画像(または他の特徴マップ)を畳み込みによって抽出された特徴です。各特徴マップは画像特徴の一種として機能します。畳み込みネットワークの表現能力を向上させるために、各層で複数の異なる特徴マップを使用して、画像の特徴をよりよく表現できます。 入力層では、特徴マップは画像そのものです。グレースケール画像の場合、1つの特徴マップがあり、入力層の深さ𝐷 = 1です。カラー画像の場合、RGBの3つのカラーチャネルの特徴マップがあり、入力層の深さ𝐷 = 3です。 畳み込み層の入力特徴マップは$M \times N \times D$で、出力は$M’ \times N’ \times D’$です。各出力特徴マップには𝐷個の畳み込みカーネルと1つのバイアスが必要です。各畳み込みカーネルのサイズが𝑈 × 𝑉の場合、𝑃 × 𝐷 × (𝑈 × 𝑉) + 𝑃個のパラメータが必要です。 畳み込み出力画像のサイズ: $$M’ = \frac{M-K+2P}{S}+1$$ 接続数: パラメータ数 ×出力特徴マップの平面サイズ$(M’ \times N’)$
LeNet-5を例に計算します:
プーリング層
役割:
- 計算量とパラメータの数を減少させ、モデルをより訓練しやすくする;
- 特徴マップの解像度を下げ、過学習を減少させる;
- より重要な特徴を抽出する。プーリング層は最大値または平均値のみを選択するため、これらの値はより多くの情報を含むことが多い。
残差ネットワーク
問題
畳み込みニューラルネットワークで1 × 1の畳み込みカーネルを使用する理由を分析します。
解答
- 次元削減(パラメータの削減) Inceptionネットワークで使用される 1 × 1の畳み込みを使用して特徴マップの深さを減少させる
- 次元拡張(最小のパラメータで次元を広げる) 以下のResNetネットワーク構造図 右側の最後の層で1 × 1 × 256の畳み込みカーネルを使用して出力を64次元から256次元に拡張する そして64_1_1*256個のパラメータが必要
- チャネル間の情報交換 次元拡張と次元削減の操作を実現することは、実際には異なるチャネル間の線形結合であり、これがチャネル間の情報交換です。
- 非線形特性の追加 各畳み込み操作の後に非線形活性化関数が追加され、1 × 1の畳み込みカーネルを使用することで、特徴マップのサイズを変えずに非線形特性を追加することができます。
6. 注意メカニズム
最適化アルゴリズムと計算能力の制限により、神経ネットワークが汎用近似能力を達成するためには、ネットワークがあまり複雑であってはなりません。
Attention
意味
長いシーケンスの意味の喪失と入力の貢献度の分配問題を解決する
- ソースはエンコーダを通じて中間の意味コードCを生成します。
- Cはデコーダを通じて翻訳された文を出力します。従来のリカレントニューラルネットワークでは、Cに基づいてy1を生成し、(C、y1)に基づいてy2を生成し、以下同様にします。 従来のリカレントニューラルネットワークでは、y1、y2、y3の計算はすべて同じCに基づいて行われます。しかし、これは最良の方法ではないかもしれません。なぜなら、ソースの異なる単語がy1、y2、y3に与える影響(貢献度)は異なるからです。
意味コードCから始めて、注意メカニズムは各時刻にエンコーダの入力に基づいて適応的に変化し、次のモジュール(例えばデコーダ)の出力に影響を与えます。目的:各入力の貢献度の問題を解決する
公式
フロー
- F(Q,K)で類似度を計算し、ドット積、コサイン、MLPを選択できます。
- Fの出力をソフトマックスで正規化し、注意分配確率を得ます。
- 最後に$a_i$に基づいて入力情報の加重平均を計算し、注意値を得ます。 この図は以前のものと大差ありませんが、より簡潔で直感的です。ソフトマックス後の加重平均は、確率変数の期待値形式で書くことができます。
変体
李宏毅が話したのはこのようなキーと値の注意メカニズムです。
マルチヘッド注意メカニズム。
Self-Attention
意味
Self Attentionメカニズムを導入し、その名の通り、ソース内部の要素間またはターゲット内部の要素間で発生するAttentionメカニズムを指します。また、ソース=ターゲットという特殊な場合のAttentionメカニズムとして理解することもできます。具体的な計算過程はSoft Attentionと同じです。
KQVモード
李宏毅が話したことと全く同じです。 ソフトマックスの処理が少し異なり、分母は定数です。
フロー
- $k,q,v$ベクトルを計算し、これらのベクトルは入力$X$と対応する重み行列$W^K,W^Q,W^V$を掛け合わせて得られます。
- self-attentionを計算し、QueryとKeyをドット積して得られます。このスコア値は、未知のエンコードで単語をエンコードする際に、入力文の他の部分にどれだけ注意を払うかを決定します。
- ドット積の結果を定数(通常は$D_k=64$)で除算し、その結果をソフトマックスして、各単語が現在の単語に対する関連性の大きさを得ます(自分自身が最大)。
- Valueとソフトマックスで得られた値を掛け合わせて加算し、self-attentionの現在のノードでの値を得ます(スケーリングドット積注意)。
Transformer
構造
transformerはエンコーダ-デコーダアーキテクチャを採用しており、以下の図に示されています。エンコーダ層とデコーダ層はそれぞれ6つの同じエンコーダとデコーダを積み重ねて構成されており、モデルのアーキテクチャはより複雑です。その中で、エンコーダ層はMuti-Headメカニズムを導入しており、並列計算が可能です。デコーダ層は依然として直列計算が必要です。
技術的な特徴
-
Self-attention: 文中の各単語が他の単語とどのように関連しているかを計算し、モデルが文脈の意味をよりよく理解するのを助けます。
-
Multi-head attention: 各ヘッドが文の異なる位置に注意を払い、Attentionメカニズムが文の内部の単語間の相互作用を表現する能力を強化します。 TransformerがなぜMulti-head Attentionを必要とするのか? 原論文では、Multi-head Attentionを行う理由は、モデルを複数のヘッドに分割し、複数のサブスペースを形成することで、モデルが異なる側面の情報に注意を払い、最後に各側面の情報を統合することができるからだと述べています。直感的に言えば、多頭の注意は、ネットワークがより豊富な特徴/情報を捉えるのに役立ちます。
-
フィードフォワードニューラルネットワークFFN: エンコーダに非線形変換を導入し、モデルの適合能力を強化します。
-
デコーダは出力を受け取ると同時にエンコーダの入力を受け取り、現在のノードが重点的に注意を払うべき内容を取得するのを助けます。
-
フィードフォワードネットワーク: 各層がattentionを通過した後、FFNがあります。このFFNの役割は空間変換です。FFNは2層の線形変換層を含み、中間の活性化関数はReLuです。FFNの導入により、非線形性(ReLu活性化関数)が導入され、attention outputの空間が変換され、モデルの表現能力が向上します。FFNを取り除いてもモデルは使用できますが、効果は大幅に低下します。 $$FFN(x) = ReLU(xW_{1}+b_{1})W_{2}+b_{2}=max(0,xW_{1}+b_{1})W_{2}+b_{2}$$
-
層正規化(Layer Normalization): 最適化空間を規範化し、収束を加速します。 $$LN(x_{i})=\alpha \frac{x_{i}-\mu_{i}}{\sqrt{\sigma^{2}+\xi}} + \beta$$
-
位置エンコーディング: 位置情報のエンコーディングはエンコーダとデコーダの埋め込みの後、各ブロックの前にあります。これは非常に重要であり、これがなければモデルは動作しません。位置エンコーディングはtransformerの特有のメカニズムであり、Attentionメカニズムがシーケンス内のトークンの位置情報を捉えることができないという欠点を補います。これにより、各トークンの位置情報とその意味情報(埋め込み)が十分に融合され、後続のすべての複雑な変換を経たシーケンス表現に伝達されます。
-
マスクメカニズム: マスクは特定の値を隠し、パラメータの更新時に効果を発揮しないようにします。Transformerモデルには2種類のマスクがあり、それぞれパディングマスクとシーケンスマスクです。パディングマスクはすべてのスケールドット積attentionで使用され、シーケンスマスクはデコーダのself-attentionでのみ使用されます。
-
パディングマスク:各バッチの入力シーケンスの長さが異なる場合、入力シーケンスを整列する必要があります。
- 具体的には、短いシーケンスの後ろに0を埋めます。
- 入力シーケンスが長すぎる場合は、左側の内容を切り取り、余分な部分を直接捨てます。
- attentionメカニズムはこれらの位置に注意を払うべきではなく、これらの位置の値に非常に大きな負数(負の無限大)を加えます。これにより、ソフトマックスを経て、これらの位置の確率は0に近づきます。
-
シーケンスマスク:デコーダが将来の情報を見られないようにします。シーケンスにおいて、time_stepがtの時点で、デコード出力はt時点以前の出力にのみ依存し、t以降の出力には依存しません。そのため、t以降の情報を隠す必要があります。上三角行列を生成し、上三角の値をすべて0にします。この行列を各シーケンスに作用させます。
-
残差ネットワーク:
ネットワークの退化現象:神経ネットワークが収束可能な前提で、ネットワークの深さが増加するにつれて、ネットワークの性能は徐々に増加して飽和し、その後急速に低下します。
transformerモデルでは、エンコーダとデコーダはそれぞれ6層あり、モデルが深い層数を持つ場合でも良好なトレーニング効果を得るために、モデルに残差ネットワークを導入しています。 ネットワークが深すぎることによるネットワークの退化問題を解決する
利点
Seq2Seqモデルの2つの痛点:
- シーケンスが長すぎると意味が消失する問題
- 位置情報の喪失
- まず、上記の2つの欠点を改良しました。方法は:1-残差構造、2-位置エンコーディング
- マルチヘッド注意はより多くの情報を抽出できます。
- エンコーダ層のマルチヘッド注意は並列計算が可能です。
- self-attentionモジュールは、ソースシーケンスとターゲットシーケンスを最初に「自己関連」させ、ソースシーケンスとターゲットシーケンス自身の埋め込み表現が含む情報をより豊かにします。
- FFN層もモデルの表現能力を強化します。
- …
7. RNN
SRN
フィードフォワードニューラルネットワークは層と層の間で接続され、層内では接続されていません(循環していません)。また、入力と出力は固定された長さであり、可変長のシーケンスデータを処理できません。
$$h_{t}=f(Uh_{t-1}+Wx_{t}+b)$$ チューリング完全性とは、あるデータ操作ルールがチューリングマシンのすべての機能を実現し、すべての計算可能な問題を解決できることを指します。 すべてのチューリングマシンは、シグモイド活性化関数を使用するニューロンで構成された全結合循環ネットワークによってシミュレートできます。
双方向RNNは2つの方向のRNNを組み合わせたもので、1つは文(シーケンス)を正方向に読み、もう1つは逆方向に読みます。これにより、各ノードの出力は文全体の情報を含むことができます。
長期依存問題
勾配爆発と勾配消失の問題により、短周期の依存関係しか学習できません。 勾配爆発 重みの減衰(Weight Decay):モデルの複雑さを制限するための正則化技術です。これは、モデルの損失関数に正則項を追加することで実現され、この正則項は通常、モデルの重みのL2ノルムのペナルティ項です。このペナルティ項の役割は、モデルの重みが大きくなりすぎないようにすることで、モデルの複雑さを減少させ、モデルの過学習を抑制することです。 勾配の切断:しきい値を超える勾配を切断します(例えば>15の場合は=15)。 勾配消失問題 循環辺を線形依存に変更する:$h_{t} = h_{t-1}+g(X_{t};\theta )$ -これも実際には長期依存問題を解決しました。 非線形性を追加する(残差構造): $h_{t}= h_{t-1}+g(X_t,h_{t-1};\theta)$
勾配消失の2つの構造的な改良について、実際にはLSTMが行ったことです。LSTMは勾配消失の問題を緩和できますが、勾配爆発の問題を解決することはできません(むしろさらに激しくなります、なぜならより複雑だからです)。LSTMが勾配消失を緩和する理由は、細胞記憶にあり、元の循環辺を乗算から加算に変更し、記憶の影響が常に存在する(忘却ゲートが発動しない限り)、記憶がより持続するからです。
LSTM
LSTMネットワークは、情報伝達の経路を制御するためにゲートメカニズム(Gating Mechanism)を導入しています。3つの「ゲート」はそれぞれ入力ゲート$i_t$、忘却ゲート$f_t$、出力ゲート$o_t$であり、これらのゲートの役割は次の通りです:
- 忘却ゲートは、前の時刻の内部状態$c_{t-1}$からどれだけの情報を忘れる(保持する)かを制御します。
- 入力ゲートは、現在の時刻の候補状態$\tilde c_t$からどれだけの情報を保存(入力)するかを制御します。
- 出力ゲートは、現在の時刻の内部状態$c_t$からどれだけの情報を外部状態$h_{t}$に出力するかを制御します。
LSTMとRNNの利点の比較:
欠点は、勾配が依然として爆発することです!
RNNの利点:
- 記憶機能を持ち、時系列データを処理および予測できます。 RNNの欠点:
- 長いシーケンスを処理する際、RNNの性能は低下します。なぜなら、情報の伝播時に距離が長いと、勾配の伝播が勾配消失または勾配爆発の問題を引き起こしやすいからです。
- RNNのパラメータ更新速度は遅いです。なぜなら、逆伝播時に前の時刻の出力結果を待つ必要があるからです。
- RNNのモデル容量は小さいです。なぜなら、情報の伝播経路が短く、長期依存情報を捉えるのが難しいからです。 LSTMの利点:
- 長いシーケンス情報を処理できます。なぜなら、LSTMは記憶単位を通じて長期依存情報を保存し、情報の伝播経路が長いからです。
- LSTMのパラメータ更新速度は速いです。なぜなら、記憶単位に長期依存情報が保存されており、パラメータをより速く更新できるからです。
- LSTMのモデル容量は大きいです。なぜなら、記憶単位に長期依存情報が保存されており、シーケンス情報をよりよく捉えることができるからです。 LSTMの欠点:
- LSTMは長いシーケンス情報を処理できますが、短いシーケンスを処理する際にはRNNほどの性能を発揮しません。
GRU
Gate Recurrent Unitの精神は:古いものが去り、新しいものが来る。入力と出力ゲートが連動し、入力が開くと出力が閉じ、出力が開くと入力が閉じます。毎回新しいデータに置き換えられます。
Seq2Seq ???
具体的な応用:
公式表現:
同期:
非同期:
8. ネットワーク最適化
ネットワーク最適化の難点
構造の違いが大きい 汎用の最適化アルゴリズムがない ハイパーパラメータが多い 非凸最適化問題 パラメータの初期化 局所最適からの脱出 勾配消失、勾配爆発
低次元空間の非凸最適化問題:いくつかの局所最適点(Local minima)とパラメータの初期化が存在します。 高次元空間の非凸最適化問題(深層ニューラルネットワーク):局所最適点からの脱出ではなく、鞍点にあります。鞍点は一次勾配が0ですが、ヘッセ行列は半正定ではありません。
高次元空間では、局所最小値(Local Minima)は各次元で最低点である必要があり、この確率は非常に低いです。つまり、高次元空間ではほとんどの停留点が鞍点です。ランダム勾配降下は高次元空間の非凸最適化問題に非常に重要であり、勾配方向にランダム性を導入することで、鞍点から効果的に脱出できます。
モデルが平坦な局所最小値に収束すると、そのロバスト性が向上し、パラメータの微小な変動がモデルの能力に大きな影響を与えません。一方、モデルが尖った局所最小値に収束すると、そのロバスト性が低下します。ネットワークをトレーニングする際、全体の最小値を見つける必要はありません。これはむしろ過学習を引き起こす可能性があります。
神経ネットワーク最適化の改善方法:
- 最適化アルゴリズム
- 動的学習率調整
- 勾配修正推定
- パラメータ初期化方法、前処理方法
- ネットワーク構造を変更して地形を最適化
- ハイパーパラメータの最適化
最適化アルゴリズム
バッチサイズの影響
バッチサイズはランダム勾配の期待値に影響を与えませんが、ランダム勾配の分散に影響を与えます。 バッチが大きい-ランダム勾配の分散が小さい-安定-大きな学習率
学習率の調整
学習率の減衰
学習率のウォームアップ
小バッチ勾配降下法では、バッチサイズの設定が大きい場合、通常は比較的大きな学習率が必要です。しかし、トレーニングの開始時には、パラメータがランダムに初期化されているため、勾配も通常大きく、比較的大きな初期学習率を使用すると、トレーニングが不安定になる可能性があります。そのため、開始段階では学習率を小さくし、その後徐々に回復させる(ウォームアップ)必要があります。ウォームアップが終了した後、学習率を減衰させることができます。
$$\alpha_{t}= \frac{t}{T}\alpha_{0}$$ ここで$T$はウォームアップの反復回数です。
周期的な学習率の調整には、循環学習率、ウォームリスタートなどが含まれ、周期内で一度上昇し、その後下降し、全体としては下降します。これにより、尖った最小値と平坦な最小値に対処し、局所最適解を見つけることができます。
自適応学習率の調整
$\alpha$は学習率、$\beta$は減衰率、$\epsilon$は分母が0になるのを防ぐために存在します。 Adagradには学習率が単調に減少する問題があります。 RMSPropは$G_t$の計算方法を累積から指数減衰移動平均に変更し、学習率が単調でなくなります。
勾配の最適化
モメンタム
$$\Delta\theta_{t}=\rho\Delta\theta_{t-1}-\alpha g_{t}$$ ここで$\rho$はモメンタム因子で、通常0.9を取ります。$\alpha$は学習率で、パラメータ更新は$\theta_t = \theta_{t-1} +\Delta \theta_t$です。 各パラメータの実際の更新差は、最近の勾配の加重平均値に依存します。あるパラメータが最近の勾配方向が一致しない場合、その実際のパラメータ更新幅は小さくなります(トレーニングの終わり)。逆に、最近の勾配方向が一致している場合、その実際のパラメータ更新幅は大きくなり、加速効果を発揮します(トレーニングの初期)。
ネステロフ加速勾配
$$\theta = \hat \theta - \alpha g_{t}$$ $$\hat \theta = \theta_{t-1}+\rho \Delta \theta_{t-1}$$ 唐朝剛の誤解を招きやすいバージョンに対処する: $$\Delta \theta_{t} =\rho \Delta \theta_{t-1}-\alpha g_{t}(\theta_{t-1} +\rho \Delta \theta_{t-1}) $$ 本当のバージョン:
両者の違いは、モメンタムは点$\theta_{t-1}$の勾配を使用し、NAGは点$\hat \theta = \theta_{t-1}+\rho\Delta \theta_{t-1}$の勾配を使用することです。
ネステロフはモメンタムが2ステップで進む道を1ステップで進むため、「加速」となります。
Adam
Adam ≈ RMSProp + モメンタム
- まず2つの移動平均を計算します。 $$M_{t}= \beta_{1}M_{t-1}+(1-\beta_{1})g_{t}$$ $$G_{t}=\beta_{2}G_{t-1}+(1-\beta_{2})g_t^2$$
- バイアス補正 $$\hat M_{t} = \frac{M_{t}}{1-\beta_{1}^{t}}$$ $$\hat G_{t} = \frac{G_{t}}{1-\beta_{2}^{t}}$$
- 更新 $$\Delta \theta = -\frac{\alpha}{\sqrt{\hat G_{t}+\epsilon}}{\hat M_t}$$
勾配の切断
しきい値で切断 $$g_{t}= max(min(g_{t},b),a)$$ ノルムで切断 $$g_{t} = b\frac{g_{t}}{\vert \vert g_{t} \vert \vert }$$
パラメータの初期化
- 事前トレーニング
- ランダム初期化
- ガウス分布(正規分布)
- 一様分布
- 固定値初期化
データの前処理
データの正規化
最大最小値正規化 Max-min Normalization $$\hat x = \frac{x-min}{max-min}$$ 標準化 Standardization $$\hat x = \frac{x-\mu}{\sigma}$$ 白化とPCA 白化処理を経て、特徴間の相関性が低くなり、すべての特徴が同じ分散を持ちます。主な実装方法はPCAです。
バッチ正規化と層正規化
$$\hat x = \frac{x-\mu}{\sqrt{\sigma^{2}+\epsilon}}\gamma + \beta$$ 計算はこのように行いますが、対象が異なります:
バッチ正規化は異なるサンプル間で行い、層正規化は同じサンプル内で行います。 バッチ正規化は異なるトレーニングデータ間で単一のニューロンを正規化し、層正規化は単一のトレーニングデータに対して特定の層のすべてのニューロンを正規化します。
問題
7-8 問題 バッチ正規化がリカレントニューラルネットワークに直接適用できない理由を分析します。
解答
層正規化はRNNに使用できます。以下に示すように、両者の違いを示します。
- バッチ正規化は中間層の単一のニューロンを正規化する操作であるため、小バッチサンプルの数が少なすぎると、単一のニューロンの統計情報を計算するのが