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ドル。

ICML2018 概要 Categoryを一覧にまとめてざっと眺めてみた

ICML2018@スウェーデン https://icml.cc/

言わずと知れた機械学習のトップカンファレンス。

どんな研究が発表され、どんなトレンドにあるのか、カテゴリを一覧化して、ざっと眺めてまとめました。


■Supervised Learning
教師あり学習。
DeepLearningとカテゴリが分かれているので、それ以外の手法があると思ったが、やはり深層学習中心。
Noisyなデータを扱う研究が多く見られる。

■Clustering
クラスタリング
集合を意味ある部分集合に分割すること
教師なし手法の代表例

■Unsupervised Learning
教師なし学習。
正解データ無しでデータ集合の意味ある分類や属性推定をする。
Clustering、NearestNeighbor、TopologyEstimationなどが今回は取り上げられる様子。

■Transfer and Multi-Task Learning
マルチタスク学習。
1つのモデルで複数タスクの学習をさせることで、共通構造部分が効率よく本質的な特徴抽出機能を習得する。
ドメイン変換。
ドメイン不変の特徴量を抽出したり、ドメイン特徴を把握して学習済みのデータを転用させたりする。

■Deep Learning (Bayesian)
ベイジアンディープラーニング。
学習によって、ネットワークの重みWの値そのものではなく、重みWの事前分布p(w)を求めるニューラルネットワーク。
参考:http://deeplearning.jp/bayesian-deep-learning/

■Deep Learning (Neural Network Architectures)
深層学習の構造の研究。
学習の安定化、学習の高速化、性能向上、時系列の認識など、目的は様々。

■Deep Learning (Theory)
深層学習。
学習率や評価関数による影響や、最適化手法の研究が中心。

■Deep Learning (Adversarial)
学習モデルが誤認識するパターンを見つけ出して「ハッキング」する手法(Adversarial Attack)。
AdversarialAttackされない頑健なモデル提案や、AdversarialAttackによる判断根拠の理解などの研究がある。

■Generative Models
画像生成で流行っているGANなどが中心。
生成するだけでなく、ドメイン変換や、教師データが少なくて済むような工夫が研究されている。

■Online Learning
オンライン学習
機械学習における学習の枠組みの一つ。
全データを一気に用いず、逐次的に与えられる一部のデータからモデルを逐次的に改良する。
確率的最適化手法など、モデル更新アルゴリズムやが研究されている。

■Active Learning
教師あり学習にて、少ないデータで分類器をつくるときに学習データを増やす手法。
重要なデータのみに人間がラベルをつけて学習データに取り込む。
識別結果の自信があるものを正しいと仮定してラベルにするのが半教師あり学習で、
識別結果に自信がないものにラベルを手動付与して学習データに追加するのがActiveLearning。

■Reinforcement Learning
強化学習。
DQNが主流。
状態遷移確率や行動価値が未知の場合が多いため探索によって取得する。
レア事象を探索できるような手法や、難しい事象に対してマルチタスクから知識を得る手法や、タスク非依存のパラメータの最適化手法などが研究されている。

■Optimization (Bayesian)
ベイズ的最適化。
最適化関数が不明のときに事前分布を仮定して事後分布を元に最適化をする。
次にどの点を探索するのか、どこに最適解があるのか、といったことを計算する。
実験計画を効率的に定めるときなどに活用される。

■Optimization (Combinatorial)
組み合わせ最適化
変数、目的関数、制約条件から最適解を求めるアルゴリズムの研究

■Optimization (Convex)
凸最適化
コスト関数と不等式制約が全て凸関数
局所最適解=大域的最適解

■Optimization (Non-convex)
非凸最適化
局所解に陥らないためのアルゴリズムやパラメータの決め方、解空間の調査など。

■Multi-Agent Learning
マルチエージェント学習。
複数のエージェントが並列に学習する自律分散型の学習アルゴリズムなどの研究が多い。
応用編としてマルチエージェント強化学習などもある。

