ICLR2019読み会in京都に登壇しました

ちょっと遅れながらの更新ですが、6月2日に京都オムロン本社で開催されたICLR2019読み会に登壇しました

リンク:ICLR2019読み会in京都

 

私の発表はさておき、ABEJA白川さんのゲスト講演が最高におもしろかった(学術的な興味と笑いを取るという二重の意味でおもしろかった)ので、ここにメモしておきたい。

 


ヒトの機械学習

第1部は、店舗ソリューションの話、年齢推定がなぜ難しいかという話。

第2部は、アノテーションを正確にすることの重要性の話。

第3部は、感情推定と双曲空間の話。

個人的に気になったのは2点、アノテーション品質を定量的に測ることが出来るのメトリックが求められるようになってきているのではないか?、そして平面と球面と双曲空間の使い分けについて(それぞれに適した典型的なデータ例は何か?)

前者についてはその場で質問させて頂き、メトリックの必要性は勿論YESで、センサ側とあわせて一緒に努力を重ねていこうという結論に。


私の発表

25分の論文紹介だけでなく、LT枠でも発表しました。幸いにもたくさんのご質問を頂戴して、多くの方に発表内容をご理解いただけたのかなと思いました。

質疑応答も途中で誤魔化さずちゃんと徹底的に議論できますた。関東から参加してくださった学生様からとても詳細で鋭い質問を頂きました。おかげで楽しいディスカッションが出来たと同時に、周囲の理解も深まったように感じます。(ありがとうございました)

 

 


 

コンセプトとして学術的な内容を現場価値に繋げるというものがありまして、論文内容の理解に留まらず、どんな使い方があるか?誰にとって役立つかということまで議論ができて、今回もとてもよい1日となりました。

運営の皆様、ご発表の皆様、参加者の皆様、ありがとうございました。

GANとVAEの一覧とまとめ

久しぶりに記事を更新します、ロードローラーです。

今年はICMLとCVPRがロングビーチで連続開催ですね!

潜在空間の操作やDisentangleが大好きな私としては周辺研究をチェックしてきたいと思います。

そんなこんなで、出国前に軽く整理しようと思ってまとめました

 

VAE


AutoEncoderの潜在変数(中間特徴量)のzに事前分布を仮定する。これにより特徴量の連続性を担保したり、潜在変数がスパースになること防ぐ。

β-VAE


VAEでは潜在変数の分布が仮定した事前分布にFITするように、KL距離を最小化させるような制約を設ける。このKL距離による制約を変数βによって調整すると、分布をフィットさせる圧力が強くかかる。その結果として潜在変数の各成分の独立性が増して、MNISTだと角度や文字太さといった成分が潜在変数の特定の成分に対応するようになる。

なお、学習がある程度進むと『全ての成分が独立』というのは実現困難らしく、相互情報量を許容するためにKL距離をゼロに近付けるのではなく定数Cに近付けるようにする。これにより情報損失(潜在変数zから元々のデータxが復元できない状態)を防ぐ効果がある。

joint-VAE


β-VAEでは潜在変数をだいたい正規分布にフィットさせていた。これではdisentangleに成功してsemanticで独立な成分を抽出できたとしてもContinuous(連続値)のみとなってしまう。実際にはMNISTにおけるDIGIT-ClassのようなDiscrete(離散値)も存在する。そこで、GumbelSoftmax分布をβ-VAEに併用することで離散値にも対応可能に拡張した。

GAN


もはや説明不要だろう、元データxと、ノイズzから生成したx’を見分けられないように(分布が重なるように)学習することで、本物そっくりのX’を生成する。

Conditional-GAN


GANの弱点として、(生成画像は本物らしければよいので)なるべく生成が得意なパターンのxばかり生成してしまう性質がある。

例えばMNISTでGANを学習したとき、たまたま『8』は上手に生成できるようになったとしよう。このとき、『8』ばかり生成しておけばDiscriminatorを騙せるので、結果的に『8』ばかり生成して、他の数字は生成されにくくなる欠点がある。

これに対処したのがConditional-GANである。Generatorに条件yを一緒に入力することで条件に適したx’を生成させる。Discriminatorにも条件yを一緒に入力することで、x’が本物らしいかどうか?という判定と同時に、条件yに適しているかという判定もするようになる。(条件yに適していなければ、例えばyに『2』を指定したのに『8』が生成された場合、即座に生成データと見抜かれてしまう)

info-GAN


Conditional-GANは条件指定しながら画像生成できるようになる技術だったが、それに対してInfo-GANの目的はDisentangle Representationの教師無し取得にある。

ノイズzとは別途で変数cを設けておいて、生成されたx’とcの相互情報量が大きくなるよう学習する。すると、結果的に変数cがConditionに対応するようになる。

