小町守先生インタビュー(その1)

小町守先生インタビュー

近年では、ChatGPTをはじめとして、人工知能による自然言語処理が大きな注目を集めています。このインタビューでは、東京都立大学(当時、現在は一橋大学)の小町守先生に、自然言語処理研究の現状についてうかがいました。

科学史・科学哲学から自然言語処理へ

【ーー】  今日は、東京都立大学の小町守先生にお話を伺いたいと思います。小町先生は、じつは科学史科学哲学研究室のご出身で、その後、自然言語処理の研究に進まれたということで、そのキャリア自体も非常に興味深いです。まずは、いままでの研究の経歴を教えていただけますでしょうか。
【小町】  ありがとうございます。東大の文Ⅲに入ったのが98年なんですけれども、結局、かれこれ学部に7年間いたので科哲には4年間、後期課程はフルで留年してお世話になっていて、これ以上、もう1年やったら放校になるというところまでいたので、駒場には長くお世話になりました。一方、東大に入ってから教育用計算機センターというところでコンピューターを触るシステム相談員というアルバイトを始めて、そこから独学でプログラミングを始めて、開発をしてというので情報系に興味が出てきました。駒場の科哲に進学してから、そのまま駒場の言語情報のほうの大学院に行きたかったんですけど、大学院の出願締切りを間違えて留年が決まって、それで、さっきの教育用計算機センターのシステム相談員の先輩から国立国語研究所でプログラマーのアルバイトを探しているというので行ってみたら、そこが自然言語処理的なことをやっていたので、自然言語という分野を知って、大学院でこういうのをやってもいいなと思いました。
 自分自身、教養学部で野矢先生や非常勤でいらしていた飯田隆先生の授業を受けて、科学哲学というか言語哲学に興味があったんですけど、大学院ではフィールド言語学といって、まだ文法も辞書も分かっていないような言語を自分でつくるみたいなことをやるか、もしくは、コンピューターを使って日本語とか中国語とか英語のようなメジャーな言語の文法とか辞書とかを自動的に抽出するみたいなことをやるか、どっちに行こうかなと思っていたんですけど、さっき言ったように最後の年は放校寸前だったので、これはしっかり卒論を書くのに集中して、大学院は奈良先端に行こうかなと思ったのが、大体最後の年の秋ぐらいでした。そこからは岡本先生と現在は早稲田にいらっしゃる加藤茂生先生に時々見ていただきつつ、駒場の図書館に行ったり本郷の図書館に通ったりして卒論を書いて、奈良先端大に行ってから自然言語処理を始めたという感じですね。
 奈良先端大の松本研究室というところは、機械学習を使った研究を当時盛んにしていた研究室で、松本先生自身、もともとロジックの出身なので、必ずしも統計とか機械学習に何か特別な思い入れがあったわけじゃないようですけど、たまたま統計的な手法を始めたら世の中がそっちの方向に行ったので、何か有名な研究室となったというふうに謙遜しておっしゃっていましたけど、ぼくが入ったときにはほぼ機械学習一色になっていて、ぼく自身は文系から行ったので、最初は情報系とか理工系出身の人と知識の格差があったので大分大変でした。
