グラフィカルモデルを綺麗に書く(未完成)

あらまし

「グラフィカルモデルを綺麗に描きたい」
という欲求は誰にでも存在する [要出展]

毎度のごとく、ペイントソフトやパワーポイントを使ってグラフィカルモデルを描くのはなんとももどかしい。

そんな悩みを吐露したら、綺麗に書けるライブラリを教えていただいた。

それがdaftと呼ばれるpythonで使えるライブラリで、日本語ではこちらで紹介されている。

nzw0301.github.io

各関数の定義などはこちらのブログの方が詳しいので割愛させていただく。

やったこと(やりたいこと)

以下を用意した時に自動的にグラフィカルモデルを描いて欲しいと思ったので、 それが行えるようなクラスを作った。

(自分的には以下の要素が最低限構築に必要な要素かな?と思っている。)

  • ノードに付するラベル(αとかwとか)
  • ノードの位置関係
  • 各エッジの始点ノード、終点ノードの関係
  • 各プレートで囲むノードの集合  

現状出来ていないのはプレートを囲むノードの集合からうまく落とし込むところ、 というのも単純なモデルならなんとかなるが、複雑な図を描こうとするとちょっと面倒臭くなる。

プレートは大きく分けて二つに分けられて、

  • 他のプレートと独立しているもの(LDAの場合、Kに相当)
  • 他のプレートと関係があるもの(LDAの場合、DやNに相当)

となるので今回は明示的にこれを定義してしまっている。  

コードはこれ

コードの説明

LDAを例にとって軽く説明を付します。

上記の定義をどうしたか

  • ノードに付するラベル(αとかwとか)

辞書で定義、tex記法(と呼んでいいのかしら?)で文字は書けるので、各種文字や下付き上付きなどが表現できる。良い。

node_list = {"alpha":r"$\alpha$",
             "theta": r"$\theta$",
             "z":r"$z$",
             "w":r"$w_i$",
             "phi": r"$\phi$",
             "beta": r"$\beta$"}
  • ノードの位置関係

二次元arrayで定義した、上で定義した辞書のkeyを位置と対応させて配置する。 この表現でいいのかは疑問だけど、とりあえずこれで。

node_pos = np.array([["alpha","" ],
                     ["theta",""],
                     ["z",    ""],
                     ["w",    ""],
                     ["phi"   ,""],
                     ["",     "beta"]])
  • 各エッジの始点ノード、終点ノードの関係

(始点,終点)といった形で表現されたエッジをリストで保持

edge_list = [("alpha", "theta"),
            ("theta", "z"),
            ("z", "w"),
            ("beta", "phi"),
            ("phi", "w")]
  • 各プレートで囲む変数の集合

これまたこの表現でいいのかわからない。。。 上で述べたようにプレートは大きく二つに大分されるので、 それぞれを"人手"で判断して定義する(ここをどうにかしたい)

plate_list = {"depend":[[r"$D$",["theta","z","w"]],[r"$N$",["z","w"]]],
              "independ":[[r"$K$",["phi"]]]}

To Do

  • プレートの包含関係とかを(半)自動的に識別する。
  • プレートの配置を""いい感じ""にする。(どうするのか?)

まとめ

気が向いたら、改良しようかなと思ってるけど、図の描画は一回限りのことが多かったりもするので、 そこまで使用頻度は結局のところ高くないのかもしれない。。。

こんなことはもう◯◯で既に出来る!みたいなご指摘があったら是非教えていただきたいです。