pix2pix


異なるドメインのペア画像を大量に準備して、敵対学習によってドメイン変換方法を教師付き学習する。大量のペア画像を準備しないといけない点が課題視されている。

Cycle-GAN


pix2pixのペア画像を準備しなければならない課題を解決して、Reconstructionと敵対学習をベースとして教師なしにドメイン変換手法を学習する。

star-GAN


Cycle-GANでは学習によって構築したモデルは1:1のドメイン変換が出来る。しかし言い換えれば、nパターンのドメイン変換をするにはn回のモデル構築が必要となる。

そこで、1:nのドメイン変換を一気に学習できるよう拡張したものがsstar-GAN。

 

以上

NeurIPS2018読み会@PFNに登壇してきました

こんにちはロードローラーです。先日は京都のNeurIPS読み会で登壇してきましたが、今回はPFNさん開催のNeurIPS読み会に登壇してきました。もっと色々な論文を紹介できればよかったのですがスライド作成の手間もあり、資料は使いまわしの発表となっています。

 

発表後の質疑応答では英語で質問を頂いて予想外の事態にたじたじに、、、司会者の比戸さんが翻訳フォローをしてくださりなんとかご回答できました。

なお、この論文はPytorchによる実装が著者によって公開されていますのでご参照ください。

A Unified Feature Disentangler for Multi-Domain Image Translation and Manipulation (Git)

 

追記:勉強会の資料一覧

https://connpass.com/event/115476/presentation/

 


 

他のご発表(Twitterによるメモ貼り付け)

双曲空間(@ABEJAの白川さん)

めっちゃ難しかったですが、めっちゃ面白かったです

紹介論文 Hyperbolic Neural Networks (NeurIPS’18)

今までユークリッド空間でアレコレといろんな問題を解いていましたが、双曲空間で解こうとしたらこんなメリットがあるよ!という研究内容

論文アブストでも「Hyperbolic spaces have recently gained momentum in the context of machine learning due to their high capacity and tree-likeliness properties.」と述べられています。

ユークリッド空間のスカラー倍は、双曲空間では接空間上の指数処理や対数処理で表現できるなど、なんというか双曲空間への強い愛を感じる研究内容でした。

 

背景知識については、白川さんのブログでまとめられています。(私もこれから読みます!)

 


GANやDisentangleのまとめ

会場からは『disentangleの定義は?』との質問がでました。非常に難しく本質を突いた質問だと感じました。(おそらくタスクで解きたい事象に起因する特徴量と、それ以外に起因する特徴量を陽に分解することですが、数学的な定義は難しいなぁと。前者はタスクに有効で、後者ではタスクを解くのが難しいというのを数学的にどう定義するかがポイントになりそうですね。)


単語分散表現の最適次元数について


AutoML(@PFN佐野さん)

大学同級生の活躍を見れて嬉しいと同時に、発表内容も非常に面白かったです。


Ordered boosting with Ordered TS

流行のBoosting手法が抱える課題を丁寧に説明して、この手法でどう解決したのかを紹介してくださいました。


GNN


おまけ

とても嬉しいお言葉を頂きました

A DIRT-T APPROACH TO UNSUPERVISED DOMAIN ADAPTATION (ICLR’18)

A DIRT-T APPROACH TO UNSUPERVISED DOMAIN ADAPTATION (ICLR’18)
Rui Shu, Hung H. Bui, Hirokazu Narui, & Stefano Ermon
Stanford University, DeepMind


概要
・UNSUPERVISED DOMAIN ADAPTATIONの手法を提案
・同じ正解ラベルのデータは特徴量空間でも同じクラスタに属するという仮定を利用

従来手法
・SourceとTargetの特徴量分布の相違を最小化することで、ドメイン不変の特徴量を抽出する

従来手法の課題
・Feature Functionが高次のとき、SourceとTargetの特徴量分布が互いに素になりやすいため、ドメイン不変というアプローチは有効でない。
・Sourceドメインでの性能を向上させるほどTargetドメインでの性能が劣化する。

提案
・SourceドメインとTargetドメインの共用識別器を、Targetドメインの専用識別器に仕立て上げる手法”DIRT-T”を提案。

キーアイデア1「VADA(VAT手法+条件付き情報量の最小化)」
・特徴量空間におけるクラスタの存在を仮定して、クラスタ同士の重なりを最小化するよう条件付き情報量最小化のLossを設計。
・識別器がリプシッツ連続でないと、上述のLossの効果がイマイチであることが知られているため、VATによりプシッツ連続性を確保。
・従来のAdversarial Domain Adaptationにこれらを組み合わせる。

