ChatGPT が突きつける「理解」とは何か

続いてChatGPTの話題。

GPT-3の登場あたりから、人間とコンピュータの対話(タイピングを通したチャット)が違和感のない文を通してできるようになったことで、この対話を通して、コンピューターは本当に分かって話しているのかどうかが議論になっている。

たとえば、フィボナッチ数列について、フィボナッチ数列とは言わずに 1, 1, 2, 3, 5, 8 の次の数字は何と聞くと、13と答える。GPT-4だと、これはフィボナッチ数列で隣り合った5+8 =13で13です、ということまで教えてくれる。ここで、昨年のSymbolic-Neural Learning Workshopで Ed Hovy先生の講演で取り上げられた通り,本当に分かって答えているのか、ネット上のいたるところにフィボナッチ数列の説明があるので、それを持ってきて生成しているだけではないのか、という疑問が湧く。

毎年、人工知能の講義の最初で、チューリングテスト中国語の部屋の話をしてきた。これまでは、単なる人工知能の常識としてこの2つの対比を取り上げてきたわけですが、ChatGPTの登場で、この問題が改めて「理解とは何か」についてのかなり深い問題提起になっている。

チューリングテストは、情報科学分野のノーベル賞といわれる賞であるチューリング賞 Alan Turingが考えたテスト。Alan Turingは、マンチェスター大学教授でチューリングマシンなど情報科学会に多大な功績を残した。余談になるが、残念ながらこれまで日本人は一人もチューリング賞を受賞していない。五十嵐滋筑波大学名誉教授はプログラム理論の研究でチューリング賞に近かった日本人のひとりであるが、これまで日本人の受賞者はいない。チューリングテストは、人間の判定者が、コンピュータまたは人間とチャットで会話して、相手が人間かコンピュータかわからなければ、そのコンピュータは知能を持っていると判断してよい、とするテスト方式である。チューリングテストは、知能とは何かを定義することが困難であることから、インタラクションを通して知的に見えればそれは知能を持っていると判断して良いという考え方だ。

これに対し、中国語の部屋は、UC バークレイ大学の哲学者 John Searleが、チューリングテストを批判するために考えた思考実験である。ある部屋の中に、英語しかわからない人間が居て、その部屋には膨大な量の本があり、その本には中国語の文字列を別の中国語の文字列に変換するルールが書かれている。部屋の中の人間は、非常に賢く、また中国語の文字は理解していないが、図形としてどの文字と文字が同じかのマッチングを大量の本に対して一瞬でできる。ありえない設定ではあるが、哲学で用いられる思考実験ですので、これをベースに考えを進める。さて、この部屋に外から中国語の文を入れると、中の人はこれをルールブックに従って超高速に処理し、漢字列を作って部屋の外に返すとする。ルールブックが良く出来ていて、部屋にいれた文に対する回答になっているとする(ここも思考実験の前提)。John Searle の問題提起は、この設定で中の人は中国語を理解していると言っていいのか、ということ。部屋の外からは中国語で対話できているように見えるが、実際に中の人はなにもわかってないではないか、という批判。

ここまでは、これまでも人工知能業界の中では考えられたことだし、哲学者ではなく工学者の立場から考えると、人を含めた部屋全体がシステムとして、それなりの答えを返しているのであれば、部屋がシステムとして知的であると考えて良いというのが模範解答になる。しかし、 ChatGPT の登場により、コンピュータが理解して会話しているのかということを議論しはじめると、John Searle の問いかけが重く圧しかかってくる。GTP-4になってから、会話の内容に極端なウソはなくなってきているし、人間でもときどき間違ったことを勘違いで言ってしまうことがある。前回の書いたように、プロムプトをうまく書くと、いろいろなシチュエーションを変えながら英会話をしてくれる。1970頃に開発されたElizaやScholarに始まる過去の作りこんだ対話システムでは、想定した範囲でしか会話が成立しなかったが、ChatGPT では明らかに人間と同じような柔軟性をもって会話してくれる。一見すると、ChatGPTは「分かって」会話しているように見える。しかしながら、本当に分かっているのか、分かっているとは何なのか、を突き詰めると答えが分からなくなる。チューリングテストに習えば、分かっていると見えれば分かっていると考えればいい、ということになるが、システム的に分かっていると言って良いかは工学的に気になる。John Searle 的に言えば、システム的にどこに分かっている部分があるかを明らかにしないと「分かっている」といってよい気がしない。

