目次
はじめに
こんにちは。てくますプロジェクトのYukkinです! 本記事は、てくますプロジェクトが実施している輪読会『深層学習による画像認識の基礎』の第6回活動記録です。
てくますプロジェクトでは、講座や輪読会など、さまざまな勉強会を開催しています。この記事を通して、私たちの取り組みについて少しでも興味を持っていただけたら嬉しいです!
本記事は、数学・情報・論理パズルを楽しむ Techmath Project Advent Calendar 2024 の11日目の記事でもあります。アドベントカレンダーの応援や購読をしていただけると、とても励みになります!
現在は「深層学習による画像認識の基礎」という本を読み進めています。
リンク
第6回の今回は、<4章 Vision Transormer>のp.112〜130まで読み進めました!
本記事では、今回の勉強会で学んだことをざっくりと紹介していきます。
学習内容
Vision Transformer(前回の続き)
前回に引き続き、ViT について学習しました。
ViT は以下の6つの要素で構成されています。
- パッチ埋め込み
- 位置埋め込み
- 層正規化
- 自己注意機構
- 順伝播層
- スキップ接続
①〜②については前回学んだため、今回は③〜⑥を学びました。
層正規化
- 各ベクトルごとに正規化を行い、学習を安定化させる
- 正規化とは、平均値と標準偏差を、学習可能なパラメータ \(\beta_i\) と \(\gamma_i\) に調整する作業
- ViTの現論文では、自己注意機構と順伝播層の前に層正規化を行う(事前層正規化)
自己注意機構
- 自己注意機構の流れ
- ベクトル系列 \(H=(h_{CLS}, h_1, \cdots, h_N)\) から 、クエリ \(Q\) 、キー \(K\) 、バリュー \(V\) を計算する
- \(Q=W_QH\)
- \(K=W_KH\)
- \(V=W_VH\)
- クエリ \(Q\) とキー \(K\) 内のすべてのベクトル間の類似度を計算する
- \(A=\dfrac{K^TQ}{\sqrt{d}}\)
- ソフトマックス関数を適用し、どの箇所に注意するべきかを計算する
- \(\tilde{A}=softmax(A)\)
- バリュー \(V\) と注意 \(\tilde{A}\) を用いて出力を計算する
- \(Q’=V\tilde{A}\)
- ベクトル系列 \(H=(h_{CLS}, h_1, \cdots, h_N)\) から 、クエリ \(Q\) 、キー \(K\) 、バリュー \(V\) を計算する
- 上記の流れを一つの式にまとめると次のようになる
- \(Q’=Vsoftmax(\dfrac{K^TQ}{\sqrt{d}})\)
- 注意機構とは、クエリの観点から注意すべきベクトルをキーから選別し、その重要度に応じてバリューを1つのベクトルに集約する処理と言える
- ViTでは、自己注意機構を複数個並列実行させたマルチヘッド注意機構を使用している
- \(Q, K, V\) の各ベクトルをそれぞれブロック分割し、ブロックごとに自己注意機構を行い、最後に統合する
- 並列にすることで、ソフトマックス関数で1つの要素のみ注意されることを防ぐ
順伝播層
- 2層の全結合層と活性化関数で構成される
- キー・バリュー方式の記憶装置として機能する
スキップ接続
- 入力から自己注意機構の出力までの部分と、自己注意機構の出力から順伝播層の出力までの2箇所に配置する
DeiT
- 提案当初のVitは大規模な事前学習を行わないと、CNNよりも劣った性能を示していた
- 大規模な事前学習を行わなくても分類精度を向上する方法として、DeiTが考えられた
- データ拡張
- ランダムデータ拡張
- Mixup
- Cutmix
- ランダムマスキング
- 正則化手法
- ラベル平滑化
- 確率的深度変動法
- 繰り返しデータ拡張
- ドロップアウトと勾配クリッピングの廃止
- 知識蒸留
- 学習済みCNNを用いた知識蒸留
- データ拡張
最後に
画像認識の6回目のゼミでした。
前回と今回で、ViTの理論の基礎を学ぶことができました。次回からは ViT のより細かい内容に入っていきそうです。
次回は年内最後の輪読会。気持ちよく終えたいですね。
では、またね!
コメントを書く