a lonely miner

DBpedia についてすこし調べてみた

先日、第36回セマンティックウェブとオントロジー研究会-DBpediaシンポジウムに出席する機会を得た。最も大きな目的はStudio Ousiaの山田さんによるエンティティリンキングに関する招待講演を聴講することだったのだが、DBpediaやその周辺環境についての研究発表やディスカッションにも興味をひかれた。

その後、DBpediaについてしばらく調べていたのだが、すこしだけまとまったので、メモとして公開することにした。

What is DBpedia?

Wikipediaを自動的に、RDFトリプルに変換する仕組み、あるいはそのプロジェクト。

できるだけ多くの項目を「あらかじめ決められた語彙」へマップすることによって、その語彙を使う他のリソースとの相互利用を進めたい、という意図がある(この動きを Linked Open Data と言うらしい)。

「自動的に変換する」と言っても、NLPの人たちが想像するような「テキストデータからの自動獲得」ではなく、Wikipediaの編集者によって構造化されたデータ(Infobox)からの取得がメイン。

RDFトリプル?

主語(subject) 述語(predicate) 目的語(object) の組の集合(大きな有向グラフとみなすことができる)で情報を表現するしくみ。詳しくはググってくだしあ。

どのように変換が行われるか

以下の図のようなイメージ。

DBpediaを構築するには”Mapping”, “Ontology”, “Wikipedia Dump”の三つの情報が必要である。

先ほど述べたように、DBpediaでは、Wikipediaの項目内の情報(ほとんどはInfoboxの情報)が、主語、述語、目的語の組にマップされる。

テンプレートの各スロットが、DBpediaオントロジーの語彙のどれにあたるか、という情報が整理されたものが “Mapping” である。Mappingには、例えば、 会社 テンプレートの 代表者というスロットに記載されている情報がオントロジーで定められた keyPersonという関係の目的語になる、といった情報が書かれている。

語彙を定めるのは “Ontology”。こちらには、大別すると以下の三種類の知識が書かれている:

  1. 会社は組織のサブクラスである、といったカテゴリ階層に関する知識 例) http://mappings.dbpedia.org/server/ontology/classes/#Company
  2. 会社はスタッフ数やCEOといった属性を持つ、といったプロパティに関する知識 例) http://mappings.dbpedia.org/server/ontology/classes/Company
  3. スタッフ数は組織に対して定義される「非負の整数」で、CEOは組織に対して定義される「人」である、といった、定義域&値域に関する知識

メタな、特定のエンティティや言語に依存しない(オントロジカルな)知識が整理されている。

これらの情報は誰でも編集ができるが、Mapping wikiにアカウントを作る、メーリングリストに挨拶メールを送る、といった手続きが必要らしい。

DBpediaにおいてマッピングが定義されていないInfobox内の情報には、適当に項目名が付与される。たとえば、空海 - WikipediaBuddhist という比較的マイナーなInfoboxを用いて書かれているが、現在(2015/07)はこのInfoboxに関するマッピングはDBpediaには存在しない。そのため、 http://ja.dbpedia.org/property/宗派 http://ja.dbpedia.org/property/法名 などといったプロパティが生成される。当然ながら、これらのプロパティは「野良プロパティ」とも呼べるようなもので、意味的な裏付けはあまりないと思う。

Infoboxが使われていない記事の情報は、カテゴリやリンク先などの(取れそうな情報)はとられるが、それ以外の情報は入らない。記事が指すエンティティのカテゴリも特にデータベース化はなされない。

自分の手元で変換したい

github wiki上のインストラクションに従うことで変換できる。ほとんど clone してビルドして実行するだけ。必要なデータのダウンロードも面倒をみてくれる。

DBpediaを使うにはどうすればよいか

手元にホストする必要が無い場合は、公開されているSPARQLエンドポイントを使うのがよさそう。SPARQLは、SQLライクな文法をもった問い合わせ言語。主語、述語、目的語のトリプルに対して、パターンマッチや集約を行うことができる。

