人工知能とか犬とか

人工知能と犬に興味があります。しょぼしょぼ更新してゆきます。

2019年10月の機械学習関連記事まとめ

趣旨

すこし趣向を変えて、ブログを再開してみようと思います。 自分は最近、毎週水曜日にいくつかの情報源をもとにネットを巡回し、面白そうな記事を見つけたときにははてなブックマークでコメントを書くことにしています。

とはいえ、ブックマーク+かんたんなコメント程度では、あまり意味がないと思っていて、定期的に見直す場を作ってみようと思いました。

そういうわけで、毎月頭に、先月自分がつけたブックマークを整理する、という記事を上げていこうと思います。

深層学習手法のデモ

深層学習は、自分で触ってみて「へーこんなことができるんだ」感動すると、俄然興味が湧いてくるものだと思います。

とはいえ、論文を自分で実装するというのは、なかなか骨が折れる。そのため、githubで公開されているソースコードや、デモサイトなんかが用意されていると、たいへん嬉しいものです。

というわけで、公式で用意されているデモを2つと、自分でデモを作るときに役立つかもしれない情報2つを紹介します。

CTRL - A Conditional Transformer Language Model for Controllable Generation

github.com

salesforceのテキスト生成モデルです。訓練するときにジャンルのようなコードを埋め込んで学習することで、それらしい文章が生成できるようになているらしいです。Colabで実行できるデモがあり、実在しないURLからそこに含まれる文字列をヒントに、それっぽい記事を生成する様子が見れます。

colab.research.google.com

10月末に、huggingface/transformersというtransformerベースの手法やpretrainedモデルを集めるコードベースに組み込まれたようです。

FUNITのデモ(GANIMAL)

www.nvidia.com

NVIDIA AI PLAYGROUNDにFUNITで構築したモデルのデモが公開されました。動物の顔画像を生成するGANなので、その名も「GANIMAL」。

f:id:wanchan-daisuki:20191104165452p:plain
FUNITのデモ

現状では、入力画像を選択できるだけなので、FUNITのキモであるFew-shot(変換先の画像が数枚あれば良い)という特性が活かせていないデモになっているのが残念です。

streamlit

github.com MLツールを簡単に作れるという売り文句のライブラリ。創業者がGoogleX出身ということもあり、注目度は高いです。 一通り触ってみて感じたのは、特に凝ったレイアウトが不要であるプロトタイプに最適なライブラリだなあ、という感想です。

個人的にポイントが高いのが、各種可視化ライブラリにデフォルトで対応しており、jupyterで普段から使っている可視化ライブラリのコードを流用できるという点です。あんまり使う機会が無いかもしれませんが、graphviz対応とかも良い感じです。

グラフだけでなく、地図や動画、音声もサクッと埋め込めます。

Python & OpenGL for Scientific Visualization

www.labri.fr

PythonOpenGLを使った科学計算で使う可視化についてのまとめ、というより教科書です。リッチな可視化を作ろうとすると、先程のstreamlitのようなものからスクラッチへの移行を検討する必要があるそうです。

研究・論文

今月面白そうと思った研究をさらっと紹介します。ちゃんと論文を読んだわけではなく、Abstractなどをざっと眺めただけなので、間違っていたらごめんなさい。

Expanding scene and language understanding with large-scale pre-training and a unified architecture - Microsoft Research

www.microsoft.com

テキストとビジョンを統合したBERTのようなUnified Encoder-Decoderの開発。画像中の物体RoI系列とテキスト系列をそのままBERT風のEncoder-Decoderにぶちこんで、マスクされたテキストの穴埋めを予測できるよう事前学習します。事前学習済みモデルをもとに、VQAやImage-Captioningにファインチューニングするらしいです。

Semi-Supervised and Semi-Weakly Supervised ImageNet Models

github.com

教師あり学習と弱教師あり学習を組み合わせて(Semi-Weakly)、10億枚規模のデータセットに対して画像分類モデルを学習するという研究。ここまで大きなデータセットになってくると、自分で手を出すことは無いと思うのだが、中身のロジックくらいは知っておきたいので、後日論文を読む予定(半教師ありと弱教師ありを組み合わせるってどういうこと???)。 torch.hubから学習済みモデルをロードできるようになっています。

Gate Decorator: Global Filter Pruning Method for Accelerating Deep Convolutional Neural Networks

arxiv.org

Andrew NgのThe Batchで紹介されていた、モデルの軽量化手法。各チャネルのスケーリングをするGate機構を導入し、それが0に近いチャネルを削除する、というのが基本的な方針のようです。

ImageNet(ResNet)の計算コストを55%削減・精度は0.67%減、CIFAR(ResNet)の計算コストを70%削減・精度は0.03%増という結果のようです。

facebookresearch/SlowFast

github.com

動画行動検出手法のPythonコードベース。FAIR製。 以下の手法がまとまっているようだ。

  • SlowFast
  • SlowOnly
  • C2D
  • I3D
  • Non-local Network

その他のブックマーク

SpeechBrain: A PyTorch-based Speech Toolkit.

speechbrain.github.io

PyTorchベースの音声認識ツールキットをつくりましょうというプロジェクト。スポンサーにDOLBYがいるのが本気度高そうです。

Hydra

cli.dev facebook製のpython用config管理ツール。少し眺めた程度なので、何ができるのか実はよくわかっていません。うまく使いこなせれば、pythonのargparse周りをきれいに整理できそうな予感があります。 Specializing configurationを見る限り、機械学習のハイパーパラメータをyamlファイルにまとめておく、という使い方もできるみたいです。

BrachioGraph

brachiograph.readthedocs.io

わずか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に置くのはしんどいのかも、と思ったりもします。

以上