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

ブログではないです

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

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

COLING2016 2日目


Tutorial T-5

Translationese: Between Human and Machine Translation [Shuly Wintner]
スライド

機械翻訳と、Translationese(翻訳された文章の文体含む特徴)についてのお話。 (人手で)翻訳された文章(以下translated, [T])は元々その言語で書かれた文章(original, [O])と比べて語彙のバリエーションに乏しくなる・シンプルで汎用的な表現を好む・句読点や括弧が多くなる、などといった特徴がある。そうした要素に注目した研究。

Text Classification

まずはtranslated / originalの分類タスクについて。 上記で述べたように、translatedではoriginalと比べて文体が独特のものとなるので、その性質を捉えうるようなfeature (文の長さ・content-wordのカウント etc.. ) を列挙して分類し、accuracyで比較している。 結論を言うと、original / translated 間の単語の出現パターン (スライドp37、単語のランクとPMIをプロットしたもの) が結構近い形をしてるにも関わらず、 単語・文字のuni/bi/tri-gramなどを使ったSVMでin-domainの文章に関してはほぼ完璧に解けてしまう。 一方、out-domainの文章に関しては60~70%前後。

また、教師なしの方法についても紹介している。 Function words / (Char or POS) tri-gram などをfeatureとしてクラスタリングした後、そのクラスタ内のテキスト・対象ラベルのテキストを使って言語モデルを訓練し、そのJensen-Shannon divergence (JSD) によって各クラスタがOriginal / Translated のどちらに対応するかを決める、というもの。精度は使うfeatureによって89~96% くらい。

<memo>
INTERFERENCE - 原言語側の性質が翻訳結果のフレーズの現れやすさに影響を及ぼすこと。 例えば英語ードイツ語間の翻訳を考えた時、"one is" は英語で生じやすく、"doch" はドイツ語で生じにくい。 前者については元となるドイツ語側で"Man ist" というそのままの表現が存在するため、一方後者は"doch"という言葉がドイツ語側で様々な使われ方をするので英語側ではこの表現、というような一対一対応を取りにくいから。 翻訳された文章のn-gram特徴量などでcaptureできる、と述べている。

ここから機械翻訳の話。実験はMosesでやったらしい。

Language Models

機械翻訳における言語モデルの工夫。前述した通り、Original / Translated の文体の違いを考えると、言語モデルは対象言語の文章(Original) から構築するよりも、翻訳後の対象言語の文章(Translated)を用いて構築したほうがいいのではないか?という話。ある種のdomain adaptation。 実験の結果、全ての言語についてその方がBLEUスコアが良くなっている。(下図はスライドp79より)

f:id:jack_and_rozz:20161212131310p:plain:w500

Direction Matters

もう1つ面白い実験として、パラレルコーパスを元がどっちの言語だったか、で分けてモデルを訓練して、翻訳の方向性の精度への影響を見ている。 つまり、英語 -> フランス語の翻訳モデルを訓練する際に
(a)英語をフランス語に翻訳したコーパス (b) フランス語を英語に翻訳したコーパス の2種類で訓練したモデルのBLEUを比較する。

まあ当然 (a) の方が良いわけだけども、ではコーパス内の各翻訳対が (a) なのか (b) なのか分かっている場合、単に全部一緒に使う以外にこのコーパスの翻訳方向を考慮してより良い結果を得ることが出来ないか?という話になる。そのための手法として別々にフレーズテーブルを作る、コーパスの翻訳方向をfeatureとしてそのまま渡す、などの手法について実験して比較している。
結局これもdomain adaptationの一種で、ドメインごとに訓練するか・ドメインの違いをfeatureとして与えるかという部分に帰着するのだと思う。

Cross-Classification

Interferenceの例のように原言語側の性質が翻訳後の文体に影響するのだとすると、翻訳前の言語が近い場合翻訳後の文章も近いものになると考えられる。 英語の文章に対するO/T分類タスクの話に戻り、「言語Aから英語に翻訳した文章」の分類を「言語Bから英語に翻訳した文章で訓練した分類器」で行う。 その結果は以下の通り(スライドp94より)で、言語学的に近い言語同士は翻訳後も似たものになる事が確認出来た、という主張をしている。

f:id:jack_and_rozz:20161212131644p:plain:w200

