Hatena::Grouprekken

murawaki の雑記

2016-10-17

ニューラル機械翻訳と記号幻想の死

ニューラ機械翻訳が最近ひどいことになっている。科学技術論文の中日翻訳の結果を見て、ボスの中では機械翻訳はできてしまったことになっている。長年開発してきた用例ベース機械翻訳システムもあっさりお払い箱。しかしボスは満足している。既存研究の再実装にいろんなチューニングを加えただけで、論文にできるような新規性は何一つないにも関わらず。そのぶん、機械翻訳以外をやっている私たちへの風当たりがきつい。

そんなある日、AIが翻訳の不可能性に気付く日というブログ記事を見つけた。率直に言えば、懐かしさすら覚えるひどい代物。ここ2、3年ほどの機械翻訳研究をまったく追わないまま、聞きかじった話を適当に組み合わせるとこうなるのだろう。しかし、いままでぼんやりと考えていたことが、いい感じにツッコミどころとして配置されている。この機会に言語化してみようという気になった。なお、ブログ記事で引用されている文献は一切確認していない。

教師あり学習としての機械翻訳

ニューラ機械翻訳に限らず、機械翻訳の入出力は単純明快。源言語のテキストを入力として受け取り、目的言語のテキストを出力する。テキストといっても、現在のシステムの処理単位は基本的に文。

そうしたシステムをどうやって作るか。翻訳に必要な知識をどうやって計算機に教えるか。人間が翻訳規則を直接書いていた大昔ならいざしらず、現在は計算機自身に翻訳のための知識を獲得させる。そのために、源言語と目的言語の文ペアを大量に計算機に与える。日英や日中なら百万のオーダ。その大量の文ペアから、どういう入力に対してどういう出力をするかという対応を計算機が学習する。教師データと完全一致する文しか翻訳できないようでは困るので、ある程度汎化した形で対応を学習する。教師データから学習するので教師あり学習といえる。*1

では、教師データである源言語と目的言語のペアは誰が作ったのか。人間である。計算機は人間が翻訳した結果から学習し、その結果をもとに未知の源言語テキストを翻訳するのである。翻訳不可能性もへったくれもない。人間が、目的言語に等価な表現がなくて困り、適当な近似的表現を編み出していたなら、計算機はそれを学習する。それが計算機に期待された動作。源言語のテキストが表現しているものが、いままで人間が目的言語で表現したことないもので、翻訳に苦労することなんていくらでもあると思う。そんなものを機械翻訳が魔法のように翻訳してくれるわけがない。そんなことは期待されていない。実際、科学技術論文だけを与えて学習した中日翻訳システムは、「你好」すらまともに訳せない。

現状の確認

機械翻訳の従来の定番手法はフレーズベース統計的機械翻訳とよばれるもので、Google Translate の中身も基本的にはこれ。いわゆる深層学習とは無縁だったはず。

機械翻訳はそれなりに大掛かりなタスクであり、ニューラルネットワークが華麗に復活したあとも、しばらくはニューラルネットワークの使いみちはサブタスクを解くことだった。

やがて源言語から目的言語への翻訳をニューラルネットワークで一気に行うモデルが提案されるようになった。2014年が当たり年で、これこれは、精度的には従来手法を下回っていたものの、唖然とするほど単純なモデルでそれなりの精度を叩き出したことで衝撃を与えた。それまでは、機械翻訳といえば、頭の良い人が計算量の爆発と戦いながら、精緻なモデルを頑張って作る分野だった。*2 今までの苦労は何だったのか。

これらのモデルには長い文に弱いという欠点があったが、同じく2014年提案された改良版解消軽減されている。現在定番となっているのはこの手法

Google が発表したニューラル機械翻訳もこの流れ。*3 2016年9月には Google Translate の中英翻訳がニューラル機械翻訳に置き換えられている。他の言語対もそのうち置き換えられるだろう。

記号操作の排除

言語は少なくとも表層的には記号列でできている。記号への思い入れが強い人がいて、記号だけで一つの業界ができていたりする。しかし、記号の背後にある意味についてはいまだに誰も正しい扱い方を知らない。意味についても記号の操作だけで何とかできると考える人がいた。isa(Socrates, Man) みたいに記号によって記号同士の関係を記述するとか、Woman を +HUMAN, +ADULT, -MALE のように別の記号の組み合わせに分解して表現するとか。少なくとも昔の人工知能研究はそんな感じだった。でも、人間のような天然知能は記号操作だけを行っているわけではない。結局、記号操作だけで完結する実用的なシステムが作られることはついになかった。ニューラ機械翻訳はそうした記号幻想に引導を渡そうとしている。定番化した手法の時点で記号排除が進んでいるうえに、最近の流行はより一層暴力的に記号を扱うこと。

ニューラ機械翻訳であっても、入出力は源言語と目的言語の文、つまりは記号列。しかし記号列なのは入り口と出口だけで、その間をつなぐ経路からは記号が徹底的に排除されている。

ニューラ機械翻訳は、広くは sequence-to-sequence (seq2seq)、つまり系列から系列へ変換する手法の一種として実現されている。源言語系列は一度に全部受け取るが、目的言語側では記号を一つ一つ出力する。少しややこしいが、システムへの入力は (1) 源言語記号列と (2) システム自身が途中まで吐いた目的言語記号列。これらをもとにシステムは目的言語の次の記号を出力する。

日英翻訳を例にとると、源言語の記号列「私 は 学生 です 。 <EOS>」(<EOS> は終了を表す特殊記号) と目的言語の途中までの記号列「I am a」を受け取ったとき、システムは次の出力記号として「student」を吐く (ことが期待される)。出力の頭では、源言語の文だけを受け取った状態で「I」を吐くし、「.」を吐いた次は <EOS> を吐く (ことが期待される)。

