初めに
今回訪問した研究室は、理学部情報科学科/情報理工学系研究科 宮尾祐介先生です。
先生の研究室はこちらから!!
メンバー:私は、小さい頃より、「山や川など自然の中で遊ぶ時と、小説(特に古典)を読む時に同じような感覚に陥るのはなぜだろう、この感覚は何なのだろう」という疑問を持っていました。そんな中、プログラミングに触れる機会があり、その活動の中で自然言語処理に興味を持つようになります。
今回訪問する宮尾先生の研究室はまさにその自然言語処理を扱っており、「自然言語で表された概念を、自然言語以外の情報に結びつける研究」について伺いたいと考えています。
特に、
・言語と感情の関係とは何か
・言語は実世界をどのように表しているのか
・自然言語処理によって、言語表現についてどこまで探求することができるのか
について詳しく聞いていきます!!
グラウンディングについて〜ケーキ?ケヤキ?〜
メンバー: まず初めに、先生の研究室で行われている研究の一つとして、自然言語で表された概念を自然言語以外の情報に結びつける「グラウンディング」というものがあるということを伺いました。この分野について、現在の研究状況などを教えてください。
先生: 現在、自然言語処理が活用されている場面はたくさんあります。例えば、対話システムなどが一例として挙げられますね。
しかし、この技術をより良いものにするためには難しい課題がいくつもあります。そのうちの一つが、自然言語の意味の難しさです。
コンピュータは、文字列の近さ(類似度)をすぐに計算することができます。DNA配列など、一文字ずつ取り出して比較することを想定していただければ良いと思います。自然言語処理でも、同じように文字列を比較することはできます。でも、文字列がよく似ていることと意味の近さは必ずしも一致しないということが往々にしてあるのです。
一つ例を挙げましょう。
「友達からケーキをもらった」という文章と「友達からケヤキをもらった」という文章は、文字列を単純に比較すると一文字しか違いませんが、意味は大きく異なりますよね。ケヤキをもらうのはかなり大変笑。
同じように、「朝早くからケーキをもらった」という文章も、文字列自体は似ていますが、初めの単語の意味するところは全く違う。
逆に、文字列比較ではこれまでのものより離れている「友達からモンブランをもらった」という文章 は、意味で考えるとよく似ている。
単語には複数の意味を持つものも多くあるので、ある文脈中でどの意味で用いられているのかを見分けることも非常に重要なことです。
では意味をどうやってコンピュータで正しく表現したり読み取ったりするのか? これが課題なんです。
メンバー:確かに!よくよく考えてみると、文字通り受け取るだけでは本来の意味から大きく外れてしまうことってたくさんありますね。
先生:そうなんです。ここで質問にあったグラウンディングのお話に戻ります。グラウンディングとは、自然言語と現実世界をつなぐ研究のことです。
我々の実体験と言語の意味は何らかの関係が必ずあり、これを探るのがグラウンディングと言えます。
例えば、株式市場のグラフを見た専門家はグラフの形状から何かの兆候を感じたりできます。これは視覚から得た情報と我々が考える意味にはなんらか繋がりがあるということを示していますよね。
また別の例を挙げると、ある人が「カスミガセキに行きたい」と言ったとして、旅行の話をしている文脈だったら埼玉県の”霞ヶ関”かもしれないし、法学部の学生が言っていたらそれは”官僚になりたい”という意味かもしれない。このように、言語以外の情報も加味して全体を理解しようという取り組みです。
そしてこの研究の中では、ニューラルネットワークなどを用い、単語の意味や画像情報を実数ベクトルで表現して対応関係を求めたり(※1)、それらの関係の論理式を計算したりします。これは あくまで文と文の関係をどう表すか、ということを解析するためのものです。
(※1)単語をベクトル化するとは
単語をベクトル化する手段として、Word2Vecという手法を紹介します。「同じような意味や使われ方をする単語は同じような文脈の中に登場する」という「分布仮説」に基づいて単語をベクトル化すると、同じような意味や使われ方をする単語同士はベクトル空間上で近い場所に存在するようになり、語の意味を統計的に扱うことができるようになります。
さらに、単語をベクトル化することで単語の意味の足し引きをすることが可能です。例えば、
「王様」ー「男性」+「女性」=「女王様」
「日本」ー「東京」+「ソウル」=「韓国」
といった例が挙げられます。
メンバー:なるほど...グラウンディングを研究する手段としてニューラルネットワークがある、ということですね。
ニューラルネットワークで何ができるか
先生:そうです、ニューラルネットワークについてもう少し詳しく説明します。
例えば、近年は猫の画像をコンピュータに取り込むと、点の集まりでしかない画像から「これは猫っぽい」などの判断をさせることができるようになってきました。
コンピュータの中で実際に行われているのは、各点の状態を表すベクトルや行列に対してさまざまな演算を繰り返し行い、画像が表す情報を集約したベクトルを得ます。そしてそのベクトルから 「猫」や「鼻」といった記号を求めます。
人間も同じように「記号化」を行いますが、その後に、ある単語がどのような概念(意味)であるか、また他の概念とどのような関係を持つかを定義する「意味化」がなされます。この点で、コンピュータの画像認識とは異なります。
じゃあ、これをどうやってコンピュータにおいても実現するか?
これはニューラルネットワークによるグラウンディングの一つの重要な課題です。
他にも課題があります。例えば、「形容詞や助詞をどうやってグラウンディングするか」ということです。
例えば、「猫かもしれない」とはどういう意味でしょうか?「かもしれない」ということは、「猫じゃないかもしれない」わけで、具体的な状況だけでは表すことのできない可能性を背後に隠しています。
また、「この1週間で雨が降るでしょう」という文章は、未来のことを表しますが、どのように現実世界とつなぐのが良いでしょうか。どれくらいの確率で、どんな根拠で、どのようなメッセージ性があるのか。人間は文脈を踏まえた上で受け取れます。しかし、コンピュータにはそれを行うことはできません。
近年の研究の成果で、画像の説明文生成はうまくいっています。これは、ある写真があったときに、その内容を正しく説明する文をコンピュータが作ります。ただ、画像と対応づけられる言語表現はごく一部であるというのが実際のところです。
「百聞は一見に如かず」とよく言われますが、むしろ逆もまた真であるのではないかと思います。 自然言語が表す意味は、ひと目見ただけでは表現し切ることのできない情報もたくさんあるのです。
メンバー:ニューラルネットワークの課題が色々と見えてきました。先生ご自身のテーマにはどう関わってくるのでしょうか。
先生:そうですね。今挙げたような課題に対して今主流のAI研究は大量の情報を読み込むことで解決しようとしていますが、そうではなくて「意味」をきちんと理解するしくみを実現することが大切だと私は思います。では、そのためにはどうすれば良いのか。それを考えるのがこれからの私の研究テーマですね。
また、人間の認識の過程は抽象度の高い順に、抽象的な概念をはじめ三つに分類されると考え ていますが、現在グラウンディングの研究が進んでいるのは最も抽象度の低いインスタンスのみで、それ以上の2階層に関してはまだまだ研究が進められていません。
メンバー: 先ほどのお話の中で「意図していた情報と全く反対の情報が出力される」というお話がありましたが、これはどういうことなのでしょうか?
先生: このことを考えるには、単語のベクトル表現を考える必要があります。
実は、反対の意味を持つ単語のベクトル表現はベクトル空間上でとても距離が近いのです。
そもそも、語彙的な意味の学習はどのようになされているのかというと、周りの単語からの推測で す。
例えば、「朝みたら”ぼげら”が美味しそうだった」「”ぼげら”が真っ赤に熟していた」「”ぼげら”に塩 かけたら美味しそう」などという文章があり、”ぼげら”とは何かがわからないとします。 (※著者注:先にネタバレしてしまいますが、みなさんお分かりの通りこれはおそらくトマトですよね笑コンピュータはどうやって見つけるのでしょうか?)
学習にあたり、まずは周りの単語の出現回数をカウントします。各単語の出現回数を並べると長い一つのベクトル表現になります。周囲の単語の出現回数を調べることができたら、意味が近い単語の周りには同じような単語が現れるだろうとする「分布仮説」に従って、既存のデータ中で単語の類似度の高いものを探します。
そうすると「どうやら”ぼげら”と”トマト”は周りの単語が似ているぞ?」とコンピュータが気づき、こうして周りのベクトルの類似度の高さから「”ぼげら”=トマト」と学習することができるのです。数学的にいうと、「周りの単語のベクトルからその単語が正しく予測できるような単語ベクトルを学習する」ということです。
メンバー:周囲の単語から推測する...人間もよくやる穴埋め問題のような手法ですね。
先生:その通りです。単語ベクトルを学習するため、穴埋め問題を大量に解かせるという手法がよく取られます。しかし、ここで元の問題に戻るのですが、周りの単語を調べるだけでは反義語は区別で きないケースが非常に多いのです。「上がった」「下がった」などは同じ文脈で出てくる可能性がかなり高いからです。だから反対の意味の単語を出力してしまうことが起こります。 実際、機械翻訳の開発例として「地震が起きたら海岸から逃げなさい」を翻訳したら「海岸に行きなさい」という出力になってしまったこともあるみたいです。不正確な出力を完全に除去するのが難しい場合、医療現場などでの応用分野では慎重な利用が求められます。このように、コンピュータにとって同義、反義、全体、部分などの区別は難しいです。逆に言えば、 これらをきちんと使い分けることのできる人間は、意味関係の種類にすごくセンシティブだというこ とです。この性質を活かして、人間の作った辞書を利用して単語ベクトルを再学習するといった手法も取られ始めています。
現在ではBERTなどの優秀なライブラリも揃ってきていますが、逆に専門家はそういったツールを用いてもできないことに目を向けています。
入力と出力の間に何らかの構造を入れて媒介させたり、ベクトル表現だけでなくて論理式をうまく使うなど、さまざまなアプローチで研究が進められています。
「意味を理解する」とは
メンバー: コンピュータと人間が認識する「意味」の違いについてのお話がありましたが、「意味を理解する」という行為自体が抽象的なように感じます。我々はこれをどう捉えるのでしょうか。
先生: おっしゃる通り、現在の機械が言葉の意味をきちんと「理解」しているかと言われると、疑問ありますよね。
例えば、チャットbotと三日間生活できるかといったら結構微妙。通じていないやりとりはいくらでも生まれるので。対話システムが実質的な問題解決につながるかが大きな疑問であるのは事実で す。
例えば、「取材」という今私たちがやってることがコンピュータに代替可能かと言われたら多分無理ですよね。記事執筆に必要なことを聞き出す、それに対して求められていることを答える、というこのやりとりはまだ機械には実現できない領域の活動です。
一方、限定的な文脈では機械を利用することができる場合もあります。例えば、「子育て支援ロボット」で「褒める」「怒る」などの反応をパターン化して実装をするという取り組みがあります。ただ、現状では人間と同じように急におこるいろんな出来事に対して適切に対応したり、感情を抱けたりするかと言われるとまだまだ課題はあるので、これらの技術をどのように活用を進めていく か考えていく必要があります。
実は、私は昔の講演で「自分が生きているうちは機械翻訳はできない」と言ってしまったのですが、今や素晴らしい機械翻訳技術ができてしまった笑。今考えると、機械翻訳は出力すべき情報は全て入力で与えられているので、割と簡単な問題だったのかもしれません。ビジネス言語の翻訳などはかなり進んでいますね。
このように、今は不可能だと思っていても思わぬブレイクスルーがあるかもしれません。この分野は何が起こるかわからない分野でもあります。
最終的なゴールはどこに?
メンバー: 自然言語処理の最終的な目標はどこにあるのでしょうか?
先生: 人によっていろいろな考え方があると思います。なぜなら、「人間がどのように自然言語を理解し ているか」「どのように自然言語が生まれたのか」など、人によって疑問はさまざまだからです。 私自身の疑問は、「自然言語は世界に数千種類あるにもかかわらず、どの言語であっても赤ちゃ んは絶対習得することができるということは、言語には何らかの普遍性があるということを意味す るのではないか?」ということで、それを追究することができればと考えています。 他では、「言語の普遍性をデータから導き出したい」「文章の読みやすさ・読みにくさを数値化したい」「脳波と言語の関係を知りたい」などさまざまな目標がありますね。
また、出会ったことのある人の中には、「機械翻訳で世界平和を実現したい」という人もいました。 このような目標には夢がありますね。券売機やみどりの窓口が全てロボットになる時代も近いでしょう。私はそのうち裁判などもある程度自動化されるのではないかと考えています。
メンバー:「生きているうちは...」のくだりのお話を考えると、確かに猛スピードで研究が進んでいると言えそうですね!
2050年の姿
メンバー: 先生は、自然言語処理の分野は2050年にどのような姿になっていると考えていらっしゃいますか?
先生:「完全な自然言語処理が本当に実現されたらもはや人間はいらない」と言えるほど、この分野は究極的な課題に取り組んでいると考えています。
自然言語処理は本当に複雑なので、それを習得する人間は本当に不思議です。これを解明するのは相当大変だと思います。
人間が話す言語は人間の認知能力の限界に制限されているかもしれないので、コンピュータ同士でより効率的な言語を作るように仕掛けると、私たちの言語観はもっと変わってくるかもしれま せん。ちなみにこの研究分野は「言語創発」と呼ばれているそうで、コンピュータが勝手に作り出した言語を分析することで我々の自然言語の性質を理解していくという研究です。今ある言語をスタート地点にして研究する自然言語処理もあれば、逆に無から生み出す言語を研究する試みもあるのです。研究が進めば、言語がそもそもどう生まれたかという課題に迫ることができるのではないでしょうか。
また、人間は未知の事態に対応するために、因子を分解して課題を細分化して考えることで過去の蓄積から解決策を生み出すことが可能です。一方で、未知の事態と別の事象を関連づけた り、一般化したりする抽象化能力は人間独自の能力であり、機械にはまだできません。
不安定なように見えて秩序だった人間や生命に対して、パーツの集合体にすぎないコンピュータはどのような点で異なっていて、どのような点で似ているのでしょうか。
先ほども言ったように、この先この分野で一体何が起こるのか全く想像がつきません。ただ、言語に関してより理解が深まっていくだろうということは言えそうです。
もし自然言語処理の勉強をしてみたいという方は、今年の秋ごろに共著で教科書を発行予定なので、ぜひ読んでみてください。