手元にRDFストアを構築したい、という場合は、Openlink Virtuosoがデファクト・スタンダードみたい。導入には以下の記事が参考になった。他にもぐぐるとけっこう出てくる。

類似プロジェクトとの差異

よく比較される Freebase との比較をすこしだけ。Freebase はオワコンらしいが、おそらくこれらの特徴の一部はWikidataにも引き継がれるだろう。

DBpedia Freebase
データ元 Wikipedia。データの更新を行いたいときは、Wikipediaを更新しようという立場。 かならずしもWikipediaにのる必要はないという立場。直接いじることができる。
運営 ライプツィヒ大学とベルリン自由大学が起源だが、現在はDBpedia財団という組織があるらしい。日本版はNIIの武田研究室が中心となってホストしている。 MetaWeb => Google(シャットダウン)
クエリ言語 SPARQLエンドポイントが提供される MQLなるクエリ言語がサポートされているらしいが、少し調べて見た限りではあまり使われていない印象を受ける(RDFのダンプをRDFストアに突っ込んでSPARQL等で問い合わせるか、KVSで力技、というケースが多い印象)

その他の関連プロジェクト

「モデル」とは何か,について考えていたことを,DSIRNLP(データ構造と情報検索と言語処理勉強会)で発表してきました

先日, @overlast さんから,DSIRNLP(データ構造と情報検索と言語処理勉強会 )という会にお誘いを頂きまして,以前から考えていたことをちょこっとお話してきました.当日の様子は, @mamoruk さんが togetter にまとめてくださっていますので,そちらもご覧ください.

私の発表スライドは slideshare に置いておきました.いくつか直したいところがあるので,そのうち差し替えるかも.

他の方々がものっそい最先端な話ばかりのなか,私一人だけがひどくぼんやりとした内容でたいへん恐縮でしたが,問題意識を共有するきっかけを頂けたことに感謝しています.

そもそもこの話をしようと思ったきっかけは,ふだん学生さんと話していて,今回取り上げた「モデル」といった,漠然とした概念について理解が共有されていなかったり,学生さんと研究室スタッフで,研究における目標が違っていたりするのではないか,という事例をいくつか目にしてきたことでした.(後者の問題については今回は触れなかったのですが,いろいろ思うところはありますので,いずれ機会をみつけて何か書けたらと思っています)

そのなかでも,今回取りあげた「モデル」という言葉はなかなかに凶悪でして,たとえば言語処理学会全国大会の予稿集をみると,含まれていない論文のほうが少ないのでは(言いすぎ)というくらい多用されているのですが,それらに内包されている意味をつかむのがむずかしい状況だと感じていました.

発表資料はあちらこちらに行って発散しているきらいがありますが,おちついて考えてみると,今回言いたかったことは以下の二点に要約されます.

  • モデル(仮定) と アルゴリズム,パラメータはそれぞれ別のものだということをまずはじめに押さえておくことで,見通しが良くなるということ
  • モデルを計算機上に実現するということのハードルは,さまざまなドメイン特化言語やツールキットによって下がりつつある,ということ

会場では,以下のようなご指摘をいただきました:

  • これまで「libSVMを使えるかどうかを考える」であったところが,「TorchなりHBCなりを使えるかどうかを考える」という問題にすりかわっているだけではないのか,
  • そもそも「モデル化」というものは問題を解くためにするものではなくて,現象を浮き彫りにするために行うものであるので,ちょっとモチベーションが違うのでは,
  • モデル化,というところだけに目を向けてしまうと,実際の応用において必要になってくる効率化であるとか,モデル解釈の容易さのような点に目が向かなくなってしまうのではないか,
  • 「モデルもデータも(問題も)」一度に新しい設定に入れ替える,というのは無理があるので,まずはどちらかを固定して取り組むべきではなのか,
  • ちょっと話が概念的にすぎるので,実際に手を動かしてもらうタイプのチュートリアルの方が有用なのでは,