現状を分析すると、たぶん、GhatGPTは、分かって答えているものと分かって答えてないものが混ざっているという状態のように思う。ここで分かっていない、と思うのは、回答が明らかに整合しない場合があるから。特に、簡単な思考の連鎖でカバーできていないものは、回答がおかしくなる。分かっていると思うのは、簡単な連立方程式について教えてくれ、というとどの方程式の例題を与えても解き方をステップバイステップで教えてくれる。これでも分かっている、とは言えないと考える人も多いとは思いますが。分かってないと思うのは、ときどき、学習データにあった他の例題に引きずられたのか、与えたのと異なる連立方程式の解き方を説明することもあります。

基本的に、ChatGPT は言語モデルですので、中で知識ベースを持っているのではなく、次の文を生成するための隠れ状態に、過去の対話履歴や学習した言語情報を数値ベクトルに変換して保存しているだけですので、複雑な論理構造は持ってないと思われます。ここに埋め込める程度の論理性や繋がりの範囲では理解しているといってもいいのかもしれませんが、人間が思うような知識的な理解はできていないように思います。とはいえ、鳥と飛行機の関係のように、人間と同じように理解しなくても、近い将来には知識の埋め込みも対話生成のベースに入ることが想定でき、そのときにはどのような理解に基づいて会話しているのかまで追跡できるようになるかもしれません。あくまで個人的な想定ですが。

ChatGPT

ひさしぶりに言語処理の話題です。

GPT-4になっておかしな答えをすることも減ってきています。
まず ChatGPT とは何かを簡単に説明します。ChatGPTは、膨大な数の文書を学習データとして、どのような文が尤もらしいかを深層学習(Deep Learning)により学習したものです。大量の文書からある言語はどういう単語の並びを構成するかをモデル化したものととられることができるので、大規模言語モデルLarge Language Model (LLM)と呼ばれます。どれぐらい大規模かというと、ChatGPTの場合は文書量を公表していませんが、想像するに現在手に入る世界中のあらゆるの文書データから学習していると思われます。

ChatGPTは単に、1つの文がどのような単語並びになるかを予想できるだけでなく、文間の繋がりも学習しています。さらに、Chain of Thoughts (思考の連鎖)の学習を行っており、ある事柄の説明や解法をステップごとに分解して繋ぎながら文章を構成していくことも学習しています。

さらに、ChatGPTがBERTのような従来のLLMと異なるのは、人間との対話を通して、どのような答えをしていくかの学習に対して膨大な調整がかけられていることです。このあたりは、かなりノウハウに近いところで現状のChatGPTどのように学習しているのかは論文になっていないため分かりませんが、InstructGPTと同じようなことをやっていると言われています。この方法は Human in the Loop と呼ばれ、人間が学習のループの中に入って調整していくということです。通常は、人間が学習データを作成して、深層学習はそのデータを読み込んで学習して、学習した結果のモデルを使って問題を解く、という流れですが、Human in the Loopは、ベースの学習が終わった後に、オンライン学習のように入力に対する答えを与えながら、出力を調整していくというアプローチです。例えば、政治的に中立な答えをするようにかなり綿密に調整してある感じがします。また、実際にユーザが使った結果も学習データとして加えていき、うまく動かなかったときの調整をかけている気がします。昨年の11月にChatGPTのトライアルの実行をしたときは、表示された文が戻っていくところを見た記憶があります。意地の悪い質問をして、矛盾点を問い詰めたら、表示されていた文が途中からバックスペースで減っていって、答えられませんというエラーになりました。この時は相手が人間だったと思っています。初期のときだけですが。

