ベイズ主義と頻度主義の違い


頻度主義

  • データを確率的に観測されると捉えて、各事象の観測頻度から唯一無二の「正しい確率分布」を探し出す。
  • データを確率的に捉える
  • 確率分布は唯一無二と想定する。

ベイズ主義

  • 確率分布は確率的に存在すると捉えて、観測したデータを基に、最も尤度が大きい確率分布を推測する
  • 確率分布を確率的に捉える
  • 観測データを唯一無二と捉える

AI技術の整理は、技術でまとめるより課題でまとめたほうがわかりやすい

人工知能学会サイトには「AIマップ」のコーナーがあり、そこでは様々な視点でAI技術が俯瞰されて体系的に整理されています。(人工知能学会:AIマップ

その中に「AI課題マップ」なるものがあり、これが大変素晴らしい。何が素晴らしいかって、技術を技術で整理するのではなく、技術を課題で整理している

ここ数年でAI事業構造には変化があり、複雑なモデル設計をする技術人材だけでなく、AIによって企業課題を解決に導く企画人材へのニーズが高まっていると私は考えています。そういった人材の育成+活動の活性に向けて、こういった課題視点でAI技術を俯瞰してまとめるのは非常に有意義であり、AIスペシャリスト+事業提案を兼任して企業課題を解決しようと奮闘している私にとっては「あぁ、これで仲間が増えてほしい」と涙ちょちょぎれるくらいありがたい話でした。

AI課題マップ(人工知能学会サイトより引用)
AI課題マップ(人工知能学会サイトより引用)

ガートナー「日本における未来志向型インフラ・テクノロジのハイプ・サイクル 2020」について考察

またこの季節がやってきましたね、ガートナーによるインパクトをもたらす技術の考察です。

ガートナー、「日本における未来志向型インフラ・テクノロジのハイプ・サイクル:2020年」 https://www.gartner.com/jp/newsroom/press-releases/pr-20200910

今回、やはり注目はデジタルヘルスとロボティック・プロセス・オートメーション(RPA)です。他サイトでも述べられていますが、COVID19影響でやむを得ない規制緩和・テレワークや遠隔業務の半ば強制的な普及・業績リカバリのための効率化推進といったところが一気に進みました。RPAについては「実際に使ってみた」という企業が急速に増えたので、「なるほど、こんなもんか」といった状況になったのでしょう、ガートナーの図でも「過度な期待」の時期を通り過ぎている点が印象的です。

デジタルヘルスケアは医療関連の規制緩和や、個人データの扱いに関する制度整備によって、いっそうできることが増える予感がしますね。これまではプライバシーなどの観点で個人に関するデータをハンドリングしにくかった点が、目的次第では規制緩和されていくことも予想されます。

5Gや量子コンピューティングは、その技術レベルに見合った課題・目的が見つかるかどうかが鍵になります。別にいまのコンテンツや通信環境で満足しているならば4Gでもいいわけで、セキュリティの課題だったり、ARやVR、またはオンライン化による大容量通信のニーズと課題あったりが台頭すると、やっと価値を生むのでしょう。量子コンピューティングも同様に、何に使うのか、を見つけられるビジネスマンがどれだけ今度出てくるかが鍵ですね。

黎明期にAIプラットホームが挙がっていますが、これが何を具体的に指しているのかちょっと疑問です。よくあるGUIベースで「素人でもAI開発できます!」といった類だとすると、私はなかなか懐疑的です。きれいに整ったデータしか入力できなかったり、ちょっと凝ったモデルは実装できなかったり、なによりモデリング手法やテクニックは今後も進化を続けそうなので追従できないのではないかと思っているからです。

人工知能は過度な期待を過ぎたとあります、これには研究者の私も納得(まだ若干、期待値がオーバーな印象は残りますが)。人工知能単体ではなくデータや運用とセットで検討したり、日立などいくつかの企業がAIコンサルティング+導入支援のサービスビジネスを始めたりと、人工知能の特性や条件を把握したうえで社会実装が進み始めたと感じています。

Visual-SLAMのわかりにくい点を整理するブログ

大きな市場が見込めるロボット技術領域で競争が激化する昨今、その要素技術の1つであるSLAM(Simultaneous Localization And Mapping)も注目を集めています。しかし「なんとなくこんな処理だろう」と大雑把な理解はしているものの、いざ説明しようと思うと出来そうで出来ないのがSLAM。そこで、ちゃんと丁寧に内容を理解していこうというのが本日の内容です。

■SLAMの目的:

SLAMの目的は①自己位置推定と②マップ作成です。「えっ、目的が2つあるの?」となるかもしれませんが、正式名称も「Simultaneous Localization And Mapping」となっており、この2つは切っても切れない関係にあります。

空間内で自分がどの位置にいるのかを把握する自己位置推定では、そもそも「空間」がどのようになっているのか把握しなければ自己位置推定したところで情報量がありません。なにも存在しない無限遠方の3D空間で「アナタはいまココにいます」と世界座標系の(x,y,z)を用意されても困るわけです。

よって他オブジェクトが同じ座標系のどこにいるのかというマップがないと自己位置推定は意味を持たないわけです。

また、マップ作製も自己位置推定と密接な関係にあり、SLAMにおいて自己位置推定を抜きにMAP作成はできません。画像群を一括処理するSfMと比べてSLAMは逐次的に取得される画像からMAP作成するので、入力画像について「世界座標におけるどの位置からどの姿勢で撮影したのか?」という自己位置が推定できなければ入力画像から3次元を更新できません。

■SLAMの入力:

入力は画像です。RGBだったりRGB-Dだったりしますが、とにかく画像です。ただし異なる視点から複数回撮影された画像です。(1枚ずつ処理することもありますが)SLAMには複数の画像を用います。

■SLAMの出力:

出力は2つあります。1つ目はMapで、観測された対象物の世界座標系における3次元座標の集合です。ここには壁があって、ここには通路があって、という空間の把握に役立ちます。ただし観測された画像のあらゆる画素や特徴点がMap反映されるわけではありません。計算量が膨大になったり、対応点の算出が困難になったりするため、冗長な点を省いたり、特徴的な点だけをMapに反映することがあります。

2つ目の出力はPoseです、これは画像を撮影したときのカメラパラメータで、「どんなカメラでどの位置からどんな姿勢で撮影したのか」という情報に相当します。よって、カメラパラメータは画像1枚ごとに異なりますが、かといって全ての画像に対してカメラパラメータを推定するとは限りません。処理量が膨大になるのでカメラパラメータ推定を実行するのはMap作成に重要と判断した画像(これをKey- Flameと呼びます)だけで、冗長なものは間引くこともあります。カメラパラメータ推定は3次元空間内での自己位置推定と等価です。

カメラパラメータには内部パラメータと外部パラメータの2つがあります。内部パラメータとはカメラのスペックのようなもので、焦点距離やレンズ歪などに相当します。外部パラメータとは「世界座標系におけるカメラの位置&姿勢」とご理解ください(以下サイトの説明がわかりやすいです https://www.slideshare.net/takahashikousuke/camera-calibration-111239064)。

なお、カメラの内部パラメータは既知として、外部パラメータのみ推測するような問題設定が比較的多いです。

↓ Takahashiさんによるこの説明がわかりやすいです

 

■アルゴリズム:

Map推定結果とPose推定結果から「この位置からこの姿勢で撮影したらこういう画像ができるだろう」と計算された投影点、と、実際にカメラが撮影した観測点を比較して、誤差が最小となるようにMapとPoseを更新します。

■難しさ:

RGBで取得した画像を入力とした場合、画像からMap推定するときの中間過程に「Depth推定」が必要となります。つまり2次元のRGB画像から深度(Depth)を推定して3次元の世界座標系にマッピングするため、ここでも誤差が発生する可能性があります。Map推定の誤差なのか、Depth推定の誤差なのか、Pose推定の誤差なのか、見極めが難しくなります。

先述したように撮影した全画像についてマッピングや自己位置推定を行うと処理がいつまでも終わりません。よってMap推定に有効なサンプル(KeyFrame)を選定する必要があり、その選定方法について様々な手法が提案されています。
どの対象物(画素、特徴点)をMap推定やPose推定に使用するのかという選定にも工夫が必要です。特にPose推定については下手なものを用いるとカメラ間で対応が取れなかったりするためです。例えば濃度勾配が高い画素のみを推定に用いるなどの手法があります。

局所的には正確に対応点を取ってMapやPoseを推定できたとしても、それを逐次的に繰り返すうちに誤差が蓄積して、全体のMapやPose推定では歪みが出ることがあります。この対策として局所最適と全体最適の両方を取り入れた手法などが提案されています(Loop Closingなど)。

t-SNEをCUDA使って爆速で実行

機械学習の研究をしていると特徴量の分布を確認したくなることは多い。特にDomain Adaptationなどの研究になると分布の重なり具合の確認のために可視化が必要となる。

そういった場合によく用いられるのがt-SNEという手法だが、可視化のための低次元空間の算出の処理がとにかく重い。

うっかり多すぎるデータをINPUTしてしまうと、そのままフリーズしたりもする。

何か対策はないものか、、、と調べてたらあったよ(やっぱり)

 

 

機械学習の界隈は「こんなんあればなぁ」と思ったものはだいたい既に実装されているから恐ろしい、技術の進展早すぎ

論文: https://arxiv.org/abs/1807.11824

Code: https://github.com/CannyLab/tsne-cuda

Slide: https://hpml2018.github.io/HPML2018_6.pdf

Anacondaでのインストールも可能: https://anaconda.org/CannyLab/tsnecuda

 

めっちゃ早くなってるやん!!

 

なお、インストール後に『libcublas.so.<VERSION> not found』となった場合は

  • 『LD_LIBRARY_PATH』が正しいか確認
  • CUDAとマッチしたVerのtnsecudaをinstallしているか再確認

『ICML 2019 読み会 in 京都』に登壇してきました

オムロン京都本社にて恒例となりつつある機械学習関連の論文読み会、NIPSにICLRにと開催してきましたが今回はICMLです。

いまのところ毎回登壇して皆勤賞です、今回はGoogle社が提唱したFederated Learning関連の論文を選択しました。

 

簡単に言うと、複数のクライアントがデータを1箇所に集約して機会学習したのと同等効果を、クライアント間のデータ共有なしに非集中環境の機械学習で実現するのがFederated Learningという技術です。

このとき、データ量だったりクラス分布に偏りがあると、あのクライアントのデータはよく識別できるのに、あのクライアントのデータは識別できないといった状況になりうるので、ええ感じに工夫しましょうという論文です。

 

質疑応答の内容はこちらにTweetでまとめています

 



LT枠の発表

こちらもFederated Learning 関連論文から選択

 



個人的に収穫だったのは、生物学的なアプローチをとっている論文を紹介頂けたこと。こういう自分では読まなそうな研究と出会えるのがこの活動の醍醐味でもありますね。

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