SRFlow: Learning the Super-Resolution Space with Normalizing Flowを読んだのでメモ
はじめに
SRFlow: Learning the Super-Resolution Space with Normalizing Flowを読んだのでメモ. 従来のdeep super resolutionが決定的な出力をすることに対し,超解像はそもそも決定的に決まる問題ではないという考えからconditionalなgenerative flowを使って,低解像度画像を条件とする確率モデルとして超解像を実現.
SRFlow
手法はシンプルで,基本的にはGlowをベースとしている.
低解像度画像を条件としてモデルに与えるために,まず低解像度画像をCNN
により,
と変換する.
このCNNはinvertibleではなく通常のCNN.
得られた表現
をaffine coupling層へ次のように導入することでconditionalなモデルとする.
は
層目の出力を2分割したもの.
アフィン変換のパラメータを出力するニューラルネットに
も同時に入力するというのが通常のgenerative flowとの違い.
さらにAffine Injector層も導入する. Affine injector層は次のように表現される.
Coupling層のようにアフィン変換のパラメータをニューラルネットに出力させるもので,変換対象はgenerative flowの中間出力で,パラメータを出力するニューラルネットへの入力がとなっている.
これも条件付けを強めている.
モデルの学習は通常のgenerative flowと同様に変数変換の公式から導かれる尤度の最大化によって実現され,従来のdeepモデルによる超解像と違い複数の損失の組み合わせなどが必要ない.
まとめ
結果がかなり良い.特に低解像度画像で潰れてしまい超解像の際に不定性が残るような画素はサンプリングごとに変化しており(Fig. 3参照),期待通りの働きができていることがわかる.
Semi-Supervised Semantic Segmentation with Cross-Consistency Trainingを読んだのでメモ
はじめに
Semi-Supervised Semantic Segmentation with Cross-Consistency Trainingを読んだのでメモ. semantic segmentationのための半教師あり学習手法.
Cross-Consistency Training
semantic segmentationでは入力の空間では半教師あり学習のcluster assumption(同じクラスに属するデータが入力の空間で近いという仮説)が成り立たない(領域分割ではデータ点はピクセルのため同じクラスに属すると言って色が近いとは限らない)が,CNNの中間特徴では成り立つという観測の下,中間層に摂動を与えてconsistencyを課すというもの.
まず,ラベル付きデータを集合で表し,ラベルなしデータを集合
で表す.
仮定として
とする.
encoder とdecoder
から成り立つモデル
を考える.
提案するモデルでは上記モデルに対し
個のauxiliary decoder
を導入する.
ベースのdecoder (main decoder)
は教師付きラベルによって学習が進み,auxiliary decoderはラベルなしデータによって学習が進んでいく.
より具体的には教師付きデータに関しては次の損失をencoderとmain decoderに関して最小化する.
ただし,はクロスエントロピーを表す.
ラベルなしデータに関してはまず共通のencoderで中間表現
とした後,
個の確率的な摂動を与える関数
のどれかをランダムに選び,
個の異なる摂動が加えられた中間表現
を作り,それぞれを
個のauxiliary decoderへ入力する.
これに対し下記の損失を最小化するようにauxiliary decoderとencoderを学習する(main decoderに関しては勾配を計算しない).
は距離関数で自乗誤差やJSダイバージェンス など.
よって最終的な損失は次のようになる.
はハイパーパラメータで,他のconsistency regularizationと同様に学習中にrampupする.
auxiliary decoderに関して,イントロダクションにはラベルなしデータを利用するため導入すると書いてあるが,アイディアのベースとしているcluster assumptionやアルゴリズム的に導入する必然性がないため,いまいちどういう役割を担うか分からない.
Perturbaation functions
摂動としては下記の5つを利用する.
- F-Noise:
としてサンプリングしたノイズを
と加える.
- F-Drop:
としてサンプリングした閾値を使って入力を
としてマスクする.ただし,
は指示関数.大体10%から40%くらいの領域がマスクされるとのこと.
- Guided Masking:main decoderの予測結果
を使って生成したマスク
からcontext mask
を作り,このcontext maskにより
をマスクする.
の生成は2007年に提案された手法を利用とのこと.
- Guided Cutout:
から物体らしい領域のbounding boxを取得し,それに基づき
に対しcutoutを行う.
- Intermediate VAT:
に対しVATを計算.
Practical considerations
UDAで提案されたTSAと同様に,段階的に教師あり損失を計算するサンプルを増やしていく方法,an annealed version of the bootstrapped-CE (ab-CE)を使う.
具体的には予測結果に対し,予測確率がある閾値以下のピクセルのみ損失を計算するというもの.式的には下記.
式にも文章に書いてはないが,閾値判定はおそらく予測確率の最大値に対して評価する.
は学習中に徐々に大きくしていく.意味としては,大きく間違えているサンプルから優先的に学習していくというもの.
もう一つのpracticalな要素として,弱教師付きセグメンテーションの利用をする.image-level labelはセグメンテーションラベルより入手コストが低いため存在するものとし,そのようなデータを集合とする.
元々のモデルの構成に加えて,image-level labelを分類するglobal average poolingを持つブランチ
を追加し,学習する.
このブランチからclass activation mappingを使ってマスク
を作り,適当な閾値を使って擬似ラベル
を作る.この擬似ラベルをCRFによりrefinementし教師データとして他の2つの損失に加え,次の損失を最小化するようにauxiliary decoderとencoderを学習する.
その他,デコーダーを追加することで複数ドメインでの学習にも利用可能とのこと.
ざっくり言えば,ドメイン1とドメイン2があれば,encoderは共通でそれぞれのドメインに対応するmain decoder とauxiliary decoder
を用意して学習するというもの,
まとめ
ablationを見るとab-CEの利用が精度向上にかなり寄与するよう. auxiliary decoderの数は増やしても精度が上がったり下がったりで設定にかなり依存がありそう. 個人的にはauxiliary decoderの必要性に関してもう少し説明もしくは実験が欲しかった.
Bootstrap Your Own Latent A New Approach to Self-Supervised Learningを読んだのでメモ
はじめに
Bootstrap Your Own Latent A New Approach to Self-Supervised Learningを読んだのでメモ. とにかくcontrastive learningのnegativeとの比較というものをなくしたいという思い. ただcontrastive learningにおいてnegative examplesとの比較をなくすと全てを同じ表現にする自明な解に落ちるので新たな手法,Bootstrap Your Own Latent(BYOL)を提案.
BYOL
BYOLでは二つのモデルを用意する.一つはonline networkでこれが真に学習したいモデル.
もう一つはtarget networkで,online networkの教師信号を作り出すモデル.
Target networkはonline networkと同一の構造でパラメータがonline networkの指数移動平均で定義される.
すなわち,online networkのパラメータを,target networkのパラメータを
とすると,学習のステップごとにtarget networkのパラメータは次のように更新される.
ただしは減衰係数.
それぞれのモデルは入力から特徴ベクトルを得ると表現を適当な空間へ写像する
と,写像されたベクトルから予測を行う
から成る.
入力データ
が与えられた時,画像のaugmentation
をそれぞれ二種類ランダムに選び新たな画像
を作る.
それぞれをonline networkで
,target networkで
のように写像する.
得られた表現をonline networkは
,target networkは
とそれぞれ変換し,次の二乗誤差を最小化するようにonline modelを学習する.
上記の例ではをonline networkに
をtarget networkに入力する形だったが,これらを入れ替え,
をtarget networkに
をonline networkに入力して計算した二乗誤差を
と定義し,最終的な目的関数を
として,これを
について最小化する.
学習終了後はのみを保持し,任意のタスクへ利用する.
Image augmentation
BYOLで利用する画像拡張はSimCLRと同じ候補を利用.
具体的には画像をランダムに切り抜き(224,224)にリサイズし,画像反転と,brightness, contrast, saturation, hue adjustments, optional grayscale conversionなどの色変換を行い,最後にGaussian blurとsolarizationをする.
Architecture
はResNet50の出力層手前の平均プーリング層までをベースとして,パラメータを2x~4xまで増やしたResNet101, 152, 200それぞれ実験.
はSimCLRと同様にMLPで構成され,隠れ層が4096次元で出力層が256次元.
は
と同様の構造とのこと.
Optimization
ここも他手法と同じくLARS optimizer+cosine learning rate scheduleを利用し,1000epoch学習.
学習率はで定義し,重み減衰を係数
で使用.
target networkの減衰係数は
とし,
でスケジューリング.ただし,
は学習の繰り返し回数で,
は最大繰り返し回数.
まとめ
半教師あり学習で使われるmean teacherという感じ. SimCLRの時も少し思ったが,半教師あり学習と教師なし表現学習は手法的にはどんどん似通ってくるのかなと.
BATCHENSEMBLE: AN ALTERNATIVE APPROACH TO EFFICIENT ENSEMBLE AND LIFELONG LEARNINを読んだのでメモ
はじめに
BATCHENSEMBLE: AN ALTERNATIVE APPROACH TO EFFICIENT ENSEMBLE AND LIFELONG LEARNINを読んだのでメモ.
気持ち
簡単にモチベーションを言えば,通常のモデルアンサンブルはアンサンブルする分だけモデルを個別に用意する必要があるが学習にも推論にも時間がかかる. そのため,コストを減らすために一つのモデルに少量のパラメータを追加することでアンサンブルを実現する.
Method
まずベースとなるモデルの各層における重みをとする.
ここではいわゆる全結合のニューラルネットを例に説明するが,畳み込み層などへの拡張も簡単にできる.
各層は追加の学習パラメータとしてと
を持つ.
添字
は
から
までのインデックスで
はアンサンブルの数(モデルの数)を表す.
すなわち,通常の
個のモデルを用意するアンサンブルに対し,提案する手法は各層につき
個の追加の学習パラメータ
を持つだけとなる.
各層はこの追加パラメータを使って次のように重みを計算する.
すなわちrank-1の行列ともとの重みの要素積で番目のモデルの重みを作り出すというもの.
これは入力のベクトルを
とすれば全結合層の計算を次のように計算を展開できる.
すなわち層への入力時点でと
の要素積をとり,出力で
との要素積をとるとかけ,演算量の点で非常にリーズナブルとなる.
結果として通常の独立に
個のモデルを容易するより計算コストが低い.
このモデルはいわゆるlifelong learningのようなタスクが時々刻々と変化していく問題においても,タスク毎にを用意することで応用が効く.
通常のモデルアンサンブルと比較したときの欠点としては学習時に入力されたバッチサイズの倍のサンプルを計算することになるという点.
通常のモデルアンサンブルなら
個のモデルは非同期に勝手に学習すればいいので1モデル分の学習で済むが,提案する方法では
個のモデルに対し共通する重み
があるため,個々のモデル
毎に学習するわけにはいかなくなる.
ただし,data parallelや分散学習などはできるのでそれはマシーンパワーで解決しろとのこと.
まとめ
実装の簡便さや性能が十分出ることから非常に使い勝手の良い手法なよう. ただ,時間があってマシンが限られる場合には従来の方法が好まれる気がするのでその辺は使い分けかなと.
Prototypical Contrastive Learning of Unsupervised Representationsを読んだのでメモ
はじめに
Prototypical Contrastive Learning of Unsupervised Representationsを読んだのでメモ.
気持ち
近年流行しているContrastive Learning(例えばSimCLR)はpositive pairとnegative pariを元となるデータ点が等しいかどうかで識別的に分類することで表現学習を行う. この論文ではそのようなinstance-wiseなcontrastive learningでは例えどんなに似たデータだったとしても異なるデータとして扱うためデータに内在するsemanticな構造を得られないと考え,instance-wiseではなくprototypical contrastive learningを提案する.
一言で言ってしまえば,contrastive learningとself-labeling(DeepClusterなど)の組み合わせ.
Prototypical Contrastive Learning
データセットをで定義する.
学習対象のモデルを
とする.
従来のinstance-wise contrastive learningでは次の損失を最小化する.
は
番目のデータに対する埋め込みで,
は一つのpositive pairの埋め込みと
個のnegative pairの埋め込みを含む.
は温度パラメータ.
prototypical contrastive learningではこのの代わりにprototype
を利用する.
さらにハイパーパラメータ
をprototype毎の集中度
に置き換える.
ここでの目的は下記の対数尤度の最大化として表現される.
ここでは仮定として,観測されたデータは潜在変数
に関係があるとし,対数尤度を次のように書き直す.
これを直接的に最適化するのは困難であるため,次の下界を考える.
は
を満たす分布.
この不等式はJensenの不等式から得られる.
等式は
の中身が定数の場合に成り立ち,そこから
が得られる.
定数を無視することで次の式の最大化として考えられる.
最適化は次のEMアルゴリズムで実現される.
- E-stepでは
の推定を行う.これは
上の
-meansとして実行される.prototype
を
番目のクラスターのセントロイドとし,
として計算する.この時の
はMoCoと同様にmomentum encoderを利用する.
- M-stepではE-stepで得られた
を前述の目的関数の下界に代入して
について最大化する.
ここではに対し事前分布として一様分布を仮定することで次のように書き直す.
さらにに対して等方性のガウス分布を仮定する.
これを目的関数に代入すると,下記の目的関数が得られる.
ただしここではと
のl2ノルムが1に正規化されていることを仮定した.
また,practicalなところとして従来のInfoNCEをコストに加える,
-meansによるセントロイドの計算は複数回繰り返すというのが効いたらしく,最終的な目的関数は以下のようになる.
ここまで説明が保留されていただが,これはprototype
内のデータに対するmomentum encoderの出力
を使って次のように計算される.
は小さいクラスタが不当に大きな
をもたないようにするためのパラメータ.
意味するところとして,相対的に分散が大きいクラスタは類似度が高くなりにくく,分散が小さいクラスタは低くなりにくいということ.
まとめ
実験結果を見ると,semi-supervisedの評価で異様に精度を向上させている. 論文の気持ちから,目的関数はprototypeを使った項だけで済まして欲しかった. そういった意味で,prototypeを使ったcontrastive lossのみの精度も気になる.
SELF-LABELLING VIA SIMULTANEOUS CLUSTERING AND REPRESENTATION LEARNINGを読んだのでメモ
はじめに
SELF-LABELLING VIA SIMULTANEOUS CLUSTERING AND REPRESENTATION LEARNINGを読んだのでメモ. K-Meansクラスタリングによりデータにラベル付け(self-labeling)を行うDeepClusterに対し,self-labelingで生成されたラベルとモデルの出力間のクロスエントロピーを最適輸送問題として考えることでself-labelingを行う手法.
Method
事前準備として色々定義する.
まず,データを適当な空間マッピングするニューラルネット
を考える.
ただし,
は特徴ベクトル.
さらに,特徴ベクトルを入力とし識別を行うclassification head
を考える.
ただし,
はカテゴリ数を表す.
データは
点
あるとし,それぞれのデータに対応するラベルを
とする.
最終的な分類スコアはsoftmax関数を用いて下記のように計算される.(論文の通りに書いたが,ここまでの定義に従えば
を挟んでいるので
は
となる気がする.)
モデルは下記のクロスエントロピーを最小化するように学習が進められる.
上記の学習は,ラベルが利用できない場合にはself-labelingの方法によって自動的にラベル付けを行う必要がある.
半教師あり学習などの枠組みではモデルとラベル
の同時最適化となるが,完全な教師なし学習では全てを同一ラベルにアサインすることによってコストを簡単に最小化してしまう.
そのためここではラベルを事後分布
として下記のようにクロスエントロピーを書き直す.
仮に事後分布をクロネッカーのデルタとして決定的に定義をしたのならば上記の式は最初に定義したクロスエントロピーの式に等しい([E(p,q)=E(p|y_1,\dots,y_N)]).
この式でも自明な解にたどり着くため,下記のように制約を与えることでこれを避ける.
この制約は,各データには一つのラベルしか割り当てが行われず,各カテゴリに属するデータ数が均一であることを意味する.
するとこの問題は最適輸送理論の問題として考えることが可能となる.
より具体化するためをモデルから予測された
の同時確率行列とし,同様に
を
の同時確率行列とする.
ここでは
を次のような輸送多面体の要素(すなわち
ではなく
の連続値)に緩和する.
は全要素が1の列ベクトルで,
は
を列方向,行方向へ積分することを意味している.
ここで
が条件付き確率となることを要請する.すなわち
これにより元の目的関数(クロスエントロピー)は次のように書き直される.
はフロべニウス内積(要素積+総和)で
は行列の各要素ごとに適用されるものとする.
結果として最適な
は次の最小化問題を解くことで得られる.
これは線形計画法で溶けるが,通常データ数がミリオンオーダーでクラス数が数千になるので解くことが困難である. ここではSiknhorn Distance(以前まとめたブログ記事)で導入された次のような正則化を導入することで高速に解く方法を提案する.
はKullback-Leiblerダイバージェンスで
は
の確率行列.
この正則化の導入により上記の最小化問題のかいが次のように表現される.
注意としては行列の
乗ではなく要素毎の
乗を表す.
と
は
が確率行列の性質を満たすためのスケーリング係数ベクトルで単純な繰り返し計算で得られる.
面白い知見としては,
は大きな値を取れば元の最適輸送問題と等しくなるが,ここでは
を大きくして正確に解くよりも適当な固定の
を使う方が良い結果が得られた.
おそらく
の緩和により,各クラスに属するデータが均一であるという制約も多少緩和されるためや,smooth labelを使うと良いという知られた知見によるものと考えられる.
最終的なアルゴリズムとしては,モデルと
の最適化を交互に解くことで表現学習をする.
より具体的には
- 現在得られている
に対し,クロスエントロピーの最小化により
のパラメータを更新.
- 現在得られているモデル
に対し
を計算し,
と
を次のように更新することで
を得る.
の更新は行列ベクトル積であり計算オーダーは
であるため,線形計画法で解くよりもリーズナブルに計算が可能(とは言え
くらいなのでどうなのかという疑問がある).
論文によれば繰り返し計算はGPUで収束まで2分程とのこと.
解釈
ここまでのアルゴリズムが結局何をやっているのかを考える.
簡単のため,データをそのインデックス
として
と書き換える.
すると
とかける.
この最小値はの時に得られる.
ここで,
,周辺化エントロピー
が定数,
から
もまた定数と仮定する.
するとエントロピーから二つの定数を引くことで
と相互情報量が導かれる. すなわち結果として元の問題は相互情報量の最大化に等しくなっている.
まとめ
DeepClusterとの関連や,data augmentationの活用,マルチタスクでの学習に関する説明は省略した.
データ数が各クラス毎に均一という仮定を導入することで最適輸送問題としてラベリングを定式化する着眼点が非常に面白かった.
一方で,をデータ数に対して線形時間で得ることができると言っているがデータ数を考えるとそんな簡単な話でもない気がするがどうなのか.
また
の更新の際に
を計算する必要があるが,それもナイーブには全データを一回モデルに入力する必要があるので実装上どう実現されているか気になるところ(実験の章はまともに読んでいないので書いてあるかも…).
RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Cloudsを読んだのでメモ
はじめに
RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Cloudsを読んだのでメモ.
LiDARデータなど,大量の点群データ(オーダー)に対して従来より高速にsemantic segmentationをするモデルの提案.
RandLA-Net
提案するモデルは点群を効率的に演算するためのRandom Samplingと局所的な特徴を抽出するLocal Feature Aggregationからなる.
Random samplingは名前の通り入力の点群からランダムに点をサンプリングする.
ランダムのモチベーションは,何か凝ったことをやろうとするとオーダーになり,ミリオンオーダーの点群に対しては例え線形のオーダーでも厳しい.
強化学習で効率的なサンプリングのpolicyを学習する方法もあるが,探索空間が広すぎて学習が収束しないという問題がある.
なのでランダムサンプリングにしたよということ.
一方で,ランダムにサンプリングすると重要な点を落とす可能性があるので強力なfeature aggregationが必要ということで,新たなaggregation方法を提案する.
RandLA-Netのlocal feature aggregationはlocal spatial encoding (LocSE)とAttentive Poolingから成るresidual blockによって実現される.
local spatial encoding (LocSE)
入力として,点群の点ごとの3次元座標と特徴量(RGBや中間出力など)
を考える.
処理としてまず,
番目の点に対して
近傍[tex:\{p_i^1,\dots,p_i^k,\dots,p_i^K\}を計算する.
これらrの点を使い次のように変換する.
ただし,はconcatenationで,
はユークリッド距離を表す.
MLPの入力は冗長性を持つがプラクティカルには良かったとのこと.
結果的に
次元ベクトルをMLPに入力し,対応する特徴ベクトルと同じ
次元ベクトルを出力する.
これは
近傍の各点に適用されるため,結果として
次元となる.
最終的にと
をconcatenateして
次元ベクトルを出力する.
Attentive Pooling
Attentive PoolingはLocSEの出力を集約する.
より具体的には次のように重み付き和を行う.
はMLP
から
として計算される.
ただし,
はMLPの学習パラメータで,式の通り
や
に依存しない(パラメータ共有してる).
また,式からは分かりにくいが,
はsoftmaxで正規化されている(Fig. 3).
Dilated Residual Block
上記のLocSEとAttentive Poolingから成るDilated Residual BlockとRandom Samplingを積み上げることで提案するRandLA-Netは構成される. 言葉で書くと煩雑に成るためFig. 3参照.
最終的なモデルの全体像はAppendixのFig. 7参照.
まとめ
各種データセットで従来手法を上回るmIoUを達成. 計算時間もPointNetより少し早いにもかかわらずmIoUはPointNetを大幅に上回る. Random Samplingでも十分動くものだなという印象. 前のPoint-Voxel Convでも思ったけど,点群処理は意外と単純なやり方でも精度出るものだなと.