いずれもごもっともなご指摘であり,私の発表は工学側にもサイエンス側にも倒しきれていない,中途半端な内容になってしまった感じはしています.もうちょっと練ります.

渡邊澄夫先生の書籍から一節だけ引用して,このエントリを締めたいと思います.最後になりましたが,快適な会場を提供してくださったスマートニュース株式会社のみなさま,勉強会をオーガナイズしてくださった @overlast さん,ありがとうございました.

よいアルゴリズムを思いつくための系統的な方法があるということはないと思いますが,あなたがこれからさまざまなことを探求するなかで思い出される可能性が高いのは,それまでに出会って美しいと思ったことや面白いと思ったことだろうと思います.ベイズ統計学に現れるアルゴリズムは一つは解析力学に基礎があるものです.もう一つは統計力学です.どちらも美しくとても面白い学問ですから,なにかに役立てようとは考えず,学問そのものを学ぶことをおすすめします.

[MLAC 2013 7日目] Torch7でお手軽ニューラルネットワーク

はじめに

この記事は Machine Learning Advent Calendar 2013 の 7日目の記事です.

2013年,Deep Learning もアカデミックレベルではさまざまな分野への浸透が進み,バズワードの域を脱したように思えます. これまでは,機械学習というと,応用分野においては(分類/回帰といった)タスクを決めてしまった上でブラックボックスとして 扱うもの,という空気がありましたが, Deep Learning に代表される柔軟な,いかようにも組み上げられるモデルは,問題の性質を積極的に(特徴量としてではなく,モデル自体に)組み込むことを容易にする,大きな武器になるのではないかと感じています.

素性エンジニアリング vs モデルパラメータエンジニアリング の不毛な戦いが幕を上げた,という見方もできちゃいそうですが・・・..

さて今回は, Torch7 という,Neural Networkを中心とした機械学習向けの環境をごくごく簡単に紹介します. Torch7自体は,比較的最近公開されたソフトウェアですが,”7”という文字から伺えるとおり, 主開発者の Ronan Collobert 氏が中心となって,かれこれ10年以上継続的に開発されているパッケージのようです.

論文としては, NIPS’11 BigLearn Workshop のものが初出でしょうか. Neural Network向けのソフトウェアパッケージというと, Theano/Pylearn2 が主流ですが(要出典),Torch7の特徴をいくつか挙げてみましょう.

  • スクリプティング言語として, Lua が採用されています.  そのため,他のアプリケーションにおけるスクリプティング環境としての組み込みが容易になっているそうです.  試していないのですが,iOSアプリへの組み込みも可能だとか・・・?
  • テンソルのサポートが手厚く,次元を変えたりメモリ上の配置を変えたり,四則演算を行ったり,がらくちん
  • NNを構成するモジュールが大量に備わっており,ブロックを組み立てる感覚でモデルを作ることができる
  • 独自のオブジェクトシステムが備わっており,OOPっぽいプログラムが可能
  • BLAS, CUDAなどのサポート
  • なぜかIDEがついてくる!! (torch -ideで起動できます)

Theano/Pylearn2との比較については,Theano開発チームによる以下の資料(とくに Table 1)が参考になります.

Theano は Deep Learning の総本山であるモントリオール大のチームが強力に推進しているプロジェクトだけあって, 機能面での対抗はなかなか厳しそうですが,頑張ってます,,,頑張っています!

Torch7のセットアップ

Torch7 よりどうぞ.

インストールしたのがしばらく前なので記憶が曖昧なのですが,私の環境(MacOS X 10.9)では,特に引っかかるところはなかったように思います.要cmake

私は使いませんでしたが,aptが動くLinuxか,homebrewが動くMacなら,インストールスクリプトも用意されています. しかし,こちらのインストールスクリプト,若干お行儀が悪い気もするので,気になる方は実行前に一度眺めてみてください.