それに加えて、ヨーロッパ系の14の言語から英語に翻訳したものを用いて、それが元々どの言語から翻訳されたかを推定するタスク(精度は76%程度) や、翻訳後の文章に対して階層的クラスタリングを行うと、言語学的に近い言語同士でそこそこまとまるようなツリーが得られた、というような実験も紹介していた。

COLING2016 1日目

内容の簡単なメモ、覚えておきたいこと、感想など。
聞きながら書いてるのでところどころ怪しいかも。


Tutorial T-2 : Chinese Textual Sentiment Analysis: Datasets, Resources and Tools [Lun-Wei Ku and Wei-Fan Chen]

スライド

中国語の評判分析に関する話。講演者が開発しているCSentiPackage内のCopeOpi ・UTCNNというツールで用いた手法とその効果についてが主。

前半はSentiment Analysisの基本的な話。そもそも分析結果をどう表現するのか? ラベル(ポジネガ、sentiment or non-sentiment)にclassificationする、 valence-arousal で表現するなど。
ラベル付けの単位についても。document, passage, sentence, wordと細かくなるほどアノテーションされたラベルは少なく、単語(文字)数も少ないため解析が難しい。

関連研究紹介。昔はSVMでやっていたが,近年はやはりDNN-basedな手法が人気。 attention + LSTMの定番パターンとか、sentence-embeddingを用いるとか。最近のキーワードはこんな感じ。
aspect
・domain adaptation for cross-domain/lingual
・DNN vs linguistic features
fine-grained
・crowdsourcing

その後で本題のCSenti packageについて。 前半はCopeOpiについて、中国語の性質と絡めた分析についての話(segmantationが必要だとかmorphologyの構造だとか)と、各種手法の組み合わせによる精度比較。

後半はCSentiPackageのUTCNN (User Topic Comment Neural Network)というモジュールについての話。この辺りちょっと面白かったので詳しめに。

FBFansというデータセットを用いて、FBの投稿とそれに対するコメント・投稿者やいいねを押した人、コメントをした人がどのような人かなどの情報からラベル推定するというもの。 基本的にはCNNで投稿文の各単語のword-embeddingを適当な単語幅のフィルタにかける。
その際に、Author / Commenter / Liker / Topic (from LDA) など、注目する各ドメインに対して Matrix / Vector でembedding layerを準備する。
その後、投稿の内容であれば「投稿者 + いいねをした人」のembedding(Matrix) それぞれをMax-poolingすることで、その投稿に関する人全体についてマイルドに表すようなembedding(matrix) が構築される。そのmatrixを用いて投稿文中の単語に対して、窓幅Nで word embeddingを変換してCNNのフィルタに通し、あるドメインから見た時の文書の意味表現を構築している。

以下が全体図 。(配布スライドのp87より)

f:id:jack_and_rozz:20161211112400p:plain

色々工程を踏んでいるので複雑になっているが、結局 * 注目するドメインに関して Matrix or Vectorの Embedding Layerを用意
* 複数ドメインが関わる(複数のトピック、複数の人間)場合、Max-poolingして調整
* 投稿文・コメント等の各単語について、ドメインごとのEmbedding(Matrix)に通して変換して分散表現を構築してconcat
* 投稿文だけじゃなく、Embedding(Vector)そのものもついでに最後のfeatureにくっつける

ということを全体としてはやっているように見える。

既存手法との比較とfeatureの有無による結果は以下の表。(スライドp88より) f:id:jack_and_rozz:20161211132758p:plain

domainのembeddingとしての取り入れ方に興味を引かれた。ユーザの違いという陽に与えられるドメインが存在する時に、それをどう取り入るのがベストなのか?vectorのembeddingとして扱って、どこかのレイヤにconcatしてやるべきなのか、matrixとして扱って各単語の畳み込み方を変えるべきなのか。今回はfeatureの比較はしているもののモデルの構造的は上記を全部やってる感じ。個人的にはそこが知りたい。

ただ、そもそものモデルとして画像と違って直接の入力に2次元的な広がりが期待されないテキストにCNNを使う、という部分がどうもやはり馴染めない・・・。複数ドメインのEmbeddingを調整する部分も、max-poolingするというのはCNNを使ったテキスト処理では一般的なのだろうがどうも乱暴に見える。まだaverageした方が良いんじゃないのか?