このようにChatGPTは人間が頼みそうなことについてはあらかた事前に学習しています。たとえば、200文字で要約してください、といって要約できるのは、似たような要約問題を何問も学習させているからです。このとき、要約の学習は、要約に関する対話を与えていますので、どのような入力をするかが大事になります。つまり、プロンプトエンジニアリング(Prompt Engineering)と呼ばれる、「指示」の与え方に関するノウハウが非常に大事になります。たとえば、「円安対策を400文字で考えてください」と書くより、「あなたは日本政府に対してアドバイスをする金融政策の専門家になって答えてください。円安対策を400文字で考えてください」と一種のロールプレイのような形にした方が良い回答が得られます。なぜそうか、と言われると、そのように学習データが与えらえているから、としか言えません。

では、以下、実際にとてつもなく有用なChatGPTの使い方を紹介します。ある程度インターネット上でも似たような紹介はありますが、英会話を実現する日本語によるプロンプトは自然言語処理を研究している、豊田工業大学の知能数理研究室で開発したもので、ここに書くのが初出、オリジナルです。

ここではGPT-4をベースにしたBing chatを対象にプロンプトを紹介します(Bing Chatでしか検証していませんので GPT-4ベースのChatGPTでどうなるかは分かりません)。

TTI-COIN英会話プロンプト(この名前で引用可)

1. 英会話の勉強をしたいので,英語でのロールプレイをしてください.
2. もし,私の英語表現が英語ネイティブが使わないものだった場合は,正しい表現を教えてください.
3. (状況設定)のロールプレイをします.私が(役名1)で,あなたが(役名2)です.
4. あなたが会話を始めてください.

プロンプトは日本語ですが、英会話がスタートします。かなり調整してここに至っていますので、少し変えると日本語で会話を始めたり、勝手に先生と生徒の会話の両方を列挙したりします。これの凄いことは、英語による会話がほぼ人間と同じように成立します。たとえば、中学数学の授業の会話の中で連立方程式を適当に立てて、答えると、その解き方をステップバイステップで(もちろん英語で)教えてくれます。その教え方が、まったく違和感がありません。英語学習にはぴったりです。さらに、英語表現の修正を指示してあるので、"By the way, ..."といって、タイプミスはもちろん、文法的におかしなものや、文法的には会っていてもネイティブが使わない表現は指摘してくれます。

このプロンプトの優れた点は、ロールプレイの指示が日本語ですので、日本人の英語学習者が自分が思ったシチュエーションを簡単に設定して英会話ができます。

最後に、ChatGPTで生成した文がオカシイとか、説明がまだまだなどとTVなどでいわれていますが、このレベルで日本語や英語の文を生成できること自体が数年前の技術レベルから比較して、驚異的な進歩であり、長年の自然言語処理研究者たちの研究成果が結実したものです。また、十分なプロンプトを与えずに、生成結果が良くないといっているのは、指示をまったくしていないか、指示の仕方が悪い可能性も多分にあります。要は使いこなせていないのに批判しているのです。ちなみに今Prompt Engineerを年収4000万円の年収で募集している企業があるとか。

最後にと言っておきながらもう一点蛇足で、日本独自のChatGPTを作らなければいけないという声がありますが、注意が必要なのは、ChatGPTは日本語だけで学習して動いているのではないということです。使っていて明らかに分かるのは、内部は英語を中心に動いていて、日本語のデータが日本語の言語モデルを定めて枠をはめているという感じです。ただし翻訳しているのではなく、多言語翻訳のように隠れ状態で多言語が混ざっている感じです。ですから、日本独自の生成言語モデルを作るのは、話としては結構なことですが、英語や多言語を含めて学習をかけないと日本語のみではデータ量の差があるのでChatGPTには永遠に追い付きません。GoogleのBARDでさえChatGPTに追いつけていないので、責任者は相当な覚悟で取り組む必要があります。

7インチタブレット

NLPとは全く関係ありませんが、未だにNexus7同等の7インチタブレットを見つけることができません。