キーアイデア2「DIRT-T(判別境界の逐次的改善)」
・VADAによって構築したSourceドメインとTargetドメインの共通識別器をベースに、Target専用識別器へと改善していく。
・Targetドメインのみで(※先ほどはSourceドメインとTargetドメインの両方)、条件付き情報量最小化とVATにより識別器を学習。

 

 

条件付き情報量の最小化についてはコチラを参照
Semi-supervised Learning by Entropy Minimization

VAT手法についてはコチラを参照
Virtual adversarial training for semi-supervised text classification(2016)

元論文
A DIRT-T APPROACH TO UNSUPERVISED DOMAIN ADAPTATION (ICLR’18)

DIRT-TはGitでも公開中
DIRT-T

Tutorial Pytorch モデル構築〜学習


1.optimizer構築

optimizer = torch.optim.SGD(list(encoder.parameters())+list(classifier.parameters()), lr=0.01)


2.計算グラフの構築

z = encoder(input_src_img)
digit_pred = classifier(z)


3.loss算出

loss = nn.CrossEntropyLoss()(digit_pred,digit_label)

 


4.誤差逆伝播

loss.backward()

損失に関して計算グラフを微分して各変数のgradに勾配を入れる。この時点ではパラメータは更新されていない。なお、パラメータはprint(x.grad)で確認可能。

注意点は計算グラフは揮発性のため、backword()を実行すると消えてしまう。lossを複数回に分けて計算したいならばbackward(retain_variables=True)とすること。

 


5.パラメータ更新

optimizer.step()

 


補足1.

パラメータ更新後はoptimizer.zero_grad()で勾配初期化しておく。そうしないとloss.backward()で計算された勾配が蓄積してしまう。呼び出すタイミングはloss.backward()の直前でもよい。

 


補足2.マルチタスク

次のようにすると効率的な計算が可能。ただしGANのような順番に学習することに意味があるタスクには不適切なので要注意。
(loss1 + loss2).backward()

NeurIPS 2018 読み会に登壇してきました


NeurIPS 2018 読み会 in 京都 に登壇してきました。当日は社会人と学生を含めた約90名の方々が参加してくださり大盛況となりました。


開催概要

関西からも業界を盛り上げようというコンセプトもあり、なかなか普段は関東の先生方と交流が持ちにくい学生様のために、東京大学で活躍されている(いた)先生方の招待講演が設けられました。

 

二反田篤史 様 (東京大学) 機械学習分野における最適化研究の進展
SatoshiHara様 Theoretical Linear Convergence of Unfolded ISTA and Its Practical Weights and Thresholds
牛久祥孝様 (オムロン サイニックエックス) 視覚と対話の融合研究
岡本大和様 A Unified Feature Disentangler for Multi-Domain Image Translation and Manipulation
akihiro_fujii様 KDGAN: Knowledge Distillation with Generative Adversarial Networks
KOBAYASHiH 様 Neural Ordinary Differential Equations
maguhalu 様 FFJORD: Free-form Continuous Dynamics for Scalable Reversible Generative Models (ICLR2019)
橘幸彦 様(NVIDIA) エヌビディアのプラットフォームを活用したAI エッジ コンピューティング事例のご紹介

https://connpass.com/event/110992/


Part1「理論編」

Part1は東京大学で「理論系に関して知らないことはない!」と紹介された二反田先生の講演、さらに論文紹介1件という構成です。

最適化手法の最新研究であったりResNetの理論的な解釈であったり、理学部学生にとっては天国のような数式だらけの講演でした。正直、普段扱っている内容でもない限りはついていくのはかなり高難度だったかもしれません。


Part2「応用編」

牛久先生をはじめとして応用系の研究紹介になります。視覚と対話の融合というタイトルにある通り、画像へのキャプションであったり、画像に関するQ&A対話をする知能であったり、技術の発展の歴史を追いながら最新研究が紹介されました。(いったいこの人は年間何本論文を読んでいらっしゃるんだ?というくらい様々な内容をご紹介いただきました。)

私の登壇もこのパートです。懇親会では幸いにも「おもしろかったです!」「わかりやすかったです!」とのご好評をいただきました。セルフアーカイブで発表動画もYoutubeにアップしています。

もちろん資料も公開中です

 





Part3「Best Paper編」

NeurIPSでBest Paperを受賞した論文『』が紹介されています。けっこう日本人でも読まれている方の多い論文のようです(そりゃそうか)

また、それだけでなくこの論文の発展手法をICLR2019から紹介いただきました。技術が進むのは本当にあっという間ですね。

 


Part4『招待講演(NVIDIA)』

最後はNVIDIA橘様からのご講演。実はまだ売り上げ的な主力事業はゲーミング用GPUが中心であることや、皆にGPUを使ってもらうために自前でAI技術を研究開発している話などをご紹介いただきました。私個人の意見としては最後にご紹介いただいた現場でAI推論できるようにするエッジ端末の発展に期待しております。


