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だと簡単に実装できます。

ICML2018読み会に参加しました

DeNA主催のICML2018読み会に参加してきました(https://connpass.com/event/92705/

感想を3行でまとめると

・GANが大人気

・NAS(neural architecture search)も人気

・パラメータ黒魔術な研究がちょいちょいある


渋谷ヒカリエのDeNA様のオフィスで開催

 


特に気になった発表が2つ、1つ目はコチラ

Learning Semantic Representations for Unsupervised Domain Adaptation

 

Domain Adaptationの手法で、Source-DomainのClassificationのLOSSや、抽出した特徴量に対するAdversarial Lossなどを用いるあたりは従来通りですが、異なるドメインの同じクラス同士で重心が似通うようにLOSS関数を追加した点がキーアイデアです。

が、各LOSSについて学習する順番や、学習する量など、ハイパーパラメータがむっちゃ重要なのでは?と思って質問してみたら、やはり想像通りというか、再現実装をしているけども思い通りには行っていないとのこと。

やはりちょっと黒魔術の香りがしますね。

あと、重心を近づけるという話でしたが、クラス数が多くなると提案手法の有効性が弱まるのではと思いました。これについてもディスカッションしましたが、論文では明確な実験検証は特になかったのでクローズ。

 

 


もう1件がコチラ

Efficient Neural Architecture Search via Parameters Sharing

 

Neural Networkを生成するNeural Networkの話ですね。もともとはNeural Architecture Search with reinforcement learning(NAS)という手法で、複数種類の異なる構造を持つネットワークを量産してはどの構造が最適なのか探索していくという手法で、計算時間が膨大過ぎて、それを解消する方向で検証が進んできたというものです。

NASについてはコチラに自分でまとめた資料があります、奇しくもちょうど私も勉強中でした。。。

 

これ、Controllerについて大きな誤解をしていたんですが、INPUTは無しで、学習可能なパラメータとして用意されているんですね。

そしてネットワーク構造を決める確率分布がLSTMから決定論的に算出されて、算出された分布から確率論的にネットワークを量産するという仕組みでした。

私はてっきりGANのようにNoiseをINPUTするものとばかり…

なぜ入力をランダムにするのではなく、確率分布に基づいてネットワークを量産するのかというと、後者の方が学習した結果「コレがよさそうだ」と思われる構造を中心に、近い構造を持つ亜種が量産されるからです。ランダムに生成して期待外れのネットワークが生成されるよりも遥かに探索が効率的です。

 

 

こういう質疑応答ができるのが勉強会のありがたいところですね。「聞くは一時の恥聞かぬは一生の恥」です。質問してよかった。

 


普段は慣れない音声合成の研究論文も紹介して頂き、後から気になった点をTwitterで質問させて頂きました。

 

 

関西CVPRML勉強会2018で発表しました

2018/7/21に関西CVPRML勉強会で発表してきました

サイト https://sites.google.com/site/kansaicvprml/studygroup-vol35-20180721

 

会場は同志社大学の今出川キャンパス、や~、やっぱ京都って最高ですね(※関係ない)

 

勉強会に参加した感想

・関東より関西の方が人数絞ってるのでディスカッションが密

・ただし発表者は関東の方が多い

・京都大学の美濃研究室(現:飯山研究室)の関係者大杉w

 


私は発表テーマをUnsupervised-Feature-Learningに決めて、論文タイトルからえいやっでピックアップしました。っていかCVPR2018参加してないし

 

質疑応答では次のような議論がなされました。

『実験の章で、Conv層ではなくFullConection層を抜き出してFeatureにした場合が無いのは何故?試すべきでは?』⇒『(回答)はいその通りです。なぜしてないのかは不明です、すいません。』

『インスタンスレベルで区別するように学習してしまうと、同じクラス同士が近くにプロットされないのでは?』⇒『(回答)クラス問わずどれもこれも離れるようになっていればSVMで境界線を引きやすいのだと思います。』⇒『(コメント)最終的にはインスタンスの区別をしているが、途中のConv層の段階ではクラス共通の特徴量などを抽出できているのかもしれない。』

 


他の方の発表だと、ディープラーニングではないところで京大藤村さんの『Photometric Stereo in Participating Media Considering Shape- Dependent Forward Scatter(PDF)』が面白かったです。会場からは「ディープじゃないけどディープな研究だw」と高度なジョークが飛び交いました

 

ディープラーニングばかりのご時世に、ノンディープなCVの話はかえって新鮮に感じました。藤村さんの発表に限りませんが、参加者からは「関西にはノンディープな研究者が比較的多い気がする」との声も。

 

 


また、橋本先生からはFeature Disentanglingの研究紹介。初めて研究内容に触れる人でもわかりやすいように丁寧にまとめてくださってました。

 

 

他の方の発表資料も、CVPRML勉強会のサイトに掲載されています。是非ご覧ください、

以上。

ICML@Stockholmに参加しました(DAY1 チュートリアル)

ICMLとは


正式名称は『International Conference on Machine Learning』。毎年開催される機会学習のトップカンファレンスです。2018年は水の都ストックホルムで開催され、全日程参加してきました。

まずは初日のTutorialについて振り返ります。

 

①Learning with Temporal Point Processes


まずは1発目のセッション。が、初日ということもありRegistrationに長蛇の列が・・・

 

結局、列に50分ほど待たされてTutorial会場には入れた頃には半分が過ぎていました、悲しい。資料公開されてるので後で読んでおこう(たぶん)

Tutorialの資料: http://learning.mpi-sws.org/tpp-icml18/



↑内容的にはこんな感じ(資料の一部を転載)

②Toward theoretical understanding of deep learning


2発目のセッション。なんとも思い切りのいいタイトルを付けたもんだなぁと思いつつ参加。

theoretical understandingっていうくらいなので、どんなものかと思っていたら序盤はDeepLearningの入門編的な話ばかりでした。そのせいでついついウトウト・・・

としてたらこのスライドで目が覚めました

まてまて、こんな式が成り立つのか・・・?続きのスライドに証明も書いてましたが私には理解が追い付きませんでした。というか『VC  dimension,  Rademacher』がわかっていない。気になった人は是非ご自身の目でお確かめください。

Tutorialの資料: http://unsupervised.cs.princeton.edu/deeplearningtutorial.html

 

③Variational Bayes and Beyond: Bayesian Inference for Big Data


そして最後のセッションは変分ベイズ!! なんというか、変分ベイズって宗教色が濃いイメージあるんですよね(暴言)。とか言いながらかなり楽しいセッションでした。

 

ベイズ推定の基本の枠組みとしては『このデータが観測されたということは、もともとの分布はどういうものだっただろう?』と推定することです。このとき、観測値を適切に選ぶとベイズ推定の効率と精度、つまり少ないデータで高精度に分布を推定できるという話が非常に面白かったです。


↑Tutorialの資料。境界付近などデータを上手にサンプルしながら推定している。

Tutorialの資料: http://www.tamarabroderick.com/tutorial_2018_icml.html

 

おまけ


企業ブースには相変わらずGoogleやFacebookなどが出店していました。Microsoftのブースにて『Write your University』という企画がなされており、Kyoto Universityと書こうと思ったら誰かに先を越されていました。悔しい。

 

などと呟いていたら記入したご本人様からご連絡が(笑)

 

ということで(?)加筆などしてきました

ICML@Stockholmに参加しました(開催概要)

ICMLとは


正式名称は『International Conference on Machine Learning』。毎年開催される機会学習のトップカンファレンスです。

 

開催地:Stockholm smassan


2018年は北欧のスウェーデンにて開催されました。メタルとギターポップの国ですね(偏見)。水の都ストックホルムということで心躍らせた人もいたのではないでしょうか?

会場はStockholmsmassan。ストックホルム中央駅から3駅のÄlvsjö駅からすぐの場所です。

周辺に施設が少なくランチに不便する場所でした。昼休憩には大量の昼めし難民が出現、ストックホルム中央駅まで昼食のために電車移動せざるえなくなり、そのまま午後のカンファレンスに遅刻した人も多かったとか。

 

スケジュール


2018年は”7月10~7月15日”の5日間で開催されました。初日がTutorial、それから3日間の本会議、最後に2日間のWorkshopです。

学会前にはスケジュール管理アプリなども配布されます、これが本当に良く出来てました。

 

Reception


最終日にはReceptionが行われました、場所はSkansenMuseum。どんなパーティーだろうと思って参加したらなんと屋外ステージ付きで4つ打ちの低音をズンズン響かせながらビールをあおるという最高仕様でした、パリピ感がすごかったです。

日付が変わるころまで日が沈まないまま明るいので22時頃まで屋外でReceptionは続きました。ところで学会会場からReception会場が遠すぎません???

参加登録


ICMLの開催は7月中旬ですが、Registrationは3カ月前の4月中旬に始まります。NIPSほど速攻ではなかったにせよ、今回もSOLD OUTによって参加できなくなった人が多数出たようです。

参加費用はEarly Registrationでworkshopとtutorialも全て含めると900ドル。