システムの中身を直感的に説明するのは難しい。LeCun 御大の例えをもじって、ノブを使った説明を試みる。機械翻訳というブラックボックスには、上部と下部に大量の穴があいていて、それぞれ入力と出力に対応する。上部の適切な穴に水を注ぐと、下部の適切な穴から水が出てくる。上部と下部の穴の間には複雑にからまったパイプがあり、途中で分岐 (というより分身) したり合流したりするし、途中に水を貯めている箇所があったりもする。そういう箇所にはノブがあって、水の流れを制御する。実際には、量が増幅されたり、負の値をとったりするので、水で例えるのは微妙だけど。

上部と下部の穴は何を表すか。いま、源言語と目的言語の語彙をそれぞれ3万に制限するとする。足りない語は無理矢理 <UNK> という特殊記号に変換してしまう。そうすると、源言語の各単語に対して、3万個の穴を用意し、そのうちの一つだけに水を注げばよい。「私」なら42番目の穴、「は」なら3番目の穴といった具合。源言語文が <EOS> を含めて 6 つの記号だとすると、それは 6x3万=18万個の穴に対応する。出力済みの単語も同じように上部の穴に対応していて、水を注ぎ込む。下部の穴は、次の単語を表す3万個の穴。そのうちの一つから水が流れ出す。802番の穴なら「student」といった具合。

学習とはノブを調整すること。ノブを適切に調整していないと、別の穴からちょろちょろと水が漏れたりする。正しい穴だけから水が出るようにノブを調整する。こういった階層の深いシステムであっても、充分な教師データを与えれば適切にノブを調整できることがわかった。それが深層学習とよばれているもの。とはいえ、途中を流れている水を見ても、何が起きているのか人間には (システム設計者ですら) さっぱりわからない。

そろそろノブの例えが厳しくなってきたのでここでやめにするが、最後に一つ付け加える。システム内部は、水の流れが多いか少ないかという数量で制御されている。確かに入り口と出口は離散的だけど、中は連続値で支配されている。記号の出る幕はない。

記号の連続空間表現

機械翻訳において、意味はどのように扱われているのだろうか。ニューラル以前は、記号同士を直接結びつけようとしていた。素朴には、例えば、英語の「cat」と日本語の「猫」を結びつけておけばよい。しかし、そう単純にいかないからシステムが複雑化していく。「bank」が「銀行」と「土手」に対応するといった曖昧性、「punctual」と「時間 に 正確だ」のように単語単位では扱えない対応など。そこで、ニューラル以前のフレーズベース統計的機械翻訳がとった対策は 2 つ。(1) 単語ではなく句を単位にする。(2) スコアによって曖昧性を解消する。フレーズベース統計的機械翻訳は、句単位での源言語と目的言語との対応にスコアを紐付ける。翻訳時には、とにかく候補を列挙して、スコアが最大となる訳を選んでいた。スコアのような非記号的要素が加わったとはいえ、記号同士を直接結びつけていた。

ニューラ機械翻訳は記号同士を直接結びつけるのをやめてしまった。システムの中で何が起きているのかよくわからないが、入力直後と出力直前の処理であればまだ想像できる範囲内。

入力の各単語は、まず連続空間表現 (分散表現) に変換される。(-1.26, 0.23, 0.92, ..., -0.54) のような、500次元くらいの実数値の羅列。こうした数値列が「私」、「は」といった単語タイプごとに辞書に格納されていて、入力単語は辞書引きによって連続空間表現に変換される。源言語の語彙を3万に制限していたので、3万x500で1500万個の実数値。目的言語も同じだけある。この数値列が実際のところ何を表しているのかよくわからない。ただ、「私」の連続空間における近傍を探すと「僕」が見つかったりする。意味的に似た単語が近くにくる傾向は確認できるので、何らかの意味を表しているのだろうと推測できる。

ニューラルネットワークの特徴量と意味論の素性は全然別物。前者は連続値で後者は離散的。実態を確認せずに「特徴量 = feature = 素性」という連想ゲームをやるのは無意味。

入力は置いておいて、出力直前の処理を見よう。出力単語の候補も辞書に格納されている。例によって語彙が3万で、500次元とする。やはり似た意味の単語は近くに集まっている。出力直前には、システムはこれと同じ長さ (500次元) の数値列を作り出す。システムはこの数値列と出力候補の3万語各々との内積をとり、一番大きな値を返した候補を出力する。内積\mathbf{a}\cdot\mathbf{b}=\left\|\mathbf{a}\right\|\left\|\mathbf{b}\right\|\cos\theta と変形でき、長さがほぼ同じと仮定すると、単なる cosine 類似度になる。つまり、システムが作った500次元の数値列に一番近い連続空間表現を持つ単語を選んでいると解釈できる。これは面白くて、システムはまず次に出力したい「意味」を作って、次にそれを一番うまく近似する単語を選んでいることになる。

出力直前の処理は、ニューラ機械翻訳が犯す誤りを見るとよくわかる。例えば、英日翻訳で、「Tunisia」を「ノルウェー」と翻訳するといった不思議な間違いが生じる。「チュニジア」も「ノルウェー」も地名としてテキスト中で同じように振る舞うから、連続空間上で近くに配置され、つい間違えてしまうのだろう。

要素還元主義のおわり

「bank」が「銀行」と「土手」に対応するといった曖昧性はどのように解消されているのだろうか。よくわからない。わからないので以下は単なるクソポエムだが、源言語文の文脈によって解消されているのではないかと想像する。

入力単語はまず連続空間表現に変換されると言ったが、この数値列から出力の意味を直接作ろうとするのではない。さらに変換をかませた結果を使う。この変換は、源言語の系列を前から後ろに流れてくる数値列と自身の数値列を合成することで実現される。同じように、後ろから前に流れてくる数値列と自身の数値列を合成しており、最終的には前向き版と後ろ向き版を結合したものを使う。

想像するに、この前向きと後ろ向きの流れが文脈を表していて、例えば源言語文で「deutsche」が「bank」の前に来ていたら、前向き文脈に引っ張られて「銀行」の方の意味が活性化するのではないか。本当にそんなことが起きているのか検証したいところ。

