2019年10月の機械学習関連記事まとめ
趣旨
すこし趣向を変えて、ブログを再開してみようと思います。 自分は最近、毎週水曜日にいくつかの情報源をもとにネットを巡回し、面白そうな記事を見つけたときにははてなブックマークでコメントを書くことにしています。
とはいえ、ブックマーク+かんたんなコメント程度では、あまり意味がないと思っていて、定期的に見直す場を作ってみようと思いました。
そういうわけで、毎月頭に、先月自分がつけたブックマークを整理する、という記事を上げていこうと思います。
深層学習手法のデモ
深層学習は、自分で触ってみて「へーこんなことができるんだ」感動すると、俄然興味が湧いてくるものだと思います。
とはいえ、論文を自分で実装するというのは、なかなか骨が折れる。そのため、githubで公開されているソースコードや、デモサイトなんかが用意されていると、たいへん嬉しいものです。
というわけで、公式で用意されているデモを2つと、自分でデモを作るときに役立つかもしれない情報2つを紹介します。
CTRL - A Conditional Transformer Language Model for Controllable Generation
salesforceのテキスト生成モデルです。訓練するときにジャンルのようなコードを埋め込んで学習することで、それらしい文章が生成できるようになているらしいです。Colabで実行できるデモがあり、実在しないURLからそこに含まれる文字列をヒントに、それっぽい記事を生成する様子が見れます。
10月末に、huggingface/transformersというtransformerベースの手法やpretrainedモデルを集めるコードベースに組み込まれたようです。
FUNITのデモ(GANIMAL)
NVIDIA AI PLAYGROUNDにFUNITで構築したモデルのデモが公開されました。動物の顔画像を生成するGANなので、その名も「GANIMAL」。
現状では、入力画像を選択できるだけなので、FUNITのキモであるFew-shot(変換先の画像が数枚あれば良い)という特性が活かせていないデモになっているのが残念です。
streamlit
github.com MLツールを簡単に作れるという売り文句のライブラリ。創業者がGoogleX出身ということもあり、注目度は高いです。 一通り触ってみて感じたのは、特に凝ったレイアウトが不要であるプロトタイプに最適なライブラリだなあ、という感想です。
個人的にポイントが高いのが、各種可視化ライブラリにデフォルトで対応しており、jupyterで普段から使っている可視化ライブラリのコードを流用できるという点です。あんまり使う機会が無いかもしれませんが、graphviz対応とかも良い感じです。
グラフだけでなく、地図や動画、音声もサクッと埋め込めます。
Python & OpenGL for Scientific Visualization
PythonとOpenGLを使った科学計算で使う可視化についてのまとめ、というより教科書です。リッチな可視化を作ろうとすると、先程のstreamlitのようなものからスクラッチへの移行を検討する必要があるそうです。
研究・論文
今月面白そうと思った研究をさらっと紹介します。ちゃんと論文を読んだわけではなく、Abstractなどをざっと眺めただけなので、間違っていたらごめんなさい。
Expanding scene and language understanding with large-scale pre-training and a unified architecture - Microsoft Research
テキストとビジョンを統合したBERTのようなUnified Encoder-Decoderの開発。画像中の物体RoI系列とテキスト系列をそのままBERT風のEncoder-Decoderにぶちこんで、マスクされたテキストの穴埋めを予測できるよう事前学習します。事前学習済みモデルをもとに、VQAやImage-Captioningにファインチューニングするらしいです。
Semi-Supervised and Semi-Weakly Supervised ImageNet Models
半教師あり学習と弱教師あり学習を組み合わせて(Semi-Weakly)、10億枚規模のデータセットに対して画像分類モデルを学習するという研究。ここまで大きなデータセットになってくると、自分で手を出すことは無いと思うのだが、中身のロジックくらいは知っておきたいので、後日論文を読む予定(半教師ありと弱教師ありを組み合わせるってどういうこと???)。 torch.hubから学習済みモデルをロードできるようになっています。
Gate Decorator: Global Filter Pruning Method for Accelerating Deep Convolutional Neural Networks
Andrew NgのThe Batchで紹介されていた、モデルの軽量化手法。各チャネルのスケーリングをするGate機構を導入し、それが0に近いチャネルを削除する、というのが基本的な方針のようです。
ImageNet(ResNet)の計算コストを55%削減・精度は0.67%減、CIFAR(ResNet)の計算コストを70%削減・精度は0.03%増という結果のようです。
facebookresearch/SlowFast
動画行動検出手法のPythonコードベース。FAIR製。 以下の手法がまとまっているようだ。
- SlowFast
- SlowOnly
- C2D
- I3D
- Non-local Network
その他のブックマーク
SpeechBrain: A PyTorch-based Speech Toolkit.
PyTorchベースの音声認識ツールキットをつくりましょうというプロジェクト。スポンサーにDOLBYがいるのが本気度高そうです。
Hydra
cli.dev facebook製のpython用config管理ツール。少し眺めた程度なので、何ができるのか実はよくわかっていません。うまく使いこなせれば、pythonのargparse周りをきれいに整理できそうな予感があります。 Specializing configurationを見る限り、機械学習のハイパーパラメータをyamlファイルにまとめておく、という使い方もできるみたいです。
BrachioGraph
わずか14ユーロ(1800円くらい?)で作るお絵かきマシン。
[https://brachiograph.readthedocs.io/en/latest/images/brachiograph-with-pencil.jpg:image=https://brachiograph.readthedocs.io/en/latest/images/brachiograph-with-pencil.jpg]
この手作り感がたまらない。パーツを集めて作ってみたいですが、そんな暇はあるのでしょうか(汗)
LVISデータセット
www.lvisdataset.org MS-COCOをベースにした、インスタンスセグメンテーションの大規模データセットです。例をみるとわかりますが、かなり細かい部分まで丁寧にアノテーションがなされていることがわかります。
機械学習論文の再現性のためのチェックリスト
Andrew NgのThe Batchで紹介されていた、NeurIPs2019のCall for Papersでも参照されている、機械学習論文の再現性(Reproduction)のためのチェックリストです。
https://www.cs.mcgill.ca/~jpineau/ReproducibilityChecklist.pdf
月に何本か論文を読み、ときに実装する身としては、このくらいの要件はきちんと満たした論文だけになってほしいなあと思う次第です。
できれば、github等で、すべての実験のソースコードを公開してほしいところですが、実験って結構ぐちゃぐちゃになりながらなんとか成果が出るって感じのものがほとんどだと思うので、それをまた整理してgithubに置くのはしんどいのかも、と思ったりもします。
以上