Wolfram氏によるChatGPTの仕組みと機能に関する解説について
数式処理システムのMathematicaや質問応答システムのWolfram Alphaを開発したStephen Wolfram氏が「What Is ChatGPT Doing … and Why Does It Work?」(ChatGPTは何をしていて、なぜそれがうまく機能するのか?)と題するブログ記事を発表しました。
この記事は、とても分かりやすい言葉で、沢山例を挙げて詳しく説明していますので、ChatGPTの仕組みを理解したいと思っている人には必読の記事だと思います。
ブラウザの翻訳機能を利用して日本語で読むこともできますが、易しい言葉で書かれた文章であるにも関わらず、これを完全に理解するのは簡単なことではありません。
前半は大規模言語モデル、ニューラルネットワーク、Transformerなどの仕組みについて相当詳しく説明しており、後半はChatGPTに関するWolfram氏独自の解釈や見解が紹介されています。
この記事について、ChatGPTの助けを借りながら、1章ずつ解説していきたいと思います。併せて、ChatGPTを利用した英文記事の読み方も紹介します。
なお、Wolfram氏のブログ記事は公開されていますが、同内容のものが以下のように書籍化されています。
以下は、ChatGPTに作成してもらった各章ごとの要約です(一部修正しています)。
第1章 一度に一語ずつ追加するだけ
ChatGPTは、人間が書いたと思えるテキストを自動生成することが可能で、その能力は驚くべきものです。その主な目的は、入力されたテキストの「妥当な続き」を生成することです。「妥当な続き」とは、人間が書いた何十億ものページから予想される次の単語やフレーズを意味します。
ChatGPTがエッセイのような文章を書くとき、その主な作業は「これまでのテキストに基づいて次の単語は何か?」を何度も問い続け、その都度新たな単語(トークン)を追加することです。しかし、これらの単語の選択は確率に基づいて行われます。つまり、最も高い確率を持つ単語だけを選ぶと文章は平坦であまり創造性を見せませんが、ランダムに低い確率の単語を選ぶと、文章はより面白いものになります。
このランダム性があるため、同じプロンプトを何度も使用しても、毎回異なるエッセイが得られます。さらに、temperatureというパラメータがあり、これによりどの程度低い確率の単語を使用するかが決定されます。エッセイの生成では、temperature=0.8が最適であることがわかっています。
なお、ここでの説明は主にGPT-2と呼ばれるシステムを用いていますが、より新しく大規模なGPT-3モデルを使用すると、結果はさらに良くなります。GPT-3モデルを使用すると、temperature=0の場合でも、temperature=0.8の場合でも、より良いテキストを生成することが可能です。
【筆者コメント】
ChatGPTは、入力された文章に対する「妥当な続き」を予測して、一語ずつ単語を追加していくことによって文章を生成します。最も確率の高い単語ばかり選択するよりランダム性を与えた方が自然な文章が生成されます。temperature=0.8が最適と断言しているのには驚きました。
第2章 確率はどこから来るのか?
ChatGPTが次に使用する単語を選択する際には、確率が大きな役割を果たします。文字列生成の最も基本的な方法として、英語のテキストの中で各文字がどれだけ頻繁に現れるかを計算することが考えられます。この手法では、例えば「猫」と「犬」の記事での文字の頻度が算出されますが、これによって得られる文章は意味を成さないことが多いです。
これを改善するために、単一の文字だけでなく、文字のペア(2-grams)の確率を考慮に入れることが考えられます。このような2-gramsの確率を用いると、「実際の単語」が生成される可能性が高くなります。また、十分な量の英語テキストを用いれば、単一の文字や文字のペアだけでなく、より長い文字列(n-grams)の確率も推定することができ、それに基づいたランダムな単語は、より「現実的」に見えるようになります。
しかし、ChatGPTのように全体の単語を扱うとき、各単語の出現確率だけでなく、単語のペアや、より長いn-gramsの単語列の確率を考慮することでより意味のある文章を生成できます。しかし問題は、n-gramsの単語列の確率を計算するために必要な十分な量の英語テキストが存在しないことです。存在するすべての英語テキストでも3-grams以上の確率を推定するには不十分であり、20単語以上のエッセイの一節の確率を求めることは不可能です。
この問題を解決するためには、未知の単語の配列の出現確率を推定するモデルが必要となります。ChatGPTの核心にはまさにこれを可能にする「大規模言語モデル」(LLM)が存在します。
【筆者コメント】
長い単語列には無限の組み合わせが存在するため、学習データから直接にその出現確率を求めることは無理なので、これを推定できる大規模言語モデルを利用します。
第3章 モデルとは何か?
理論科学の本質として、「モデル」が重要な役割を果たします。たとえば、ピサの斜塔から落とされた砲弾が地面に落ちるまでの時間を知りたいとします。すべてを直接測定して結果を表にすることも可能ですが、理論科学では各ケースを測定し記憶する代わりに答えを計算する手順を提供するモデルを作ります。
データから明確な法則が分からない場合、数学的な推測を行い、モデルとして直線を使用するかもしれません。そして、与えられたデータに平均して最も近い直線から、任意の階からの落下時間を推定できます。
複雑な数学的手法も試すことができ、それによってより良い結果を得ることができます。ただし、間違ったモデルを選択すると、全くうまくいかないこともあります。
重要なことは、モデルには必ず一定の構造があり、特定の「調節可能なノブ」(つまり、設定できるパラメーター)が存在するということです。ChatGPTの場合、このような「ノブ」は実に1750億もあります。
しかし、驚くべきことに、これらのパラメーターだけで、十分に次の単語の確率を計算するモデルを作ることができ、それによって合理的なエッセイの長さのテキストを生成することができます。
【筆者コメント】
ChatGPTでは、単語の出現確率を予測するためにモデルが利用されており、モデルをデータに合わせるために1750億ものパラメーターを持っています。
第4章 人間のようなタスクのモデル
人間のようなタスク、特に言語や画像認識のモデルを作る際の難しさとは何かを考察します。これは、人間が生み出す言語テキストや画像といった複雑なデータを単純な数学でモデル化するのは困難だからです。
具体的には、数字の画像認識の例を考えてみましょう。私たちは様々な数字のサンプル画像を得て、新たに与えられた画像がどの数字に対応するかをピクセル単位で比較することができます。しかし、手書きの数字や様々な変更や歪みがある場合でも、私たちはそれを認識することができます。
この問題は、各ピクセルの灰色レベルを変数とみなし、その変数の関数を構築することで解決可能です。この関数は複雑であり、数十万の数学的操作を必要とするかもしれません。しかし、この関数に画像のピクセル値の集合を入力すると、その画像が表す数字が出力されます。これはニューラルネットの考え方につながります。
しかし、この関数が間違った結果を出す場合もあります。たとえば、数字を徐々にぼかしていくと、ある点で関数はそれを認識できなくなります。しかし、「間違い」とは何か、それは私たちが人間の視覚認識のモデルを作ろうとしている場合、そのぼかした画像を初めて見た人間がどう判断するか、という観点から考えるべきです。
私たちのモデルが「良い」ものであるためには、その関数から得られる結果が一般的に人間の判断と一致する必要があります。そして、我々は基本的にこのような画像認識タスクに対する関数を構築する方法を理解しています。それが数学的に証明できるかどうかは別問題です。人間の行動を数学的に理論化するためには、人間の視覚認識の限界について理解する必要があります。
【筆者コメント】
画像認識モデルや言語モデルなどの人間のようなタスクのモデルの場合、人間の知覚と一致するのが良いモデルです。人間の知覚についての数学的理論が判明していないため、これらのモデルが機能することを数学的に証明することはできません。
第5章 ニューラルネット
ニューラルネットワークは、人間の脳の働きを単純化したモデルとして1940年代に発明されました。これは複雑なネットワークで結びついた約1000億のニューロン(神経細胞)から成り、物体や画像を認識する能力を持っています。
ニューラルネットワークが物体を認識する方法は、アトラクターの概念がキーとなります。例えば、手書きの数字の「1」と「2」を考えた場合、全ての「1」が一つの場所に引き寄せられ、「2」が別の場所に引き寄せられるようにしたいとします。その場合に、平面を「流域」によって区切られた領域に分割するアトラクターの概念を利用して、物体認識を実現します。
ニューラルネットワークは、層状に配置された一連の理想化されたニューロンから構成されます。各ニューロンは簡単な数値関数を評価する役割を持ち、それぞれのニューロンは前のレイヤー(層)のニューロンからの入力を重みと呼ばれる特定の値で加重し、その結果を次のレイヤーに伝達します。最終的には、これらのニューロンが全体として複雑な数学的関数を形成します。
ニューラルネットワークを適切に動作させるためには、訓練が必要です。この訓練は機械学習を通じて行われ、各ニューロンの重みは訓練データに基づいて調整されます。これにより、ニューラルネットワークは人間が物体を認識するのと似た方法で、複雑な画像やパターンを認識することが可能となります。
さらに進んだ例として、ニューラルネットワークを猫と犬の画像を区別するために訓練した場合、その結果は人間の認識と一致することが経験的に確認されています。しかし、猫と犬を識別する際に何を基準に判断しているのか、人間が理解できる形で説明するのは難しいです。
ネットワークの「ニューロン」がどのように動作するかは理解できますが、猫と犬を認識するために60,650のニューロンが絡み合った高次元の空間を視覚化するのは難しいです。初期のレイヤーでは、「背景なしの猫」や「猫の輪郭」などを表現していると解釈できますが、深いレイヤーほど解釈が難しくなります。
ニューラルネットワークが特定の特徴を抽出し、それに基づいて画像の認識を行っていると言えますが、その特徴が「尖った耳」のような我々が名前をつけられるものかどうかは不明です。また、人間の脳が同じような特徴を用いて認識を行っているのかどうかもあまり分かっていません。
ニューラルネットワークの働きについて物語的に説明を与えることは現在のところ難しく、それは計算的に還元不可能であるからか、あるいはまだ「科学」を理解していないからかは不明です。言語生成モデルChatGPTでも同様の問題が存在しますが、言語の豊かさと詳細さが解析を進める手がかりになるかもしれません。
【筆者コメント】
ニューラルネットワーク(NN)は人間の脳を模したニューロンの集合で表され、ニューロン間の重み付けが活性化関数などを利用して決定されます。NNも人間と同じように特徴を抽出することで判断を行いますが、NNが実際にどのようにタスクを達成しているのかは不明です。
第6章 機械学習とニューラルネットのトレーニング
ニューラルネットワークは、特定のタスクをこなすことができるだけでなく、例から学習してタスクを実行するようにトレーニングすることができます。例えば、猫と犬を区別するニューラルネットワークを作る際、わたしたちは多くの猫と犬の例を示し、それらからニューラルネットワークが機械学習することを可能にします。訓練されたネットワークは特定の例から一般化する能力を持っています。
ニューラルネットワークのトレーニングはどのように動作するのでしょうか。基本的には、与えられた例を正確に再現するような重みを見つけることを試みます。そして、それらの例の間を合理的に補完または一般化するニューラルネットワークを頼りにしています。
訓練の各段階では、ネットワークの重みが徐々に調整され、最終的には求める関数を再現するネットワークを得ることができます。重みの調整方法は何でしょうか。基本的な考え方は、私たちが求める関数からどれだけ離れているかを確認し、それに応じて重みを更新することです。
どれだけ離れているかを知るために、「損失関数」を計算します。これは我々が得た値と真の値の差の二乗の和です。訓練が進むにつれて、損失関数は徐々に減少します。
そして最後に、損失関数を減らすために重みがどのように調整されるかを説明します。重みの調整は、勾配降下法と呼ばれる手法を用いて行われます。これは現在の損失から最も急な方向へと進んでいき、損失を最小化する重みを見つける方法です。多くの重みがある場合でも(ChatGPTは1750億もの重みを持っています)、この最小化はある程度の近似で可能です。実際には、深層学習の大きなブレイクスルーは、多くの重みが関与しているときに最小化がより容易になることが発見されたことに関連しています。
一般的に、ほとんど同じ性能を持つ重みの組み合わせが多数存在します。しかし、訓練例の範囲外の予測(外挿)を求めると、異なる重みの組み合わせが大きく異なる結果をもたらすことがあります。これらは、どれも観測データとは一致していますが、「箱の外側」で何をすべきかについて異なる固有の考え方で対応しており、どれが正しいのかを決定するのは困難です。
【筆者コメント】
ニューラルネットワーク(NN)のトレーニングの目的は、NNが正解を出力できるような最適な重みを見つけることであり、予測値と実測値の距離(損失関数)が最小となるように重みを調整することでこれを実現しています。そして、関与する重み(パラメーター)の数が多いほど実測値との乖離が少ない最適の解を見つけることが容易になります。
同じ性能を持つ重みの組み合わせは沢山あります。しかし、学習データがない未知の領域での予測(外挿)では、この組み合わせによって大きく異なる結果が出力されるため、予測の信頼性が失われることがあります。
第7章 ニューラルネットトレーニングの実践と伝承
ニューラルネットワークのトレーニングは主に試行錯誤による技術であり、特定のタスクに対して適切なネットワークアーキテクチャーを選択し、訓練データを取得することが鍵となります。
同じアーキテクチャーは異なるタスクでも有効であり、一般的に人間のようなタスクに対しては、ネットワークにエンドツーエンドの問題を解かせる方が良い結果を得られることが分かってきました。また、ニューラルネットワークの構成要素はシンプルなものがよく、それらが自己組織化することでより複雑な問題解決が可能になります。
訓練データの取得は重要な課題であり、特定の入力と期待される出力のペアを提供する教師あり学習が多くの場合において用いられます。しかし、ChatGPTは、マスキングによる「教師なし学習」を利用して訓練データを獲得し、テキストの続きを生成する方法を学ぶことができます。これにより、明示的なタグ付けなしで、与えられたテキスト例から直接学習することが可能となります。
ニューラルネットワークの学習過程は、与えられた訓練例を最適に捉えるための重みを決定することであり、これにはハイパーパラメータの設定などが必要となります。さらに、損失関数の選択や損失最小化の方法、バッチサイズの調整なども重要な問題となります。学習過程は、損失が徐々に減少する様子を観察することで特徴づけられます。
ニューラルネットワークのトレーニングは、その規模とデータ量により大量の計算労力を必要とし、その大部分は数値配列の操作に費やされるため、GPUの利用が一般的で、GPUの利用可能性でトレーニングが制限されます。しかし、今後はニューラルネットワークの訓練方法に大きな改革が起こる可能性があります。
現在のニューラルネットワークは、高精度の数値を用いた微分計算を基に学習を行いますが、より少ないビット数での計算でも十分な性能が得られる可能性が示唆されています。また、計算システムの進化に伴い、ネットワークの再構築を行うことで、より効率的な学習が可能になるかもしれません。さらに、訓練の過程を逐次的ではなく、脳のように並列的に行うことで、ニューラルネットワークの訓練を大幅に高速化できる可能性があります。
【筆者コメント】
ニューラルネットワーク(NN)のトレーニングでは、アーキテクチャーの選択や学習データの取得が重要です。
アーキテクチャーについては、異なるタスクでも単一のアーキテクチャーが効果的に機能すること、エンドツーエンドの問題でNNを訓練し、中間的特徴や符号化を自ら発見させた方がよい結果が得られること、シンプルなコンポーネントを採用して自己組織化させることで複雑な問題解決が可能となることなどが分かってきました。
データの取得については、反復学習、学習データのバリエーションを増やすデータ拡張などが有効です。また、別のNNが学習した重要な特徴のリストなどを転移学習することで、必要なデータを大幅に減らすことができます。
最後に、現在のNNのトレーニングは逐次的で、トレーニング中は、ほとんどの部分が動いていないため、もし将来のコンピューターが脳のように、すべての記憶要素(ニューロン)を計算要素にすることができれば、NNのトレーニングをもっと効率化できるかも知れません。
第8章 「確かに、ネットワークが十分に大きければ何でもできる!」
大規模なニューラルネットワーク、例えばChatGPTの能力は素晴らしいと思われがちです。そして、それが大きくなればなるほど全てを達成できると考えられています。しかし、これは必ずしも正しいとは限りません。なぜなら、計算の還元不可能性という現象により、全ての計算が効率的に短縮できるわけではないからです。
通常、我々の脳は計算の還元不可能性を避けるように機能しています。それは、複雑なプログラムの操作を頭の中で完全に理解することは、事実上不可能だからです。しかし、コンピュータを使えば、長く、計算的に還元不可能なことも容易にできます。しかしその一方で、これらに一般的なショートカットは存在しません。
計算の還元不可能性は、予期しないことが起こる可能性を常に示唆しており、特定のケースで何が実際に起こるかを知るためには、明示的に計算を行う必要があります。これは、学習可能性と計算の還元不可能性との間に根本的な緊張関係が存在することを示しています。つまり、学習は規則性を利用してデータを圧縮することを含む一方で、計算の還元不可能性は規則性の限界を暗示しています。
ニューラルネットは自然界の規則性を認識できますが、数学的問題または計算科学の範囲内の問題を解決するためには、「普通の」計算システムをツールとして効果的に使用する必要があります。逆に言えば、ニューラルネットがエッセイを書くことに成功するのは、エッセイの作成が私たちが思っていたよりも「計算的に浅い」問題であることを示しています。
巨大なニューラルネットがあれば、人間が容易にできることは何でもできるかもしれません。しかし、自然界一般ができること、あるいは自然界から作り出した道具ができることはカバーできないでしょう。
そして、ここ数世紀、人間は実用的な道具と概念的な道具を使うことで、純粋な人間の思考がアクセスできる境界を超えて、物理的・計算的宇宙に存在するものの多くを捉えることができるようになったのです。
【筆者コメント】
「計算の還元不可能性」(computational irreducibility)とは、「計算をreduceできないこと」、すなわちすべての手順を個別に計算しなければ解答できない問題やプロセスを指し、これらには結果を予測するためのショートカットが存在しません。
十分に大きなニューラルネットワーク(NN)は、人間の即時的な思考でアクセスできるものは、何でもできるようになるかも知れませんが、計算的な還元不可能性があるために、複雑な数学や計算には対応できません。
学習可能性と計算的な還元不可能性はトレードオフの関係にあるため、NNのような学習可能なシステムは、Wolfram Alphaのような通常の計算システムをツールとして使用しなければ、現代の技術世界を構築している数理科学や計算科学の範疇の問題を解明することはできないでしょう。
Twitterでこの記事の以下の部分に対する指摘があって気になったのでChatGPTに聞いてみました。
Wolfram氏も第10章で、新しいトークンを生成するときは、過去の計算要素を利用するフィードバックループがあると語っており、暗黙的メタ学習の存在を知らない訳ではありません。ここでは、Transformerの推論ステップの仕組み上、還元不可能性がある複雑な計算や数学ができないということを言いたいのだと思います。
ただ、最近、in-context learningについて発見があったり、LLMに複雑な数学問題を解かせる新しい手法や暗黙のコード実行と呼ばれる技術が開発されたりしていることから、少し風向きが変わってきており、将来的にニューラルネットワークが複雑な計算や数学に対応することができるようになるかも知れません。
第9章 埋め込みの概念
ニューラルネットワークは本質的に数値に基づいています。そのため、テキストのようなものを扱うためには、テキストを数値で表現する方法が必要です。この数値表現の方法を埋め込み(エンベッディング)と呼びます。埋め込みは、あるものの本質を数字の配列として表現する方法であり、「近い」ものが近い数字で表現されるという特性を持ちます。
例えば、単語の埋め込みは、意味的に近い単語が埋め込みの中で近くに見えるような「意味空間」に単語を配置しようとするものだと考えることができます。その埋め込みの作り方は、大量のテキストを調べ、異なる言葉がどの程度似たような文脈で出現するかを見ることで行います。
また、同じ方法を画像に対しても適用できます。ニューラルネットワークは手書き数字を認識する訓練を受け、同じ数字の2つの画像が似ていると判断するために使用されます。ニューラルネットワークの内部で何が起こっているかを途中で傍受することによって画像を数字で表現し、埋め込みとして使用できます。
同様に、単語の埋め込みも特定のタスク、例えば「単語予測」から始めることで見つけることができます。大量のテキストを基に、空白を埋める可能性のある様々な単語の出現確率を求めることを考えます。この問題をニューラルネットワークに設定するためには、すべてを数値で表現する必要があります。これは、5万語ほどの英単語にそれぞれ固有の番号を割り当てることで行うことができます。
さらに、ChatGPTでは、個別の単語だけではなく、複数の単語列やテキストのブロック全体も数字の集合で表現しています。そして、これまでに出てきたテキストを表現する埋め込みベクトルを生成します。それから、次に続く単語やトークン(単語の一部)の出現確率のリストを作成して、次の単語を予測することによって、テキストを扱えるようにしています。
【筆者コメント】
似たような特徴を持つ単語や画像を似たような数字の配列として表現することを埋め込みと言い、ニューラルネットワーク(NN)が数値以外のデータを処理するために重要です。
単語埋め込みの場合は、似たような文脈で出てくる単語を意味空間上で近い位置に配置するように数値化します。ChatGPTの場合は、先ず、これまでに出てきた文章を表す埋め込みベクトルを生成し、それに続く単語やトークンの出現確率をモデルで予測することによって、一語ずつ文章を生成しています。
第10章 ChatGPTの内部
ChatGPTは、1750億個の重みを持つGPT-3と呼ばれる巨大なニューラルネットワークを使用しています。最も特筆すべき機能は、Transformerと呼ばれるニューラルネットワークのアーキテクチャー部分です。TransformerはAttention(注意)という概念を導入し、テキストを構成するトークンの列の一部により多くの注意を払うように設計されています。
ChatGPTの基本的な動作は、初めに、これまでのテキストに対応するトークンの列を取り出し、それを表現する埋め込み(数値の配列)を見つけることから始まります。次に、この埋め込みに対して標準的なニューラルネットの操作を行い、新しい埋め込みを生成します。そして、この埋め込みの配列の最後の部分を取り出し、次に続くトークンの出現確率を表す約5万個の数値の配列を生成します。
重要なのは、このパイプラインのすべての部分がニューラルネットワークによって実装されており、その重みはネットワークのエンドツーエンドのトレーニングによって決定されるという点です。つまり、事実上、全体的なアーキテクチャー以外は明示的に設計されておらず、すべてがトレーニングデータから学習されているだけなのです。
ChatGPTのアーキテクチャーでは、最初に埋め込みモジュールが登場します。埋め込みモジュールでは、トークンとその位置の埋め込みベクトルが合計され、最終的な埋め込みベクトルの列が生成されます。
次に、Transformerのメインパートであるアテンションブロックが続きます。アテンションブロックは、それぞれが独立して埋め込みベクトルの異なるチャンク(ひとまとまりのデータ)を操作する複数のアテンションヘッドを持っています。アテンションヘッドは、これまでに生成されたテキストのトークンの列を遡って見ることにより、次のトークンを見つけやすいように「過去のパッケージ化」を行います。より詳細なレベルでは、異なるトークンに関連する埋め込みベクトルのチャンクをある重みで組み替えています。これにより、Attention機構は、もっと前の単語にも注目できるようになるのです。
すべてのアテンションブロックを通過した後、Transformerは、元のトークンの列に対する埋め込みの集合を最終的な埋め込みの集合に変換します。そして、ChatGPTは、この埋め込みの集合から最後の埋め込みを取り出し、それをデコードして、次に続くトークンの出現確率のリストを生成します。
ChatGPTの初期入力は、これまでのトークンの埋め込みベクトルとなる数値の配列で、新しいトークンを生成するために、これらの数値がニューラルネットワークの層を通じて伝播します。ニューラルネットワークはフィードフォワード方式で、ループや後戻りはありません。
一方で、新しいトークンを生成する際にChatGPTが前のトークンの列全体を読み込むという点では、ある種のフィードバックループが存在します。ただし、そのループは、生成されたテキスト内に明示的に見られるトークンを繰り返しているだけです。
Transformer構造を持つChatGPTのニューラルネットワークは、人間の脳が言葉を生成するのと同じようなタスクを行うことができますが、なぜこれが上手く機能するのかを説明する理論的な理由はありません。このような単純な操作で、これほど人間らしい文章を生成できるというのは驚くべきことです。
【筆者コメント】
ChatGPTは、1750憶のパラメーターを持つ巨大なニューラルネットワーク(NN)が入力された文章を変換した数値の集合を受け取り、重みと組み合わせて次の層のニューロンに次々と結果を渡していくというシンプルな仕組みで文章を生成しています。
このNNの特徴は、これまでに生成された文章の特定部分に注目するAttentionという仕組みを持つTransformerと呼ばれるネットワークアーキテクチャーを採用していることです。この仕組みによって、ChatGPTは、言語的なニュアンスを十分に捉えることができています。
ChatGPTが理論的な根拠もないのに、このようなシンプルな仕組みで人間のような文章生成タスクを実現できているのは驚くべきことです。
第11章 ChatGPTのトレーニング
ChatGPTの設定と運用は、1750億もの重みを持つニューラルネットワークのトレーニングにより行われます。この訓練データは、Webや書籍などで書かれた大量のテキストから取得されます。驚くべきことに、ChatGPTはこれらのデータから人間らしいテキストを生成する能力を獲得しました。
現代では、人間が書いたデジタル化されたテキストが膨大に存在します。これらのテキストからニューラルネットワークをトレーニングする方法は、一連の例を提示し、ネットワークがそれらの例で損失を最小化するように重みを調整するというプロセスに基づいています。これにはバックプロパゲーションと呼ばれる手法が使用されますが、それぞれの重みを調整することは、重みが非常に多いために手間がかかります。
現代のGPUハードウェアを使用すると、何千もの例から得られる結果を並列に計算することが可能です。しかしながら、ニューラルネットワークの重みを実際に更新する際は、基本的にはバッチごとに行う必要があります。これが脳がニューラルネットワークよりもアーキテクチャー的な利点を持つ部分かもしれません。
人間らしい言語モデルを訓練するには何千億もの言葉のテキストが必要で、ChatGPTはこれを成功裏に学習しました。テキストは何度もフィードされることもあれば、一度だけしかフィードされないこともありましたが、それは必要な情報をテキストから得ることができました。その結果、ChatGPTは大量の訓練データによってニューラルネットの重みを調整し、その重みを使用してテキストを生成することができます。
最終的に、ChatGPTは数千億の重みを使用して機能します。これは、訓練データの総単語数またはトークン数に匹敵する数です。なお、ChatGPTの実行では、各重みを1回ずつ使用するため、n個の重みに対しておよそn回の計算ステップが必要になり、全体として、学習にはおよそnの2乗回の計算が必要となります。このように学習のプロセスに膨大な計算ステップが必要となるため、現在の方法では数十億ドル規模の訓練費用が必要となります。
【筆者コメント】
ニューラルネットワーク(NN)のトレーニングは、大量の例を与えて、その例に対するネットワークの誤差が最小になるように重みを調整するもので、現在の技術ではバッチごとに重みを更新する必要があります。
ChatGPTは、Webや書籍などからの数千億語のテキストを、それに匹敵する数の重みを持つNNでトレーニングすることによって成功を収めました。ChatGPTの情報は、テキスト構造を分散的に符号化したものであり、アルゴリズム的に量が多すぎるかもしれませんが、NNが使いやすい表現となっています。
ChatGPTの学習プロセスでは、膨大な量の計算が必要となるため、大規模な学習を行うには、かなりの金額の訓練費用が必要となります。
第12章 基本的なトレーニングを超えて
ChatGPTの訓練の大部分は、既存のテキストを見せることに費やされます。その後、独自のテキスト生成を開始しますが、より長いテキストではしばしば人間らしさを欠いた結果を生むことがあります。
この問題を解決するために、ChatGPTの訓練プロセスには、人間が直接チャットボットと対話し、フィードバックを与えるというステップが含まれています。このフィードバックは、まず人間がニューラルネットワークからの結果を評価することで利用されます。次に、それらの評価を予測する別のニューラルネットワークモデルが構築されます。この予測モデルは、元のニューラルネットワークに損失関数のように作用し、与えられた人間のフィードバックによってニューラルネットワークをチューニングすることができます。
訓練後は、ChatGPTにプロンプトの一部として、一度だけ指示を出せば、それを利用してテキストを生成できるようになります。これは、一度伝えられたことを記憶し、それを利用して文章を生成するという人間のやり方に似ており、「ChatGPTが本当は何をしているのか」、「人間の言語や思考の構造とどう関係しているのか」を理解する上で重要な手掛かりになると思います。
しかし、伝えるべきことのすべてがニューラルネットワーク内に既に存在しているのではなく、伝えることの要素は既に存在しているけれども、「要素間の軌跡」のようなもので定義されていて、それが何かを伝えるときに導入されるという可能性の方が高いように思えます。
また、ニューラルネットワークが取り込むことができる情報にはアルゴリズム的な限界があります。表面的なルールは簡単に学習できますが、計算的に還元不可能なステップを含む深い計算のルールには上手く対応できません。
もちろん、ChatGPTのようなニューラルネットワークも、ある程度は人間の言語や思考をまねることで、還元不可能な計算の答えを学習することができます。しかし、計算が複雑になると、そのようなアプローチは通用しなくなります。だから、ChatGPTも人間と同じように、Wolfram AlphaやWolfram Languageのような実際の計算ツールを使うべき時が来たのです。
【筆者コメント】
ChatGPTのトレーニングでは、既存のテキストを大量に学習する以外に、人間との対話結果をフィードバックする手法を採用しています。最初はChatGPTの出力結果を人間が評価し、次に、その評価を予測するモデルを構築して、このモデルを使ってニューラルネットワーク(NN)をチューニングします。この手法は、ChatGPTが人間のような文章を生成するために大きな効果を上げています。
ChatGPTが生成する言葉のすべてがNNの中に予め存在するのではなく、その要素の間の軌跡のようなものだけが存在していて、文章生成の際にそれを利用しているのだと考えられます。そして、既に学習した内容から大きく外れる指示には上手く対応できません。
NNにはアルゴリズム上の限界があり、複雑な計算手順などには上手く対応できないため、ChatGPTもWolfram Alphaのような外部の計算ツールを利用するべきです。
第13章 本当にChatGPTを動かしているものは何か?
人間の言語生成に関与する思考プロセスは、その複雑さのために長年驚嘆の対象でした。しかし、人間の脳のニューロン数に相当する接続を持つChatGPTという純粋な人工ニューラルネットワークは、人間の言語を驚くほど適切に生成できることが分かりました。
なぜChatGPTが言語に対してこんなに優れたパフォーマンスを発揮できるのかについての基本的な答えは、言語が一見するよりも本質的にシンプルであるという事実にあると思われます。そして、この意味でChatGPTは、その簡潔なニューラルネットワーク構造を通じて人間の言語とその背後の思考の本質をうまく捉えることに成功しています。さらに、ChatGPTは、訓練過程で言語および思考の法則を暗黙のうちに発見しています。
ChatGPTの成功は、新たな「言語の法則」や「思考の法則」を発見する可能性があることを示しています。これらの法則は、ChatGPTのニューラルネットワーク内で暗黙のうちに存在していますが、これらの法則を明示することができれば、ChatGPTが行っているようなことをはるかに直接的で効率的、かつ透明性の高い方法で行える可能性があります。
言語の構文は、言語に一定の制約を提供します。ChatGPTは明示的な知識を持っていませんが、訓練過程で暗黙のうちにルールを発見し、それらに従うことができます。これに対し、論理は、文章が意味を持つかどうかを決定するもう一つの重要な要素です。文章が意味を持っているかどうかを区別する伝統的な全体論はありませんが、ChatGPTは数十億のおそらく意味のあるウェブからの文章を学習した後、論理について暗黙のうちに理論を構築していると考えられます。
これ以上、ChatGPTが暗黙のうちに発見した、意味のある文章を体系的に構築する方法を説明することはできません。しかし、もっとシンプルで強力な理論があるのではないかと思っています。
【筆者コメント】
ChatGPTは、人間の言語の生成で驚くべき能力を発揮しました。ChatGPTは、文法などに関する明示的な知識を持ちませんが、暗黙のうちに構文や論理などの法則を発見し、人間の言語とその背後にある思考の本質を捉えることに成功しています。
ChatGPTはニューラルネットワークとして構築されているため、ChatGPTが捉えた法則は、外部からは見えません。しかし、もし、この法則を明示できれば、より効率的で透明性の高い直接的な方法で言語を生成できるはずです。
Wolfram氏は、人間の言語や思考の法則について、まだ見つかっていないもっとシンプルで強力な理論があるはずだと考えています。
第14章 意味空間と意味の運動法則
ChatGPTの内部動作は、各テキスト片が座標として機能する一連の数値として表現され、言語特徴空間内の軌跡として理解することができます。この軌跡は、テキストが意味を保ちながら移動する様子を示しており、この言語特徴空間内の挙動を規定する「意味の運動法則」の存在の可能性を示唆しています。
言語特徴空間は、単語を意味的類似性に基づいて整理し、これにより、意味的に類似した単語が近くに配置されます。
アナロジーの研究を通じた言語特徴空間内の平坦性を示す平行移動の調査でも、言語特徴空間内でChatGPTのプロンプトがたどる軌跡の調査でも、明らかな意味の運動法則は見つかりませんでした。
軌跡の任意の点で次に来る確率が高い単語は、言語特徴空間内の特定の方向を示す扇状のパターンに分布しています。しかし、この軌跡の進行の3D表現を見ても、意味の運動法則は特定できません。
ただし、特定できないのは、間違った変数や座標系を見ているからで、正しい変数を見つけられれば、ChatGPTが数学的・物理学的に単純な法則に従っていることが分かるかも知れません。
今のところは、ChatGPTが人間の言語の組み立て方について発見したことを、その内部動作から経験的に解読する準備はできていません。
【筆者コメント】
ChatGPTでは、テキストは数値の配列として表され、これを言語特徴空間の座標と考えることができます。この空間では、意味的に似ている単語や文章が近くに配置されます。この空間にはどんな構造や法則があるのでしょうか。
アナロジーや軌跡などを使って、ChatGPTがどのようにテキストを生成しているのかを観察することができます。しかし、それだけでは数学的・物理学的な意味の運動法則を見つけることはできません。
ChatGPTが人間の言語の組み立て方について発見した法則を私達が解き明かすのは、今のところは、まだ無理です。
第15章 意味文法と計算言語の力
ニューラルネットワーク、特にChatGPTを用いて意味のある人間の言語を生み出すという成功は、我々が以前認識していたよりも、人間の言語にはより多くの構造と単純さが存在するかもしれないことを示唆しています。
品詞の違いなどの単語の組み合わせルールを与える構文文法とは対照的に、意味文法は意味に焦点を当て、「移動する」という概念と、場所に依存せずに同一性を保つ「物体」という概念を識別するなどのより細かいアプローチを必要とします。なお、意味文法上は問題ない文であっても、それが実際に実現できるとは限りません。
また、意味文法は、言語の構築の基礎として「世界モデル」を前提としています。近年まで人間の言語が我々の世界モデルを記述する唯一の手段とされていたのに対し、現在では計算言語という形式化のアプローチがあります。
Wolfram氏が長年開発してきたWolfram言語は、世界の物事や抽象的な概念について語ることができる正確な記号表現を提供することを目指しています。しかし、これまで日常会話を扱ってきませんでした。解決策は、「記号的会話言語」の開発であり、これによりローカルとグローバルの両レベルで意味のあるテキストを生成できるようになります。
記号的会話言語を用いると、独立した文を生成したり、Wolfram Alphaスタイルで世界についての質問をしたり、実世界やフィクションの世界についての主張をしたりすることができます。計算言語は、人間の言語とは異なり、常にコンピュータ上で一義的に実行できる基本的な精密さによって、不正確さや曖昧さを排除します。
一般的な記号的議論言語に適した基本的な「オントロジー」を特定することは難しい課題ですが、計算的な思考の進歩により、最適主義が存在します。ChatGPTが意味文法の構築にある程度成功を収めたことから、人間が理解しやすい、より完全な計算言語を設計することが期待できます。
将来的に、計算言語の枠組み全体が完成すれば、「一般化意味論理」を構築することができ、これまであいまいな人間の言語を通して初歩的なレベルでしかアクセスできなかったあらゆる種類の物事を精密かつ形式的に扱うことができるようになると予想されます。また、ChatGPTを基礎となる計算言語に適用すれば、合理的なテキストを生成するだけでなく、そのテキストが実際に世界について、正しい発言をしているかどうかを確認できるようになると期待できます。
【筆者コメント】
この章では、意味のある人間の言葉を生み出すために必要な要素として、意味文法と計算言語の2つを取り上げています。
意味文法とは、人間の言語における意味の構造とルールを示すもので、概念を詳細に識別することなどにより意味を表現します。
計算言語とは、世界について正確な記号表現を提供するもので、様々な種類の物事や抽象的な概念について形式的に表現できるようにします。
ChatGPTは、ニューラルネットワークによる大量のテキストの学習によって、意味文法の構築にある程度成功したように見られます。
Wolfram言語のような計算言語とChatGPTを組み合わせれば、一般的で正確な意味論理を構築することが可能になり、合理的なテキストを生成するだけでなく、そのテキストが実世界について正しい発言をしているかどうかを確認できるようになることが期待できます。
第16章 それで…ChatGPTは何をしていて、なぜそれがうまく機能するのか?
ChatGPTは、人間が作成した大量のテキストを模倣し、与えられたプロンプトから会話を開始するという基本コンセプトで動作する注目のテキスト生成モデルです。
その巨大なニューラルネットは、数十億のシンプルな要素で構成され、新しい単語を生成するたびに、これまでに生成したテキストから得られる入力をループなしで、1回だけその要素に通します。ChatGPTの成功は、プロンプトに基づいて一貫した人間の言語と文脈に沿った応答を生成することにありますが、その結果は、トレーニング素材のみに基づいているため、時に全体的な意味を欠くことがあります。
ChatGPTのエンジニアリングは説得力のあるものですが、蓄積された「常識の統計」から「まとまった文章の糸」を引き出しているに過ぎません。その結果は、人間の言語とその背後にある思考パターンが従来考えられていたよりもシンプルで法則的構造を持っていることを示唆しています。つまり、ChatGPTは、これらの言語と思考の構造を暗黙のうちに発見したのであり、私たちは、意味文法や計算言語を通じて、それを明らかにできる可能性があります。
ChatGPTのテキスト生成のメカニズムは、人間の脳の理想化に基づく基本的なアーキテクチャーから導き出され、人間の脳に似ています。人間の言語生成プロセスとChatGPTの動作には類似性がありますが、ChatGPTの学習のプロセスは、脳とコンピューターのハードウェアの違いによって、異なる戦略を取ることを余儀なくされています。
ChatGPTは、内部ループやデータの再計算がないため、人間の脳と比較すると計算能力に限界があります。この問題に対処し、システムの効率性を高めながら訓練能力を維持することによって、将来のChatGPTは、脳のようなタスクをより高度に実行できるようになる可能性があります。また、ChatGPTは人間の脳と同様に、特に還元不可能な計算を扱うのに限界があり、Wolfram言語のような外部ツールを探す必要があります。
ChatGPTの成功は、シンプルな計算要素が大量にあれば、予想外のことができるという素晴らしい科学的事実を示しています。また、人間の言語とその背後にある思考プロセスという人間の中心的な特徴の基本的な性格や原理をより深く理解するための最高のきっかけを与えてくれています。
【筆者コメント】
ChatGPTは、人間のような文章の生成において大きな成功を収めましたが、その実態は、大量学習によって獲得した「常識の統計」からまとまった文章を取り出しているのに過ぎません。
このことから、人間の言語とその背後にある思考パターンが実はシンプルで規則的な構造を持っており、ChatGPTは、その隠された構造を暗黙のうちに発見したのだと考えられます。そして、私たちは、意味文法や計算言語を通じて、その構造を明らかにできる可能性があります。
ChatGPTのアーキテクチャーは、人間の脳を真似て作られたものですが、ハードウェアの違いによって、脳よりも計算能力が弱くなっています。さらに、脳と同様に、還元不可能な計算ができないため、Wolfram言語のような外部の計算ツールを導入する必要があります。
ChatGPTの成功は、人間の中心的な特徴である言語とその背後にある思考プロセスの基本的な性格や原理をより深く理解するための最高のきっかけを与えてくれています。
〇 感想
Wolfram氏のブログ記事の前半では、大規模言語モデル、ニューラルネットワーク、Transformerなどの仕組みについて、豊富な例を挙げて詳しく解説しています。また、後半ではChatGPTに関するWolfram氏独自の解釈や見解を紹介しています。
Wolfram氏が特に主張しているのは、以下の2点です。
ChatGPTがシンプルな構造で文章の生成に成功したのは、人間の言語と思考がシンプルで規則的な構造を持っているからで、意味文法と計算言語によって、将来的にその構造を明らかにできるかも知れない。
ChatGPTのニューラルネットワークは、その構造上、還元不可能な計算ができないため、Wolfram言語などの計算ツールを導入するべきであり、それによって、ChatGPTの曖昧さや不正確さという弱点を克服できる可能性がある。
1.人間の言語と思考の構造について
Wolfram氏は、ChatGPTが人間のような文章生成のタスクをこんなに上手く(簡単に)実行できるのは、そもそも人間の言語やその背後の思考プロセスがシンプルで規則的な構造を持っているからではないかと考えています。
単純な計算を積み重ねる計算機システムで構成されたChatGPTが言語データを処理していることを考えれば、その考えは十分に理解できます。ただし、AIにとって理解しやすいものが人間にとっても理解しやすいものになるかどうかは分かりません。
しかし、その規則性や理屈を解明できれば、それを利用してさらに効率的に文章が生成できるだけではなく、人間の言語や思考の仕組みを解き明かし、最終的には、AIの思考能力を強化して、人間の知能を超える問題を解けるようになるかも知れません。そうなれば、汎用的な人工知能(AGI)あるいは超知能が誕生したことになります。
Wolfram氏は、意味文法と計算言語によって、この言語と思考の規則的な構造を解明できるかも知れないと言っています。計算言語は、まさにWolfram氏が長年かけて開発してきたWolfram言語のようなものであり、世界モデルを正確な記号で表現することを目指しています。また、意味文法も彼の専門の記号推論の分野から出てきたものです。
記号推論は、人工知能分野における、機械学習とは異なる論理とルールベースのアプローチで、ディープラーニングが発展して、人工知能分野の主流に躍り出る前に流行していたものです。記号推論は、最近、見直されて、機械学習との融合などを主張する動きも出てきています。確かに、ニューラルネットワーク(NN)の動作を記号推論に落とし込むことができれば、NNの文章生成が上手く機能する仕組みを人間にも分かるように解明できますが、これまで記号論的アプローチがディープラーニングほど成果を出していない状況を見ると、どこまで成功するのかは疑問です。
NNがなぜこんなに上手く機能するのかを説明する仮説には、他に宝くじ仮説、多様体仮説、自由エネルギー原理などがあります。また、汎化性能やメタ学習に関する新しい発見も出てきているようです。Wolfram氏の意味文法と計算言語に対する期待には、彼自身がやってきたことに対するこだわりもあり、少しバイアスが掛かっているように感じますが、どのアプローチが最終的に成功するのかは、現時点では分かりません。
2.ニューラルネットワークの限界と解決策について
Wolfram氏は、ニューラルネットワーク(NN)の限界として、計算の還元不可能性(computational irreducibility)を挙げています。計算の還元不可能性は、機械翻訳によっては「計算不可能性」と訳されてしまうこともありますが、「計算をreduce(削減)できないこと」、すなわちすべての手順を個別に計算しなければ解答できない問題やプロセスを指します。
そして、NNの学習は、規則性を利用してデータを圧縮する(つまり計算を削減する)プロセスを含むため、基本的にNNは、還元不可能な計算を含む問題を学習することができず、複雑な数学や計算には対応できません。そして、外部の計算ツールを利用しなければ、現代の科学技術分野で重要な数理科学や計算科学の範疇の問題を解くことはできないとWolfram氏は主張しています。
また、NNは、ループがなく、データが一方向に流れるフィードフォワード型のネットワーク構造を採用しているため、複雑な制御フローが必要な計算ができず、人間の脳よりも計算能力が弱いと言っています。
しかし、最近は、プロセス監視などの新しい手法の採用によって、大規模言語モデルの数学能力も向上してきています。そして、道具を使わなければ、還元不可能な計算を含む複雑な数学や計算に対応できないのは、人間の脳も同じであり、計算の還元不可能性がそれほど大きなNNの障害となるのかについては疑問があります。
確かに計算ツールの導入は必要になるでしょうが、それは、さほど難しいことではないように思います。現に、現在使用できるAIチャットボットのChatGPT、Bing、Bardのいずれも、外部の計算ツールが利用できるようになってきています。
それ以外にも、ループ構造や複雑な制御フローをネットワーク内に構築しなければ対応できないことがあるのでしょうか。気候変動の計算や複雑な科学計算を必要とする予測などは、NNには難しいかも知れませんが、そういうものは専門の計算機システムに任せて、その結果を利用すればよいような気がします。
また、Wolfram氏は、Wolfram言語のような計算言語を導入することによって、ChatGPTの曖昧さや不正確さという弱点を克服できると主張しています。
現在、ChatGPTなどのベースである大規模言語モデルについては、事実であるかのような嘘をつくというハルシネーションの問題が大きな課題となっています。ハルシネーションの問題は、ネット検索やプラグインを利用して、外部の情報を参照することにより、ある程度緩和することができます。
特に、計算言語は、正確なデータを保有しているため、これを利用することによって、ハルシネーションの問題をかなり緩和することが期待できます。実際に、ChatGPTは、Wolfram AlphaとWolfram言語の一部をプラグインとして利用することができ、これらに含まれているデータについては、プラグインを利用して、正確な回答を返すことができます。
Wolfram氏は、計算言語を単に正確な情報を持つデータベースとしてChatGPTに利用させるだけではなく、計算言語とChatGPTを融合して、様々な話題を明確な論理で正確に扱える理想的な「記号的会話言語」を開発する構想を持っています。ただし、計算言語とChatGPTを融合する実際の方法は、まだ具体的に見えてはいません。
Wolfram氏の真の狙いは、記号的会話言語のように、計算言語の枠組みの中にChatGPTを取り込んで、あらゆる種類の物事を精密かつ形式的に扱うことができる完璧な計算言語を完成することです。それが実現すれば、ChatGPTの弱点である曖昧さや不正確さが克服され、ハルシネーションの問題は完全に解決します。また、緻密な論理や複雑な計算を要する科学的な問題を解決する能力を飛躍的に向上させる可能性があります。
しかし、これは、計算言語を中心としてChatGPTの成果を取り込んでいくという方向性で、ネットワーク内部の構造まで計算言語とChatGPTを融合させていくという話です。一方で、現在、進行しているのは、ChatGPTがプラグインの一つとして、計算言語のような外部計算ツールを利用するという話であり、二つの考え方の間には、相当の開きがあります。
Wolfram氏の構想は非常に壮大なものであり、将来的にその試みがどのように進展していくのかは分かりません。しかし、正確なデータと論理を提供する計算言語の活用は、ChatGPTの大きな課題であるハルシネーションの解決策の一つであり、今後の具体的な成果が期待されています。
〇 ChatGPTを利用した英文記事の読み方
長い英文記事を読む場合に、機械翻訳したものを読んでも、翻訳の精度の問題もあって読みづらく、なかなか理解しにくいことがあります。
その場合に、以下のような方法を試してみてください。日本語の長文を読む場合にも応用できると思います。
【参考】ChatGPTとの会話履歴
(1) 日本語での要約
あなたは情報通信技術を専門とするプロのライターです。
以下のガイドラインに従って、原文を日本語で要約してください。
#ガイドライン:
・原文から主要なキーワードを抽出し、それらを必ず要約に含めること。
・問題提起と結論を把握して要約に組み込むこと。
・分かりやすく簡潔にまとめること。
・全体を4段落から6段落にまとめること。
#要約する原文:
#要約の出力形式
主要なキーワード: 〇、〇、〇...
要約:
最初に、文章が上手いイメージのある「プロの編集者」「プロのライター」「プロのノンフィクション作家」などの役割を設定すると、文章の質が上がります。
「情報通信技術を専門とする」「医療分野に詳しい」など専門分野を指定すると、専門用語を端折らずに要約してくれるのではないかと思います。
今回は要約を依頼していますが、自分の勉強用には、「初心者向けに分かりやすく解説してください。」「中学生でも分かるように説明してください。」などの解説や説明を依頼するプロンプトも効果的です。ただし、その場合は、分かりやすいのですが、記事に書いていない知識を補足して説明してくることがありますので、公表するときは注意しましょう。
「主要なキーワード」を含めるように指示すると、キーワードの取りこぼしが減ります。プロンプトは基本的に否定的な表現よりも肯定的な表現の方が効果が高いことが多いので、「キーワードを取りこぼさないで」ではなく、「キーワードを含めること」と肯定的な表現を採用しています。さらに、出力形式で、主要なキーワードを明示的に書き出させて、効果を上げています。
最後の結論部分を省略することが結構あったので、問題提起と結論を要約に組み込むように指示しています。
文章が無駄に長くならないように、分かりやすく簡潔にまとめるように指示しています。
出力文の長さについては、日本語の文字数指定はなかなか指示を守ってくれません。文字数制限がないのであれば、文字数よりも段落数や文の数で指示する方が指示を守ってくれます。
キーワードの出力形式は、何も書かないと、1項目ずつ縦に並べてくるので、「〇、〇、〇…」と、横に並べるよう指示しています。
今回、あまりハルシネーションは見られなかったので、「架空の表現や言葉を使用しない」「文章の意味を変更しない」などのハルシネーションを避ける指示は行いませんでした。
要約する文章が長すぎると、急に英語に変わったり、余計な文字が挿入されたりするなど出力が不安定になります。そうでなくても、要約の質が下がることがあるので、原文が長すぎる場合は、分割して要約を依頼しましょう。
プロンプトを改善するようにChatGPTに指示すれば、更に詳しくきめの細かいプロンプトに修正してくれますが、そうしたプロンプトを使用すると、要約なのに内容が詳しく、文章が長くなってしまう傾向がありました。
(2) 英語のまま要約してからの日本語訳
ChatGPTのGPT-4モデルは、日本語の性能も高いので通常は、日本語で使用することに問題はないのですが、要約する文章が難しすぎるなどの理由で要約が上手くいかない場合は、英語の記事を英語のまま要約してから日本語訳するのも一つの方法です。
なお、上記ブログ記事の要約では、第14章から第16章を要約するに、この手法を使いました。
You are a professional writer specializing in information and communication technology.
Please summarize the original text in Japanese according to the following guidelines.
#Guidelines:
・Extract key words from the source text and be sure to include them in your summary.
・Identify the problem statement and conclusion and incorporate them into your summary.
・Keep it clear and concise.
・Keep it to four to six paragraphs.
#Original text to be summarized:
#Output format of summary
・Key words: Ο, O, O...
・Summarize:...
ChatGPTで要約を出力した後、「この要約を日本語訳してください。」と依頼すれば、以下のように日本語訳を出力してくれます。
ChatGPTの翻訳性能はDeepL翻訳に負けないくらい高く、文脈もよく理解して翻訳してくれますが、GPT-4の使用回数制限が気になる場合は、DeepL翻訳などで日本語訳してください。
(3) キーワードの抽出と解説
さらに内容を詳しく理解するため、ChatGPTに主要なキーワードを抽出してもらい、解説してもらいます。
この文章から主要なキーワードを抽出して、それについて分かりやすく解説してください。
第1章「It’s Just Adding One Word at a Time」についての出力例は以下のとおりです。
もちろんです。以下、主要なキーワードの解説を行います。
ChatGPT: これはOpenAIが開発した大規模な言語モデルです。大量のテキストデータから学習しており、ユーザーからの入力に対して人間が書いたような自然なテキストを自動生成することができます。これは、質問応答、会話生成、文章の書き始めなど、様々な応用が可能です。
ラージ・ランゲージ・モデル (Large Language Models): これは大規模なデータセットから学習し、テキスト生成や予測などのタスクを達成するためのモデルです。ChatGPTもこの一種で、多くの文章データからパターンを学習し、新しい文章を生成します。
自動生成: これは機械学習モデルが人間の介入なしに新しいコンテンツを生成するプロセスを指します。自動生成は、文章作成、画像生成、音楽作成など、様々な領域で利用されています。
文書作成: これはコンピュータが自動的にテキストを生成するプロセスです。ChatGPTはこれを行う能力を持っており、人間のようにコヒーレントで自然な文章を作り出します。
確率: 確率はある事象が起こる可能性を数値化したものです。ChatGPTは、特定の単語の後に続く単語を確率的に予測します。
ランダム性: ランダム性は予測不可能性や規則性のなさを指す一般的な概念です。ChatGPTの文書生成では、ランダム性が創造性を引き出す要素として重要な役割を果たします。
トークン: これは自然言語処理(NLP)の領域で使われる概念で、テキストを扱いやすい単位に分割したものを指します。トークンは単語に相当することもあれば、部分文字列や句読点などに相当することもあります。
テキスト継続: ChatGPTが行う主要なタスクの一つで、あるテキストの続きを生成することを指します。
生成温度: 生成温度はテキスト生成において、モデルが生成するテキストの多様性を調整するためのパラメータです。高温度では、モデルは確率の低い単語を選択する可能性が高くなり、結果として生成されるテキストは多様性が増します。逆に低温度では、モデルは確率の高い単語を選択する傾向が強くなり、生成されるテキストは一貫性が増します。
(4) 記事に対する質問のアイデア出し
記事を理解するための質問をChatGPTに考えてもらいます。
この文章の本質を理解するための質問を考えてください。
(5) 記事に対する質問
ChatGPTが提案した質問から自分がよいと思うものを選択し、さらに自分の考えた質問を併せて、ChatGPTに回答を作成してもらいます。