ともかく、ニューラ機械翻訳以前は、文をどうやって翻訳に有効な構成要素に分解するかに頭を悩ましていたのだが、文脈の数値列によって、ふわっと解消されてしまったように見える。

文法よいずこへ

翻訳においては、訳語の選択だけでなく、語順の変換も難しい。ニューラ機械翻訳以前は、源言語記号列を目的言語記号列に並べ替えるモデル (distortion model) がまず研究された。これは単なる列の並べ替えだが、それでは駄目で、統語構造をちゃんと考えましょうという研究も流行っていた。

ニューラ機械翻訳が来て、時計の針が巻き戻されてしまった。seq2seq は系列を見ているだけで、統語構造を陽には扱わない。陽には扱っていないのに、語順を適切に並べ替えたように見える結果を出力してくる。並べ替えができるということは、この巨大なモデルの膨大なパラメータのどこかに語順に関する情報が保持されているはずである。それがどう表現されているか以前に、どのあたりにあるのかすらよくわからない。誰か助けて。

再帰性は実は難しくない

人間が他の動物と異なるのは言語を持つことであり、言語を特徴づけるのは再帰性だと思っていた。人間と他の動物との知能にはそれなりの断絶がありそうだから、再帰性を扱うのはそれだけ難しいと推測してもおかしくない。しかしどうやら再帰性はそんなに難しくないらしい。単なる系列モデルで再帰性が扱えることが実証されてしまった。

2014年末に発表された Grammar as a Foreign Language は、seq2seq で構文解析を行う。入力は

John has a dog . <EOS>

のような普通の文。出力は

(S (NP NNP )NP (VP VBZ (NP DT NN )NP )VP . )S <EOS>

のように構文木を直列化したもの。ニューラ機械翻訳に既存の構文解析器の出力をひたすら食わせて訓練すると、少なくともその構文解析器の振る舞いは再現できてしまったようである。

何が起きているのだろうか? 自分が「(NP」を吐いたことを覚え続けておいて、適切な時点で「)NP」を吐く、あるいはスタックに非終端記号を積んだら、あとで取り出すということはできている。それに、「(NP」を吐いたら、NP 内という文脈に移行して、「)NP」を吐いたら、S 内という文脈に戻りつつ、既に NP を吐いたという追加情報を加えた文脈に移行できている。この2つを系列モデルで難なく行えることが実証されてしまった。それも実用的な精度で。

もちろんこれは教師あり学習であり、構文木は教師データとしてシステムに直接与えられている。幼児の言語獲得のように明確な教師データのない設定で実現できてはじめて再帰性を克服できたと言えるのだろうが。

Grammar as a Foreign Language は本気で構文解析を置き換えるというよりも、単なる一発ネタっぽかった。2016 年に発表された Recurrent Neural Network Grammars はもう少し本気さがうかがえる。やりかたは、seq2seq よりも遷移型 (前から順番に単語を読みながら構文木を組み立てる) の構文解析に近い。とはいえ、seq2seq と同様に、系列モデルの枠組みで、文脈を前から後ろに流しながら構文解析を行っている。

言語には系列データとしての側面と、再帰性を持つ構文構造という側面があり、両側面をどうやって統合的に扱うかは個人的にずっと謎だった。伝統的な構文解析は系列としての側面を軽視しすぎている印象があったし、従来の系列モデルは構文的側面を完全に無視していた。どうやら、系列を主体としつつ再帰性を扱うのが正解っぽい感触がある。

さらなる暴力の連鎖

ここまではテキスト処理だけを見てきたが、画像から説明文を生成する研究も2014年頃から流行っている。画像を入力すると、「A group of people shopping at an outdoor market. 」のような自然文が出力される。これも結局、源言語文だったものが画像に置き換えられただけで、翻訳の一種と言える。記号列だった入力が、最初から数値列で与えられる。テキスト翻訳の場合は源言語の情報を過不足なく目的言語に変換する必要があったが、画像の場合は、膨大な数値列から必要な情報を抽出する感じ。それを除けば同じ枠組み。どうしてこんな無茶苦茶なモデルが動いているのだろうか。

機械翻訳の多言語化も流行っている。一つの源言語から複数の目的言語へ翻訳したり、複数の源言語から一つの目的言語へ翻訳したり、さらには多対多だったり。途中のパラメータを共有している。単純には教師データが増えるという利点がある。それ以上に深い効果があるのかはよくわからない。言語対特有のエラーが減るという観察もある。

ニューラ機械翻訳では内部から記号操作が排除されたとはいえ、入力と出力は記号列である。記号幻想の最後の拠り所といえるここにも暴力の嵐は及んでいる。ニューラ機械翻訳では語彙を3万とか、比較的小さな数で固定しないといけない。語彙を増やすと速度が下がるし、低頻度語はうまく学習できないし、教師データに出てこない未知語は学習しようがない。そこで、入出力を単語単位で扱うのをやめて、あるいは補助的に、もっと小さな単位を導入する。文字単位で処理するとか、文字よりは単位が大きいものの、高頻度な文字の連鎖を適当に連結しただけの代物を使うとか。さらに、これは (まだ) 機械翻訳への適用ではないけど、文字よりも小さなバイト列を処理するという話すらある。もう無茶苦茶。

おわりに

記号絶対殺すマン自体は大昔からいて、おそらくコネクショニストとよばれていたのだと思う。よく知らないけど。おもちゃのような実験設定でいろいろ議論している昔の論文が探せばみつかるはず。機械翻訳は、そういう実験とは違って、大勢の頭の良い人が長年取り組んできた実際的な問題。この問題がある程度解けたとなると本物である。

複雑だと思っていた問題が、驚くほど単純なモデルで解けている。ではそれで満足かというと、まったく満足感がない。わかった感じがほとんどなくて、むしろもどかしい。機械翻訳は個別の現象を分析するには複雑に入り組みすぎている。