各種の拡張機能(カメラへのアクセスなど)は,luarocksというパッケージマネージャ(Rubyにおけるgem,Pythonにおけるpipのようなもの)を用いて管理するようです.

Torch7で多層パーセプトロン

ネットワークの構築

Torch7 における Neural Network の構築は非常に簡単です. たとえば,基本的な中間層1層のネットワークは,以下のようなコードで表現できます.

1
2
3
4
5
6
 require nn"
 mlp = nn.Sequential()        -- Multi Layer Perceptron
 mlp:add( nn.Linear(1000, 25) ) -- 1000 input, 25 hidden units
 mlp:add( nn.Tanh() ) -- hyperbolic tangent transfer function
 mlp:add( nn.Linear(25, 10) ) -- 10 output
 mlp:add( nn.SoftMax() ) -- softmax output

このネットワークを,トレーニングデータに対する負の対数尤度を目的関数として訓練するには,

1
2
3
 criterion = nn.ClassNLLCriterion()
 trainer   = nn.StochasticGradient(mlp, criterion)
 trainer:train(dataset)

とするだけです.明解ですね.

“nn"パッケージには,約80種類のさまざまな Module (NNの層や目的関数に相当)が用意されており,これらを自由に組み合わせてネットワークを作ることが可能です. 行う価値や効率的な最適化法があるかどうかは別にして, add() を用いてどんどん繋げていけばいくらでも Deeeeeeeeeep にすることも簡単にできそうです.

学習過程の制御

基本的には以上なのですが,最近の Neural Network の訓練で必須になってきている mini-batch や momentum のような技術を用いたり, 準ニュートン法や共役勾配法などのより高度な最適化を行うために,より細かく学習の制御を行う方法も用意されています.

1
2
3
4
5
6
7
8
9
10
 parameters,_ = mlp:getParameters()
 feval = function(x)
           -- input : 入力事例テンソル , target : inputに対する正解ラベル(一般にはテンソル)
           local output = mlp:forward(input)     -- 前向きに伝播させて,出力を得る
           local f      = criterion:forward(output, target) -- 決められた Criterion の元での目的関数の値を計算
           local df     = criterion:backward(output, target) -- 勾配を計算
           return f, df   -- 目的関数の値と,その勾配を返す
         end
 optim.lbfgs(feval, parameters) -- parametersを更新
 --(注意)細かい部分を省いた擬似コードなので,このままでは動かないと思います XD

というように,現在のパラメータの元での目的関数の値と,その勾配を返すようなクロージャを作ることで, “optim” パッケージで用意されているさまざまな最適化アルゴリズム(SGD, AdaGrad, L-BFGSなど・・・)を用いることも可能です.

本稿では触れませんが,module:forward(), criterion:backward() でネットワークの出力,勾配を得て module:gradUpdate() で直接更新するという手段も用意されています.

ためしてみる(数字認識タスク)

ここでは, Machine Learning with Torch7 で用いられているチュートリアルコードを実際に動かしてみます.

1
 git clone https://github.com/clementfarabet/torch-tutorials.git

でお手元にクローンして, 2_supervised の下にもぐってみてください.

1
 torch ./doall.lua

でデータセットのダウンロードを含めた実験スクリプト全体の実行が始まります.初回は 300MB くらいのファイルをいきなり wget しはじめるのでご注意ください.

ここで扱っているのは, Street View House Numbers (SVHN)Datasetという, カラー画像から数字を認識するタスク,Format 2(32x32の画像)のほうです.

1
 torch ./doall.lua -size small -model linear -batchSize 100 -plot

とかすると,ごく普通の線形モデルでの最適化が始まり,その過程が gnuplot でプロットされていきます.

2_model.lua には線形モデル(linear),隠れ層1層のニューラルネット(mlp),2-stageのたたみこみニューラルネット(convnet) が定義されており, -model オプションで切り替えることが可能です. おフロに入っている間,40分くらい回した結果は以下のような感じです.

  • mlpモデル

  • convnetモデル

