MLP-Mixerの論文の概要を把握する
MLP-MixerなどのMLPを用いたとされる論文が話題のようなので、MLP-Mixer論文の概要を把握できればということで当記事にまとめます。
[2105.01601] MLP-Mixer: An all-MLP Architecture for Vision
以下、目次になります。
1. MLP-Mixerの概要(Abstract、Introductionの確認)
1-1 Abstractの確認
1-2 Introductionの確認(Section1)
2. 論文の重要なポイントの抜粋
2-1. Mixer Architecture(Section2)
2-2. Experiments(Section3)
2-3. Related Work(Section4)
2-4. Conclusions(Section5)
3. まとめ
1. MLP-Mixerの概要(Abstract、Introductionの確認)
1-1 Abstractの確認
1-1節では論文のAbstractを確認します。
上記がMLP-Mixerの論文のAbstractです。以下、簡単に内容についてまとめます。
・コンピュータビジョンの分野においてCNNやViT(Vision Transformer)は様々な研究で用いられている
・この研究ではMLP(Multi-Layer Perceptron)に基づくMLP-Mixerを導入し、CNNやViTと同様のパフォーマンスを実現できることを示す
・MLP-Mixerのモジュールは「1. パッチ(tokenと同義)毎の局所特徴量の計算」と「2. パッチ間の大域的な特徴量の計算」の二つのモジュールからなる
・大規模に学習した際にMLP-Mixerは画像分類(image classification)においてSotAと同様の成果を示した
・この結果がCNNやTransformerの更なる研究に対して指針になるかもしれない
Abstractについて概ね把握できたので1-1節はここまでとします。
1-2 Introductionの確認(Section1)
1-2節ではIntroductionの記載を確認します。
第一パラグラフでは、先行研究の紹介にあたってCNN(Convolutional Neural Network)やViT(Vision Transformer)が挙げられています。ViTについては下記の記事などで取り扱いましたのでここでは流します。
第二パラグラフではこの論文で提唱するMLP-Mixerの構成について簡単に記載されています。ここで"either spatial locations or feature channels"と表現されているのがこの論文での主題となります(CNNを元に考えるならMobile Netなどに発想は近いと思います)。
第三パラグラフでは第二パラグラフの内容が少し詳しく記載されています。基本的にpatchesとchannelsが元で、channel-mixing MLP(同じtoken内の計算)とtoken-mixing MLP(違うtokenとの計算)の二つのモジュールが紹介されています。何度か同様の内容を表現を変えて記載されているので、それに気づけばスムーズに把握できるのではないかと思います。また、Figure.1にMLP-Mixerの全体の構成を図示したとされているので、Figure.1も確認します。
上記のFigure.1の上の図ではMixer layersの詳細の確認にあたって、token-mixing MLP(左)とchannel-mixing MLP(右)の二つが主に図示されています。全体構成は左下ですが、基本的にMixer layer以外はViTとそれほど変わらない構成と理解しておけば概ね問題なさそうです。
第四パラグラフでは、depth-wise convolutionsに関する記載があり、Mobile Netなどを思い浮かべながら確認すると良いのではと思います。また、第五パラグラフではMLP-Mixerがシンプルな構成であるにも関わらずSotAと同等のパフォーマンスを示したことについて記載されています。
2. 論文の重要なポイントの抜粋
2-1. Mixer Architecture(Section2)
冒頭部の記載では「(i)特定の空間的位置(spatial location)における計算」と「(ⅱ)異なる空間的位置間での計算」の二つをどのように取り扱うかについて記載されています。CNNやViTでは処理における(i)と(ⅱ)の区別が曖昧になりがちな一方でMLPでは明確に区別した(clearly separate)と記載されています。
この話はなかなか興味深く、CNNではMobileNetの畳み込みの分解、TransformerではFFNの計算のところは確かに明確な役割があると思われますが、MLP-Mixerの計算ほど明確に切り分けていないので非常にシンプルな処理と見ることができると思います。
2-2. Experiments(Section3)
2-3. Related Work(Section4)
2-4. Conclusions(Section5)
この記事では省略します。
3. まとめ
当記事ではMLP-Mixerについて取り扱いました。確認した記載のようにCNNやTransformerと比較した際にさらにシンプルになったと考えて良いと思います。
一方で、Transformerにおいてはtoken間の類似度に基づいてtoken間の参照構造のInductive biasについて取り扱っていたのが、MLP-Mixerではパラメータによってtoken間の参照構造を取り扱っていることは抑えておくと良いと思います。どちらが良いかを判断するというよりはそれぞれの処理の前提に何が置かれているかを正確に把握することが重要なのではないかと思います。
Inductive biasについては下記にまとめましたので、詳しく確認したい方は下記も合わせてご確認いただけたらと思います。
固有値・固有ベクトル①(固有値・固有ベクトルの計算)|行列〜線形代数の基本を確認する #3
当シリーズでは高校〜大学教養レベルの行列〜線形代数のトピックを簡単に取り扱います。#1では外積の定義とその活用について、#2では逆行列の計算について簡単に取り扱いました。
#3から何度かに分けて固有値・固有ベクトルについて取り扱います。#3では2行2列の行列に対して固有値・固有ベクトルの導出について取り扱います。
当記事では下記を主に参考にして確認していくことにします。
以下、目次になります。
1. 固有値(eigenvalue)の計算
2. 固有ベクトル(eigenvector)の計算
3. まとめ
1. 固有値(eigenvalue)の計算
1節では2行2列の行列の固有値(eigenvalue)の計算について取り扱います。固有値はを満たすスカラーののことです。
計算にあたって、の具体的な値がわかっている方がイメージがつきやすいと思いますので、の固有値を求めるとします。固有値は下記の方程式の解と一致します。
上記において、は行列式、は単位行列を表すものとします。よって、の行列式がとなるときのを求めれば良いということになります。
上記より、が成立し、これが行列の固有値となります。
また、固有値の導出の際の計算でを用いましたが、が対称行列である際は基本的にこの因数分解の式が使えるので抑えておくと良いかと思います。
固有値の計算について簡単に認できたので1節はここまでとします。
2. 固有ベクトル(eigenvector)の計算
2節では固有ベクトル(eigenvector)の計算について取り扱います。1節と同様にの固有ベクトルを求めることとします。
固有ベクトルの計算にあたっては、に求めた固有値のを代入することでを求めます。1節でを求めたので、以下それぞれについて固有ベクトルを求めます。
・のとき
より、が得られます。これによって固有ベクトルの(は任意の実数)が得られます。
・のとき
より、が得られます。これによって固有ベクトルの(は任意の実数)が得られます。
ここまでの導出により、の固有値に対応する固有ベクトルは(は任意の実数)、固有値に対応する固有ベクトルは(は任意の実数)であることがわかります。
3. まとめ
#3では固有値・固有ベクトルの計算について取り扱いました。
#4では固有値・固有ベクトルを用いた行列の乗について取り扱います。
二次形式の微分|ベクトル解析を確認する #2
ベクトル解析(vector calculus)の基本的なトピックを確認するシリーズです。
#1では簡単に概要の把握について確認しました。
#2では二次形式(quadratic form)の微分について取り扱います。(二次形式の微分をベクトル解析で取り扱うのが良いのかについては明示的な記載がすぐに見つかりませんでしたが、二次形式の微分については把握しておく方が様々なところで役に立つのでこちらで取り扱うこととしました。)
以下が目次となります。
1. 二次形式(quadratic form)とは
2. 二次形式の微分
3. まとめ
1. 二次形式(quadratic form)とは
1節では二次形式(quadratic form)について簡単に確認します。下記の記載を主に参考にします。
上記によると、「二次形式とはすべての項の次数が2である多項式のこと」であり、一般に下記の数式で表されるとされています。
少々上記の式だけだとわかりにくいため、とした上で具体的に考えてみようと思います。まず、の状況では、とはとの値を取るため、、、、、、がここで存在することになります。
ここで、とすると下記が成立します。
上記のように二次形式をの式で導出することができます。ここで注意が必要なのが式が与えられた際にが成立するため、は和が一定であれば良いということです。そのため、が成立する状況では二次形式の対角成分はそれぞれ和が一定であれば一意とはならないことは把握しておく方が良いかと思います。これはが3以上でも同様です。
逆に値を一意に設定したい場合は行列の対称性を設定すればとより、が成立します。この辺は分散・共分散行列のように二次形式を考える際の行列は対称な行列を取り扱うことが多いので、一意に定まることが多いと把握しておくのが良さそうです。
二次形式の概要について取り扱えたので1節はここまでとします。
2. 二次形式の微分
2節では対称行列の二次形式の微分について取り扱います。
上記に対し、とした際に、二次形式の微分(勾配)をのように定義します。この際には下記のようになります。
上記において、より、下記が成立します。
ここまでの計算により、対称行列の二次形式はとできることがわかります。
2次形式の微分は行列表記だけ見てはわからなくなる際もあるため、本来の式と行列表記の対応を常に考えながら取り扱うのが良いのではと思います。
3. まとめ
#2では二次形式の微分について概要の把握と表記の確認を行いました。
#3では回帰分析によく用いられるデザイン行列における二次形式の微分について取り扱います。
平方根関数の微分|基本関数の微分の公式を定義から導出する #5
指数関数、対数関数、三角関数などの微分の公式を定義から導出を行うシリーズです。#4では分数関数の微分に関して取り扱いました。
以下、目次になります。
1. の微分の導出
2. の微分の導出
3. まとめ
1. の微分の導出
1節では定義に基づいたの微分の導出について取り扱います。
ここまでの議論により、が導出できます。
これはを満たしており、ここでの導出は公式が整数以外でも成立することを示す一つの例と見ることもできます。
2. の微分の導出
2節では定義に基づいたの微分の導出について取り扱います。
ここまでの議論により、が導出できます。
また、ここでの導出もを満たしていることが確認できます。
3. まとめ
#5では平方根関数の定義に基づく微分について確認しました。
乗根の計算は因数分解の公式を知っていないと導出は難しいですが、このような項を一つずつずらす発想は等比数列の和の計算でも出てくるので考え方を抑えておくと良いかと思います。
概要の把握と表記の確認|ベクトル解析を確認する #1
ベクトル解析(vector calculus)は応用的な視点から数学を用いる際によく出てくるトピックです。が、カリキュラムによって取り扱うタイミングが異なるようなので、基本的なトピックをまとめることとしました。
#1では簡単に概要の把握について行います。下記を主に参考にします。
以下が目次となります。
1. ベクトル解析の概要
2. 、、について
3. まとめ
1. ベクトル解析の概要
1節ではベクトル解析の概要について確認します。
主に上記を参考にしますが、「ベクトル解析」は主に多変数関数の微積分を取り扱う分野であると把握しておけば一旦十分だと思います。
具体的にも確認できればということで、あるスカラー関数を、、方向にそれぞれ微分を行うと考えます。
この微分は上記のように表せます。2節でも取り扱いますが、これはの勾配と呼ばれ、とも表されます。ここではスカラー関数のに関する偏微分です。
直感的なイメージがつかめるように具体的な関数についても確認します。を考えた際には下記のように計算できます。
これを元に関数を考えると、と同様に考えてを最下点とする下に凸な平面を構成していることがなんとなく想像できるかと思います。
大体のベクトル解析の概要と具体例について確認できたので1節はここまでとします。
2. 、、について
2節では1節で出てきたに関連して、同様に使われる表記であるやなどについて取り扱います。ここではスカラー関数をのように表すとします。
まず1節で取り扱った勾配のについては下記のように表します。
上記がで、基本的には1節で取り扱った内容と同様ですが、ここでという記号を導入したところは1節とは異なる点です。はを表す演算子であると抑えておけば十分だと思います。
次にについて取り扱います。はベクトルに作用する演算で、下記のように定義されます。
上記の演算は発散(divergence)の計算を意味しており、「ある点から流れ出す 粒子や場の束の和」を表しています。詳しくは下記などを参照いただけたらと思います。
についても取り扱います。はと同様にベクトルに作用する演算で、下記のように定義されます。
についてはここでは演算の定義の確認にとどめるので、詳しくは下記などを参照いただけたらと思います。
3. まとめ
#1ではベクトルの微分について概要の把握と表記の確認を行いました。
#2では2次形式の微分について取り扱います。
分数関数の微分|基本関数の微分の公式を定義から導出する #4
指数関数、対数関数、三角関数などの微分の公式を定義から導出を行うシリーズです。#1では指数関数の微分、#2では対数関数の微分、#3では三角関数の微分について取り扱いました。
#4では分数関数の微分に関して取り扱いたいと思います。
以下、目次になります。
1. の微分の導出
2. の微分の導出
3. まとめ
1. の微分の導出
1節では定義に基づいたの微分の導出について取り扱います。
ここまでの議論により、が導出できます。
2. の微分の導出
2節では定義に基づいたの微分の導出について取り扱います。
ここまでの議論により、が導出できます。
また、ここでとみて微分を行うと考えると、が成立しており、と同様に取り扱うことができることを示すこともできます。
3. まとめ
#4では分数関数の定義に基づく微分について確認しました。
#5では平方根関数の定義に基づく微分について確認します。
逆行列の計算について|行列〜線形代数の基本を確認する #2
当シリーズでは高校〜大学教養レベルの行列〜線形代数のトピックを簡単に取り扱います。#1では外積の定義とその活用について簡単に取り扱いました。
#2では逆行列の計算について取り扱います。行列は公式に沿って簡単に計算できますが、行列より大きい行列の逆行列は少々大変なのでなるべく簡単に抑えておくと良いのではと思います。
当記事では下記を主に参考にして確認していくことにします。
以下、目次になります。
1. 基本事項の確認、行列の行列の逆行列
2. 行列()の行列の逆行列
3. まとめ
1. 基本事項の確認、行列の行列の逆行列
1節では基本事項の確認を行ったのちに行列の行列の逆行列について確認します。
まず、逆行列を考える上での前提理解を基本事項にまとめます。
・次正方行列(ここではとおくことにします)に関して逆行列を考える
-> 正方行列は行列の行列のことです。正方行列や正則行列など色々と出てきてややこしいため、可能な限り間違えないように注意しておくと良いと思います。・行列が逆行列を持つときは正則(regular)であるという
-> 正方行列と正則行列、正規行列など似たような名称が多いので注意しておきましょう。基本的には定義を丁寧に何度も確認するようにすると良いと思います。・逆行列は一意に定まる
-> の逆行列のは一意に定まり、複数は存在しないことも抑えておくと良いです。・次の単位行列をとした際にかが成立すればは正則であり、はの逆行列となる。
-> がの逆行列であるとき、が成立することは抑えておきましょう。・が成立する
上記は行列に関して取り扱う際に知っておく方が望ましいと思います。
次に行列の行列の逆行列について簡単に確認します。行列の行列の逆行列はのとき下記のように計算することができます。
証明についてはを実際に計算すると、単位行列が得られることで確認できます。
また、このとき計算したが行列の行列式で、のように定義されることも知っておくと良いです。
2. 行列()の行列の逆行列
2節では行列の行列の逆行列について取り扱います。
上記の記載を確認します。
基本的には上記の定理1.1.7のように求めることができます。
具体例も簡単に確認しておきます。上記の流れを抑えておくのが良いかと思います。
かなりざっくりとした取り扱いになりましたので、詳しく確認したいは下記を参照いただけたらと思います。