PyTorchで始めるYOLOと、文書分類におけるCNNのフィルタの初期化
11/15のarXivTimes輪講は、泣く子も黙るYOLOと、CNNを利用した文書分類を行う際にCNNのフィルタを意味特徴を捉えるよう初期化する手法について取り上げました。
YOLO9000: Better, Faster, Stronger
物体認識の世界では知らぬ者のいないYOLO、その改良版であるYOLO9000について SnowGushiGitが発表しました。Better, Faster, Strongerと銘打っている通り、その工夫は3つに分かれています。
Better
・すべての畳込み層にBatch Normalization
・認識する領域(バウンディング)を設定する際、IoU=回答範囲との一致率で様々なバウンディングをクラスタリングし、確度が高いものから見て行く(経験的に検出可能性が高い領域から見ていく)。
Faster
・Darknetを使用+事前学習済みモデルを利用
・パラメーター量を増やす原因となる全結合層を廃止
Stronger
・9000クラスのsoftmaxは大変なので、クラスに階層構造を持たせてツリーのノード単位での予測を行っている。具体的には、MS COCOのクラスをWordNetに当てはめて、子のノードにImageNetのクラスを対応させ、COCOのクラス=>ImageNetのクラス、と段階的な分類を行っている。
このテクニックは、自然言語など予測クラス数が多い他の問題にも応用が可能だなと感じました。
Initializing Convolutional Filters with Semantic Features for Text Classification
こちらは kamujunの発表で、CNNを利用した文書分類を行う際に、分類目的に適した反応をするようフィルタを初期化する、という試みです。具体的には、センチメントの分類ならpositive/negativeに反応するフィルタを作っておこうということです。
しかし手順は結構煩雑で、まずN-gramを抽出しNaive Bayesで分類における重要度をスコアリング、さらにそこからK-meansのクラスタリングにかけてcentroidのベクトルを得て、そいつをフィルターにセットする、という運びになります(このフィルタで走査すれば、centroidに近い単語は高い反応を示す)。
精度は出ていますが、素のCNNに比べて1ポイント前後の差異なので、労力に比べるとどうかなという印象がありました。ただ、事前学習済みモデルのように使えれば有用かもしれません。
以上が11/15の輪講の内容でした。
At the End
arXivTimesでは、論文輪講のメンバ及びarXivTimesへの投稿をお待ちしております(投稿上でのディスカッションなどもできればと思っています)。興味をお持ちの方は、Twitterのメンションでぜひご連絡ください。