そもそも、ここに書きなぐったことがいつまで有効かもまったくわからない。異常な速度で新しい成果が報告されるので。

2016年11月12日追記: 11月11日頃から、Google Translate の日英翻訳もニューラルっぽい振る舞いをするようになった。公式の告知はないけど。

私には当たり前すぎて明確には書いてなかったけど、読者にとってはもしかしたら当たり前ではないかもしれないこと。機械翻訳という問題が最終的に解決したとは私は微塵も思っていない。従来よりも良い精度の翻訳が、従来よりもはるかに簡単なシステムで実現できるようになっただけ。機械翻訳は複雑な問題なので、現時点で解けない事例はいくらでもある。その本質的な難しさを垣間見たければ、takeda25 さんのブログ記事がおすすめ。

*1ニューラ機械翻訳が来るまで、単なる文ペアは明示的な教師データとはあまり考えられていなかった。以前は要素還元主義的で、単語や句といった文より小さな単位で源言語と目的言語を対応付ける必要があった。単なる文ペアにはそうした対応の正解が付いていない。計算機は、正解データがないまま、そうした対応を学習する必要があった。だから、教師データのない状況で学習する、教師なし学習の一種とみなされがちであった。

*2ニューラル以前の統計的機械翻訳モデルの、作っている人の頭のヤバさ加減を知りたければ、渡辺太郎ほか『機械翻訳』(2014) を眺めればよい。

*3Google のシステムは金に物を言わせたえげつない代物で、うちの研究室程度の資金力では再現しようがない。

2016-04-24

Comparative phylogenetic analyses uncover the ancient roots of Indo-European folktales

Sara Graça da Silva and Jamshid J. Tehrani. 2016. Comparative phylogenetic analyses uncover the ancient roots of Indo-European folktales. Royal Society Open Science.

各民族がある民話類型を持っているか否かをバイナリコーディングしたデータベースがあり、さらに印欧語族の年代付き系統樹がある。民話が系統樹に沿って継承されたと仮定し、祖語の状態を推定する。最初は 275 種類あった民話はフィルタリングされてどんどん減っていくが、残った一つ、ATU 330 'The Smith and the Devil' は印欧祖語が有していた可能性が高いと主張する。しかしこの主張は怪しいと思う。そのあたりをメモ。

最近締め切りにばかり追われていて、締め切りのない話は永遠に後回しになりそうなことにふと気づいた。この論文も公開されたのは 1 月で、その時雑記に書こうと思っていたのに、もう 4 月である。*1このままでは今までに身につけた資産を食い潰すばかりでジリ貧。そこで、休日は締め切りのことは忘れて新しいことをやると決めた。ということで、この雑記を見かけても、どうか締め切りの催促は控えてほしい。

本題。分子生物学由来の統計モデルは、言語に限らず文化的特徴にも適用されている。第2著者の Tehrani はその研究者トルクメン刺繍の類型の伝承みたいな渋い研究をやっている。

文化的特徴となると、言語以上に水平伝播が問題になる。この分野では、系統的な縦の継承を phylogenesis、横の伝播を ethnogenesis と呼んでいるらしい。今回の研究は、phylogenesis が従来考えられてきたよりも強いという主張になっている。

まず素朴な感想として、人類学系の人たちは自分で系統樹を作る気がないというのが新鮮。系統樹はよそで作られたのを借りてくるものらしい。言語研究者としては、系統樹こそが推定したいものなんだけど。*2

系統樹を所与とすると、観測されたデータが系統樹に沿って継承されたかをテストできる。具体的な方法として、D という指標を見たり、Towner らの autologistic analysis をやって、基準に満たない民話をどんどん取り除いていく。これらの方法はこの論文で知った。機会があれば詳しく見るかも。D は系統樹上でのテスト。Towner らの手法は、観測データの分布を (1) 空間グラフと (2) 言語グラフの組み合わせとしてモデル化し、それぞれの要素の重みを推定する。空間グラフは、言語に紐付いた地理位置を見て、適当な距離内にある言語ペアに辺を引いて作ったグラフ。言語グラフは、語族、語派といった言語系統上のクラスタ二次元グラフで置き換えたもの。言語研究者からすると、系統樹を潰してしまうなんて、ありえない乱暴な処置。さすが人類学者。

これらの手続きにより、275 種類の民話から 76 種類が選抜される。この時点で怪しいと思うが、後回しにする。生き残りに対して、いよいよ系統樹上の状態を推定する。系統樹Bouckaert et al. 2012 が基礎語彙をもとに作ったもの。変化のモデルは普通の連続時間マルコフ過程。0 が死んでいる状態、1 が生きている状態。変化の速度を制御する遷移行列を Q = \begin{pmatrix} -\alpha & \alpha \\ \beta & -\beta \end{pmatrix} とすると、ある時点で状態 i \in \{0,1\}のとき、時間t後の状態jの確率は P(x=j|\pi(x)=i,t)=\exp (tQ)_{i,j} で表される。系統樹と葉の状態は観測されているので、推定するのは内部ノードの状態と遷移行列のパラメータ。結論として、印欧祖語が有していた確率が 50% 以上の物語として、328330402554 の 4 種類が残る。閾値を 70% に引き上げると 330 番だけが残り、これは別のテストも通過する。330 番は、都合の良いことに、鍛冶、つまり鉄器にまつわる民話。おかげで、著者らはクルガン仮説に関する楽しい妄想を語っている。

数式が出てきまくる統計の話だからといって、びっくりするような魔法があるわけではない。人手でも大雑把には推測できる。系統樹があって、葉ノードは黒 (生) または白 (死) で塗りつぶされている。内部ノードはまだ色が塗られていない。子供を見て、だいたい黒で塗ってあったら自分も黒だろうし、白なら白。拮抗しているなら半分黒、残りを白で塗りつぶす。そんな感じの操作を繰り返して根までさかのぼったとき、黒の割合がどの程度か。