さいごに

今回は主催者側の意図としても関西からも業界を盛り上げたいというものがあり、かなり同じ志を持つ人が集まったように思いました。現在は情報と人が集まる東京が盛り上がっていますが、優秀な学生様がいっぱいいて、ノーベル賞も多数輩出してきた京都という街からもどんどん業界を盛り上げていきたいですね。

量子コンピューティング ~理論と仕組みとビジネスインパクト~

お久しぶりです、ロードローラーです。最近、縁あって量子コンピューティングについて聞く機会があったので、これを機に調査&まとめを作成しました。結論から言うと量子コンピューティングによる現在見えているインパクトは計算処理の飛躍的向上によって指数関数的に計算量が増大するような問題を解けるようになること。特に注目されているのは①組み合わせ最適化問題、②複雑なシミュレーションの実行です。


■量子コンピューティングとは

京都産業大学のコチラのサイトが非常にわかりやすいです。(https://www.kyoto-su.ac.jp/project/st/st14_03.html

従来コンピューターのビットは1か0のどちらかを表しますが、量子コンピューターで使われる「量子ビット」は同時に1と0の両方であり得るという性質を持ちます。表現できるパターン数が2のn乗(nはビット数)という点に変わりはありませんが、同時に1と0の両方であり得るという重ね合わせ表現によって、複数のパターンを同時に検証できるようになります。

例えば2ビットのとき、パターン数は(0,0), (0,1), (1,0), (1,1)の4つです(これは従来も量子も同じです)。ただしこれら4パターンを検証するときに従来のコンピュータだと4パターンを評価関数にかけるので計算が4回必要でしたが、量子コンピューティングでは4状態の重ね合わせに対して計算することが可能なので、いわば1回の計算で4パターンを評価できてしまいます。

正確には、複数状態を同時に計算できても、一度測定すればどれか1つの状態が確率的に選択されるので、欲しい答の状態だけを取り出す工夫(欲しい答が測定により選択される確率を高める)が必要です。


■計算量と指数関数

例えば配送員が50地点に荷物を届けるとき移動ルートのパターンは50!=30,414,093,201,713,378,043,612,608,166,064,768,844,377,641,568,960,512,000,000,000,000通りあります。

最も移動が効率的になるような移動ルートを算出したいとき、人間なら直感的にいくつか最適そうなルートにアタリをつけて検証することも可能でしょうが、厳密に最適化パターンを発見するには全選択肢について計算する必要があります(人工知能のフレーム問題とちょっと似ていますね)。

このような膨大な計算には従来コンピュータでは数年かかる、組み合わせの規模によっては数兆年かかるものまであり、解けない問題の1つとなっています。(そこで、実際には効率的に近似解を求めるアルゴリズムなどが提案されています。)


■ビジネスインパクト

よく話題になるのが次のものです

①組み合わせ最適問題を解決して効率向上

②複雑なシミュレーションが実行可能となり未知の問題を解決

③パスワードクラックなどデータセキュリティ

①については前述したとおり、組み合わせ最適問題について全選択肢を検証可能となり最適化社会がより促進されるであろうという説です。これについては私も賛同ですが、ビジネスインパクトは弱いと思います。Before-Afterで差分を考えると近似解が最適解になるだけの変化なので、量子コンピューティングの導入コストに見合うメリットなのか適切な見極めが必要です。

②については私は非常に楽しみです。分子科学の分野でより複雑なシミュレーションが可能となると新薬開発の新たな扉が開く予感がします。(調べてみましたが分子シミュレーションはスパコンでも電子43個くらい規模しかシミュレーションできないそうです)

③については盗み聞きしなくても量子コンピューティングで全通り試せばパスワードを突破できてしまうような世界が到来しえるので、パスワードがなくなって生体認証の普及がさらに加速するかもしれませんね。指紋も行ってみれば2次元画像なのでクラック可能だったりするんでしょうか?そのあたりは素人なのでわかりませんが、自分を証明するための技術に注目が集まると思います。


いかがだったでしょうか?過熱気味ともいわれる量子コンピューティングですが、正確な理解と真剣な検討は1度してみてもよいかもしれません。

Pythonでテキストを1行ずつ読み込む

なんかいっつもググってる気がするのでメモしておく

以上

How to Display image as grayscale using matplotlib ??

kerasで複数の出力とLOSS関数を持つモデルを生成

ClassificationだったりReconstructionだたり1つのモデルで2つ以上の出力やLOSS関数を適応したモデルが近年は増えてきました。となると次のような実装が必要になってきます。

・1つのモデルで複数の値を出力したい

・モデルの複数出力に異なるLOSS関数を設けたい

 

Kerasだと簡単に実装できます。