修士の頃は、日本語の述語に関する項構造を自動的に同定するというような研究をやっておりました。文章の中で、この部分が述語で、この述語のガ格は何、ヲ格は何、ニ格は何と、ガヲニというような格を使って項構造を解析するんですけれども、アプローチとしては機械学習なので、それぞれの述語に関してどういうふうなものが格になっているのかというものを、人手でまずつけると。人手でつけたものから、機械学習を使って自動的に推定するモデルを学習するというようなことを、修士のうちはやっていました。
 博士に進学してからは、述語項構造の研究は結構難しいということが分かったので、ちょっとひよりまして、もう少し機械学習寄りのことをやりたかったということもあって、研究テーマを変更しました。修士に入った当初は全然分からなかったけど、門前の小僧状態で2年間いたら機械学習の話も何となく分かるようになってきたなと思ったのもあって、グラフ理論を――というかグラフ理論って、グラフに詳しい方からは「それはグラフ理論じゃない」と言われるでしょうが、自然言語処理の中の幾つかのアルゴリズムがグラフを使って定式化することができて、グラフを使って解析することによって自然言語処理の問題が見通しよく解けるというようなアプローチを研究していました。
 その研究で博士号を取って、そのまま助教になったんですけど、助教になったら今度は、これまでの延長線上の研究をやっていたら、いつまでも指導教員の言ったことをやっているように見られるなと思ったので、もう指導教員とは全然別のことをやろうと思って、いろいろ試行錯誤しました。たまたま始めた言語学習とか言語教育に自然言語処理の技術を応用するというような、そういう研究テーマでだんだん成果が出るようになって、今では自然言語処理の教育応用の専門家というふうに世の中からは見られていると思います。
 2013年に首都大学東京に来たときも、准教授でも独立した研究室を持つので、上には教授がいなくて自分で1つの研究室を持つという形なんですけど、新しい研究室なので、それまでやってきた教育応用の研究も続けて、もう少し新しいこともやろうと思っていました。うちの研究室の1期生の1人が、深層学習がおもしろそうだからやりたいというふうに言い出して、今ではもう使われていないようないろんな手法も含めて研究をスタートしたというのがありまして、2013年ぐらいから深層学習を日本でやっていた人が多分少なかったので、その波に乗って研究室も大きくなったというような感じですね。
 ぼくの印象では2015年ぐらいからは、自然言語処理はもう深層学習一色になったイメージなんですけど、2014年から2015年ぐらいにかけて、研究室で機械翻訳も、それまでは統計的な手法でやっていたし、ぼく自身も大学院生時代は統計的な手法でやっていました。ところが、2015年に用例翻訳の研究をするために京大に丁稚奉公に出した学生が、何やら京大ではニューラルネットワークを使った機械翻訳がアツいと言われているというニュースを持ち帰ってくれて、実際研究室でもニューラルネットを使った機械翻訳の出力を見て、まだまだ全然できてなかったんですけど、むちゃくちゃ流暢な出力を出すということが分かって、これは何か面白くなるんじゃないかなと思って、ニューラル機械翻訳をスタートしました。その後、あっという間に世の中の機械翻訳もニューラルネットワークに変わったんですけど、機械翻訳分野では、ある一時期はうちの研究室が日本最大のグループって何人かの方に言われたぐらい(笑)。機械翻訳やっている人自身が、多分日本全国で2桁以内ぐらいだった頃なので、そのうちの、学生も入れると10人ぐらいがうちにいたから、割合としてすごい人数いたということなんですけど。
 そういうわけで今では機械翻訳をやっているグループと、自然言語処理の教育応用をやっているグループと、それ以外、基礎的なことをやっているグループという3グループの研究をやってかれこれ10年ぐらいというような感じです。
【ーー】  どうもありがとうございます。いまのお話に関連してすこし伺うと、もともとスタートは文Ⅲということなので、完全に文系だと思いますけれども、そうすると、最初に本格的に自然言語処理の研究を始めたときには、けっこう苦労されたのではないかと思います。プログラミングはアルバイトでやられていたということですが、最初の頃はとくにどの辺で苦労されたということはありますでしょうか。
【小町】  プログラミング自身は学部1年生の頃から独学でやっていて、大学院に入ってしっかり勉強してみたら、これは自己流だったなというふうに分かったんですけど、大学院でそんなにむちゃくちゃ苦労したという印象はないんですよ。苦労したのは数学ですね。数学を理工系の人並みにやっていなかったので。NAIST も入試に数学あるんですけど、入った後に本当に苦労して、線形代数とか微分積分とか、偏微分も知らなかったし行列の転置というのも知らなかったので、制御工学の最初の授業で「この行列の転置、知らない人」って言って、ぼくだけ手を挙げて、その授業でその先生が線形代数の基礎を30分ぐらい教えてくれて。
 後から、理工学部出身の同級生の一人からは、おまえみたいなやつが来るからこんな復習で時間使われて困ってる、文系はもう出ていけみたいなことも言われたことあるんです。今からするとそう思うのもしようがないかなという気もするんですけど、当時は睡眠時間毎日3時間で、その差を埋めようと勉強しました。機械学習の論文とか、本当、何言ってるんだか分からなかったですね。
