人間の言語習得はルールの学習ではなく丸覚え?

natural language processing blog にNon-parametric as memorizing, in exactly the wrong way?というポストがあった。言語モデリングはここ数年でだいぶ研究が進展したところで、ディリクレ過程とかなんだとか、数理的に精緻なモデルが(計算機の高度化も相まって)登場してきて、いろいろ分かってきているホットな分野である。

最近 PPM について調べたが、daiti-m さんの「PPM, 言語モデル, Burrows-Wheeler Transform」とあと「PPMと言語モデル (2)」いうポストを改めて読んでみて、ようやく分かってきた気がする。

Google 日本語 N グラムみたく巨大なデータを使っていると、スムージングなにそれ? と言っていてもいいくらい(機械翻訳でも Google 1T gram を用いた研究で、それだけデータがあるとスムージングは必要ない、というような話があったと思う)なのだが、現実的にはそんな大量のデータが手に入らなかったり、もしくは手に入ったとしても CPU やメモリやディスクの制約で全部使えなかったりと、スムージングは必須の処理なんだなぁ、と(当たり前だが……)。

ちなみにスムージングとは、データの中に出現したイベントに確率を割り振るとき、出現したものだけに確率を振ってしまうと、未知のイベントに対して確率を計算することができない(かけ算だとどこかが0になると全体が0になるので、スムージングなしで1箇所未知語があると全体の文が解析できなくなる)という問題(データスパースネス)への対処として、未知のイベントにも確率を割り振りましょう(そのぶん既知のイベントから確率を割り引く)、という手法のことである。

似た概念としてバックオフというものがあって、こちらはデフォルトのモデルで見つからないデータが入ってきたとき、より基礎的なモデルにスイッチすることで解析しましょう、という手法。たとえば直前の単語から次の単語が予測できるというモデルを作った(単語 2-gram モデル)として、これまで見たことない2単語の連鎖があっても、1単語に分解して考えたら見たことがある単語だった場合、文脈に依存せずその単語が出現する確率を計算するモデル(単語 1-gram モデル)で予測する、というもの。

それで元の話に戻ると、冒頭のポストは人間がたとえば英語の過去形を覚えるとき、「-ed をつければ過去形」「それ以外 went とか gave とかは例外」というように、ルールと例外で覚えているのか、それとも「talked, opened, は過去形」と全部過去形を丸覚えするのか、最新の機械学習的な成果では後者が支持されるが、これは認知言語学的な知見に反するのでは? という問題提起。しかしどうやら人間もルールで覚えているのではなく、全部丸覚えしていて、知らない単語に出会うとルールにバックオフしているのではないか、という話。被験者を使った実験では(直感的には前者かもしれないが、実際は)後者のようである、という感じ(でもちゃんと話を覚えていないので確かかどうか分からない、とのコメント)。

確かに実際よく使うものは(簡単にアクセスできるように)単語で覚えておいて、あまり使わないものは(ちょっと処理に時間はかかるが)デフォルトのルールで処理する、というのは合理的な気がする。あとは最初の「よく使う単語リスト」をどう構築するか、だが、人間は自動でこのあたりやるんだよなぁ。実にすごい。