現時点での必須条件として、純正のAndroid 11以上、ディスプレイ7インチ、フルHD以上、メモリ4G以上、SIMスロットx2(e-SIMスロット含む)を想定しています。実用的にあると便利なのは、指紋認証Felicaと防水。希望はタブレットですので、縦長ではなく5:3ぐらいの比率の7インチが理想です。最近、スマホの画面サイズが大きくなってきていて、7インチ前後のものが出ています。それらの中で、縦長の6.8インチではありますが、なんとかこれらの条件に近いのが Motorola の Moto g52jで最近、暫定的にこれを自分で購入して使っています。3万5千円ぐらいですので購入しやすい価格です。Moto g52jのスペックのまま、5:3ぐらいのタブレット(ファブレット)を5万円ぐらいで出してくれれば買うんだけどなぁ。ちなみになぜ7インチかというと、ちょうどいいから。上着のポケットにスッと入り、ブラウザ画面の全体を見ることができる。縦長だと、縦にするとブラウザ画面の横幅が足りないし、横にすると見える縦の行数が少なくなる。同じく画面上のqwertyキーボードも縦にするとキーが小すぎるし、横にすると画面を半分ぐらい隠してしまう。8インチのdtabでも仕事上は使えるけど、体感的に持ち歩くには少し大きすぎる。個人の好みの問題でしょうけど、同じような感想の人は多いと思う。

AMIA 25x5

AMIA(American Medical Informatics Association: 米国医療情報学会)は、AMIA 25x5という活動を宣言しており、2022年から5年間で医師などが電子カルテ等の文書作成に要している労力を25%削減することを学会の活動目標として定めている。さらに、この活動を通して労力の75%削減を最終的に目指している。

このような学会による数値目標の設定はいかにもアメリカ的で、学会の存在意義を社会に対して明確に訴えるためのメッセージとして十分に強力だろう。我々の研究室も、まさにバイオメディカルNLPの研究をしていますので、この活動に自然と巻き込まれていることになります。日本の学会は、基本的に論文誌の発行や大会の開催をつつがなく実施することが活動内容であって、学会として世の中を変えることに対する数値目標を設定するという話はあまり聞いたことがない。

2009年まで英国立マンチェスター大学にいたときには、その時点のTHE世界ランキング90位ぐらいから、さらにランキングの上位に上がるためには何をすべきかを大学として検討し、中長期計画を立てていた(当たり前ですが私は全くタッチしていません)。現時点で50位ぐらいまで上がってきているので、たぶん当時の計画には効果があったのだろう。

ちなみにイギリスの大学評価は、非常に細かく綿密に数値化されており、カリキュラムや授業の状況を調査するだけでなく、学科単位で所属教員・研究員の論文数やインパクトファクター、被引用数からスコアを算出し、一般に公表する。このため、うちの大学の○○学科は△△大学の○○学科より、学科のスコアが0.3高いといった宣伝が公然と行われ、高校生もこのようなスコアをベースに何処の大学のどの学科がどれぐらい頑張っているのかを判断する。そのため、人事の際には、被引用数の多い論文やインパクトファクターの高い論文誌に掲載された論文を多く持っている教員・研究員が優先的に採用されることになる。

被引用数をベースにした指標にh-indexがあり、アメリカの大学の教員の採用時点では人物像以外にh-indexの値がかなり参考にされるようだ。h-index は、ある人が著者となっている論文を被引用数が多い順に並べて、上位N位までの論文の被引用数がN以上となる最も大きいNである。例えば、ある人の被引用数第12位の論文の被引用数が15回で、第13位の論文の被引用数が11回であればその人のh-index=12となる。h-indexには少し問題があり、長く研究しているほど論文数が多いので有利になる。また、1本だけ参照数が数千あるようなノーベル賞級の論文を書いていて、残りの研究はあまり参照されていないという特殊な場合は、h-indexはあまり高くない。とはいえ、h-indexは研究者のパフォーマンスを計るためのそこそこ良い尺度であるので、これからも使われていくだろう。

とここまで書いたところで、Times Higher Educationからサーベイ依頼のメールが来ました。少し監視されているようで気味が悪い。考えすぎだと思いますが。

BERTは外部知識か?

