USPS download link has changed

if you have “wget can’t download – 404 error” when downloading USPS dataset, please update url.

OLD

“https://raw.githubusercontent.com/mingyuliutw/CoGAN_PyTorch/master/data/uspssample/usps_28x28.pkl”


New

“https://raw.githubusercontent.com/mingyuliutw/CoGAN/master/cogan_pytorch/data/uspssample/usps_28x28.pkl”

 

 

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


おまけ

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

RuntimeWarning: More than 20 figures have been opened. (matplotlib.pyplot)

jupyterなどでループまわしながら実験結果を描画しているとよくある警告

RuntimeWarning: More than 20 figures have been opened.

内容としては「figを開きすぎててメモリ亡くなるぞ!」というもの。つまり必要ないものは都度閉じてやればよい。

だいたい「plt.close()」で片づけることが多いが、私のお勧めは下記の対策。

plt.savefig(OUT_DIRECTORY + 'figure.png')
plt.close('all')

このほうが確実。

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推論できるようにするエッジ端末の発展に期待しております。


さいごに

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

京都大学 工学部 情報学科 2019倍率推移

京都大学(工学部情報学科)の倍率推移

  • 2018年  4.5倍*
  • 2017年  4.3倍*
  • 2016年  3.9倍*
  • 2015年  3.6倍*
  • 2014年  3.8倍
  • 2013年  3.7倍*
  • 2012年  3.4倍* ←AlexNet登場で深層学習ブームに火が付いた年
  • 2011年  3.0倍
  • 2010年  2.5倍

(*)は工学部で最高倍率

 

さぁ、次は気になる2019年度の倍率を予想してみます。




今年もおそらく横ばいになると予想されますが、AIブームが過ぎた後を見据えて、京都大学の一部では既に次なる一手を探そうとする動きもあるようです。

AIをやりたい若手が他へ流れる可能性もあり、AI以外の次世代を求める若手が新たにやってくる可能性もあり、倍率推移はほぼ横ばいというのが私の予想です。

さて今年はどうなるか、見物ですね。

Pytorch “Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time.”

 

エラーメッセージ


対策


解説

x=layer[i](x) のように計算処理を進めていってLOSS計算したあとにbackword()を実行するとxの算出結果がクリアされてしまう。

これは悪意があるわけではなくメモリ節約するための仕様。

しかし、Multi Task Learning のときによく発生するのだが、後半部分でLayerが分岐してOutputが2つ以上になったとき、1つ目のタスクでLOSS算出してbackword()、そして2つ目のタスクでLOSS算出してbackword()しようとするとxの算出結果がクリアされているのでエラーとなる。

対策は「まだ学習に用いるので計算結果をクリアしないでね」という目印としてloss.backword(retain_graph=True)とすること。

 

by ロードローラー

 

 

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

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


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

京都産業大学のコチラのサイトが非常にわかりやすいです。(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度してみてもよいかもしれません。

元Facebookエンジニアが語るイノベーション教材

お久しぶりです、ロードローラーです。

先日、元Facebookエンジニアのスピーチを聴く機会がありました。内容はイノベーションを起こす組織作りについてです。

冒頭に彼は「イノベーションに関して教材がたくさん出てますね、立派なハードカバーの本もあります。」と言いました。たしかにこの類の書籍は溢れるほど出版されています。

 

で、そこからズバッと一言「読まなくていいです」と切り捨てました。

・・・・ ( ゚д゚)エッ!

続いての主張はこうです

「どのように考え、どのように働くのかという習慣を社員に浸透させるというときに、まとめるのに数百ページもかかるようなノウハウを他人が実践できるわけがない。」

これは私、けっこう納得。

たしかに辞書的に使う専門書ならともかく、そうでない本が丸ごと役に立つことって少ないんですよね。例えば、以前にエディ・ジョーンズの本を読んで気付きを得たことがありますが、僕の行動を変えるに至った内容はたった数行のエディさんの言葉でした。(そのたった数行に出会うために僕は本を読んだわけですが、この考えをチームに浸透させるためにわざわざまた本を読ませる必要はありませんね。)

スピーチの内容に話を戻しますが「大切なのはシンプルな問い」と述べていました。例えばFacebookでは「What would you do if you weren’t afraid?」という「失敗を恐れないなら君はどう行動する?(⇒それがやるべきことだ)」というシンプルかつ強烈なメッセージを大切にしているそうです。

そしてFacebook社では、この短い問いをわざわざ本になんてせずに社内の壁に直接書いているそうです。そして見事に浸透。

日本企業には社憲が定められていることが多いですが、それはそれで大切にしつつ、何百ページの本を写真に読ませる前に、行動指針となるようなシンプルな問いをぶつけてみると良いかもしれません。