自然言語処理の入門的な授業の構成

来年度、大学院生(とやる気のある学部生)を対象とした自然言語処理の授業をする予定で、シラバスを考えているところである。形態素解析から構文解析、そして意味解析につながるオーソドックスなスタイル(必ずしも機械学習を出さなくてもよい)でやるか、あるいは機械学習を前面に出してやるか(Teaching (intro, grad) NLP 参照)、悩んだのだが、そういえば来年度は人文系の人も含めた交換留学生対象の授業(同一内容だが英語で授業)もやることを思い出し、それなら後者は難しいか……。

自分自身人文系出身なので他人事ではなく、人文系で数学に苦手意識があると、かけ算が2回以上含まれる数式はダメで、かつ割り算が1回でも含まれる数式はダメで、cosやlogが含まれる数式はそもそも意味を理解することができない(そのため、意味を考えず単なる文字列として考えるので、かえって割り算を含む数式よりよいかもしれない)、といったところである。

自分も今でこそ線形分類器(最大エントロピー法、SVM、etc)に抵抗はないが、線形分類器とは何ぞや、というのが分かったのは、恥ずかしながらD2のころではないかと思う(ちなみに「線形分類器」や「形態素解析器」の「器」も最初は「機」でないか?と思っていた)。線形分類というのは、事例(から作成された特徴量)に重みをつけて分類する手法で、かけ算は1箇所にしか含まれないので、人文系の方も名前を怖がって食わず嫌いせず、勉強してみるとよい。

ただ、人文系出身の自分にもアルゴリズムがすぐ理解できたのはk近傍法までで、これはそもそも学習をしないので、理解しやすかったのだろう。k近傍法をご存じない方のために解説すると、k近傍法というのは、ある事例を分類するのに、その事例との類似度が上位k個の事例を用いて分類する手法である。たとえば、未知の単語の意味を決めるのに、文脈がもっとも似ている意味が既知の単語の語義を用いる、といった具合である。もちろんk近傍法でも、類似度をどう定義するか、あとkをいくつにするか、という問題はあるのだけど……。

また、次に理解しやすかったのは決定リスト(決定木)で、これも重みの計算なんかしなくてよくて、上からひたすらルールに当てはまるかどうかをチェックすればいいので、分かりやすい。伝え聞くところによると、リストや木のルールを見て人間が分かりやすい、という理由で現場では好まれたりしているらしい(ただ、自分は使われているのを見たことがない)。どのようにそのルールを構築するかを考えると、エントロピーや情報利得といった情報理論的な概念が必要になるが、情報理論に必要な統計的手法は、機械学習に必要な最適化数学よりまだ敷居が低い。

これらと比べると、パーセプトロンSVM、最大エントロピー法といった機械学習の手法が難しく感じるのは、分類は線形分類であれば分からなくもないが、最終的に「重み(パラメータとも呼ばれる……一つのものに複数の名前があってややこしい)」をどのように決めるのか、を理解するのが完全なるブラックボックスであるからかと思う。というのも、重みの決め方を理解しようと思ったら、どうしても微分積分偏微分、合成関数や対数の微分など)の知識が必要になるし、人文系出身の人はこのあたりが大学受験で試験科目に入っていないので、自分で勉強していないかぎりチンプンカンプンなのである。

あと、個人的に引っかかっていたのは、重みの学習のときに出てくる「正則化項」というものの存在で、これも天下り的に付け加えてあると難しいことをやっている感が高まるので、なんとかならないだろうか。個人的に「正則化」のイメージがついたのは、「パターン認識機械学習」の正則化に関する説明で、@tkng さんによるグラフのようなものを見て「なるほど、こりゃ正則化がないと全然だめだ」と腑に落ちたときである。そもそも「精度は100%でないと使えない」と思っている人に、正則化項のようなよく分からないものをつけて(既知のデータに対する)分類精度を下げるのは、理解しにくいことだろうが、現実は未知のデータで満ち溢れている(←ダジャレ)ので、脳内の事例を分類するだけではなく、現実的に使えるものを作ろうと思ったら、こういう処理が必要である、ということを(実例とともに)納得してもらうしかないだろう。

結局最適化数学(数値計算法)はおろか微分積分も履修していない前提でシラバスを組み立てるとなると、スタンダードな内容(機械学習導入以前の自然言語処理)が最適なのではないかと思う。もっとも、がんばってパーセプトロンだけで押せば、なんとかできなくはないような気もするが……。

Stanford の自然言語処理のシラバスを見てみると、deep learning をしれっと2回の授業で教えているのだが、こんな最先端の内容を教えられるというのは(教える方も、教わる方も)すごい。授業が週2回あると教える方も教わる方も大変だけど、NAISTでもそうだったし、けっこう発展的な内容まで一気にカバーできるので、集中的にやったほうがいいと思うのだけどな〜。

(2013-12-16 追記)ちなみに1冊教科書を挙げてください、と言われたら「自然言語処理の基礎」を挙げている。

自然言語処理の基礎

自然言語処理の基礎

薄くてさらっと読めるが、少し高度なことも書いてあり、この分野を概観することができる。機械学習については定番の「言語処理のための機械学習入門」である。
言語処理のための機械学習入門 (自然言語処理シリーズ)

言語処理のための機械学習入門 (自然言語処理シリーズ)