結局、印欧祖語の状態推定に効いているのは、早期に分岐した (ことになっている) ギリシア語っぽい。民話 330 番の場合、ヨーロッパ系言語は 3 言語を除いてすべて保有しているが、残りは Hindi, Romani, Greek しか保有していない。Romani (ジプシー) はヨーロッパ側と考えると、インドイラン系ではヒンディー語しか残らない。こんな状態で、本当に印欧祖語が有していたと言えるのか。クルガン仮説について妄想を語って許されるのか。

330 番よりも、最後に脱落した 554 番の方が印欧祖語話者に由来する可能性が高そうに見える。実際、Table S5 を見ると、印欧祖語 (PIE) の保有確率は 330 番が 0.54 に対して、554 番は 0.61。554 番はインド系 (Hindi, Urdu, Romani)、イラン系 (Iranian, Tadzik, Kurdish, Ossetic)、Greek、Armenian が持っている。330 との違いは、ヨーロッパ系の歯抜けが 8 言語と少し多いこと。おそらくこの影響で、ヨーロッパ祖語の保有確率が低く推定され、同時に遷移行列のパラメータが大きく (変化しやすいように) 推定され、印欧祖語の保有仮説が Bayes factor が弱くなったのだろう。近現代社会において目当ての民話が採取できたかはかなり偶発的な要因に左右されていそうだが、今回の推定はその偶発的要因の影響を強く受けているっぽい。専門家の意見を聞きたいところ。

さらに言えば、autologistic analysis が怪しい。ギリシア語が、印欧語族中で早期に分岐した (ことになっている) ために、印欧祖語の状態推定に強い影響力を持つことは既に言ったが、それだけでなく、ギリシア語自体が他の言語に対して水平の強い影響力を持っていたことは明らか。ヨーロッパはもちろん、インドイラン系についても、バクトリアインド・グリーク朝の影響が考えられる。言語は対等ではなく、影響力の強いものと弱いものがある。しかし、autologistic analysis では言語は対等で、影響力の区別はない。autologistic analysis が提案されたときの適用先は Western North American Indian で、多数の小集団が共存する地域だったから、このモデルでも大きな問題はなかったのだろう。しかし印欧系はそうはいかない。方言周圏論もそうだが、水平伝播を考えるなら、影響力の大小をモデルに組み込む必要があるだろう。その数値データをどこから持ってくるかが難しいのだけど。

*1:しかし、なぜか 4 月 22 日付けで Science の記事が出ている。今月になって Mark Pagel が Current Biology に follow-up を書いたから認知されたらしい。

*2:ただ、最近は別のやり方も考えている。言語データは DNA とくらべて貧弱すぎて系統推定にも限界がある。DNA系統樹 (というか有向非循環グラフ (DAG) ) を作っておいて、DAG 上を言語が伝播するような推定をやっても良い気がする。

2015-11-13

Creoles are typologically distinct from non-creoles

クレオール類型論的性格について、非クレオールから弁別的*1だと主張する一連の論文群。表題に採用したのは 2011 年のジャーナル論文

翌 2012 年の EACL の workshop*2で発表された論文の方が論点が整理されている。

著者の 1 人が 2014 年に発表した 2 編の guest column によって、何だか論争になっているらしいことと、著者が従来の立場を維持していることがわかる。

別の著者が 2013 年に出した論文もあるが、所属機関からは無料で閲覧できなかった。abstract、supplemental content と上記の guest column に引用された部分しか見ていない。

彼らの基本方針データベースを用いた定量的分析。これ自体は良い。しかし、具体的に採用している手法が変。そこでまず彼らの手法を見て、それから別の手法を考えてみる。

解きたい問題

知りたいのはクレオール類型論的特徴がどこから来たか。2012 年の論文によると、4 通りの立場が考えられる:

  • superstrate (lexifier)
  • substrate(s)
  • feature pool (only superstrate and substrates)
  • restructuring universals

最初の 2 つは、それぞれ superstrate = 上層言語 (lexifier = 語彙提供言語)、substrate = 基層言語に由来するという立場。これはない。そもそもクレオールが興味深いのは、語彙の大半が lexifier (superstate) に由来するのに、文法的には lexifier とは大きく異なること。さらに言えば、substrate とも異なる。そもそも superstrate や substrate と大差ないのであれば、クレオールという区分自体が不要だったはず。

feature pool は superstrate と substrate の特徴量が pool されていて、そこから適当に値を選択していくという説明。この説を否定するには、いずれにも存在しない特徴量の値がクレオールにあればよい。そして、実際にあるらしい。

最後の restructuring universal は、クレオールの形成過程を retension (lexifier, substrates), loss (pidginization), reconstruction (grammaticalization, creolization) からなると考える。ピジン化の過程で失われた特徴をクレオール化の過程で作り直すのだが、ここに何らかの普遍性が存在すると考える。著者らはこの立場。私もたぶんそうだろうと思っている。

著者らの主張で飛躍だと思うのは、表題にも採用した creoles are typologically distinct from non-creoles というもの。単に restructuring universals の示しただけでは、この主張の裏付けにはならない。restructuring の結果、lexifier とも substrate とも異なる特徴を獲得したとしても、それが非クレオールの中でもありふれたものである可能性が排除できていない。

NeighborNet

著者らは一貫して分析手法として NeighborNet を使う。いわく、tree ではなく、network だからクレオールの分析に適していると。たしかに NeighborNet は、tree としては conflict を起こす部分を網状に可視化する。しかし bottom-up clustering であり、基本的には木を作ろうとしている。superstratist と substratist は木に基づくとみなせる。だから、NeighborNet の結果が彼らにとって不都合であることを示せば良い。でも、feature pool と universalist はそもそも木に基づかない。NeighborNet を作ったところで、何の意味があるのかわからない。