うーん,mlpはまだまだ伸びそうだなぁ.convnetは局所解につかまってしまったのでしょうか.時間切れにつき,あまり直感に沿った結果は出せませんでしたが,学習によって正解率が向上している,ということは一応みてとれます.

Torch7 をより深く知るために

最後に,いくつか資料へのリンクをまとめておきます.

メイン開発者の Ronan Collobert 氏による Torch7 の解説です.ソフトウェア全体のアーキテクチャや, Lua を採用した理由,実際のパフォーマンスなどがまとめられています,

上に挙げたチュートリアル資料です.Auto-Encoder のサンプルや,新しいモジュールのプログラミング方法など,本稿では触れられなかったトピックが盛りだくさんです.これを遊んでみるだけで年を越せるかも・・・

流量はさほど多くありませんが,盛んに開発中のソフトウェアですので,こちらを追うことも重要かと思います.

@0kayu さんによる,Pylearn2を中心としたディープラーニングの実装に関するよいまとめスライドです.

そもそもなんで自然言語処理においてニューラルネットが流行ってるの?というあたりに焦点を当てた資料です.ガッツリ!

まとめ

Lua を用いて Neural Network を簡単に構築できる, Torch7 というソフトウェアを紹介いたしました.

Theano ひとり勝ちというのはいかにもつまらないので,皆様にお手にとって頂くきっかけになれば幸いです.

Deep Learning : Bengio先生のおすすめレシピ

先日,身内の勉強会(&ラボの勉強会)で,Deep Learningについてお話してきました.これまで興味がなさそうだったのに何故急に?というのはおいておいて.

紹介したのは,Deep Learningの第一人者のひとり, Yoshua Bengio先生自身が執筆された,以下の論文.

どうやら書籍の草稿のようで,Bengio先生の長年の研究で得られたさまざまなノウハウ(最近の手法まで)がぎっしり詰め込まれています.すごい.

以前から気にはなりつつも,ちょっと分量が多い(30ページくらいある)ので,なかなか手を出すことができなかったのですが,ようやくヤル気が出てきたので,ちょっとがんばって読み込んでみました.