余談

  • コードを見てもらうとお分かりかもしれないが、Plateの位置調節の値は経験的に決めているのでdependの方のplate数が増えるとうまく行かないです
  • 先輩や同輩には、keynoteinkscapeの方が綺麗と言われたorz...。
  • グラフの描画としてigraph(http://igraph.org/python/)に触れた時は力学モデル?を用いてノードを配置する(レイアウトって呼ばれてた)。 みたいなのがあったけどグラフィカルモデルの場合は出来なさそうだなぁと思ったりなどした。

 

NIPS2017、気になる論文リストアップ

NIPSのAccepted Papersの一覧が出てたことに気づいた。

https://nips.cc/Conferences/2017/AcceptedPapersInitial

Abstとかはまだ上がってないので、現時点でタイトル見て気になる論文をピックアップしておく(備忘録として)

採択数めっちゃ多い気がする、このうち何本を読むのだろうか......(ピックアップしたのは17件)

  • Probabilistic Models for Integration Error in the Assessment of Functional Cardiac Models
    Chris Oates (Newcastle University) · Steven Niederer (Kings College London) · Angela Lee (King's College London) · François-Xavier Briol (University of Warwick) · Mark Girolami (Imperial College London)
  • Structured Embedding Models for Grouped Data
    Maja Rudolph (Columbia University) · Francisco Ruiz () · David Blei (Columbia University)
  • Best of Both Worlds: Transferring Knowledge from Discriminative Learning to a Generative Visual Dialog Model
    Jiasen Lu (Georgia Tech) · Anitha Kannan () · Jianwei Yang (Georgia Tech) · Dhruv Batra () · Devi Parikh (Georgia Tech / Facebook AI Research (FAIR)) 
  • Universal Style Transfer via Feature Transforms
    Yijun Li (University of California, Merced) · Chen Fang (Adobe Research) · Jimei Yang (Adobe Research) · Zhaowen Wang (Adobe Research) · Xin Lu (Adobe) · Ming-Hsuan Yang (UC Merced)
  • Multimodal Learning and Reasoning for Visual Question Answering
    Ilija Ilievski (National University of Singapore) · Jiashi Feng (National University of Singapore)
  • Question Asking as Program Generation
    Anselm Rothe (New York University) · Brenden Lake (New York University) · Todd Gureckis (New York University)

  • A Dirichlet Mixture Model of Hawkes Processes for Event Sequence Clustering
    Hongteng Xu (Duke University) · Hongyuan Zha (Georgia Tech)
  • Parallel Streaming Wasserstein Barycenters
    Matthew Staib (MIT) · Sebastian Claici (MIT) · Justin M Solomon (MIT) · Stefanie Jegelka (MIT)

  • Deep Voice 2: Multi-Speaker Neural Text-to-Speech
    Andrew Gibiansky (Baidu Research)
  • Sparse k-Means Embedding
    Weiwei Liu (UTS) · Xiaobo Shen (NJUST) · Ivor Tsang (University of Technology, Sydney)

  • Collecting Telemetry Data Privately
    Bolin Ding (Microsoft) · Janardhan Kulkarni (Microsoft Research) · Sergey Yekhanin (Microsoft)
  • Visual Interaction Networks
    Nicholas Watters (Google DeepMind) · Daniel Zoran (DeepMind) · Theophane Weber (DeepMind) · Peter Battaglia (DeepMind) · Razvan Pascanu (Google DeepMind) · Andrea Tacchetti (MIT)
  • Q-LDA: Uncovering Latent Patterns in Text-based Sequential Decision Processes
    Jianshu Chen (Microsoft Research, Redmond, W) · Chong Wang () · Lin Xiao (Microsoft Research) · Ji He (University Washington) · Lihong Li (Microsoft Research) · Li Deng (Citadel)
  • Learning from Complementary Labels
    Takashi Ishida (Sumitomo Mitsui Asset Management, The University of Tokyo, RIKEN) · Masashi Sugiyama (RIKEN / University of Tokyo) · Gang Niu (The University of Tokyo / RIKEN)
  • Discriminative State Space Models
    Vitaly Kuznetsov (Google Research) · Mehryar Mohri (Courant Institute and Google)
  • Conic Scan Coverage algorithm for nonparametric topic modeling
    Mikhail Yurochkin (University of Michigan) · Aritra Guha (University of Michigan) · XuanLong Nguyen (University of Michigan)
  • Interpretable and Globally Optimal Prediction for Textual Grounding using Image Concepts
    Raymond Yeh (University of Illinois at Urbana–Champaign) · Jinjun Xiong (IBM Research) · Wen-Mei Hwu () · Minh Do (University of Illinois) · Alexander Schwing (University of Illinois at Urbana-Champaign)

 

ちょい別枠

  • Deep Sets
    Manzil Zaheer (Carnegie Mellon University) · Satwik Kottur (Carnegie Mellon University) · Siamak Ravanbakhsh (CMU/UBC) · Barnabas Poczos (Carnegie Mellon University) · Ruslan Salakhutdinov () · Alexander Smola (Amazon - We are hiring!)

寝ぼけ眼で見ていても所属のところにWe are hiring! って書いてあったから、どういうことなんだろう...(そういうことなんだろうか?)ってなったのでメモしておく。

 

YANS2017に参加してきました。

2017年9月3日〜9月5日に沖縄で開催されたNLP若手の会(通称YANS)に初めて参加および発表をしてきたので、その感想について軽くまとめます。

参加に至る経緯

 僕が所属している専攻および研究室は(おそらく)どこへも研究発表をしないでも卒業ができてしまう環境にあるが、僕はどこへも発表しないで、また言語処理の人の意見を聞かずにそのまま卒業して行くことに危機感を持っていたし、今年の言語処理学会には何も出せなくてより一層危機感が強まっているなか、適当に調べていたらYANSの存在を知ったので参加を決めた。

 僕自身、こういった対外的な発表は初めてな上に普段は言語処理をしている人が周りにいないので言語処理をしている人への研究の話も初めての経験だったのですこぶる緊張したが思い切って参加して良かったと思う。

全体的な所感

  • 有名な研究室関係の人が多い

東北大乾研・NAIST松本研・首都大小町研・東大鶴岡研・東大喜連川研・東工大奥村研・京大黒橋研etc...といったようなNLPの研究をしている学生なら聞いたことある研究室の方々が多く参加されていた。これは、学生や教員というだけでなく企業の方でも上記の研究室出身の方が多かったように感じた。

  • 若い方が多い

僕自身M2なので、お前が若いとか言うなと言われるかもしれないけれど、M1にB4さらにはB2の方までいてさらには発表までしていたりして、自分がB4だったりB2だったりした時を思い出すととてもすごいことだと感じた。

  • 年齢とか所属を気にせず会話できる

研究に関する話をするときにあまり上下関係を気にしすぎても話が滞るというのが僕の持論なので、そういった意味ではすごくお話させてもらいやすい環境でした。これは発表や懇親会、二次会などあらゆるところでそうだったので良かったです。

  • 名刺

企業の方だけでなく学生の方も名刺を持っていて交換していたりしてすごいなぁと思った、一方的に名刺をもらったので少し申し訳なかったり思う。 

  • 部屋のランダム性

合宿形式であり、ほとんどの方が同じ宿に泊まるわけだが、部屋割りはランダムらしく僕の部屋は僕以外社会人の方の部屋だったので普段とは違った新鮮な体験だった。

 

あまり真面目ではない話

切符を買うということを最近あまりしなくなったが、沖縄ではSuicaが使えないっぽいので切符を購入。改札を通ろうと切符の差し込み口を探すも見つからない。ゆいレールの切符はQRコードをかざすということを駅員の説明で理解。

(使い終わった切符の回収箱があったりしてなんとも言えなかった)

初日の交流会でビーチ行くやつに参加しようとしたけど雨が降っていると聞いたので突如現れたボドゲ組に参加した。「コードネーム」*1と「ピタンゴ」*2というゲームをやった。

ざっくり言うと前者は二つのチーム戦でチームリーダーが自分のチームのカードに書かれた名詞の共通項で味方にどれが自分のチームのカードかを当てるゲーム

後者はしりとりの亜種みたいな感じでカードに書かれた「◯◯な」といったものに続けて単語を発してそれをしりとりの一塊として続けて行くゲーム

僕はボキャ貧なので後者のゲームの方が苦手だった。

  • 沖縄の締めはステーキ

オープンニングの際に委員長の中澤さんが

「沖縄では締めにラーメンではなくステーキを食べるそうですよ」(意訳)

と言ったことをおっしゃっていたが、嘘だと思ってたし、食べに行くつもりもあまりなかったが、二日目の夜にステーキを食べに行く流れに見事に乗ってしまった。

ホテルの近くの有名店らしいステーキ屋*3に行ったら23時くらいだったのにめちゃくちゃ混んでるので本当に締めはステーキなのかもと思ってしまった。(実際ステーキはやわらかくて美味しかった)

自分の発表について

上記の通り、僕にとっては初めての対外発表かつポスター発表かつ初日ということでかなり緊張した。

普段、周りに自然言語処理について相談できる相手がいないので、根本的なところで勘違いをしているのではないか?そもそもこういったモデルで本当にいいのか?みたいなところを悩んでいたし、そもそもこういった研究発表をして他人に興味を持ってもらえるか?と不安だった。口頭発表みたいな感じのものであれば卒論の審査などで類似したものは行われるので、一応聞いてはもらえるが、ポスター発表は興味があるものを人が聞いて回るといったものだと思うので人が来なかったどうしようとも考えていた。

結果としては、色々な人に聞きにきてもらえて、素朴な疑問から鋭い質問までぶつけてくださって感謝です。特に企業の方々からの指摘は実問題に置き換えた話をしてくださるので身につまされました。以下ざっくりとした質問への所感。 

・ポスターに表示されているものの意味について

何も考えずにポスターにグラフィカルモデルを載せたのだが、それぞれのノードの意味とかを何も書いていなかったので、それぞれが何を表すのかが伝わりづらかったので反省。グラフィカルモデルで生成過程を示すくらいなら生成過程のイラストを作った方がわかりやすかったのかなと感じた。

・モデルの妥当性

各種パラメーターの決め方について、無意識下の拘束をしていたりしたことに気付かされたので少しはっとさせられた。 

 発表中の反省点としては以下二つ

  • ポスター発表の時にメモをとる習慣をつけたほうがいいことを学んだ。(メモ取らなかったせいで頭が少しパンクしてしまった)
  • ペットボトルの飲料を持ったほうがいいことを学んだ。(口がパサパサになる)

 ポスター発表はyoutubeで配信されていたらしいが、配信を見ていた弊研の人曰く僕の背中しか写っていなかったと言われたので僕の発表が配信されていたのかは定かではない......。

 

 他の方々の発表

自分の発表時の他の人の発表が聞けなかったのでどこかしらにポスターなりがあがってくれると嬉しいなと思ったり...。

個々の発表については取り上げないけれど、全体的に対話の話が多かった気がする。

僕が興味を持ったのは対話と意味表現的な話題が含まれているものが多かった。

僕の中で意外だったのはコーパスづくりといったことを学生の方が取り組んでいることでした。(僕自身研究でデータを自分で集めたりはするけれどそれとは規模感が違うなぁというニュアンスです)

最後に

昨年のうちに言語処理のコミニュティの人と交流をしていれば良かったなぁと思ったりしたのでとりあえず昨年の自分に会えたらとりあえずどこでもいいから外の人と交流してみろと言ってあげたい。

来年度以降も言語処理はやっているはずだし是非参加したいけれど参加できるかは今のところ未定。

(沖縄の観光を殆どできなかったので前泊か後泊をすれば良かった。)

 

言語処理学会第23回(NLP17)、気になる論文ピックアップ

結構時間が空いてしまったけれども、言語処理学会で発表されたもので気になるものをリストアップしておく。(時間が空いたら軽く読む

 

・変換規則と文章の分散表現に基づく自動文章生成手法の提案

・類似度と連想度を用いた隠喩表現判定に関する研究

マイクロブログを対象とした形態素解析誤りの自動検出と誤り分析
・用例文拡張辞書を利用したトピックモデルに基づく新語義検出

ソーシャルメディアにおける俗語の検出
・従属性に基づく事態間関係知識の粒度調整
・鉄道トラブルに関する tweet の自動抽出手法

・マルチモーダル情報に基づく見守りシステム開発への取り組み
・賛否表明パターンと行列分解に基づく賛否モデリング

モンテカルロ木探索を用いた早口言葉生成
・時系列数値データからの概況テキストの自動生成
・Sentence Embeddingsを導入した潜在トピックモデル
・用例文拡張辞書を利用したトピックモデルに基づく新語義検出
・抽出型文書要約における分散表現の学習
・単語分かち書き辞書 mecab-ipadic-NEologd の実装と情報検索における効果的な使用方法の検討

Semantic Connection based Topic Evolution (AAAI17) を読んだ

AAAI17の中で、以前気になる候補として挙げた論文のうちの1つを読んだので軽いまとめ。

2Pなので軽く読めるはず(僕は論文読むの苦手なので時間がかかった)

Semantic Connection based Topic Evolution (AAAI17) 

概要

 従来の手法はトピックモデルに基づいてトピック数を与えたり制約があったが、

 本手法ではsemantic-connection(文章の類似度や時間減衰由来)に基づき、適切なトピック数を決められるのでベースラインよりもトピックの質の面でも、変化の感度の点でも勝っている。 

手法

手法については多くは書かれていないが、アルゴリズムは載っている。

端的に言うと文章を時間毎に区切って、窓幅を設けて、LDAを回してみたいなことをやっている。

 

与えられるものとしては、

  • 文章データセット(D)
  • (文章データの)窓幅(wz)
  • (KLdivの)閾値(T)

 

アルゴリズムに基づくと大まかに分けて3つのシーケンスを踏む。

  1. LDAを用いて文章のトピック分布(θ)を得る。
  2. 各文章に対して得られたトピック分布(θ)のsymmetricalなKLdivを計算し,Semantic Connection Graph(SCG)を作成する
  3. 2.で得られたSCGをSemantic Connection Feature(SCF)へと変換する。この際にDeepWalkと呼ばれる教師なし深層学習を用いる。

実験

対称とするデータ:Twitter(2014年12月のデータ)

比較手法:On−Line LDA

結果の画像とかは元論文見てください。

トピックの二次元平面上での距離がトピックの差異(類似度?)をそのまま表しているらしい。

結論

 semantic-connectionに基づく可視化はトピック数の制約により引き起こる欠陥を解決した。

 Twitterのデータでの有用性が下記の点で示された。

  • トピックの発展の可視化
  • トピック数の決定
  • 冗長なトピックの回避

僕の所感

LDAはトピック数givenだからなんとかして結合しようみようというアプローチは何個か見たことある。

その際はトピック単語分布(Φ)のcos類似度だったりと様々だった気がする。

今回は既存研究のDeepWalkとかいうのを用いているのが新規性なのかなと感じた。

従来手法と本手法の結果がどちらも載っていたが、どう優れているのかが一見わかりにくい

(本手法の結果は二次元平面でトピックが図持されているけどわかりにくい)

可視化に関しても結局その知識がない人がみるとわからないのでは?と思ってしまう一面がある。

(僕は無知なので対称的なKLdivという概念を初めて知った)

AIII17、気になる論文リストアップ

2月の頭辺りから始まるAAAIというアメリカの人工知能学会のAccepted Paperの一覧から

気になる論文候補をリストアップ(備忘録)

www.aaai.org

まだ、論文の方は見れないっぽいのでとりあえずタイトルだけで判断してみた。

  • 632: Probabilistic Non-negative Matrix Factorization and its Robust Extensions for Topic Modeling Minnan Luo, Feiping Nie, Xiaojun Chang, Yi Yang, Alexander Hauptmann and Qinghua Zheng
  • 1063: Don't Forget the Quantifiable Relationship between Words: Using Recurrent Neural Network for Short Text Topic Discovery Heng-Yang Lu, Lu-Yao Xie, Ning Kang, Chong-Jun Wang and Jun-Yuan Xie
  • 1095: Collaborative Dynamic Sparse Topic Regression with User Profile Evolution for Item Recommendation Li Gao, Jia Wu, Chuan Zhou and Yue Hu
  • 3454: Semantic Connection based Topic Evolution Jiamiao Wang
  • 3476: Authorship Attribution with Topic Drift Model Min Yang

トピックモデルについて扱ってそうなもので、興味深い奴をリストアップしてみた。

大きな学会ともなると論文の母数が多いなぁと言うのが所感。