とりあえず結果を見ていく。まずは superstratist の検証から。クレオール群と lexifier 群を入力として NeighborNet を作る。その結果、クレオールクレオール同士で、lexifier は lexifier 同士で別々にクラスタが形成された。superstratist の立場からすると、クレオールは対応する lexifier とクラスタを形成するはず。よって supserstratist は支持されない。

同様にして、substratist の検証は、クレオール群と substrate 群による NeighborNet で検証される。するとやはりクレオールと substrate が別々にまとまり、両者が分離できる。ただし、クレオールと非クレオール境界に近い言語が存在する。おそらく、文法的側面では substrate がクレオール形成に与えた影響は superstrate よりも強いのだろう。

feature pool の検証は、lexifier, substrate、クレオールの 3 種類を入れた NeighborNet による。すると lexifier と substrate がクラスタを形成し、クレオールと対立した。しかしこの方法は直接的ではない。feature pool 説に従うなら、クレオールは対応する lexifier と substrate の間に位置しなければならない。これを検証するなら、それらの 3+ 言語だけを比較すれば良い。複数のクレオールを分析に突っ込み、クレオール同士でクラスタを作った結果、クラスタの重心が、lexifier と substrate の中間から離れていったため、結果として lexifier と substrate がクラスタを作ったというシナリオも考えられる。

universalist の検証には、さらに lexifier でも substrate でもない言語を追加している。その結果、やはりクレオールだけでクラスタができた。著者らは、この結果をもって、クレオールが非クレオールから弁別的であると主張する。この論理展開が謎。restructuring universals が支持されるかを検証するはずだったのに、いつのまにか creole distinctiveness の議論にすり替わっている。それに、わずか 52 言語のネットワークでは、世界の言語類型を網羅していないのではないかという疑いが拭えない。

分類器

restructuring universals については一旦忘れて、先に弁別性の問題を片付ける。クレオールは非クレオールから弁別的か。この問題に直接取り組むには、2 値分類器を作れば良い。各言語の特徴量列を入力とし、クレオールなら 1、非クレオールなら -1 を返すような分類器。もし高精度な分類器が作れたなら、弁別性は支持される。もし失敗した場合は、2通りの解釈が考えられる。(1) 分類器の作り方が悪かった。(2) クレオールと非クレオールは弁別的ではない。

普通に言語処理をやっていたら分類器を作ることを思いつくはず。著者らが何年もの間ひたすら NeighborNet に固執しているのが謎。一から十までソフトウェア化されているモデルしか使わない方針なんだろうか。生物系の研究を見ると、この分野には分業体制があるみたい。ごく一部の頭の良い人達がモデルを作ってソフトウェア化し、残りの人はそのソフトウェアを使ってデータ作成と分析だけをやっている。統計的な言語研究もそんな感じになるのだろうか。

話が脱線したが、言うだけでな何なので実際にやってみた。使用データは Atlas of Pidgin and Creole Language Structures (APiCS)World Atlas of Language Structures (WALS)

APiCS の特徴量の一部には WALS への mapping が記述してある。その 47 種類の特徴量を使う。言語数は 77。ピジンを含む contact language を広く収録している。この点は問題かもしれない。しかし、APiCS はピジンとかクレオールといった分類を明示的に付与していない。とりあえず全部使う。

WALS 側では Pidgins and Creoles に分類されている言語を除外する。さらに欠損値の比較的少ないもの 541 言語を残す。APiCS と WALS のデータを結合し、欠損値は multiple correspondence analysis (MCA) で適当に補完。

分類器は線形 SVMsklearn.svm.LinearSVC を使ったので、内部的に LIBLINEAR を呼んでいるはず。パラメータは適当に grid search。5 分割交差確認で精度を測定。

結果。accuracy は全部非クレオール (NC) に分類すると 87.5% なのに対して、SVM は 94.2%。クレオールに着目すると、再現率 79.7%、適合率 71.4%、F1 が 75.3%。混同行列を示す。

混同行列
sys
NC C
ref NC 527 14
C 22 55

そういう訳で結構分類を間違えている。ここから先、カーネルトリックを使って非線形分類を頑張っても良いが、解釈が難しくなりそう。線形分離できないことをもって弁別的でないと結論づけても良さそうに思う。

2015 年 11 月 18 日追記: APiCS のピジンを除去して再実験してみた。ピジン排除の基準は、sociolinguistic feature ""Ongoing creolization of pidgins"" の値が "Not applicable (because the language is not a pidgin)" あるいは "Widespread" ではないもの。これで 13 言語が除去された。

混同行列 (ピジン除去版)
sys
NC C
ref NC 534 7
C 10 54

ということで、精度 97.2%、再現率 88.5%、適合率 84.4%、F1 86.4% と少し分類精度が上がった。しかしあいかわらず間違いは残っている。

PCA

SVM の失敗事例を分析してもよいのだが、別の方法を試す。高次元データの性質を知りたいなら、とりあえず主成分分析 (PCA) してみれば良い。

PCA の結果を示す。まずは PC1-2。赤がクレオール (APiCS)、緑が非クレオール (WALS)。

f:id:murawaki:20151109174745p:image

PC2-3。

f:id:murawaki:20151109174746p:image

クレオールは世界の言語の中で偏った一群であることは確か。しかし、非クレオールとは分離されておらず、分布が重なっている。

点が多すぎて密集具合がわかりにくいのでカーネル密度推定を使って連続分布に変換してみる。

PC1-2 の非クレオールの分布。

f:id:murawaki:20151112153430p:image

PC1-2 のクレオールの分布。

f:id:murawaki:20151112153429p:image

PC2-3 の非クレオールの分布。

f:id:murawaki:20151112153432p:image

PC2-3 のクレオールの分布。

f:id:murawaki:20151112153431p:image

クレオールと非クレオールは異なる分布を持つが、両者が重なっていないとはとても言えない。