■Statistical Learning Theory
NearestNeighbors、ベイズ、ランダムフォレストなどの統計的手法の研究。

■Natural Language and Speech Processing
自然言語処理。
音声生成。
LSTMやRNNが中心。

 


Feature Selection
Kernel Methods
Parallel and Distributed Learning
Time-Series Analysis
Gaussian Processes
Approximate Inference
Monte Carlo Methods
Graphical Models
Sparsity and Compressed Sensing
Ranking and Preference Learning
Networks and Relational Learning
Structured Prediction
Causal Inference
Privacy, Anonymity, and Security
Society Impacts of Machine Learning
Other Models and Methods
Representation Learning
Other Applications
Computer Vision
Dimensionality Reduction
Large Scale Learning and Big Data
Matrix Factorization
Spectral Methods

Self-Attentionの良記事 “Attention Is All You Need (Transformer)”

Encoder-Decoderで主に使われていて、GANなどにも応用されているAttention構造を勉強しようと思って見つけた良記事です。

論文解説 Attention Is All You Need (Transformer)

 

元論文 Attention Is All You Need (Transformer)

 

個人的に詰まった点はSelf-Attentionについてです。

『自己注意 (Self-Attention) では Query,Key,Valueは全て同じ場所 (Self) から来る.例えばエンコーダの Query,Key,Valueはすべて下の隠れ層から来る.自己注意はある位置の出力を求めるのに下の隠れ層の全ての位置を参照できる』の部分を誤解していました。

つまり、n番目のLayerでは、i<nについて総当たりでi番目Layerとn番目Layerとの間でAttentionを取得するということみたいです。

Attentionの取得方法は内積がメインとのこと。手前の層でどこに特徴が強く出ているのか(≒注目すべき箇所がどこにあるのか)のヒントをもらうわけですね。

 

DCGANについて元論文を読みながら再整理

 

2年ほど前からブーム真っ最中のGANについて、丁寧に振り返りを使用というのが本記事の目的です。まとめサイトからの引用ではなくちゃんと元論文を読むことをポリシーとします。

 


そもそもDCGANとは

DCGAN(Deep Convolutional Generative Adversarial Networks)

簡単にいうと畳み込みニューラルネットワークを適用したGAN。論文ではネットワーク設計の注意点や特徴が細かく定義されている。

(論文)
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks (2015) https://arxiv.org/abs/1511.06434

 


DCGANのネットワーク構造の特徴

pooling層をConvolutions層(strideあり)に置き換える

  • pooling層をConvolutions層に置き換える(stride数をうまく調整。poolingが2×2で実施されるなら、stride=2とすれば出力のサイズは等しくなる)。
  • replaces deterministic spatial pooling functions (such as maxpooling) with strided convolutions, allowing the network to learn its own spatial downsampling.

  • Generatorではzから画像サイズと同等サイズの出力にアップサンプリングしないといけないのでDeconvolution(正式名称:fractionally-strided convolutions)をする。これは元となる特徴マップを拡大してから畳み込むことでサイズを大きくする処理。

バッチノルムを使用

  • バッチノルムを挟んだ方が、初期値問題や購買消失問題が生じにくく、学習がスムーズになる
  • This helps deal with training problems that arise due to poor initialization and helps gradient flow in deeper models

  • ただし、全層に適用するとモデルが不安定になった。
  • GeneratorのINPUTとDiscriminatorのOUTPUTには適用しいようにしたら解決したとのこと(Why?)
  • Directly applying batchnorm to all layers however, resulted in sample oscillation and model instability. This was avoided by not applying batchnorm to the generator output layer and the discriminator input layer.