自然言語処理の論文で、外部知識を使っていない方法の中では、我々の方法が一番スコアが高い、という主張をしたいことがある。ただ、よく考えると今は多くの研究でBERTを使っているので、厳密には外部知識を使っていないとは言い難い。
タスクによりますが、場合によってはテストデータに含まれる文でBERTを学習していて、そのことが(気が付かないうちに)性能に影響している可能性もあります。この場合は期せずしてトランスダクティブな評価になっている。最悪のケースでは、例えば、英文の穴埋め問題をBERTを使って解かせたときに、実はテスト文と同じ文でBERTの学習をしているということもありうる。この場合は、トランスダクティブというより、学習時にテストデータの答えを見ていることになってしまう。
今の研究の流れでBERT系の事前学習を使わないことは考えらないので、BERTがだめということではないのだけれど、外部知識を使っていないという主張をするときには(自戒の意味でも)気を付けないといけない。今の若い人はBERTありきで研究をしているので、ではどうすれば外部知識を使わないで評価できるかという疑問を持つと思う。厳密には、与えられた訓練データ以外のものは何も使わないでテストするということになる。例えば、単語やトークンを昔のようにOne Hotベクトルで表現することになる。BERTも訓練データだけで学習したものを使えば、外部知識を使っていることにはならない(相当大きな訓練データでないと効果は少ないと思いますが)。
逆から考えると、今やもう訓練データだけを使って外部知識なしで評価するという時代ではなく、いかに外部知識を事前学習などで活用するかという点で勝負する研究にシフトしているという見方もできます。
少し宣伝になりますが、我々の研究室では、薬学分野の知識を知識グラフで表現して深層言語処理に組み込むと性能が上がることを確認しています。

自動翻訳の品質確認

DeepLによる日本語のアナウンスの翻訳結果を見てみた。

原文

台風14号の接近に伴い、9月19日(月)の夕方から列車の運転本数を減らし、夜までに列車の運転を取りやめる可能性がございます。 運行計画の詳細につきましては、今後の状況を踏まえ、9月19日(月)の11時頃を目途にお知らせする予定です。 また、9月20日(火)についても、始発より運転を見合わせる可能性がございます。
今後の気象情報と列車の運行情報にご注意ください。

DeepLによる訳文

Due to the approach of Typhoon No. 14, the number of train services will be reduced from the evening of Monday, September 19, and may be cancelled by the evening. We will inform you of the details of the operation plan around 11:00 a.m. on Monday, September 19, based on the future situation. Also on Tuesday, September 20, trains may be suspended from the first departure.
Please check the weather and train operation information carefully.


Translated with www.DeepL.com/Translator (free version)

かなりの出来栄えです。一瞬で翻訳されますが、たぶん私が5分ぐらいかけて書く英語より遥かに良いと思います。first departure は first train の方がベターでしょうか。future situation は、原文の意図がどのあたりにあるかによりますが (weather) forecasting の方が意図が伝わりそうです。

参考までに上記日本語アナウンス文に対応した英語のアナウンス文

Due to a nearby typhoon, the number of trains operating will decrease from the evening of September 19, and there is a possibility that the train will stop by the night.
The next notification is planned for September 19 at around 11.
Please check future weather reports and information on train operation.

内容はだいたい伝わりますが、英語的なスムーズさが不足しているように感じる人は多いのではないでしょうか。

特に何かを批判するつもりはなく、自動翻訳が直訳調ではなくなってきていることを確認できたというお話です。海外のIT企業には、日本人向けのマニュアルやホームページを自動翻訳で提示しているところが結構あります。

tqdm備忘録

tqdmを使って端末環境で学習時の進捗を表示すると、表示がずれていき画面が見にくくなることがある。あまり推奨されないが、ひとりで使っている環境ならtqdmモジュールを直接書き換えることで解決できる。対処法ではあるが、tqdmモジュールの中のstd.pyの143行目あたりのUTFの代入値をUTF=u"-#"のように書き換えると進捗にあわせて#が増えていくようになる。画面も乱れない。
なお、自分のPython環境で該当するstd.pyが確信を持ってわからない人や自分が何をしているのかわからない人は、経験値が足らないのでこのような対処法に手をだすべきではありません。修正の結果不具合が発生する可能性もありますので自己責任でお願いします。
Jupyter Notebook用には別の正当な対処法がありますのでググってください。