読者です 読者をやめる 読者になる 読者になる

ブログではないです

読んだ論文と実験・研究のメモ書き

Overcoming catastrophic forgetting in neural networks [Kirkpatrick+, arXiv'17]

解説スライドを見つけたのでメモ。

以前読んだ論文でもそうだったが、Multi-task Learningにおいて普通にそれぞれのタスクの最適化をしてしまうと前のタスクの情報を忘れてしまう、そのためにどうにかして前のタスクの重みを覚えておこうという話。
全タスクを含むデータの分布Dとパラメータ{ \displaystyle \theta}に対して最適化対象となる

{ \displaystyle
\log p (\theta| D) = \log p (D|\theta) + \log p (\theta) - \log p(D)
}

はタスク別にデータを考えた時ベイズの定理から

{\displaystyle \log p (\theta| D) = \log p (D_B|\theta) + \log p (\theta|D_A) - \log p(D_B) }
となる。第三項はconstとして無視,問題は第二項をどうするかだが[MacKay+, ‘92] によるとそれぞれのタスクAを訓練した後のパラメータ{ \displaystyle \theta^*_A} を平均としたガウス分布を仮定し,フィッシャー情報行列Fでこの項を近似する。最終的な目的関数は以下のようになるらしい。

{ \displaystyle
L(\theta) = L_B (\theta) + \sum_i {\lambda \over 2} F_i (\theta_i - \theta^*_{A,i})^{2}
}

実験ではMNISTの手書き数字認識タスクで評価。ピクセルをそれぞれのタスクごとに共通のランダムな置換パターンを用いてシャッフルして,擬似的に複数のタスクを作っている。結果は以下の通り。図Aでは普通にSGDした場合とL2正規化をかけた場合と提案手法(EWC)を比較。L2正規化の場合は逆に制限が強すぎて新しいタスクについて学習されない。図BではEWC, single taskの場合, [Goodfellow+, ‘14] の手法の比較.
また,この手法で結果的に得られたネットワークはそれぞれのパラメータがどちらにも使えるような形で学習されているのか,それともタスク間で使うパラメータを上手いこと分けているのかを確認するためにタスク間でのoverlapを図Cで確認している。(Fisher overlap についてはAppendix参照) 置換したピクセル数が多い(=それぞれのタスクが異なる)ほど低レイヤでのoverlapは低くなるが,出力ラベルが各タスクで共通のため高レイヤではoverlapが大きくなるのではないかとのこと。

f:id:jack_and_rozz:20170509165622p:plain

また、MNISTだけではなく最近盛んなDRLでAtariを解くタスクでも手法の評価を行っている。この辺りあまり詳しくないので採用している既存研究の手法との絡みが分からなかったが、グラフを見る限り明らかに上手くいっているっぽい。 フィッシャー情報行列で近似できる云々の根拠がよくわからなかったので要確認。

MULTI-TASK SEQUENCE TO SEQUENCE LEARNING [Luong+, ICLR'16]

概要

元論文

前回に引き続きニューラルネットによるmulti-task learningもの。 橋本さんの論文中のモデルでは各タスクを1つずつ解き状態ベクトルを後段のタスクへと渡していく構造であったが、 それに対してこのモデルではEncoder-Decoderモデルで解けるそれぞれのタスク間でEncoderやDecoderを共有することでmulti-task learningを行っている。

実験では
1. Encoderを共有してtranslation, parsing, unsupervised taskを解く(one-to-many)
2. Decoderを共有してtranslation ,image captioning, unsupervised taskを解く(many-to-one)
3. タスクによってどちらかを共有してtranslation, unsupervised taskを解く(many-to-many)
の3種を試している。論文中の図が分かりやすい。

Unsupervised taskとしてはauto-encoderやskip-thoughtを試している。skip-thoughtって何?と思って調べると Skip-thought Vectorsに関する解説記事 があった. 複数文からなる文章を入力として取り、Encoder-Decoderモデルである文をEncoderで読み込んだ後Decoder側でその前後の文を生成するモデルを学習することで文ベクトルを構築するとか。

学習の際はハイパーパラメータとして各タスクがどれだけ学習されるかの比率を設定した上で、それぞれのタスクを切り替えながら行う。(大きい方に対して1x, 0.1x, 0.01xで比較)

結果としては、多くの場合multi-taskで解くことによって結果は改善されている。ただし比率によってはデータがそこまでないタスクが頻繁に学習されて過学習っぽくなってしまったいる場合も。 また、one-to-manyモデルにおけるautoencoderタスクによるtranslation, parsingの改善は特に無かったらしい。autoencoderの導入によってEncoderが出力する意味表現が頑健なものになるんじゃないか、との考えは前からあったのでこれは意外な結果。

一方、many-to-manyモデルではunsupervised taskの導入によって改善している場合も。ただしautoencoderとskip-thoughtでその様相は異なり、 autoencoderではtranslationに対して小さめの方が精度が上がるのに対してskip-thoughtではtest pplは近いほど良くなるが,BLUEはむしろ下がってしまう。 筆者の考えとしてはskip-thoughtsはある文の前後の文を予想するタスクであるため、Encoder-Decoder間で同じ意味の文を扱うtranslationとタスクが異なってしまっている事が原因だろう、と述べている。

データ量に差があるタスクならともかく、unsupervised taskのデータ量はかなり大きめで、タスク間でDecoderを共有していないにも関わらず比率をメインのタスクよりもかなり小さくしたほうが良い、というのもうーん?この辺の比率をパラメータサーチしたくないよなあ・・・

雑感

Decoderを共有する(Many-to-one, Many-to-many)モデルではEncoderから異なるタスクの似たような文が与えられた際、文自体にはどのタスクの入力かの情報がないのでどのタスクのDecodeをすればいいのか混乱するんじゃないか?という気もする。Google’s Multilingual Neural Machine Translation System: Enabling Zero-Shot TranslationのようにタスクのシンボルをEncoderに加えるとかすれば結果が良くなったりしないだろうか。

A Joint Many-Task Model: Growing a Neural Network for Multiple NLP Tasks [Hashimoto+, arXiv'16]

概要

元論文

鶴岡研の橋本さんの論文。単一のモデルで複数タスクを同時に解く事で全体性能を向上させる話。 対象とするタスクは基礎的なものから順に POS Tagging, Word Chunking, Dependency Parsing, Semantic Relatedness, Textual Entailment.

モデルの構造としてはある文中のcharacter-n-gram-embeddingとpre-trainingされたword-embeddingを入力として取り, 複数タスクのうち基礎的なものから順に解いていき,各タスクの内部状態が後段へとフォワードされる事で品詞を考慮して係り受けを解析する、とか係り受けを考慮してRTEを解く、といったような効果を狙っている。詳細は論文の図参照。結果,全部繋げたモデルがどのタスクでもsotaかそれに近い精度を出している。

訓練時はそれぞれタスクごとに異なるデータを使って基礎的なものから順に訓練していき,あるタスクを訓練・テストするときにはその前段のタスクについては正解ラベルを必要としない。また、後段のタスクを訓練した事による前段のパラメータの変化の大きさを損失関数の中にペナルティとして加える事で,例えばDependencyタスクの訓練をすることで前段のChunkingタスクに関するパラメータが大きく変わってしまい性能が悪化する、というようなことを防ぐようにデザインされている。

雑感

マルチタスクを単一のモデルで解くことでそれぞれのタスクの性能向上が見込める、という説には直観的にも非常に同意。特にデータが少ないタスク(本論文で使っていたSICKデータセット(RTE)は全部合わせて10,000行程度しかない)では不可欠になると思う。 微妙に気になったのは最適化の方法。あるタスクの学習による他タスクのパラメータの変化をペナルティとするのは、単一モデルで複数タスクを実行する事で相補的に知識を学習しよう、という目的と矛盾していないだろうか?(そうすることで少し抑えた方が結果的に良かった、ということなのだと思うが) これは1タスクずつ最適化を行っていることに起因する問題だと思うので、それぞれのタスクの損失を重み付け和するなどの方法で同時最適化する事でどうにかならないだろうか?

ちなみに語彙の構築時は単一コーパスだと頻度上位◯◯語、という方法を取るのが普通だと思うのだが、 こういうサイズの異なる複数のコーパスを単一モデルで使う場合はどう定めているのだろう?

COLING2016 6日目

Bilingual Autoencoders with Global Descriptors for Modeling Parallel Sentences (Biao Zhang; Deyi Xiong; jinsong su; Hong Duan; Min Zhang)

ある文を多言語で表した時(例:你是谁? <-> "Who are you?") 、それらの文にAutoEncoderを使って構築される分散表現をより近いものにしよう、という研究。そうすることによって、同じく対応し得る別の文と遠くなってしまう欠点はあるが・・・と言っていた。

まずタイトルにある Golobal Descripter とは、単語のembedding列から各次元の min/max/avg/std(standard deviation) をそれぞれ取り出す操作のこと。 提案手法では、AutoEncoder中で自身の min/maxをinputとしてavg/stdを出力とするタスク(もしくはその逆)を学習させている。 どうしてこうすることでAutoEncoderの学習がより良くなると思ったのだろう?よくわかっていない。

この設定のもと、筆者が行った工夫としては以下の2つ。
1. Decoder側のパラメタ(W, b)を言語共通にする
2. 両言語のベクトル空間全体(もしくはバッチ毎)の中心距離を最小化すること

1についてはそうすることで Encodeされた時点で言語共通のパラメタになっていなければいけない、という制約を与えることができ、ついでにDecode側の行列に対して与えられるデータも増える。 2についてはそもそも言語間での文の対応は一対一ではなく多対多なところがあったり、データ中でもきっちり対応関係が有るとは言えないものが大量にあるので文単位では制約として厳しすぎてノイズになってしまう。そのためバッチごとに緩く全体で距離を近づけており、そこも既存研究との違いだと言っている。

最終的な目的関数は以下の通り。 (論文式(10)より)

 E_{ae} がそれぞれの言語でのAutoEncoderの損失、

 E_{sem} が言語間の距離。

f:id:jack_and_rozz:20161216111358p:plain

Joint Embedding of Hierarchical Categories and Entities for Concept Categorization and Dataless Classification (Yuezhang Li, Ronghuo Zheng, Tian Tian, Zhiting Hu, Rahul Iyer, Katia Sycara)

Posterより。 ある単語が属するカテゴリについてもembeddingがあるとクラスタリングや学習の素性として便利なのでどうにかして作ろうというのがモチベーション。既存研究で提案されているCE(Category Embedding)Modelでは、Wikipediaの記事タイトルをTarget word ( e_t), 記事に含まれるentity (同じく記事が存在する単語) をContext word( e_c)とした時、 あるtargetの記事内におけるcontext wordの出現率に加えて、targetの記事カテゴリ( c_i) のもとでののcontext wordが出現する確率の和を最大化している。

f:id:jack_and_rozz:20161216132256p:plain
f:id:jack_and_rozz:20161216132300p:plain

これに加えて、カテゴリの階層的情報も考慮した HCE (Hierarchical Category Embedding) Model が提案手法。 やっていることは目的関数の中でtargetの上位カテゴリについても条件付き確率をそれぞれ計算して、重み付け和を取っているだけ。

f:id:jack_and_rozz:20161216133922p:plain

この重みをどう決めているかというと、target word/context wordのカテゴリは同じくらいの粒度で考えるべき、というアイディアからtarget wordのそれぞれのカテゴリについて、context wordのカテゴリとの階層の差に反比例する形で和が1になるように定義している。(つまりcontext wordについてはカテゴリの階層構造を考えていない?)

Neural Machine Translation with Supervised Attention (Lemao Liu, Masao Utiyama, Andrew Finch and Eiichiro Sumita)

Posterより。NMTでの入力単語へのAttentionは厳密には入力単語に対するものではなく (入力単語 + その時点までの入力の畳み込み) に対するものなので、 PBTモデルにおけるalignmentほどしっかり単語の並びを学習している訳ではない。AERを比較するとGIZA++が30.6%, NMTで50.6%と結構差が有る。 そこで、attentionの部分だけGIZA++の結果に対して教師あり学習してやるというのが提案手法。学習したweightは(おそらく)翻訳モデル全体の訓練の中では更新されない。
実際の翻訳システムでそれやるか?と聞かれるとうーんという感じだけど、NMTの中で最適化されたattentionよりもきっちりword alignmentを外部で学習した方が結果が良くなる、というのは面白かった。

A Character-Aware Encoder for Neural Machine Translation (Zhen Yang, Wei Chen, Feng Wang, Bo Xu)

入力とその前後の文字(窓幅  \tau )を重み付け+concatしてcontext vector  c_iを作り、

Sequence to Backward and Forward Sequences: A Content-Introducing Approach to Generative Short-Text Conversation(Lili Mou; Yiping Song; Rui Yan; Ge Li; Lu Zhang; Zhi Jin)

対話において、入力が十分な情報を持ってない・複数の応答が考えられる・汎用的な応答が単純に多く登場しているなどの理由から何を言っても 'I don't know. ' のような応答が返ってくる、という話は大きな問題となっており、Diversity-promoting objective function [Li+, '16]、Variational encoding the source [Serban+, '16] をはじめとして手法が検討されている。

この研究における手法としては入力文の各単語とのPMI平均が最も高いキーワード(名詞)を先に推定し、その後そのキーワードを起点としてRNNで前後の文を生成するというもので、3種類の生成方法を提案しており、3.のasyn-B/Fが最も自然だと考えている。

  1. sep-B/F:前の文・後ろの文を独立に生成する
  2. syn-B/F:前の文・後ろの文を1単語ずつ同時に生成する
  3. asyn-B/F :後ろ向きに生成した後、その文を入力して続きを前向きに生成する

(下図は論文fig1より) f:id:jack_and_rozz:20161216162549p:plain:w400

データセットについて

Chinese dataset of human conversation crawled from the Baidu Tieba1 forum. We used 500,000 query-reply pairs to train the seq2BF model

評価は人手評価・BLEU・生成文のEntropy平均で行っている。人手評価は0/1/2の3段階(Pointwise)と、純粋なseq2seqと比べてどっちが良いか(Pairwise)結果は下図。(論文table1より) )

f:id:jack_and_rozz:20161216162841p:plain

A Neural Network Approach for Knowledge-Driven Response Generation(Pavlos Vougiouklis; Jonathon Hare; Elena Simperl)

COLING2016 5日目


Fast Gated Neural Domain Adaptation: Language Model as a Case Study (Jian Zhang, Xiaofeng Wu, Andy Way, Qun Liu)

General-domain / in-domain で訓練したNNの出力(embedding、隠れ層など)がそれぞれある時に一般的なdomain-adaptationの手法としては * concat
* sum
* weighted concat
* weighted sum
などが考えられる。

提案手法のGatied adaptation ではGRUのゲートの調節を両方のベクトルの重み付け和で行い、 ゲートの解放具合によってin-domainのベクトルをgeneral-domainのベクトルを混ぜて用いる、ということをしている。評価は言語モデル

Phrase-based Machine Translation using Multiple Preordering Candidates (http://www.aclweb.org/anthology/C/C16/C16-1134.pdf)

Phrase-based MTで翻訳を行う際には対象言語へのそれぞれの単語の並び替えが発生する。 その際に並び替えのラティスを複数候補用意して、デコード時にはその確信度と合わせて生成を行う。 全体のラティスを一度に用意しているわけではなくて部分的な翻訳結果+パスの確信度を組み合わせていたようだが、その部分が一度聞いただけでは理解しきれなかった・・・。

Direct vs. indirect evaluation of distributional thesauri(Vincent Claveau; Ewa Kijak)

Word embeddingの評価方法についての論文。シンプルな方法としては他の類義語辞書などを使って似た単語のembedding同士が近くなるかを確かめるような方法(Intrinsic)が一般的。それは評価のために参照する単語間の関係が正しいものであるということが前提となっているが、それは必ずしも保証されるようなものではない。そのため、構築したembeddingを使った他のタスクによる評価(Extrinsic)を用いるべきだ、という主張。 実験でintrinsic / extrinsic な評価を色々試して比較している。

Time-Independent and Language-Independent Extraction of Multiword Expressions From Twitter(Nikhil Londhe; Rohini Srihari; Vishrawas Gopalakrishnan)

Twitterのようなコーパスでは"state-of-the-art" みたいに連語ハイフン繋ぎなんてしてくれないしその連語自体も辞書に無いような俗語が頻出する。特に、ハッシュタグとして登録される際に連語がバラけてしまう事が問題となる。こうしたものを検知したい。

手法としては単語の共起と頻度を元にグラフ構造を作り、よく出てくる組み合わせの中でもそれが検知したい連語(例:Hong Kong)なのか、一般的な熟語(例:is about to)のグラフなのかを区別している。下記のハイパーパラメータを元にエッジが張られているか・いないかの閾値を設定して、そのパターンからハッシュタグになりそうかつ連語になっている組み合わせを判別。この辺りの単語のエッジのパターンからどうグラフをバラしていくのか追いきれていない。

グラフの構築に関する以下のハイパーパラメータは普通に結果をプロットしながら探索していた。
• Enrichment parameter η : Determines which vertices in the current neighborhood will be considered
• Word rarity parameter ζ : Determines the level of rarity for a vertex to be considered
• Co-occurrence parameter κ : Determines the co-occurrence probability for an edge to be considered

COLING2016 4日目

今日は午前で終了。


CharNER: Character-Level Named Entity Recognition (Onur Kuru; Ozan Arkan Can; Deniz Yuret)

タイトルの通り、NERをChar-based RNNでやったという話。手法としては各文字をRNNに通す時に、その文字が構成している単語のタグ情報 (PER, ORG, LOC, ...)を文字と一緒に入力してやるというもの。テストの時には同じ単語の中で文字毎にバラバラのタグが出力される事も当然あるが、そこは多数決で決めるとのこと。

スライドでは微妙に分からなかったが、タグを入力として追加する時にどう追加してるんだろう?文字毎に(a_PER, a_ORG) みたいにしてるのか、それともtag-embeddingのようなものを用意して、入力とconcatしているのか。

[Building a Monolingual Parallel Corpus for Text Simplification Using Sentence Similarity Based on Alignment between Word Embeddings](Tomoyuki Kajiwara; Mamoru Komachi)

Poster発表より。 文のsimplificationタスク。ある文とその簡単バージョンを入出力とした翻訳モデルを訓練している。 その際に、input-output間の文の類似度を計算して、それが高いものを訓練に使うという工夫。 文の類似度についてはいくつか手法を比較しているが、良かったのは入力側のそれぞれの単語について出力側から最もembeddingのcos類似度が近いものを集めて平均を取るというもの(Maximum Alignment)。文中単語のembeddingを平均的に比較する(Average Alignment)よりもこのタスクではこっちの方が良かったとのこと。

Automatic Labelling of Topics with Neural Embeddings (Shraey Bhatia; Jey Han Lau; Timothy Baldwin)

文書に対するトピック分類、対象ラベルはWikipediaの記事タイトル。 Wikipedia中のタイトルをword2vec, 本文をdoc2vecでembedding化して入力文書と類似度比較(wordの方はtopic-wordだけ?)して、100候補くらい選出した後にそれを別の手法(いろいろfeatureを変えてSVR使っていた)でリランキング。

トピックに対して分類するというなら階層的・構造的に規定されたラベルである記事カテゴリの方が良いんじゃないだろうか(Wikipediaに記事が存在する単語の数レベルで細かくトピックの種類が欲しい場合ってどういう時だろう?)とも思ったが、既存研究でそうしているので精度比較がしやすいということなのだろう。

COLING2016 3日目

発表が短いので前2日より更に理解が合ってるか怪しめ。。。


Expanding wordnets to new languages with multilingual sense disambiguation [Mihael Arcan, John Philip McCrae and Paul Buitelaar]

面白かった。英語しかないwordnet を他の言語に翻訳する話。ただし単語は複数の意味(synset) を持つため、wordnet上での対応を取るのが大変。 手法としては、対応する言語との間でパラレルコーパスが存在しているという前提の上で 通常の翻訳システムを用いて対象となる単語を含んだ文を翻訳し、alignmentを取って単語単位での翻訳を行うというもの。この際、翻訳元で対象の単語がどのsynsetで使われているか分からないのでWSDも同時に行っている。

コーパス中で殆ど使われないような意味や、そもそも対象言語に単語として存在していないような概念はどうするのだろう?後者についてはwordnetを翻訳したいという話なのだから英語の概念の方に合わせる形になるんだろうか。

Generating Video Description using Sequence-to-sequence Model with Temporal Attention [Natsuda Laokulrat; Sang Phan; Noriki Nishida; Raphael Shu; Yo Ehara; Naoaki Okazaki; Yusuke Miyao; Hideki Nakayama]

ビデオのキャプション生成について。 [Venugopalan+'15] では動画の各フレームをCNNに通して全部まとめて(平均化?)1つのキャプションを生成。 ただ、「オーブンの中にパンを入れた」→「取り出した」みたいに、動画の中ではそれぞれの動作に繋がりがあるので、その順番も使いたい。 やってることは翻訳のattentionモデルを動画の時間軸に対してに対して適用する、ということだと思う。

生成結果を見せていたけど、普通に1動画1キャプションだったのでそのtemporal-attentionがどう効いているのかいまいち。 これはある動画の中でキャプションの切り替わりをする時に活きる話なんじゃなかろうか。

使ってるデータセットメモ
1. microsoft video descreption corpus
2. montrial video annotation dataset

Task-Oriented Intrinsic Evaluation of Semantic Textual Similarity [Nils Reimers; Philip Beyer; Iryna Gurevych]

STS (Semantic Textual Similarity) systemは数多く有るが、そのどれがいいのか、という評価は難しい。 ピアソンの相関係数が一般的だが、大きく外れた値があるとそれに引っ張られがちで今ひとつ信用ならない。 SemEval'12の結果を用いて、異なる2種類の評価指標を用いてシステムを評価した時どの程度順位が変わるかを示している。

筆者の主張としては、そもそもSTSを適用するアプリケーションによってその類似度が異なるのだから用いるべき指標もtask-orientedに決定するべきであり、3つの観点(Cardinality, Set of interest, Information) からどの評価基準を用いるか慎重に選択すべきだ、と述べている。 下図(論文table3より)は筆者が提案する状況毎に用いるべき評価指標。 (Pearson correlation, Spearman rank correlation, normalized (discounted) cumulative gann (nCG/nDCG), F1-scoreやその平均などから選択)

f:id:jack_and_rozz:20161214061005p:plain

memo: 実験に使ったコーパス
1. Wikipedia rewrite corpus
2. related article classification
3. related article retrieval

memo: SemEval'16 の結果を後で確認する, 追いきれなかったので後で論文読む

Exploiting Sentence and Context Representations in Deep Neural Models for Spoken Language Understanding [Lina M. Rojas Barahona; Milica Gasic; Nikola Mrkšić; Pei-Hao Su; Stefan Ultes; Tsung-Hsien Wen; Steve Young]

“i am looking for a moderately priced restaurant in the north part” → inform(area=north,pricerange=moderate)

のように、テキスト+その発話行為の情報(context)からなる連続した会話データに対してある発言をCNN, その発言以前のcontextをLSTMでエンコードしたものの重み付け和を取ってfeatureとして、そのテキストの発話行為の推定をcontextなし・あり・onlyの場合で比較。評価尺度はラベルに対するaccuracyやcross entropy.

自分も気になっていた、テキスト部分はCNNで解釈しているけどLSTMそっちでは使わないの?という質問があり、筆者曰く一方向に単語を巻き込んでいくRNNよりmax-poolingである種の構文木(というかフレーズパターン)をinduce出来るCNNの方が自然だと考えている、とのこと。自分はテキストにCNN使うのはキモくないか派だったのだが他にも結構CNNで文解釈する研究が多くてそんなもんか、という感想。

Asynchronous Parallel Learning for Neural Networks and Structured Models with Dense Features [Xu Sun]

面白かった。NNの訓練の際高速化のために非同期並列に計算したいが、NNのパラメタの多さからRead/Writeに時間がかかるため、かなりの確率でスレッド間で衝突が起こって勾配計算がおかしくなる。しかし実際にはまともに勾配計算出来ている部分とエラーを含んでいる部分が入り混じっており、そのエラー率が一定以内に抑えられるなら学習は収束する、という主張。スレッド数を増やしながら訓練時間と最終的なタスクの精度を比較した結果、精度は変わらず訓練時間が半分くらいになっていた。

Ranking Responses Oriented to Conversational Relevance in Chat-bots [Bowen Wu , Baoxun Wang, Hui Xue]

microsoftの人。一問一答だけではなくその前のやりとりも含めて考えるcontext-awareな対話応答選択モデル。contextはとりあえず1つ前の発話・応答だけに絞っている。
やっていることは
(a) context1,context2, query, response をNNでエンコード 。 queryを元にcontext1,2 に対して attentionする
(b) エンコードした文を時系列順にRNNに通す
の2つの操作でcontext含めた会話全体をvectorに落としている。詳しくは下図参照 (論文fig.2より)
f:id:jack_and_rozz:20161213175121p:plain

モデルの末端では通常のseq2seq的に言語モデルを構築しているのではなく、初めから応答選択に最適化している。 ここlossがどうなってるのか微妙に分かってないけど正解とダミー応答を混ぜて訓練して1/0のラベリングをしているのかな?

Given a sequence representation from conversation modeling, the candidate ranking module takes the full-connected layer to quantify the relevance of candidate responses. We employ the cross entropy as the point-wise ranking loss, and various ranking objective functions can be used to learn the parameters of the whole model.

評価についてはダミー応答を混ぜたテストセットに対して、応答が正解かどうかの分類テストのaccuracyの他に 1 in t P@k という評価尺度を使っていて、正解を1つ含んだt個の応答候補の中からk個選んだ時、正解がその中に入っている割合。 自分の研究でもほとんど同じ尺度で応答選択の評価をしていて、その評価の仕方はどうなの?みたいなことをたまに言われてきたので大手が名前を付けた上で使っていてちょっと嬉しい。

結果は以下の表 (論文 table.1)の通り。 (a) CNN with Attention + (b) GRUの組み合わせが一番良さそう。 f:id:jack_and_rozz:20161213175230p:plain