質問したら、LSTM系列でも恐らくそんなに変わらない性能が出ると考えている。ただ、N-gramに区切ってCNNを使ったほうが訓練が速いので、今はそうしているというようなことを言っていた。


Tutorial T-4 : Quality Estimation for Language Output Applications [Carolina Scarton, Gustavo Henrique Paetzold, and Lucia Specia]

スライド

parsing / translation・summarization(simplification)etc...といったNLPタスクの出力に関する自動評価について、shared taskの結果など参照しながらの話。 NLPタスクにおける出力結果に対してきっちり定まる数値評価が可能な指標、例えば翻訳であればBLEUなどが挙げられるが、そうした指標の下での数値的な改善が必ずしも人間の感覚での改善と一致するとは限らない。しかし逐一人手で評価するにはあまりにコスト高だというジレンマがある。 そのため翻訳・要約などの出力文に対して人間がどう評価するかを予測する事を目標としたタスク。

QATS 2016 shared taskという初のsimplificationに関する自動評価タスクが開催されたらしい。評価は出力されたテキストの5段階評価のregression, もしくは good/ ok/ bad の3段階clasifficationなどで。

自動評価システムのために必要なコンポーネントは以下のように分類される、と述べ、 Sentence, Word, Documentといった異なる長さのテキストに対するアプローチを検討していた。

  1. Definition of quality: what to predict and at what level ( Word/phrase, Sentence , Document , ...)
  2. (Human) labelled data (for quality)
  3. Features
  4. Machine learning algorithm
sentence-level QE

翻訳を始めとして一番主流なNLPタスクの出力結果。 出力の質に対して1~5のラベリングをして、QE結果と人間のラベルとの相関係数を見ている。 モデルとしてはSVMなどのkernel-basedの方法が多い。NN系はデータの少なさからまだなかなか訓練が難しくなる。 といってもPredicting HTER(Human-mediated Translation Edit Rate) @WMT16 の結果では結構RNNとSVMのハイブリッドな手法が上位にちらほら。

word-level QE

一部のアプリケーションではより細かな、例えば文の中で翻訳結果が怪しい場所にハイライトしたい・・・などのような時に単語レベルでQEしたい場合がある。文に比べてよりスパースになるので、当然さらに難しくなる。 出力結果に対してその単語をそのまま出力してよい = OK , 単語の置換 or 挿入が必要 = BAD の2値ラベルを推定して、gold standard とのF1値を比較。

モデルは
* それぞれの単語を独立にclassification
* CRFなどによるsequence labelling
* featureをまとめてNNで
などが考えられる。

Document-level QE

sentence-levelでのQE結果をシンプルに平均を取るなりすればDocument-level QEになるのでは?という考え方もあるが、ある出力文が完璧でも全体として意味の分からない文書になってしまう場合や、その逆などが十分に考えられる。そのため、今回featureとしてはこれまでの単語レベルでの並びやカウントに加えて、談話構造に関する情報(EDUやRSTのrelation)も用いている。

またターゲットととなるラベルについて、文の質の1~5段階などで数値化などといったものは元々主観的な指標であるが、Document-level QEのようにその長さから人手によるラベル付けのコストが大きい場合、よりばらつきが大きくなってしまう。既存研究ではBLEUやMETEORの値を推定する事を目標とすることが多いらしいが、こうした数値は文書全体の良し悪しとは独立に決まる指標であり、文書内の文脈や談話構造といったものを考慮できているかと考えると理想的なものとは言えない。
そのためここでは、出力結果に対する人間の編集率 HTER(Human-mediated Translation Edit Rate) を用いる事を提案している。 ラベルは文脈・編集順序に関わらずその文単体として修正されたものを  PE_1 、他の文との文脈との兼ね合いでさらに修正されたものを PE_2 としている。細かい基準・ラベル付けの手順は不明。

最終的なスコアはスライドによると以下の式。この辺り理解がかなり怪しい。

{ \displaystyle
w_1 ・ PE_1 × MT + w_2 · PE_2 × PE_1
}

MTはHTERの値、 PE_1, PE_2 は文脈に依らない・依る編集があったかどうか(0/1が正解ラベルとして入る?)だと思うのだけどちょっと自信がない部分。 このスコアについての推測値と実際の値の相関係数によって自動評価の精度を評価している。