【ーー】  とはいえ、必要性があると、モチベーションもあるので、がーっと勉強して、やればやれるもんだというところはあるのでしょうか。
【小町】  どうでしょうね。時間かかりましたね。最初の3か月ぐらいは機械学習の勉強会にも出てたんですけど、もう、ちょっと途中から、これはもう分からな過ぎてつらいという……。勉強会が結構長いんです。普段から3時間、夏休みには6時間とかやるんですけど、分からない状態で6時間やるって結構つらいんですよね。これは今の実力では到底ついていけないと思って、修士に入学してすぐ夏休み入るぐらい前に機械学習の勉強会はドロップアウトしました。博士に上がってもう一遍入ってみたら分かるようになっていたので、時間をかけて知識がちょっとずつついているんだなというふうには思いますけど。
 最近、文系から理系に行くというか、情報系、機械学習に行く人も増えてきていますけど、今、ぼくが転生して大学院に入る受験をするとかだったら、全然受からないと思います。今の人たちは教科書もあり、普通に最初から勉強して行くと思うのでそんなことはないと思うんですけど、当時はそこまで機械学習がはやっていなかった時代だったから、自分でも何とかついていけたのかなと思います。本当に、数学がハードルですね。
【ーー】  今は、学部は文系で大学に入って、でも人工知能をやりたいという人も増えていると思いますが、みなさん、ちゃんと勉強して大学院に入ってくる感じでしょうか。
【小町】  そうですね。当時は、自然言語処理の研究の中でも、機械学習を使ってやらないとどうしようもないみたいなのは、多分2割ぐらいだったんですよね。残りは別に機械学習やらなくても、統計的な手法とかでもできたし、データをつくるというのでも普通に論文とか書けたと思うんですけど、今、10人修士の学生がいたら、機械学習使ってない人は多分1人もいないと思いますね。全然、世の中が変わったんだという気がします。
【ーー】  ちょうどいまのお話とも関係しますが、自然言語処理の研究を始められたときには、まだディープラーニングはそもそもなくて、おもに統計的な自然言語処理に取り組まれていたわけでしょうか。
【小町】  はい。
【ーー】  統計的なアプローチだと、構文論的な情報など、従来の言語学的な知識も取り入れて精度を上げることをいろいろやっていると思うのですが、その点で、統計的な手法と、ディープラーニングベースの手法というのはかなり異質な感じなのでしょうか。
【小町】  そうですね。特に一番違うのは言語生成。機械翻訳もそうなんですけど、出力がテキストになっているようなものは明らかに違います。これまでのやり方と全く違い、流暢な出力が出せるようになったのはその仕組みの違いによるんですけど、そこは大きく違いますね。
 統計的な手法というのは、基本的には頻度をカウントして、確率を計算して処理をするという形なんですけど、それぞれの入力が全部シンボルなんですよね、離散的なシンボル。単語とか、フレーズとか。フレーズが登場した回数が何回とか、そういうものを使ってやります。一方、今のディープラーニングの方法は、このフレーズの頻度が何回とかいうのは全く使わないんです。学習するときには一事例一事例見るんですけど、それを見て実際には何か予測をしてみて、外れていたら全体の変数の重みを更新してというのをわーっと大規模にやるんですけど、特にパーツの頻度みたいなものをカウントしているところはどこにもないんですよね。そのため、統計的な手法の場合には、中に入っているものとかは大体人間が見れるんですよね、単語とかフレーズとかに頻度がついているから、これが何回出たとかなっているので、これはこのデータのこの部分にありましたとか分かるんですけど、ニューラルの場合にはそれが分からないので、何でこうなったのというものを突き止めようと思っても難しいこともありますし、出てきたものをこういうふうにしたいというふうにコントロールするのも、統計的手法とかルールベースの手法と比べると大分難しいですね。ニューラルネットワークの手法でも前処理や後処理で100%こっちの出力に強制させるようなことはできるんですけど、ニューラルの枠組みの中で自然に出力を強制するためには複雑なシステムが必要になります。

その2に続く

その3
その4