Full-Conectionをなるべく省く。

  • 学習安定性の観点でFull-ConectionよりもGlobal-Average-Poolingが広く使われているのと同じ考え方
  • Global-Average-Poolingについてはコチラを参照(https://qiita.com/mine820/items/1e49bca6d215ce88594a)
  • Second is the trend towards eliminating fully connected layers on top of convolutional features. The strongest example of this is global average pooling which has been utilized in state of the art image classification models (Mordvintsev et al.).

  • ただし、Generatorとzをinputする部分と、Discriminatorの判定結果0..1を出力する部分では全結合した方が良い結果が得られた。
  • A middle ground of directly connecting the highest convolutional features to the input and output respectively of the generator and discriminator worked well.

GeneratorではReLUを活性化関数として使用。ただし出力層のみtanh。

  • 学習が早いということで、出力層では有界の活性化関数を推奨している。
  • We observed that using a bounded activation allowed the model to learn more quickly to saturate and cover the color space of the training distribution.

  • そもそも画像(例:RGBの場合は0~255)を出力するのだから活性化関数が有界じゃないと面倒でしょ?という気もする

DiscriminatorではLeakyReLUを使用。

  • 理由には「従来手法がそれでうまくいってるから」程度しか書かれていない
  • Within the discriminator we found the leaky rectified activation (Maas et al., 2013) (Xu et al., 2015) to work well, especially for higher resolution modeling.

 


やー、なかなか直感的には「なるほど」と思っても、うまく説明しきれないですね。

史上初の自動運転による死亡事故 2018年3月18日@アリゾナ

2018年3月18日にアリゾナで史上初の自動運転による死亡事故が発生。自動運転界隈にとってショッキングな事件とされており、今もかなり話題になっているので内容を調べてみた。

 


東洋経済

アメリカ現地時間の3月18日夜、ライドシェアリング大手の米ウーバー(Uber)がアリゾナ州テンピで行っていた完全自動運転の実証試験中に歩行者の女性をはねた。女性は病院に搬送されたが死亡が確認された。

これを受けてウーバーは、アリゾナ州、カリフォルニア州、そしてオハイオ州で実施してきた公道での完全自動運転の走行テストを中止したと発表した。

 

今回の事故を受けて『開発途上の自動運転技術で公道を走らせるのはやっぱり危ない!』という声が大きくなりそうですし、まず最初に予想された展開がこれですね。もちろん必要な対応ですが、ここまでは形式的・儀式的な対応とも解釈できます。

 


日本経済新聞

地元警察は歩行者が急に飛び出し、人間でも避けるのが難しい事故だったとみている。

車両は時速64キロメートル以下で自動走行していたとみられ、衝突直前に減速した形跡はなかった。雨や雪は降っておらず、走行が難しい気象条件でもなかった。

運転はかなり安全重視だ。法定速度内で走るようプログラムされており、スピード違反はありえない。基本的には常に道を譲る設定となっている。

 

このあたりからずいぶんと擁護的になっています。つまり『自動運転の特別な事故』ではなく『ただの事故』にするための論に見えます。『自動運転だから』ではなく『歩行者が飛び出したから』というロジックを成立させることで、事故過失割合を自動運転側から取り除こうというストーリーですね。

 


日本経済新聞

自動運転機能が作動中で、運転席には監督者も乗っていた。

自動運転機能+監督者があったにもかかわらず事故が起きたとなると、誰の過失なのか本当にわからなくなってきますね。監督者という登場人物の追加によって、さらなる擁護の予防線として歩行者の過失でもなく自動運転技術の過失でもなく、同乗していた監督者の過失になるというストーリー展開の可能性も浮上します。

 


 

誰がどの立場をとるのか今は不明ですが、自動運転は操縦技術以外にも倫理と責任の問題に必ずぶつかると言われています。今回の事故によってどのように話が進んでいくのか注目です。

 

PRMU企画セッション2018の資料が深層学習入門編としてとてもわかりやすい

電子情報通信学会の総合大会@東京電機大学に参加してきました。

同時開催されたPRMU企画セッション『人工知能・深層学習の実世界応用』にてご講演されたシモラセ・エドガーさん@早稲田大学の資料が非常にわかりやすかったので備忘録としてまとめます。

まとめますというか、一般公開されているのでリンク先を見てもらえればいいのですが。

シモセラ・エドガーさんによるpdf資料

企画セッションのサイト

 


セッション中に”イイネ!!” と思った発言集

・ディープラーニングは万能ではない、問題を選ぶ必要あり

・パラメータは学習で決まるもの、ハイパーパラメータは人間が経験で決めるもの

・深層学習による自動的な特徴量抽出によってヒューリスティックを避けられる

・非線形の活性化関数をはさむことであらゆる計算式が近似できる(↓↓ 例えばこれ Wikipediaより)

・Adadeltaとバッチ正規化はとてもオススメ

・モデルや学習では解像度を下げることが重要

・TensorFlowは静的と動的なグラフが可能で、生産に焦点をあててる (←そうなの!?と驚いたけど、いつの間にか動的ネットワーク生成に対応したTensorFlowFoldってのが登場してたようです)

 


資料中で引用されていたAlec Radfordさんによる学習率の違いを示したアニメーションが面白かったです

 

PAC学習とVC理論

お久しぶりです、ロードローラーです。最近は7月のICMLに参加すべく勉強の日々を過ごしています。

ディープラーニングをあれこれとやって知ったつもりになっていましたが、ディープラーニングは機械学習の一部でしかなく(さらに言うならニューラルネットワーク手法の1つでしかない)、まだまだ勉強することは山のようにあります。

そんな中で、本日は機会学習のPAC学習とVC理論を調べました


PAC学習

参考サイト:朱鷺の杜Wiki

パラメータ:入力の誤差 ϵ,信頼度 δ,学習する概念の複雑さの上限 s

学習する概念についてのエラーがたかだか ϵ である確率が 1δ より大きくなるような仮説を出力できるアルゴリズムが存在するとき PAC学習可能 (probably approximately correct learnable). こうした学習問題を扱うのがPAC学習 (probably approximately correct learning)

さらに,1/ϵ1/δs について,計算時間が多項式時間で抑えられるとき,多項式時間PAC学習可能であるという.


こちらでもわかりやすくまとめられています

 

~要約~

PAC学習のモチベーションは『 まぁまぁ良い学習をするためにどの程度学習データが必要か見定めたい 』こと。

仮説集合𝐻(≒分類モデル)において『汎化誤差が𝜖より大きい,かつ,ℓ個の訓練データ に無矛盾な仮説を選択してしまう確率を𝛿以下に抑 えたい』とき、すなわち危険率𝛿以下で汎化誤差が 高々𝜖の仮説を学習するために必要な訓練デー タは次の式で求められる

問題点が2つあり、1つ目は思った以上に非常に大きい数値が算出されてしまうこと、2つ目は仮説集合𝐻(≒分類モデル)が無限の場合に対応できないこと。

実際問題、パラメータ数次第で分類モデルの構築方法は無限に考えられるので(だからパラメータチューニングが難しい)、仮説集合Hが有限となるシチュエーションは限られています。


VC次元による問題解決

仮説集合Hが有限でなければ先ほどの計算式のうち|H|が∞となり、必要な訓練データ数ℓも∞に発散してしまいます。そこでVC次元という考えを導入して、仮説集合HではなくVC次元数dによって下記式から必要な訓練データ数にあたりをつけます。

さて、それではVC次元とは何なのか??朱鷺の杜Wikiに再登場して頂きましょう。勝手に私が要約した内容が以下です。

・shatterするとは,点集合のそれぞれの点にどのようにラベルをつけても,それらの点を分離するような関数(≒分類モデル)がその仮説集合𝐻に含まれること.

・n個の点に対して,任意の配置とラベルであってもshatterできるような関数があり、それ以上点を増やすとshatterできなくなるとき,その関数(≒分類モデル)のVC次元は n.


ICML2017でも研究対象に

パラメータ再利用の転移学習時のリスクを算出するために、PAC学習やVC次元が利用された研究があったようです。

論文:
Risk Bounds for Transferring Representations With and Without Fine-Tuning

ちょっと理解するのが難しそうなので、これはまた今度で・・・・←

 

AIとは?? ~正しい理解のために過去のブームを振り返りながら解説~

「AIってなんかすごいんでしょ!」

「AIを使って何か提案してよ!」

そんな声を聴くたびに嘆かわしく思っていた私ですが、そもそも何故近年AIブームが過熱しているのか?今までと何が変わったのか?正しい理解をしている人が何人いるでしょうか?

という気持ちから、簡単にまとめてみました。

 

さぁ、勉強したところでAIビジネスを始めましょう。

 

NVIDIAが教師無しのImage Translationを提案 ~Unsupervised Image-to-Image Translation Networks~

Unsupervised Image-to-Image Translation Networks
Ming-Yu Liu, Thomas Breuel, Jan Kautz(NVIDIA)

PDF NVIDIAサイトでの紹介 Git


概要

image-to-image translationによりドメイン間の転送を学習する。ここでいうドメインとは写真だと晴、雨、夏、冬など、顔画像だと眼鏡、金髪、笑顔、など

次の図では晴れの画像(左下)から雨の画像(右下)を生成している


特徴、すごい点

Unsupervised で image-to-image translation を実現

従来のSupervised image-to-imageでは
・画像ペア(X1, X2)が得られた
・そこから同時分布(Joint distribution)を推定可能だった
・つまりペア画像の差分がイコールでドメインの異なりによる成分だった

今回のUnsupervised image-to-imageでは
・画像ペア(X1, X2)が得られない
・そのため周辺分布(marginal distribution)しかわからない
・画像間の差分には被写体の異なりによる成分と、ドメインの異なりによる成分が含まれる


アイデア

共通の潜在空間 Z が存在すると仮定(Shared-latent space assumption)。異なるドメイン間の対応する画像は、同じ潜在変数Zから生成されるとした。

潜在空間Zの仮定により、ネットワーク各部の役割を以下のように解釈できる

E1 – G1, E2 – G2    : Variational auto encoder

E1 – G1 – D1, E2 – G2 – D2 : GAN

E1 – G2, E2 – G1     :  ドメイン間の画像変換


工夫①~重み共有~

ドメイン変換したときに、対応したペア画像が生成できるよう重み共有を部分的に行う。(E1とE2、G1とG2における一部のLayerが対象)。

重みを共有した部分が物体の構造を理解・再現する(hに相当)

重み共有されていない部分がドメイン固有の特徴を再現する(Lに相当)

 


工夫②~Loss関数の設計~

潜在空間Zの過程からcycle-consistency-assumptionという仮定を導く。

仮定:
「x1」「x1から変換したx2」それぞれから算出される潜在空間zの分布は一致する(Loss関数における項Lcc1)

仮定:
「x2」「x2から変換したx1」それぞれから算出される潜在空間zの分布は一致する(Loss関数における 項Lcc2)

2つに分けることで「ドメイン1⇒2への変換だけ得意」などと能力が偏らないようになる。(※なお、VAEとGANは従来のようにLoss関数を設計して学習)


所感

Loss関数の設計工夫はシビレましたね。ちゃんと潜在空間Zがそれっぽくなるような制約を加えることで結果が出ています。また、重み共有でドメイン間の事なりによる差分成分を分離できた点も、予想以上に直感通りの挙動を示したという驚きです。

lddでは”not found”にならないのにmakeすると”No such file or directory”になる(LINUX)

特に買ったばかりのRaspberyyPiなどでよくある話

makeしてプログラム実行しようとすると

“error while loading shared libraries: ****.so.0: cannot open shared object file: No such file or directory”

となってしまう。ライブラリがリンクされていないのかと思ってlddで確認すると”not found”とならない。

 

リンクが出来ているのか出来てないのかどっちやねん!

これは”/etc/ld.so.cache”がアップデートされていないことが原因らしい。次のコマンドでアップデートとしてやると良い。

これで解決