ラベルを見ると、PC1-2 においてクレオールの中心から外れている言語はピジンが目立つ。でも、Sri Lankan Malay、Korlai、Kikongo-Kituba、Lingala、Mixed Ma’a/Mbugu などは 309 Proportion of native speakers によるとそれなりに母語話者がいてクレオール化されている。

結論と今後の課題

結論としては、クレオールは非クレオールから弁別的とまでは言えない。条件をいろいろ変化させて、もう少し真面目に調べれば、ちょっとした成果にはなりそう。

今後だが、やはり一度脇においていた restructuring universals が気になる。restructuring universals について著者らは何も示せていない。feature pool のモデルと、さらに restructuring universals を考慮するモデルを作って、後者の方がクレオールのデータをより自然に説明できると実験的に示せば良い。しかし、著者らは他人が作ったソフトウェアに頼りっきりなので、手が出せないのだろう。データが充実しつつあるのに、分析できる人がまだいないのは狙い目。

Bakker の guest column を読むと、台湾の Yilan Creole Japanese (宜蘭クレオール) がクレオールでありながら、クレオールの典型から外れていて面白そう。私がこの言語を知ったのは 2008 年 8 月、以下の報告から。

簡単な報告で、語彙の分析が少しあるだけ。

今調べてみると別の報告が出ている。

  • 真田 信治 and 簡 月真. 宜蘭クレオール. 国語研プロジェクトレビュー. 3 (1). 2012.

クレオールは一般に SVO 語順を持つと言われるが、宜蘭クレオールは日本語のような SOV が基本とのこと。格標示の後置詞が使われるのも非典型的。

いまのところ宜蘭クレオールは APiCS には収録されていない。もっと本格的な報告が出たら登録できるかもしれない。

2016年11月12日追記: この記事の最後の方でうだうだ言っていた話もひっくるめて論文にした:

Yugo Murawaki. (2016). Statistical Modeling of Creole Genesis. In Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies (NAACL-HLT 2016), pp. 1329-1339.

*1:distinctive をどう訳すか困る。ここでの意味は専門用語的ではないのだけど。

*2:workshop ということで格は落ちる。でも、こんな風に言語処理業界で発表してもらえると、私も研究しやすくなる。

2015-10-23

アノテーション一致度

アノテーション一致度 (inter-annotator agreement) を測りたいけど、κ が使えない場合どうするか。想定しているタスクは以下の通り。テキストからいくつか chunk を抽出し、それぞれにラベルを付与する。chunk の大きさはバラバラだし、テキストの一部しか被覆しない。

てっきり FAQ になっているかと思ったが見当たらない。少し調べた結果、以下の手順を採用した。

  1. アノテーション結果を集約したデータを 1 セット用意
  2. 一致度を測りたいサンプルを対象に、1 とは独立にアノテート
  3. 集約データを普通の正解、独立にアノテートした結果をシステム出力扱いして、再現率、適合率、F 値等の通常の評価尺度を使う

タスクの設定によっては Krippendorff’s α も使えるかもしれない。もしより良い方法を知っていたら教えてほしい。

以下、ここに至った経緯をメモ書き。

ざっと調べた中で一番詳しく議論していたのが Grouin et al. (2011)。workshop 論文だけど。

アノテーション一致度の尺度としてすぐに思い浮かぶのは Cohen's κ とその変種。N 個の要素に異なり数 C のラベルのいずれかを付与する場合。Cohen's κ は 2 人のアノテータの一致度の尺度。単にラベルが一致した割合を測るのではなく、偶然一致する確率で補正している。

κ 系の尺度が問題となるのは、固有表現認識のように、テキストの一部にタグ付けする場合。N 個の要素というが、その要素自体が自明ではなくなる。Grouin et al. (2011) は要素を markable と呼んで、いろんな markable を検討している。n <= 6 の n-gram とか。そうすると overlap する n-gram は明らかに独立ではない。独立試行の仮定に反している。

また、データのごく一部にしかタグ付けしない場合、タグ付けされていない (どうでもいい) 部分が与える影響が大きくなりすぎてしまう。

次に考えているのが pooling。複数のアノテータの間で、少なくとも一人がつけたものに対象を限定する。これもやはり重複する markable 同士が独立ではないと思うが、その指摘はない。この方法だと低めの数字が出る。

これも指摘されていなけど、ラベル異なり数が増えてくると偶然一致の確率が 0 に近づいていくはず。その場合、単に一致する割合を測るのと変わらなくなるだろう。

結論として F-measure を使えば良いと Grouin et al. (2011) は主張している。

Grouin et al. (2011) は Alex et al. (2010) を参照している。これも workshop 論文

こちらもタスクは固有表現認識。

For each pair of annotations on the same document, IAA was calculated by scoring one annotator against another using precision (P), recall (R) and F1. An overall IAA was calculated by micro-averaging across all annotated document pairs. We used F1 rather than the Kappa score (Cohen, 1960) to measure IAA as the latter requires comparison with a random baseline, which does not make sense for tasks such as NER.

もう一つ引いている Hripcsak and Rothschild (2005) は 3 ページのジャーナル。

こちらは情報検索。要旨だけ読んでおけばよさそう。結論としては F-measure を使えと。

Information retrieval studies that involve searching the Internet or marking phrases usually lack a well-defined number of negative cases. This prevents the use of traditional interrater reliability metrics like the κ statistic to assess the quality of expert-generated gold standards. Such studies often quantify system performance as precision, recall, and F-measure, or as agreement. It can be shown that the average F-measure among pairs of experts is numerically identical to the average positive specific agreement among experts and that κ approaches these measures as the number of negative cases grows large. Positive specific agreement--or the equivalent F-measure--may be an appropriate way to quantify interrater reliability and therefore to assess the reliability of a gold standard in these studies.

Corbett et al. (2007) な chemical named entities を扱う。

彼らも F1 を使う。アノテータ同士の pairwise で。

Inter-annotator agreement was measured pairwise, using the F score.

κ は使い物にならないと主張。