スライドも置いておきます.50枚くらいあります(作るのしんどかった・・・.

Deep Learningは,その性能の高さから各所でブームになっていますが,実際に手を出してみるとハイパーパラメータがやたらと多く,最適化も難しい,ということで,使いこなしにくい技術になってしまっている感があります.

この記事では,Bengio先生が長年蓄積されたきたノウハウをもとに,

  • どんなハイパーパラメータがあるか
  • どのように最適化すればよいか
  • うまく動かないときは,何をチェックすればよいか
  • 学習の結果得られたネットワークを解釈するための可視化の方法

など,実問題に適用する場合に役立つ,様々なアドバイスがまとめられています.

特に興味深かったのは,ハイパーパラメータはグリッドサーチするのではなく,ランダムサンプリングしたほうが性能が出る場合が多いよ,という知見.

何故なのか,というのは,スライドを見ていただいたり,以下の文献

を読んで頂ければ合点がいくのではないかと思います.

これが機械学習一般に対して言えるか,というと必ずしもそうではなく,SVMのようにハイパーパラメータが少ないモデルでは成り立たないのではないかとは思いますがが,なかなか衝撃的な事実です.は〜グリッドサーチとは一体なんだったのか.

この論文を読めばDeep Learningが自在に使えるようになる,ということは無さそうですが,上手くいかず悩んでいる方がいらっしゃいましたら,少しでも参考にしていただければ幸いです.


ところで,ふだんはPowerPointを使ってスライドを書いているのですが,今回はBeamerを使って作ってみました.まじめに使ったのは初めて.

PowerPointと比較すると,以下のような感想を持ちました.

  • あらかじめ用意されたスタイルから逸脱したことは非常にやりにくくなっているので,よくある「文字が小さすぎてギッシリ」みたいな読みにくいスライドは作りにくく,結果として読みやすいものができあがる
  • タイプセット&PDF生成に時間がかかるので(今回の場合,最終的に20秒くらいかかるようになってしまいました),枚数がふえるとけっこうイライラ(要素の位置をちょっと調整する,とかで20秒かかるのはアホらしい)
  • 図を入れるのがめんどい.PPTならコピペでよいところが,キャプチャしてバウンディングボックス作ってincludegraphics…
  • 要素の入れ子の嵐になる(PPTならタブ一個でいいところが,itemize環境の追加になる)ので,可読性に劣る
    • Markdownとかから変換できればいいな〜
  • TeXの(バッド)ノウハウ・・・

全体的に,準備に時間がかけられて,かつソコソコ長いプレゼン(20枚〜)であれば,使う価値はあると思います(ただしTeX慣れしてるのが大前提)

ただ,長すぎるとタイプセットの時間でイライラするようになるので,一長一短ですね.

公式のリファレンスマニュアルは異様に詳しいのですが,どう見ても入門向きではないですし,読む気も起きないと思いますので,まずはA Beamer Tutorial in Beamerあたりを参考にされるとよいのではないかと思います.

第5回 最先端NLP勉強会に参加してきました

もう一週間ほど前になってしまうのですが,最先端NLP勉強会 という会に参加させていただきました.

じつは昨年も参加するべく申し込みまでは行ったものの,事情があって参加できず.今年はなんとかリベンジを果たせました.

二日間で30本もの論文を読むこの勉強会,読む論文の選出プロセスにも工夫が凝らされています.

  1. 参加者全員が,対象となる会議の予稿集に目を通し,面白そうだと思った論文数本(今年は12本)に対して投票を行う.
  2. 多くの票を集めた論文,上位30本ほどを候補とし,参加者はその中から自分が紹介する論文を選ぶ.

という二段階をとっているので,いわゆる「ハズレ」な論文が少なくなっており,どの発表もたいへん勉強になりました.


私が紹介したのは以下の論文,

発表スライドはそのうち公開されるような気もしますが,今のところ認証が必要みたいなので,私のぶんだけ. 他の方の発表がすばらしいものばかりで,ちょっと手抜きすぎな感じがしたので,発表時のものから大幅に加筆しています.英語がおかしいのには,目をつぶってください・・・.

以前紹介したGraph Connectivityに基づくWSDの論文と同じ,Roberto Navigliのチームによる論文です.

WSDの論文というよりは,文間の意味的な類似度を精度良く求めるために,WSDを活用する,という主旨.いちおう,WSDのための新たなアルゴリズムも提案していますが,そちらは限定的な状況を想定しているため,直接一般のWSDに適用するのは難しいかも.

この論文の優れているところは,語義(WordNet上の一つのSynset),単語,一つの文,(論文中では書かれていませんが,おそらくドキュメント全体も)といった,さまざまな粒度の言語的要素を,ひとつの表現(WordNet Synset上の確率分布)で表すことができる,というところ.

アイデアは単純で,文(とか単語とか,意味表現を求めたい言語要素)を語義の集合にバラして,それを種として,WordNetのグラフ上をランダムウォークさせる,というもの. ただ,多義語が含まれる場合は種にノイズが混ざってしまうので,それをWSDで解決してから,グラフにつっこむという解決策を提案しています.

WSDのアルゴリズムは,Yarowskyのアルゴリズムなどと同様に”one sense per discourse”仮説に立脚したもので,二文それぞれが近い意味になるような語義の組み合わせを二文間のアラインメントで探索する,というもの.べつにこの方法でなければならない,ということもなさそうですが,もともとの目的が”文間の意味的な類似度”ですので,対になる文が意味的にだいたい似ている,ということが仮定できる状況下では,有効な方法に思えます.

ツッコミどころはいっぱいあって,例えば語順とか構文のような,文全体の意味を決めるのに重要な要素を捨象してしまっているとか,マルチシードのランダムウォークって,それシード一つのランダムウォーク単純に重ねあわせただけなのでは,とか,

勉強会での説明のときは,この論文が主に「文間の意味的な類似度」に最もフォーカスを当てていることがうまく説明できなかったのですが,帰りの電車でうんうん唸りながら考えて,ここに焦点をあてて説明すれば良かったな,と帰宅してからチマチマスライドなおすなど.


その他,勉強会で紹介していただいたものの中で,いくつか気になった論文を.

CCGパーシングに,distributional semanticsを結合する,という話.CCGのpredicateに,大きなコーパスをクラスタリングして得られたentity(項)とrelation(述語)を統合する,という研究.LogicとDistributional Semanticsは,それぞれ別個に発展してきているので,それらを一度まとめて考えてみよう,というモチベーションがありそう.組み合わせることで何が新しく解けるようになるのか,というのはまだオープンプロブレムみたい(そもそも,評価に使えるデータがない?)だけれど,今後が楽しみ.

ルワンダ語とかマダガスカル語のような,電子的に扱える言語リソースが限られている語に対して,いかに小さな労力で品詞タガーを学習できるか,という問題を扱った研究.小町さんの日記に大まかなストーリーが書いてあるのでそちらもご参照ください.個人的には,生のコーパスにアノテーションを付与するよりも,同じ時間であれば辞書のエントリ数を充実させたほうが若干性能が良い,つまり,語間のマルコフ性に関するデータよりも,語自体の品詞情報のほうが(人手のラベル付けにおいては),時間に対するコストパフォーマンスが良い,というのがなかなか興味深く感じました.

オンライン学習を並列化するためには,それぞれのノード間でパラメータを共有する必要があるのだけれど,そのタイミングをうまく調節することで,スケーラブルにしよう,という研究.とくに構造学習においては,デコード(新しいデータを評価してみて,パラメータの更新が必要かどうか判断する)というフェーズに時間がかかることが多いのだけれど,これはそれぞれのデータに対しては独立に行える(並列化できる).しかしながら,間違えたたびにパラメータの更新を行っていてはオーバーヘッドが大きすぎるので,途中で間違えたとしても気にせず数事例まとめて評価する(ミニバッチ)ことで,パラメータの更新回数を少なくしよう,というアイディア.うーんうまく説明できないのですが,ミニバッチ,という考え方は Deep Learning でも重要とされていて,完全なオンライン(SGDとか)安定して収束しない,完全なバッチ(BFGSとか)だとメモリがキツい,みたいなときによく使われているので,おさえておいて損はなさそう.

実世界の物体(クマとか,カップとか)と,テキスト上に現れる Bear, Cup などをうまく結びつけよう,という研究.SIFTとかHOGといった,CVの研究においてよく用いられている特徴量ではなく,「クマは茶色い」「クマは四本足だ」などといったような,より高レベルな特徴量(Visual Attributeと呼ばれています)を用いる方法を提案.この高レベルな特徴量は,人手で用意する必要があるようなのですが,画像の特徴と,テキストの特徴を結びつける,という話はなかなか興味深く感じました.


全体としては, Grounding(実世界との対応付け?うまい日本語訳が分かりませぬ) がジャンルとして大きな注目を集めているという印象を受けました.マルチモーダル!

道具としては,CCGはもう何処にでも出てくる感じ.CFGなどの伝統的な文法に比べて,どの辺に利点があるのかイマイチ分かっていないので,よく勉強する必要がありそうです.

かなりムシムシする部屋に二日間缶詰になっていたので,汗かきな私にはちょっとシンドイ感もありましたが,みなさま質の高い発表ばかりで,とても楽しい時間を過ごすことができました.幹事のみなさま,発表者のみなさま,どうもありがとうございました.

あわせて読みたい: