murawaki の雑記

はてなグループから移転してきました

AI は人間の直感の外部化

先週、学部同期の原さんのブログ記事「「悪いやつをAIで予測する」のがなぜいけないか」がバズっていた。*1 人間が何に反応するのかわからないものである。目についた反応のなかで私の感覚に近いのは、「みんなそんなことわかったうえで議論しているんだよ」 (大意) というもの。とはいえ、私の今の仕事では、一般人を説得しなければならない機会がままある。世間の認識を知っておく必要があるし、それがまるっきり駄目だから今の私の惨状があるともいえる。前置きが長くなったが、この記事が世間の認識を反映していると仮定して、私の認識とのずれを書き出してみる。

この記事でも顕著だが、世間でいう AI は人間とは異質な他者。私にとっては人間の機能の一部、主に直感を切り出して外部化したもの。

注意。この認識はいわゆる人工知能研究者を代表したものではなく、言語研究者という私の立ち位置が影響している可能性が高い。機械学習屋さんによっては、はなから人間の機能の再現を目指さずに、人間らしさの全然ないセンサデータ等を扱っているかもしれない。

少なくとも今回のお題はかなり人間的。レストレランの入り口で人間を視認して要注意人物か否かを判定する。これは実際、人間が日常的に行っていること。おっさんが平日昼間の公園に行くと警戒されるのとどこが違うのだろうか? 人間は日常的に属性を手がかりに推論している。どういうわけか、同じことを計算機にやらせた途端に大問題になるのである。

よく引き合いに出されるのが Amazon の採用 AI が 2015 年に稼働停止になった事件。女性の評価を「不当に」低く出すというのが理由。言い換えれば、能力との関係において「本質的でない」手がかりを使って推論を行うのが社会正義に反するというのである。では、人間はこの種のバイアスから自由なのだろうか?

計算機が表層的な手がかりを使ってズルをするという問題はよく知られている。ズルをすると何が駄目かというと、ちょっとひねった問題を出されると簡単に誤答してしまう。しかし、この問題は研究者間でよく知られていて、よってたかって解決が試みられている。あまりにアホな振る舞いは早晩改善されるだろう。

問題は、本質的な解決があり得るかである。ないというのが私の回答。ズルは計算機の専売特許ではない。受験生が小手先の受験テクニックにばかりを磨いた結果、本番では出題傾向が変わって爆死したというのと変わらない。あくまで程度問題。

計算機がアホな振る舞いをしているのをメタ的に観測していると、より本質的な手がかりがありそうに思える。しかし、計算機に本質を理解させるには、何らかの手段でそれを教えなければならない。何も策を講じずに計算機にそれを期待するのは無理な話。少し具体化すると、ある分布に従う問題から学習した計算機に、別の分布に従う問題に対する高い性能を期待するなら、両者に共通する性質 (本質) を何らかの形で教えなければならない。解きたい問題の分布を観測したあとに事後的に本質が認識できるとしても、事前にわかるものだろうか?

現在 AI とよばれているもののほとんどすべてがパターン認識器。入力と出力の間にパターンを見つけて、それを新たな入力に適用する。人間でいえば経験則に基づく直感に相当する。勘の良い人間もいれば鈍い人間もいる。それは程度問題。直感に基づく推論結果そのものは決定的な正しさの保証とは無縁の代物。ブログ記事では、AI の判断を根拠にしてはならないという議論が出てくる。計算機に期待しすぎである。そもそも、AI の判断が直感に相当すると世間が認識していれば、こういう議論にはならないはず。

「いまの AI はブラックボックス (だから駄目)」という議論がよくあるが、話は逆。人間の直感こそがブラックボックス。それを計算機に代行させることで、むしろ推論過程が見えてしまうのである。そうして観測できる推論過程は必ずしも人間にとって解釈可能ではないが、差別的に手がかりを使っていた場合には、それがバレてしまう。もしそれが表層的な手がかりに頼ったズルであれば、モデルを改善すれば良い。それでも駄目なら、学習に使ったデータ、つまりは人間の営みに問題があったということになる。要するに信頼できないのは人間である。推論を計算機に代行させ、その過程を観察しながら適宜介入することで、少なくともある観点からは、より良い社会を作れる可能性がある。もしこの楽観的な見通しが成り立たないとすれば、Amazon 事件のように、人間同士の利害が対立している (求職者 vs AI を抱え込む雇用者) からである。人間の敵は人間であって AI ではない。

冒頭で述べたように、AI は人間とは異質な他者だと世間は認識している。私からするとこれは誤解なのだが、それで救われている部分もある。仮に AI が直感の外部化の手段だと世間が認識したらしたで、本当の地獄が始まると予想している。これについては別の機会に述べるとしたい。

*1:この表現もいい加減古いが

大航海時代の海域アジアと琉球


中島楽章. 2020. 大航海時代の海域アジアと琉球: レキオスを求めて. 思文閣出版.

琉球を中心とした海域アジアに対する大航海時代のヨーロッパ人の地理認識を文献、地図から解明しようという本。今回取りあげるのは第II部「ゴーレスとレキオス」、特にその中の第6章「ゴーレス再考 (二): その語源問題をめぐって」。中島は歴史の人で、50近くになってからポルトガル語を学び始め、リスボンで文献調査を行えるまでになったとのこと。その努力には敬意を表するが、個別の論証については首を傾げざるを得ない部分が多い。

Gores は16世紀初頭のポルトガル史料に現れる集団で、一般に琉球人と理解されている。その由来はアラビア語史料に15世紀後半から現れる al-Ghūr で、史料では琉球の別名とされている。この Gores の語源が高麗であるという説をとなえる者がいる。中島の先行研究紹介によると、古くは内田 (1915-17)、秋山 (1928)、桑田 (1932)、Haguenauer (1935)、安里 (1941)、Schurhammer (1963) などが挙げられ、中島も改めてこの説を支持している。

前の記事でも述べたように、私は Caule/Cauli 系の語はモンゴル帝国時代に登場したあとは使用が絶え、大航海時代南蛮人が日本に到着したあとで日本語の高麗に由来する Corea が現れたと考えている。もし Gores 高麗語源説が正しければ、私の仮説は少々修正が必要になる。ただし、Corea が Gores に由来するという説をとなえる者はいないようである。

結論を先にいうと、Gores 高麗語源説は成り立たないと私は考えている。私が支持するのは前嶋 (1971) の説。al-Ghūr は窪んだ場所を意味する al-ghaur に由来し、中国語の落漈を訳したものだろう。落漈は東方海上にあり、水が落ちていくとされる場所。川の水が海に注ぎ込み続けても水位が上がらないことを説明するために中国人が生み出した伝説。落漈は『元史』の頃から瑠求 (=台湾) と結びついた形で登場する。al-Ghūr の初出であるイブン・マージド『海洋学精選』の「この地方から南にゆけば、あるものといえば危険とアル・グールだけ」という記述とも整合する。アラビア人は中国人の地理認識に詳しくないので、もとはアラビア語語根 (غ و ر) に基づく固有語だったことが忘れられ、借用語と再解釈されたと考えれば母音の揺れは説明できる。al-Ghūr = 瑠求 (=台湾) というモンゴル時代からの知識が先にあって、明代になって琉球と称する集団が沖縄から来た結果、al-Ghūr = 琉球 (=沖縄) となったのだろう。

一方、中島は、「アル・グールを語源とするゴール Gor と、高麗が転訛したゴール Gor ないしゴーレ Gore の発音はかなり近く、必ずしも区別されていなかったことになる。このことは十五世紀のアラビア語史料におけるアル・グール al-Ghūr も、本来は高麗に由来する呼称であった可能性を示唆するのではないか」(p.167) と主張し、元代には「泉州などに来航・居住するムスリム海商にとって、中国東方海上の高麗はかなり身近なものであった。彼らはこの高麗を、アル・グール al-Ghūr と称したのではないか。(中略) グール Ghūr は、閩南音の高麗 kou-le の対音であろう。」(p.171) と推測する。中島は様々な断片的な記述をもとに想像を膨らませている。高麗に由来する語が登場する出来事は高麗が存在した時代に起きていなければならないという思い込みから逃れるのは難しいのだろう。

まず中島の前提がおかしい。「ヨーロッパ人は明代を通じて、朝鮮をおもに高麗に由来する呼称で記録していた。ポルトガルなどで作成された世界図では、一五六〇年代から朝鮮半島付近に、高麗の漢語音に由来するコーレ core やコレア corea、日本語音に由来するコライ corai やコンライ conrai などの地名が記されるようになる。」(p.165) といい、core が漢語音に由来すると主張する。漢語音に由来するなら L 音をともなうはず。R 系の語形は漢語に由来しない。

なお、中島はこの記述に注 (20) を付して海野 (2003) を引用しているが、これはやや杜撰だ。海野 (2003) には「Gore が「高麗」のシナ音 Kao-li のなまったものであることは ...」という怪しい記述があるが、core, corea が漢語音に由来するとは述べていない。

中島は的場 (2007) の Gores の語源はモルッカ諸島で刀剣を意味する goles であるという説を批判するなかで、「goles と Ghūr とは、確実な語源といえるほど近い発音ではない」(p.162) と述べている。的場説に対する批判の根拠は他にも並べているので、この論拠単体では弱いと考えているのかもしれない。しかし、同じ批判が自説にも当てはまるはずだ。

中島は、Gores と高麗を結びつける根拠の一つとして、Tomé Pires の Suma Oriental (東方諸国記) の記述を挙げている (p.165)。

華人 chijs とタルタリア人の間にある場所にゴーレス guores がいる。そしてタルタリアの背後にロシア Roxia があるということである。これらのことは華人が話しているのである。

中島は「従来の研究では指摘されていないが」(p.164) といってこの記述を紹介するが、実際には海野 (2004) もこの記述に触れている。小論なので見逃したのだろうか。

海野一隆. 2004. ゴーレスとは? 日本古書通信. 69(6), pp. 6-8.*1

それにしても、Suma Oriental の記述が1510年代に書かれたとは信じがたい。書誌学的な検討は済んでいるのだろうか。ロシアがモンゴル・満洲接触を始めるのは17世紀に入ってからだから、何らかの理由で写本に17世紀頃の記述が混入した可能性を考えたい。

私はこれまでは L/R の区別を問題としてきたが、Gores/Ghūr を検討するなら語頭音も問題となる。「高」は見母で無声破裂音 [k] を持つ。アラビア語は (ペルシャ語も) [k] (ك) を持つので、わざわざ有声摩擦音 (غ) をあてる理由がないように思う。見母を غ で写した事例が豊富にあるというなら話は別だが。「麗」の母音が落ちるのも不自然。中島にはアラビア語に関する知識がなく、前嶋 (1971) からの進展は期待できない。

前嶋 (1971) のいう通り、al-Ghūr が al-ghaur に由来するなら、Gores と高麗の関連をにおわせる記述はどう説明すべきだろうか。Suma Oriental の怪しい記述以外にも、『大アルフォンソ・デ・アルブケルケ実録』に「当時 (注: 1511年のマラッカ占領時) 彼ら (注: ゴーレス) の国は大陸にあるといわれていたが、一般の意見では彼らの国は島で ...」という記述がある。

大陸と関連付ける記述が登場するのはポルトガル史料になってからで、先行するアラビア語史料では al-Ghūr は島として扱われている。逆ではない。だとすると、Gores という語が先にあって、その後、誰かが二次的に高麗と結びつけて再解釈することがあったのではないだろうか。Ghūr のように語頭が摩擦音で、かつ子音終わりの語に対しては、高麗を連想できなかったのだろうが、語頭を破裂音に変えて、人間集団を表す -es をつけた Gores であれば、特定の話者にとっては連想可能だったのだろう。L と R の区別のない中国人でも可能かもしれない。しかし、日本語族の話者の方が、2つの理由からより自然だ。1) 自らも R 音を使う。2) 朝鮮を高麗をよび続けていた。海野 (2004) は「かつて琉球社会では、朝鮮のことを「コーレー (高麗)」と称しており ... (中略) ...トメ・ピレスの場合はともかく、ゴーレスは琉球語の「コーレー」が訛ったものと考える方が理にかなう。」(p.8) と述べている。話は逆で、「ゴーレス」という語を聞いた琉球人がそれを高麗と解釈したのだろう。*2琉球が言語文化的に中世日本の影響下にあったことの傍証ともなる。

*1:海野 (2004) も「これによって、ゴーレスが「高麗」のシナ音 kao-li の訛ったものであったらしいことが知られる」(p.7) と述べており、この点で海野 (2003) から変更はない。

*2:海野は現代沖縄方言の「コーレー」が当時からその語形だったと思っていたようだが、沖縄で /ai/ が融合して /ee/ になったのは比較的新しい時代。例えば、語音翻訳 (1501) のハングル表記を見ると、卓子 타기대 (-台)、匙 캐 (かひ) などの例から、まだ融合していないことがわかる。

꼬레아 코리아

오인동. 2006. 꼬레아 코리아. 책과함께.

Korea やそれに類する西洋系の語は日本語の高麗に由来する。この仮説はほぼ確実だと私は考えている。それと同時に、どうして他の人間がそう明確に主張しないのか不思議に思っている。2016年7月には私の理解を説明する記事を書いた。このページにはぼちぼちアクセスがあるが、いずれも日帝が Corea を Korea に改名したという陰謀論との関係で言及されている。しかしそれは話の枕に過ぎない。私が本当に言いたいのはもっと前、400年以上前の経緯。残念ながらそちらに関する反応は観測できない。

現状の記事は完成しているとは言いがたい。一番の問題はポルトガル史料の調査が甘いこと。他にも Gores という語についても補足したい。しかしそれらを完遂する余裕はない。ひとまず知識の断片を雑記に残しておく。

上記の本は最近偶然見つけた。著者はロサンゼルス在住の整形外科医兼統一運動家とのこと。本の刊行は Google Books によれば2006年9月だが、2015年には統一後の国名を Gori にすることを主張するインタビュー記事を載せている。経歴からするとトンデモ本の危険性を感じる。しかし、意外なことに、集めている史料はまともで、推論も途中までは穏当に見える。しかし、Google Books の snippet で見える範囲からは、結論として何を主張しているのかよくわからない。普通に考えると著者の運動家としての主張と整合しない結論に至るはずだが。

先に私の主張を要約しておく:

  • モンゴル帝国時代の史料に見える Caule/Cauli は Korea の直系の祖先ではない。次に Corea 系の語が登場するまで時間的断絶があるし、L から R への変化が説明できない。
  • 1393年に明が朝鮮の国号を李朝に下賜したことで高麗の国号は消滅したが、日本人は引き続き高麗とよび続けていた。
  • Corea 系の語は大航海時代南蛮人が日本に到着したあとに出現する。Corai や Coray など、日本語の高麗を写した語がポルトガル史料に現れる。
  • ポルトガル語史料に現れる Coria, Còria, Còrea などは Corai/Coray をポルトガル語化 (-a をつけて女性名詞化) したものと推測される。
  • 英語の Corea はポルトガル語からの借用のようだが、最初期の用例は日本発。

呉は私と同じく Corea/Korea の陰謀論から話を説き起こしている。Corea から Korea への置き換えが米国主導で進んだこと、日本は併合後 Chosen を使っていたことを指摘している。それなら陰謀論には根拠がないという結論で終わりそうだが、私が探した限りでは、呉はそう明確には主張していない。

呉は Corea と日本語の高麗の関係を示唆する史料を並べている。しかし、両者の関係について明確な主張をしていない。呉は日本に来たイエズス会士の報告に言及している。snippet 表示からは部分的にしか確認できないが。Gaspar Vilela が 1571 年に日本から出した書簡に Corai/Coray が登場することは有名で、呉も紹介している。キリスト教史とは別に地理学史の研究も昔から行われている。日本だと海野一隆とかが有名。Dourado の同時期の地図に costa de Conrai が登場することも呉は紹介している。両者がどのような関係にあるのか以前から知りたいと私は思っているのだが、そのあたりを整理した研究をまだ見ていない。

呉はポルトガル史料の Corai/Coray が日本語を写したものであることを正しく認識している。そこまで来ておいて、どうして Corea と日本語の高麗を明確に結び付けないのだろうか。16世紀後半、国号が朝鮮に変わって久しいはずなのに、なぜ高麗の名称が使われ続けていたのか。惜しいところまで来ているはずなのに、呉はその答えにたどり着いていない。日本の史料を見ればいくらでも高麗が出てくるのだが。おそらく西洋史と日本史が別分野として断絶していて、両方に通じた者がいないのだろう。

2021年1月5日追記: Gores についての記事も書いた。

熟慮の使いどころ

2020 年になってしまったが、雑事に追われるばかりで進歩がない。進歩がないので去年 5 月のネタを蒸し返してみる。世の中一般的に想像される知性の高低と、計算機による実現の難しさは違う。前回は「昆虫とままごと」と言ってみた。世の中に蔓延する憶測に対する逆張りを 2 つ持ってきたというだけで、対比にはなっていなかった。今回は「ままごと」は捨て置く。「昆虫」を普通の言葉で置き換えると直感。それに対立するのは熟慮。現状で計算機上で実現されているのは直感。そしてこれから実現したいのは熟慮。しかし熟慮は使いどころが難しいという話をしてみる。オチはない。

時事ネタから始める。先月のことだが、日本維新の会が「近い将来、司書の仕事は人工知能 (AI) で代替可能になる」と主張して学校司書の配置増に反対した。そんなことが近い将来実現するわけがないのは大前提。問題は、維新の議員がAIにとって代わられるほうが早いなどと言って溜飲を下げる者が観測されること。どう考えても政治家の方が司書よりも計算機による実現が難しい。維新がポピュリズム全開なのに対して、批判者からは自分の方が賢いという自意識が透けて見える。そのぶん批判者の方がたちが悪い。

司書といっても多岐にわたり、特に今回の対象は学校司書と特殊だが、ひとまず司書の中核と思われるレファレンス業務を考える。これは質問応答の一種であり、研究自体は大昔からある。キーワードマッチングでなんとかしようとしていたのも今は昔、ここ 1, 2 年でベンチマークスコアは急激に上がった。まだ大規模知識源の扱いに難があるが、技術的には数年以内で解決可能だろう。少なくとも機械翻訳と同程度には。

2 点予防線を張っておく。第 1 に、技術的に解決可能であることと、社会的な実現には大きな落差がある。社会的な実現には政治的・経済的な課題の解決も必要。それは、いつまでたっても電子書籍が紙を置き換えるに至らないことからも明らか。比較的成功している例でいくと、機械翻訳にとっては膨大な対訳データの蓄積が決定的だった。レファレンス業務で対応するデータはレファレンス協同データベースということになるか。頑張っているとは思うが、絶対的な件数が少ないし、知識源たる書籍がまともに電子化されていないのも厳しい。

第 2 に、別に司書の業務すべてをそのままの形で計算機で置き換えようという話はしていない。いつもの例を使うなら、自動改札機は駅員による改札をそのままの形で置き換えたわけではない。利用者側の適応も必要だし、駅員が完全に消滅したわけでもない。しかし駅員の業務内容は一変するし、非正規化が進んだりもする。

さて、そろそろ本題に入る。世の中的には、ここ 1, 2 年で人工知能が急速に賢くなったことになっている。しかし私の印象は違う。最近わかってきたのは、人間の知性とされてきたもののくだらなさ。

例えばテキスト理解に使われている仕組み*1は本当にくだらない。何がくだらないかは前回言った通り。適当な入力刺激を受け取ると、適当な信号がネットワークを流れていって、適当な反応を示すだけ。条件反射的で、熟慮も何もあったものではない。こんな下等な仕組みでいろんなタスクがそれなりに解けてしまうことに驚きがあった。でも、それは最初だけ。あまりにくだらない論文があふれていて、読んでいて心底うんざりする。

しかし、少なくともベンチマークスコアは上がりまくって人間*2を上回ったりしている。どうやら人間が普段行っている仕事のかなりの部分は、それが世の中一般的には高度に知的だと思われているものであっても、下等な仕組みで実現できてしまうらしい。充分な訓練データがあれば。習得に歳月を要するが、いったん習得したあとの日常業務は定型的で、条件反射的に行っているような仕事は将来が危ない。技術的に置き換え可能というだけでなく、経済的にも置き換えのインセンティブが大きい。

世界中を巻き込んだ配線工学競争に参入してもつらいだけなので、別のことをやりたい。条件反射の直感を超えるには計算機に熟慮させるのが良さそうに思える。ああでもないこうでもないと悩んだ末に答えを出すような計算機。

しかしこれが難しい。難しい点はいろいろあるが、特に難しいのは勝算のありそうなシナリオをひねり出すこと。大学という組織にも、そこに棲まう研究者にも余裕がないので、勝算のなさそうな博打には資源を投下できない。

仮定の話をする。現状の、直感に基づくシステムがある。さらに熟慮するシステムがあって、後者のほうが高い精度を出すとする。その場合、熟慮システムを教師として直感システムを訓練すれば済むのではないか。データがいくらでも自動生成できるから、universal approximator としてのニューラルネットが本領を発揮する。そうなれば、熟慮システムの出番は訓練時だけ。実運用時は直感システムを使えば良い。熟慮していると速度面で圧倒的に不利。精度面で優位性がなければどうしようもない。

実運用時にも熟慮システムの出番があるとしたらどういう場合だろうか。訓練時にあらかじめ想定できない事例が実運用時に次々登場するというのはどうだろうか。例えば、翻訳に創造性がないわけではない。文化差に由来する表現などで、翻訳先の表現が事前に確立されていないものに対して訳語をひねり出す必要が生じることがあるだろう。訳語候補を作り出す部品と、その良さを評価する部品が協調するようなシステムが妄想できなくもない。

しかし、そんな複雑なシステムを作ったところで、精度が向上する余地があるようには思えない。既存のベンチマークでは駄目で、そういうシステムが勝てるようにタスク設計から見直さないとどうにもならない。思うに、人間が行っている (と思われる) 定型的な作業を切り出してタスクとして設定するというこれまでの業界の営みが、熟慮システムとの相性が良くない。

話はここで終わりでオチはないのだが、1 個蛇足がある。AlphaGo が話題になったのはもう 4 年も前のこと。世の中的には、人工知能が賢くなったという言説に渾然一体となって回収されているように思う。しかし、今回のネタを考えているうちに、ボードゲームは最近のテキスト理解の研究とは性質が違う気がしてきた。囲碁で直感に対応するのは評価関数だが、評価関数だけでは完結しない。外側に木探索アルゴリズムがいる。木探索のようなハードコードされたアルゴリズムに知性は感じられない。でも、直感を外側から使役しているという点で、直感・熟慮の二項対立において、熟慮の側に落ちるのではないか。熟慮界の中でも最弱といったおもむきだが。

*1:BERT とかそういうやつ

*2:といっても大体が、さほど真面目でもないクラウドワーカだろうけど

はてなグループからの引っ越し

2019 年 7 月第3週に数日かけて、はてなグループにあった雑記をはてなブログに移した。その処理のメモ。はてなグループを使っている人、さらには日記機能だけを使っていた人は少ないだろうから、需要はないと思われるが、備忘録として。

背景

2009 年 4 月にはてなダイアリーを使いはじめたが、すぐにはてなグループに移行したという経緯がある。当時のはてなダイアリーは encoding に EUC-JP を使っており、JIS の範囲外の文字を使おうとすると文字参照の嵐になって不便だった。はてなグループを採用したのは、日記の encoding が UTF-8 だったから。日記以外の機能は一切使っていなかった。

2019 年 7 月 3 日にはてなグループの年内終了の予告があった。サービス終了のリスクは前々から感じていた。明らかに放置されていたので。しかし意外だったのは、自社サービス内での移行機能をまともに提供していないこと。予告には「MT形式での出力など対応を検討いたします」とあったが、はてなのやる気のなさを考えると実現するか疑わしい。それに、MT 形式での export にしか言及してないということは、はてなブックマーク等の移行を行う気がないという意味だと理解した。それなら自分でやってしまった方がはやい。はてなブログを採用したのは、はてな記法を真面目に整形するのが面倒という消極的な理由。

手順は以下の通り

  1. はてなグループの日記を CSV ファイルにエクスポート
  2. エクスポートされた日記を記事に分割
  3. 各記事をはてなブログに仮アップロード
  4. 新旧記事の URL 対応を取得
  5. 記事間リンクを修正した記事をはてなブログに再アップロード
  6. はてなグループの日記の各記事を新 URL への案内に差し替えてアップロード

はてなグループの日記を CSV ファイルにエクスポート

はてなグループの日記の「管理」から「データ管理」以下の「日記のダウンロード」に進み、CSV ファイルをダウンロード。

「データ管理」とは別に「日記のエクスポート・インポート・削除」があるのが謎すぎる。

エクスポートされた日記を記事に分割

ローカルで CSV 形式の日記を記事単位のテキスト単位に分割。csv2hw.pl: CSV からはてダラ形式への変換スクリプトを取ってきて魔改造。改造の目的は HatenaBlogWriter 形式にあわせること。

  • はてなダイアリーライター形式は YYYY-MM-DD.txt という日単位のテキストファイルを要求するが、HatenaBlogWriter は YYYY-MM-DD_NN.txt という記事単位のテキストファイルを要求する。1 日に複数の記事を書いた場合は分割しないとけない。
  • HatenaBlogWriter が要求するメタ情報 (title, date, category 等) を抽出し、出力のヘッダに記述

例えば、日単位のテキストでは body 内に

*p1*[ネタ]昆虫とままごと

のように記述されていた記事タイトルから、記事番号 NN (01)、category (ネタ)、title (昆虫とままごと) を抽出。

各記事をはてなブログに仮アップロード

記事単位のテキストファイルを HatenaBlogWriter を使ってはてなブログにアップロード。

ruby hbw.rb

1 日 100 記事の投稿制限に引っかかった。実行を 2 回にわけることに。

新旧記事の URL 対応を取得

なぜ仮アップロードかというと、雑記内には以前の記事へのリンクが大量に貼られていて、これを適切に書き換える必要があったから。はてなブログでは、一度アップロードしてみないことには、どの URL が割り当てられるかわからない。

HatenaBlogWriter は ./data/YYYY-MM-DD_NN.txt.dat というファイル名でメタ情報を出力する。このうち、

url: https://rekken.hatenablog.com/entry/20190526/1558796400

に着目し、YYYY-MM-DD_NN から新 URL への対応表を作る。

記事間リンクを修正した記事をはてなブログに再アップロード

この対応表を見ながら、各記事テキストを走査し、http://rekken.g.hatena.ne.jp/murawaki/YYYYMMDD/pNNhttps://rekken.hatenablog.com/entry/YYYYMMDD/?????????? に書き換え。

再び hbw.rb を呼び出して再アップロード。これで新しいはてなブログ側の処理は終了。

はてなグループの日記の各記事を新 URL への案内に差し替えてアップロード

最後に古いはてなグループの日記を移転告知に差し替える。

改造していない、元の csv2hw.pl を呼び出して、CSV 形式の日記を YYYY-MM-DD.txt というファイル名の日毎の日記に分割。

日毎の日記を走査し、

*p1*[ネタ]昆虫とままごと

のような記事タイトルにマッチすると、それをそのまま出力。続けて、先の対応表を参照し、

<a href="https://rekken.hatenablog.com/entry/YYYYMMDD/??????????">はてなブログに移転しました</a>

という移転告知を出力。もとあった記事本文は捨てる。

この結果をはてなグループの日記にアップロード。アップロードには はてなダイアリーライター (hw.pl) を使う。HTTPS でのアクセスが必須になっているらしいが、

require Crypt::SSLeay;

が通らず、Crypt::SSLeay を CPAN で取ってきて build しようとしても失敗する。

コードの中身をちゃんと確認していないが、Crypt::SSLeay が登場するのはここだけ。stackoverflow のやりとりを参考にしつつ、これを

require Net::SSLeay;

に書き換えると問題なく動いた。

昆虫とままごと

いわゆる人工知能バブルはまだ続いているようで、大学や大学院*1の入試倍率は高いし、企業からの問い合わせも絶えない。その一方で、知性というものに対する世の中の認識と実態とのずれは解消される気配がない。計算機にとって何が簡単な問題で、何が難しいかは、人間の素朴な感覚と大きくずれている。例えば東大入試を解くなんてのは実は簡単な部類だが、世間では東大に合格するのは賢いと思われている。こうした世間の誤解に乗っかった危ういプロジェクト*2もあった。

昆虫とままごとは、最近私がたとえに使っているネタ。昆虫は下等生物の一例として取り上げているだけで、私が特に昆虫の神経系に詳しかったりするわけではない。言いたいことは、現在計算機で実現できている (あるいは近いうちに実現できそうな) 機能は昆虫のそれのように下等な仕組みだということ。ままごとは、特におままごとというと、幼稚な物事のたとえに使われる。だからこそ私は例に使っているのだが、しかし、私には圧倒的に高度な知性の産物に思えるし、実際ままごとができるロボットを作れる目処は立っていないはず。

昆虫的なシステムの例は機械翻訳ニューラルネットの導入とともに急激に品質が向上したことで知られている。*3質の面で機械翻訳が人間の翻訳者にかなわないとしても、圧倒的なコストの差を背景に、社会が機械翻訳を前提として作り変えられるのではないかと真面目に議論されている。

では、その翻訳器は何をやっているのだろうか? 翻訳器は、原言語の文を入力として受け取り、目的言語の文を出力するというわかりやすいインターフェースを持っている。中身はどうなっているかというと、適当なニューラルネットのユニットを適当に組み合わせてある。その組み合わせ方にはいろいろあるが、そんなことはここではどうでも良い。ともかく、適当な入力刺激を受け取ると、適当な信号がネットワークを流れていって、適当な反応を示す。条件反射的で、熟慮も何もあったものではない。条件反射というと犬を思い浮かべるが、下等さを強調するために私は昆虫を持ち出すことにしている。もっとよい比較対象があるかもしれないけど。

実用的な機械翻訳システムを訓練するには、原言語と目的言語の文の対が大量に必要になる。その数は数百万から数千万。もっと少量のデータをうまく汎化できないのかと思わなくもないが、ともかく、大量のデータで殴りつけると、そんな原始的な仕組みでもだいたい学習できてしまうのである。これは何を意味するのだろうか? 計算機による実現可能性という観点で知性の高度さを捉えなおすと、人間の翻訳者の作業の大部分は、実は知的でも何でもなかったことになる。このように一見知的だが実は知的でない仕事はこの社会のあちこちに転がっているはず。

次はままごと。ままごとは計算機にとって圧倒的に困難な課題。それを確認するために研究の現状を見ておこう。もう2年前になるが、人間とロボット (チャットボットなどとは違い、現実世界を動き回るもの) とのコミュニケーションに取り組んでいる研究者の講演を聞く機会があった。そこでは、人間が対話を通じて教示することで、ロボットが物の名前を学習するという課題に取り組んでいた。名前というのは難しいもので、普通名詞か固有名詞か、普通名詞だとすると、物体のどんな要素がその名詞と結びついているかが問題になる。ところが、その研究では、名前の固有名詞性を仮定していた。特定の研究がどうというのではなく、人類の研究の現状がその程度なのだろう。

それとくらべると、ままごとは何段階も高度。Google Images でままごと検索すると気合の入った既成品ばかり出てきて良くないのだが、もっと素朴な設定で、例えば薄く細長い木の板を包丁に見立てたとする。見立てるというのは実に高度な知的営み。現実にある板が板であることはもちろん認識している。そこに包丁という虚構の概念を紐付ける。しかもそれが虚構であることを認識し続ける。その木の板で何かを切る動作をしたとする。切る機能は虚構であるところの包丁に由来する。現実には切れていなくても、仮想的には切れていることなっている。つまり現実に関する認識と虚構に関する認識が紐付けられた状態を維持したまま更新されていていく。

ここまででも、計算機上での実現の困難性に打ち震えるほかないのだが、ダメ押しに、複数人でのままごとを考えてみる。複数の参加者が難なく意図を共有できているように見える。しかし、現実に関する認識の共有はともかくとして、虚構に関する認識がなぜ自然にできてしまうのだろうか? ままごとに限ると、調理に対象が限定されて意図が推測しやすいと思われるかもしれないが、ごっこ遊びは幼児に広く観察される現象である。模倣の対象が一般に確立されたものでないかもしれない。初見のごっこ遊びであったとしても、意図の共有に大きな困難があるようには見えない。そこにはおそらく生得的な何かがある。そして、それは人間をその他の動物とわける何かである。

さて、私は日本の大学に所属する研究者であり、懸案は年々悪化する環境のなかでどうやって生き残り、自分が重要と信じる研究を続けるかである。安易な生き残り策として挙がるのは、知的なようで実は知的でない問題を解き、高度な人工知能として喧伝し続けること。もちろん本当に重要だと思っているのはままごとの方。しかし、すぐに実用化して金になりそうな研究以外に何の価値もないと思われている以上、ままごとの研究をするには何らかの cover story をでっちあげなければならない。どういう話がよいだろうか?

*1:それぞれ工学部情報学科と情報学研究科知能情報学専攻を指す。

*2:実働の研究者はもちろん実態がわかっていたにも関わらず。

*3:機械翻訳の研究を横から眺めていると、できる部分はできるようになったけど、できない部分はできないままだし、そこは何ともなっていない印象がある。

Areal pressure in grammatical evolution: An Indo-European case study

Chundra Cathcart, Gerd Carling, Filip Larsson, Niklas Johansson and Erich Round. 2018. Areal pressure in grammatical evolution: An Indo-European case study. Diachronica 35(1). (appendix, code).

言語変化には縦の継承と横の接触という現象が関わり、両者をどうモデル化するかはいまだに決定打のない問題。この論文は普通はあえてやらないことをやっている。具体的には、縦のモデルたる系統樹モデルを使って (つまり接触については陽にモデル化せずに)、特徴を fitting し、系統樹上で変化の起きた時刻と場所を推定する。次に変化の時刻と場所をかきあつめて、2つの変化の時刻と場所が近ければ接触の可能性があると考える。

類型論の特徴の変化を単純化、複雑化、中立の 3 種類に分類し、それらと接触の関係を調べている。著者らは、複雑化に分類される変化は有意に非接触的だと主張している。

そういう結果が出ても不思議ではないが、手続きに微妙な点がいろいろある。そのあたりを整理するために書き出してみる。

系統樹モデルの限界

接触があると系統樹モデルは失敗するかもしれないというのが話の前提。この前提がありながら、系統樹を使って推定した結果から接触の分析を行うところがこの研究の意外性。

系統樹に沿った特徴の時間変化を考える。与えられるのは (時刻つき) 系統樹と葉の状態。推定するのは内部ノード (根を含む) の状態と、変化を支配する遷移率パラメータ。

魔法があるわけではない。子孫が同じ状態を共有していれば、それらの共通祖先も同じ状態だと推定できる。直感的にはそんな感じ。もちろん基本的には古い時代になればなるほど推定の不確実性が高まる。

系統樹モデルにおいて接触はどのような影響を及ぼすか。1 例を示す。各ノードが言語、その色が着目している特徴の状態を表す。? の記された内部ノードの状態は本当は知らない。

図 (a) が実際に起きた変化とする。矢印が接触を表す。モデルに推定させると、図 (b) のような結果が得られる可能性が高い。バツは変化の起きた地点を表す。このように推定した方が変化の回数が少なく、高い確率が得られるから。

接触があるのに系統樹モデルの適用を強行した場合、こんな感じの誤推定があちこちで起きるはず。つまり、系統樹モデルから接触を調べるのは garbage in, garbage out である危険がある。あえてやろうとは思わない。

祖先性制約

この問題への対策であると論文中で明確に主張しているわけではないが、著者らは系統樹モデルに祖先性制約 (ancestry constraint) を導入していることを強調する。よく見ると、今回の論文の第 1 著者が 2015 年の論文の第 2 著者だった。しかし、2015 年の論文は言語学的な分析と統計モデルの使い方の両方が本格的で驚いたが、今回の論文は統計面では怪しさが目立つ。やはり Will Chang が特異的にすごかったのだろうか。*1

祖先性制約について振り返っておく。現代語データに加えて文献記録の残る古代語のデータを系統樹モデルに与えるとき、通常は古代語も葉ノードにする。現代語は古代語の直接の子孫とは限らず、文語の近い親戚であるところの口語の子孫と考えた方が良い場合がある。このとき、内部ノードとして現代語・古代語共通祖語が系統樹上に設定される。共通祖語から古代語への枝がごくごく短いことが期待される。しかし、実際に推定してみると非常に長い枝が得られる場合がある。これは、共通祖語の状態が正解から程遠いものになっていることを示唆する。これに対し、祖先性制約は古代語が現代語の祖先となるよう取り得る系統樹候補に制約を加える。そうすると、古い時代にさかのぼる途中で強制的に古代語の状態になり、正解からかけ離れた状態を推定するのを防ぐ。

落ち着いて考えてみると、系統樹モデルで過去を復元したとき、実は既知であるところの過去には問題があったので対策を打ったという話である。既知の部分がそんな調子なら、本当に知りたいところの未知の過去についての推定結果が信用できるのかとつっこみたい気がしないでもない。現時点で得られるデータからの推定であって、データが増えたら推定結果も変わるものだとベイズ的に捉えるのが良いだろう。

祖先性制約は接触への対策であるはずなのに、なぜか著者らはそれを議論しない。上図の例で言うと、もし右3つの葉ノードの共通祖先の状態が黄色だと知っていたら、誤って青色と推定することはない。祖先が黄色で子孫が青色なら枝の途中で最低 1 回は変化が起きたことになる。これが祖先性制約の成功例。

失敗例も同じ図で説明できる。今度は右3つではなく、右4つの葉ノードの共通祖先の状態を知っていたとする。この場合は制約が役にたたず、図 (b) のように推定を誤ったままとなる。

結局、制約があるところでは (ある程度) うまくいっているかもしれないし、うまくいっていないかもしれない。制約がないところではうまくいっているかわからない。そして、著者らはこの問題をまったく調べていない。

その他

一番の問題を片付けたので残りを順番に見ていく。

データとしては Diachronic Atlas of Comparative Linguistics (DiACL) を使っている。というか、作っているのは第 2 著者。印欧語族を中心にアマゾン流域の言語とオーストロネシア語族を追加したような偏ったデータベース。日本語は載っていないし、個人的には使う気がしない。しかし、古代語の類型論的特徴が少しだが登録してあるのは魅力的。*2

データベースの中から印欧語族のみ取り出している。Greenberg 以来の類型論の研究では、複数の語族、地域で成り立つということが重要だったはず。Dunn et al. (2011) に対する批判がそのままこの研究にもあてはまる。

古代語を含む基礎語彙データをまず Will Chang が改造した BEAST に与えて年代付き系統樹を得る。この際地理位置も同時推定しているが、詳細を説明しない。*3 内部ノードが海上に置かれたりしているのを見ると、地理は考慮せずに単なるブラウン運動としてモデル化していると推測。根の地理位置の事前分布として平均 0、分散 0.001 の正規分布を緯度、経度それぞれに対して置くという意味のわからないことをやっている。一様分布では駄目なのか?

年代・地理位置付き系統樹を 20 個サンプリングし、根がユーラシアの外に出てしまった 2 個を取り除いて 18 個を分析に使う。どうしてこんなに少ないのか。自動処理なのだからもっと増やしても問題ないはず。1,000 個ぐらい使いたい。

基礎語彙から得られた年代・地理位置付き系統樹に今度は類型論的特徴を fitting する。得られた複数の木は Pagel and Meade (2006) のように、一つのモデルに組み込むと理論的にきれいだが、別々に処理している。内部ノードの状態はサンプリングすると得られる。

ノードの状態を決めると、それをもとに変化が起きた変化の位置 (時刻、地理位置) を推定する。親の状態が 1、子の状態が 0 のように親子間で状態が異なる枝に着目する。親から子の状態変化が 1 → 0 (死亡) なら、1 回しか変化が起きていないと仮定する。しかし、これは厳密には誤り。1 → 0 → 1 → 0 のように 3 回変化が起きた場合も考慮しなければならない。同様に、親子で同じ値であっても、1 → 0 → 1 のように偶数回の変化が起きた可能性もわずかだがある。*4

変化の位置を決めると、次に地理位置を決める。しかし、ここで説明している式 (7) は明らかに誤っている。気持ちを汲むと、親の時刻から変化地点までの長さに比例した位置を求めている。コードを確認するとそうなっていた。そうだとしてもやはり変で、仮にブラウン運動でモデル化していたとすると、親から子へと一直線に一定速度で動いているわけではない。本当は確率分布からサンプリングしないといけない。

6.1.1 でモデルの定量評価を行っているが、説明を読んでもよくわからない。またあとで読み返すかも。

6.1.3 で特徴間の依存関係について議論している。自明な、論理的な依存関係だけしか見ていない。ぼんやり読んでいると Greenberg 的な implicational universal も議論しているかのように錯覚する。著者らはモデルには何の対策も加えず、推定された結果における論理的に取り得ない値の組み合わせの割合を調べている。

とにもかくにも、こうして系統樹上での変化の時刻、地理位置が得られると、各変化タイプの性質を mean nearest-neighbor distance (MNN) という尺度で要約する。ある変化 (e.g. ある特徴の誕生) の系統樹上の事例に着目したとき、同じ変化の事例のなかで一番近いもの (nearest neighbor) の距離を得る。その平均が MNN。ここで距離を定義する必要がある。時間と空間を無理やり混ぜた変な尺度を式 (9) で導入している。

MNN を更にいろいろ補正して最終的な値が得られる。最初に書いたように、特徴の変化を、単純化、複雑化、中立の 3 種類にわけて傾向の違いを見たとき、複雑化だけは接触的ではないとしている。ここの補正も怪しい気がするが、気が向いたらまた考えることにする。

さてツッコミの時間。系統樹上で同じタイプの変化を探すという方針は妥当だろうか。わかりやすい例でいくと、SVO 語順の言語の話者が SOV 語順の言語だらけの地域にやってきて SOV 語順を獲得したとする。この場合、接触は起きているが変化するのは 1 言語だけなので、接触した言語は nearest-neighbor にならない。それで良いのだろうか?

印欧語族しか考えないのはどうか、例えばバルカンでトルコ語を無視してよいのかについては議論している。この議論は系統樹そのものと絡めて議論すべきだと思う。系統樹は、時間をさかのぼるにつれてノードを合流させていき、次第にノード数が減っていく。古代に話されていた言語の数が少なく、特定地域に集中していたわけではもちろんない。子孫を残さずに滅びていた言語が同時代に存在したのである。これは何も印欧語族と他の語族との接触に限らず、印欧語族内でも起きていること。

言語は、一度置き換えが起きてしまうと、置き換え前の状態は失われてしまって復元できない。せいぜい若干の痕跡が確認できるくらい。言語データは本質的に厳しい。DNA であれば、接触が起きたあとの状態から接触前の状態が復元できてしまう。言語と同じ離散データだが、接触の結果起きるのは頻度の変動であって、上書きされるわけではないから。ある allele の頻度が 0.8 の集団と 0.4 の集団が混じって 0.7 になるといった具合。こういう点が数十万のオーダで得られるおかげで、純粋な形では現存しない幽霊集団であっても復元できてしまう。接触を言語だけから特定するのは限界がある。何とかして遺伝データを活用したいところ。

そんなこんなでツッコミどころの多い論文である。Diachronica は言語系の雑誌だし、査読者も編集者も統計的な部分をろくに理解しないまま通してしまった疑惑。*5

*1:第 1 著者が書いた Python のコードはかなり汚い。

*2:autotyp 0.1.0 も中東の古代言語を収録している。

*3:公開されているコードには BEAST の設定ファイルは含まれていない。

*4:この論文が参照している Nielsen (2002) は正しく説明しているのに。

*5:editorial board に Quentin D. Atkinson がいるけど。