Given the character-level nature of the annotation task, and that the papers were not tokenised, the task cannot sensibly be cast as a classification problem, and so we have not calculated any kappa scores.

しかし pairwise な比較は、アノテータによって質がばらついているときに微妙っぽい。

Krippendorff (2004) は独自手法提案している。

Krippendorff’s α として Wikipedia に長文記事があるが、本人がかなり手を入れているっぽい。

基本は \alpha = 1 - \frac{D_o}{D_e}。ここで D_o は observed agreement、D_e は chance agreement。複数のラベルからなる場合は \alpha = 1 - \frac{\sum_c D_{oc}}{\sum_c D_{ec}}。ラベルタイプごとに別々に計算した結果を集約する。問題は、D_oD_e の計算方法。詳細は省くが、2 つの線分上の重複区間を考慮するような式になっている。

Krippendorff (2004) の手法には微妙な点がある。文字列 A B C D E に対して、A [ B C D ] E のように BCD ひとかたまりにタグ付けする場合と、A [ B ] [ C D ] E のように B と CD をわけてタグ付けする場合を区別したいことがある。私の理解が正しければ、この区別ができない式になっている。

Krippendorff’s α を NLP で使っていて、なおかつ markable の問題がある例として Wacholder et al. (2014) が見つかった。

談話へのアノテート。fuzziness of unit boundaries が問題となる。以下のように既存尺度の問題を述べたあとで独自のクラスタリング手法提案する。

We show that current metrics for inter-annotator agreement (IAA) such as P/R/F1 and Krippendorff’s α provide inconsistent results for the same text. In addition, IAA metrics do not tell us what parts of a text are easier or harder for human judges to annotate and so do not provide sufficiently specific information for evaluating systems that automatically identify discourse units.

彼らの説明によると、Krippendorff’s α, a variant of the α family of IAA coefficients specifically designed to handle fuzzy boundaries and multiple annotators らしい。

F1 と Krippendorff’s α を文書 (thread) ごとに出して、順位付けしたら全然違う結果がでたという。

ただ、彼らが問題にしているのはむしろ別の点。

They do not pinpoint the location in a document where the extent of variation can be observed.

1 個のスカラーで要約されても役に立たないというが、これは言いがかりに近い。

Stab and Gurevych (2014) も Krippendorff’s α を使っている。

Since there are no predefined markables in our study, annotators have to identify the boundaries of argument components. We evaluate the annotations using Krippendorff’s αU (Krippendorff, 2004). It considers the differences in the markable boundaries of several annotators and thus allows for assessing the reliability of our annotated corpus.

Krippendorff’s αU は低めの数値になる様子。ちなみに Kolhatkar et al. (2013)uα と表記している。

2015-09-29

Explaining the Linguistic Diversity of Sahul Using Population Models

Ger Reesink, Ruth Singer, Michael Dunn. Explaining the Linguistic Diversity of Sahul Using Population Models. PLoS Biology. 2009.

せっかく STRUCTURE と ADMIXTURE の混合分布モデルを見たので、言語への応用例にも触れてみる。サフル (オーストラリアニューギニアに相当) の言語 121 個の類型論データに STRUCTURE を適用し、各言語を潜在クラスの混合として扱う。得られた潜在クラスと各言語の混合比を既存の言語学の知見と比較する。

やっていることは結果の図を見れば一目瞭然。pie chart が各言語で、色分けは潜在クラスに対応している。ここではクラス数 K=10。

生物のように両親から 1 個ずつ、計 2 個のコピーを引き継ぐ (diploid) ということはないので、A = 1。ますます LDA っぽい。

著者のグループは Dunn et al. (Science, 2005) 以来、パプア諸語の系統問題に取り組んでいる。問題は、系統関係不明の大量の言語をどう解釈するか。長期にわたり接触が続いたと見られることから木のモデルは不適当だと著者らは主張する。そこで代わりに混合分布モデルが出てくる。しかし、「そこに山があるから」ではないが、そこにツールがあるからやってみた感はある。時間的変化を考えないモデルなので、得られるのは時間を超越した仮想的クラスタ

系統不明の言語が集まっているという点で、極東はニューギニア周辺に似ていないこともない。日本語は混成言語だと主張している人は、試しに日本周辺の言語にこの手法適用してみたら良いのではないか。私は混成言語説は支持しないけど。

ここで考えたいのは、広い意味での接触をどうモデル化するか。系統樹の話をすると、「クレーオルとかどうするんですか」という質問が出て FAQ 化しつつあるが、決定打がまだ出ない。木を使うのは計算上の都合。木はひたすら分岐していくだけで、接触や合流を扱わない。一般のネットワークは自由度が高すぎて扱いにくい。Nelson-Sathi et al. (2011) のように、先に木を用意してから、辺を追加するという tricky な手法もあるけど。

その点、混合分布モデルは現実的な解法ではある。系統推定に言語連合を組み込む話も、結局は系統樹と言語連合という 2 種類の混合だった。このモデルでは、言語連合は時間を超越している。接触を通じて徐々に特徴を獲得するという話にはなっていない。

引っかかるのは、例によって特徴量の独立性。最初に、各言語の混合比を draw したあとは、各言語の特徴量の所属クラスは条件付き独立。この特徴量とこの特徴量は連動するという話は扱えない。直感的には、あちこちの言語群からランダムに特徴を借りてくるとは考えにくい。接触時にはこういう変化が起きやすいという一般的な傾向を捉えるようなモデルにしたい。

一応、STRUCTURE には特徴量間の依存関係を扱うための拡張が入っていた。隠れマルコフモデルによって、隣と同じクラスになりやすいという性質を扱っていた。しかし、言語類型論の特徴量は、便宜的に列で表現しているが、実際には集合。順番に意味はないので、マルコフモデルでは表せない。やはり、表層特徴量をそのまま扱うのではなく、依存関係を捉えるような深層構造に写像するという私の現状の方針が良さそう。