ChatGPTとは何ですか?またその原理は何ですか? この記事を読んでもまだ分かりません、ライブで画面を食ってやる!!特典: 中国語版 CHAT GPT ミラー純粋共有

目次

福祉: 記事の最後に、中国語版の CHAT GPT 画像を純粋に共有します。魔法はありません。純粋な共有は無料で使用できます。

序文:

 1. 確率はどこから来るのでしょうか?

2. モデルとは

3. 人間らしいタスクモデル

3. ニューラルネットワーク

4. 機械学習とニューラルネットワークのトレーニング

5. ニューラルネットワークトレーニングの実践と理論

6. 埋め込みの概念

 7. ChatGPT の内部

8.ChatGPTトレーニング

9. 基礎トレーニングを超えて

10. ChatGPT を実際に機能させるものは何ですか?

11. 意味のある空間と意味運動の法則

12. 意味文法と計算言語の力

13. では、ChatGPT は何をしているのでしょうか?また、なぜ機能するのでしょうか?


福祉:記事の最後に、中国語版の CHAT GPT 画像を純粋に共有します。魔法はありません。純粋な共有は無料で使用できます。

 

序文:

著者:スティーブン・ウルフラム(Stephen Wolfram)、イギリスとアメリカのコンピューター科学者、物理学者。彼は Mathematica のチーフデザイナーであり、『A New Kind of Science』の著者です。

人間が書いたテキストのように表面的に読めるものを自動的に生成する ChatGPT の機能は注目に値し、予想外です。しかし、それはどのようにして行われるのでしょうか? なぜ効果があるのでしょうか? ここでの私の目的は、ChatGPT の内部で何が起こっているのかを少し概説し、それがなぜ意味のあるテキストと考えられるものを生成するのに非常にうまく機能するのかを探ることです。

まず始めに、何が起こっているかの全体像に焦点を当てるつもりであることを述べます。エンジニアリングの詳細についてはいくつか触れますが、それについては掘り下げません。(私が述べたことの内容は、現在の他の「大規模言語モデル」LLM と ChatGPT にも当てはまります)。

最初に説明することは、ChatGPT は基本的に、これまでのテキストの「合理的な継続」を常に試みようとするということです。ここで、「合理的」とは、「人々が何十億もの Web ページに書いたものを見た後」を意味します。誰かが何かを書いてくれる。」

そこで、「AI の最も優れている点は、その能力です...」 (「AI について最も優れている点は、その能力である」) というテキストがあるとします。人間が書いた何十億ページものテキスト (ウェブ上やデジタル化された書籍など) をスキャンして、そのテキストのすべてのインスタンスを見つけて、時間の経過とともにどの単語がどのくらい出現するかを確認することを想像してください。

ChatGPT は実質的に同様のことを行いますが、(後で説明するように) リテラル テキストを調べるのではなく、ある意味で「意味が一致する」ものを探しますしかし最終的には、後で出現する可能性が高い単語のソートされたリストと「確率」が生成されます。

注目に値するのは、ChatGPT が記事を書くなどの作業をしているとき、基本的に行っているのは「これまでのテキストを考えると、次の単語は何にすべきでしょうか?」という質問を繰り返し、そのたびに 1 単語ずつインクリメントすることだけです。(より正確には、後で説明するように、単語の一部である可能性がある「マーカー」を追加します。そのため、場合によっては「新しい単語を作成」する可能性があります)。

各ステップで、確率を含む単語のリストを取得します。しかし、書いている記事 (またはその他) に正確に追加するにはどれを選択すべきでしょうか? それが「トップ」の単語 (つまり、最も高い「確率」が割り当てられた単語) であるべきだと考える人もいるかもしれません。

しかし、そのとき、小さな魔法が忍び込み始めます。なぜなら、何らかの理由で、おそらくいつか科学的な理解が得られるかもしれませんが、常に上位の単語を選択すると、通常、「創造性をまったく示さない」(時には言葉通りに繰り返される)非常に「平板な」記事になってしまうからです。 )。ただし、時々 (ランダムに) ランクの低い単語を選択すると、「より興味深い」記事が得られます。

ここでランダム性があるということは、同じプロンプトを複数回使用すると、毎回異なる記事が得られる可能性が高いことを意味します。そして、ブードゥー教の考えに従って、下位の単語がどのくらいの頻度で使用されるかを決定する特定のいわゆる「温度」パラメーターがあり、紙の生成では、0.8 であることが判明しました。一番。(ここでは「理論」が使用されていないことを強調しておく価値があります。これは実際に機能することが判明した問題にすぎません)。たとえば、「温度」の概念は、統計物理学でよく知られている指数分布をたまたま使用しているために存在しますが、少なくともこれまでのところ、私たちはそう考えていますが、「物理的」関連性はありません。)

先に進む前に、説明の目的で、私は ChatGPT の完全なシステムをほとんど使用しないことを説明しておく必要があります。代わりに、通常は、よりシンプルな GPT-2 システムを使用します。標準的なデスクトップコンピュータ。

したがって,明示的なWolfram言語コードを含めて,私が示したものはすべて,コンピュータ上ですぐに実行できます。(ここで任意の画像をクリックして、背後にあるコードをコピーします - 翻訳者注: 記事の最後にある「元のリンク」を確認してください。画像をクリックするとコードを取得できます)。

たとえば、上記の確率テーブルを取得する方法は次のとおりです。まず、基礎となる「言語モデル」ニューラル ネットを取得する必要があります。

後で、このニューラル ネットワークの内部を調べ、それがどのように機能するかについて説明します。しかし、この「ネットワーク モデル」をブラック ボックスとしてこれまでのテキストに適用し、モデルが選択すべきと考える上位 5 つの単語を確率的に計算するように依頼できます。

これにより、この結果が明示的にフォーマットされた「データセット」に変わります。

「モデルの適用」を繰り返し、各ステップで最も確率の高い単語 (このコードではモデルの「決定」として指定) を追加するとどうなるでしょうか。

それが続くと何が起こるでしょうか?この場合 (「温度ゼロ」)、かなり混乱する繰り返しの状況がすぐに発生します。

しかし、常に「上位」の単語を選択するのではなく、時々「上位以外の」単語をランダムに選択するとどうなるでしょうか (「ランダム性」は「温度」0.8 に相当します)。テキストを再度構築することもできます。

そして、これを行うたびに、次の 5 つの例のように、異なるランダム選択が行われ、テキストも異なります。

最初のステップでも、(温度 0.8 の場合) 選択できる「次の単語」が多数あることを指摘する価値があります。ただし、それらの確率は非常に急速に低下します (はい、この対数プロット上の直線は「 n-1 の「べき乗則」減衰。これは言語の一般的な統計の特徴です):

それで、それが続くとどうなるでしょうか?以下はランダムな例です。これは、一番上の単語 (温度ゼロ) の場合よりは優れていますが、よく言えばまだ少し奇妙です。

これは最も単純な GPT-2 モデル (2019 年以降) で行われます。より新しく大型の GPT-3 モデルを使用すると、結果がより良くなります。以下は、同じ「ヒント」を使用して生成された、最大の GPT-3 モデルを使用した上部のテキスト (ゼロ温度) です。

「温度が 0.8 である」場合のランダムな例を次に示します。

 1. 確率はどこから来るのでしょうか?

さて、ChatGPT は常に確率に基づいて次の単語を選択します。しかし、これらの確率はどこから来るのでしょうか? より単純な問題から始めましょう。英語のテキストを (単語ではなく) 1 文字ずつ生成することを考えてみましょう。各文字の確率をどのように計算できますか?

私たちができる非常に簡単な方法は、英語のテキストのサンプルを採取し、その中に異なる文字が出現する頻度を数えることです。たとえば、これは「猫」に関するウィキペディアの記事の文字を数えます。

これは「犬」についても同じです。

結果は似ていますが、同じではありません (結局、「犬」という単語自体に「o」が含まれているため、「犬」の記事では「o」がより一般的であることは間違いありません)。それにもかかわらず、十分に大きな英語テキストのサンプルを採取すれば、少なくともかなり一貫した結果が得られることが期待できます。

以下は、これらの確率で一連の文字を生成した場合に得られるサンプルです。

スペースを追加することで、特定の確率を持つ文字であるかのように、これを「単語」に分割できます。

「単語の長さ」の分布を英語の分布と強制的に一致させることで、「単語」をもう少しうまく作成できます。

ここではたまたま「実際の単語」が得られませんでしたが、結果は若干良くなったように見えます。ただし、さらに先に進むには、各文字を個別にランダムに選択するだけでは不十分です。たとえば、「q」がある場合、次の文字は基本的に「u」でなければならないことがわかっています。

手紙自体の確率プロットは次のとおりです。

以下は、典型的な英語テキストにおける文字のペア (「2 グラム」) の確率を示すプロットです。使用可能な最初の文字がページに表示され、2 番目の文字が下に表示されます。

たとえば、ここでは、「u」行を除いて、「q」列が空白であることがわかります(確率はゼロです)。さて、ここでは一度に 1 文字ずつ「単語」を生成するのではなく、これらの「2 グラム」確率を使用して、一度に 2 文字を調べて単語を生成します。これは結果のサンプルです - たまたまいくつかの「実際の言葉」が含まれています:

十分な英語のテキストがあれば、単一の文字または文字のペア (2 グラム) だけでなく、長い文字についても確率を適切に推定できます。徐々に長くなる n グラム確率で「ランダムな単語」を生成すると、それらが徐々に「より現実的」になることがわかります。

しかし今は、ChatGPT とほぼ同じように、文字ではなく単語全体を扱っていると仮定しましょう。英語には約 40,000 のかなり一般的な単語があります。英語テキストの大規模なコーパス (合計で数千億の単語を含む数百万冊の書籍など) を調べることで、各単語がどの程度一般的であるかを推定することができます。これを使用すると、コーパスと同じ出現確率で各単語が独立してランダムに抽出される「文」の生成を開始できます。得られたもののサンプルは次のとおりです。

明らかに、これはナンセンスです。では、どうすればより良くできるのでしょうか? 文字と同様に、単一の単語だけでなく、より長い単語のペアまたは N グラムについても確率を考慮し始めることができます。ペアごとのケースでは、次の 5 つの例が得られます。すべて「cat」という単語で始まります。

少しは「納得」できるようになりました。十分に長い n グラムを使用できれば、基本的に「ChatGPT を取得する」ことになると想像できます。これは、「正しい全体的な論文確率」シーケンスで論文の長さの単語を生成するものを取得するという意味です。しかし、ここに問題があります。これらの確率を導き出すのに十分な英語のテキストがありません。

在网络的抓取中,可能有几千亿个单词;在已经数字化的书籍中,可能有另外几千亿个单词。但是有了 4 万个常用词,即使是可能的 2-grams 的数量也已经是 16 亿了,可能的 3-grams 的数量是 60 万亿。

所以我们没有办法从现有的文本中估计出所有这些的概率。而当我们达到 20 个字的 “文章片段” 时,可能性的数量比宇宙中的粒子数量还要多,所以从某种意义上说,它们永远不可能全部被写下来。

那么我们能做什么呢?最大的想法是建立一个模型,让我们估计序列出现的概率 —— 即使我们在所看的文本语料库中从未明确见过这些序列。而 ChatGPT 的核心正是一个所谓的 “大型语言模型”(LLM),它的建立可以很好地估计这些概率。

2、什么是模型

假设你想知道(就像伽利略在 15 世纪末所做的那样),从比萨塔的每一层落下的炮弹要多长时间才能落地。那么,你可以在每一种情况下测量它,并将结果制成表格。或者你可以做理论科学的精髓:建立一个模型,给出某种计算答案的程序,而不是仅仅测量和记住每个案例。

让我们想象一下,我们有(有点理想化的)数据,说明炮弹从不同楼层落下需要多长时间。

我们如何计算出它从一个我们没有明确数据的楼层落下需要多长时间?在这种特殊情况下,我们可以用已知的物理学定律来计算。但是,如果说我们所得到的只是数据,而我们不知道有什么基本定律在支配它。那么我们可以做一个数学上的猜测,比如说,也许我们应该用一条直线作为模型。

我们可以选择不同的直线。但这是平均来说最接近我们所给的数据的一条。而根据这条直线,我们可以估算出任何楼层的下降时间。

我们怎么知道要在这里尝试使用一条直线呢?在某种程度上我们不知道。这只是数学上简单的东西,而我们已经习惯了这样的事实:我们测量的很多数据都被数学上简单的东西很好地拟合了。我们可以尝试一些数学上更复杂的东西 —— 比如说 a + bx + cx2,然后在这种情况下,我们做得更好:

ただし、物事がうまくいかない可能性があります。たとえば、最大でも a + b/c + x sin(x) で何ができるかは次のとおりです。

「モデルのないモデル」は決して存在しないことを理解する価値があります。使用するモデルには、特定の基礎となる構造があり、データに適合するために「回すことができるノブ」(つまり、設定できるパラメーター) のセットがあります。そして、ChatGPT の場合、これらの「ノブ」の多くが使用されており、実際には 1,750 億個も使用されています。

しかし、驚くべきことは、ChatGPT の基礎となる構造 (非常に多くのパラメーターしか持たない) が、妥当な記事長のテキストを提供するために「十分に」次の単語の確率を計算するモデルを作成するのに十分であるということです。

3.人間らしいタスクモデル

上で挙げた例には、本質的に単純な物理学から得られた数値データのモデリングが含まれていました。私たちは何世紀にもわたって「単純な数学が機能する」ことを知っていました。しかし、ChatGPT の場合、人間の脳によって生成される種類の人間の言語テキストのモデルを構築する必要があります。そして、このようなことに対する「単純な数学」のようなものは (少なくともまだ) ありません。それでは、そのモデルはどのようなものになるでしょうか?

言語について話す前に、もう 1 つの人間に似たタスク、つまり画像の認識について話しましょう。簡単な例として、数値の画像を考えてみましょう (はい、これは古典的な機械学習の例です)。

私たちができることの 1 つは、各桁のサンプル画像を大量に取得することです。

次に、入力画像が特定の数値に対応するかどうかを確認するには、手持ちのサンプルと明示的にピクセルごとに比較するだけです。しかし、人間として、私たちはもっとうまくできるようです。なぜなら、あらゆる種類の修正や歪みが加えられた手書きであっても、数字を認識できるからです。

上記の数値データのモデルを構築すると、特定の数値 x を取得し、特定の a と b に対して a + bx を計算できます。

それでは、ここで各ピクセルのグレー値を変数 xi としてとった場合、評価されたときにこの画像が何番目であるかを示す、これらすべての変数の関数はあるのでしょうか? このような関数を構築できることがわかりました。当然のことですが、これはそれほど単純ではありません。典型的な例には、50 万回の数学演算が含まれる場合があります。

しかし、最終的には、画像のピクセル値のセットをこの関数に入力すると、画像がどの番号であるかを指定する番号が得られます。後で、そのような関数を構築する方法とニューラル ネットワークの概念について説明します。しかし、ここではこの関数をブラック ボックスとして扱い、たとえば手書きの数字の画像を (ピクセル値の配列として) 入力し、それらの数字に対応する数字を取得します。

しかし、ここで一体何が起こっているのでしょうか?数値を徐々にぼかしていくとしましょう。しばらくの間、関数はまだそれを「認識」します。この場合は「2」です。しかし、すぐに「負け」、「間違った」結果が得られ始めます。

しかし、なぜこれが「間違った」結果だと言えるのでしょうか? この場合、「2」をぼかすことですべての画像を取得できることがわかります。しかし、私たちの目標が人間が画像を認識するためのモデルを作成することである場合、尋ねるべき本当の質問は、これらのぼやけた画像に直面し、その出所が分からない場合、人間はどうするかということです。

特徴から得られる結果が人間の言うことと概ね一致する場合、「良いモデル」が得られたことになります。自明ではない科学的事実は、このような画像認識タスクについて、そのような関数を構築する方法が基本的にわかっているということです。

それらが機能することを「数学的に証明」できるでしょうか? まあ、それはできません。なぜなら、それを行うには、私たち人間が行っていることについての数学的理論が必要だからです。「2」の画像を例として、いくつかのピクセルを変更します。ほんの数ピクセルだけが「場違い」であると想像できますが、それでもこの画像は「2」であると考える必要があります。しかし、これはどこまでやるべきでしょうか?これは人間の視覚認識に関する質問です。そして、そうです、ハチやタコの場合、答えは間違いなく異なります。おそらく、推定上の宇宙人にとっては、まったく異なる答えになるでしょう。

3. ニューラルネットワーク

では、画像認識などのタスクに使用する典型的なモデルは正確にどのように機能するのでしょうか? 現在、最も一般的で成功しているアプローチは、ニューラル ネットワークを使用することです。1940 年代に現在使用されているものに非常に近い形式で発明されたニューラル ネットワークは、脳の働きを単純に理想化したものと考えることができます。

人間の脳には約 1,000 億個のニューロン (神経細胞) があり、それぞれが電気インパルスをおそらく 1 秒間に 1,000 回発生させることができます。これらのニューロンは複雑なネットワークで接続されており、各ニューロンは木のような枝を持っており、これにより潜在的に数千の他のニューロンに電気信号を渡すことができます。

大まかな推定として、特定のニューロンが特定の瞬間に電気スパイクを生成するかどうかは、他のニューロンから受け取るスパイクに依存します。接続が異なれば、寄与する「重み」も異なります。

私たちが「画像を見る」ときに何が起こるかというと、画像の光子が目の奥の細胞(「光受容体」)に到達すると、神経細胞で電気信号が生成されます。これらの神経細胞は他の神経細胞に接続し、最終的に信号はニューロンの層全体に伝わります。そして、このプロセス中に、私たちは画像を「認識」し、最終的には「2を見る」という「アイデアを形成」します(最終的には「2」という単語を声に出して言うようなことをすることになるかもしれません)。

前のセクションの「ブラック ボックス」機能は、そのようなニューラル ネットワークの「数学化」バージョンです。正確に 11 のレイヤーがあります (ただし、「コア レイヤー」は 4 つだけです)。

このニューラル ネットワークには特に「理論的」なものはなく、1998 年にプロジェクトとして構築され、機能することが確認されたものにすぎません。(もちろん、これは私たちの脳が生物学的進化の過程を通じて生じたと説明する場合と何ら変わりません)。

さて、しかし、このようなニューラルネットワークはどのようにして「ものを認識」するのでしょうか? 鍵となるのはアトラクターの概念です。1 と 2 の手書きの画像があると想像してください。

すべての 1 を「1 つの場所に描画」し、すべての 2 を「別の場所に描画」したいと考えています。別の言い方をすると、画像が何らかの形で 2 よりも「1 に近い」場合、最終的には「1 の位置」になるようにしたいと考えます。逆も同様です。

直接の例えとして、平面上に点で表される特定の場所があると仮定しましょう (現実では、それらはコーヒー ショップの場所である可能性があります)。次に、飛行機の任意の地点から開始して、常に最も近い地点で終了したいと考えることができます (つまり、常に最寄りのコーヒー ショップに行きます)。これは、平面を理想的な「流域」で区切られた領域 (「引力の盆地」) に分割することで表すことができます。

これは、ある種の「認識タスク」を実行していると考えることができます。与えられた画像がどの番号に「最も似ているか」を特定するようなことをしているのではなく、与えられた点がどの点に最も近いかを確認しているのです。に。(ここで示した「ボロノイ図」セットアップは、2 次元ユークリッド空間内の点を分離します。数字認識タスクは、非常に似たようなことを行うと考えることができますが、灰色によって形成される 784 次元空間内で行われます。ピクセルのレベル)

では、ニューラルネットワークに「認識タスクを実行」させるにはどうすればよいでしょうか? この非常に単純なケースを考えてみましょう。

私たちの目標は、位置 {x,y} に対応する「入力」を取得し、それをそれに最も近い 3 点のいずれかとして「認識」することです。言い換えると、ニューラル ネットワークに {x,y} のような関数を計算させたいと考えています。

では、ニューラルネットワークを使ってこれをどのように行うのでしょうか? 結局のところ、ニューラル ネットワークは、接続された「ニューロン」の理想的なコレクションであり、通常は層状に配置されています。その簡単な例は次のとおりです。

各「ニューロン」は、単純な数値関数を評価するように効果的に設定されています。このネットワークを「使用」するには、単に上部に数値 (座標 x と y など) を入力し、各層のニューロンに「機能を評価」させ、その結果をネットワークを通じて転送し、最終的には下部に供給します。最終結果を生成します。

従来の (生物学にヒントを得た) 設定では、各ニューロンには実際に前の層のニューロンからの一連の「受信接続」があり、各接続には特定の「重み」 (正の数または負の数) が割り当てられます。特定のニューロンの値は、「前のニューロン」の値に対応する重みを乗算することによって決定され、次にこれらの値が合計されて定数が乗算され、最後に「しきい値」(または「アクティブ化」)関数が適用されます。

数学的に言えば、ニューロンの入力 x = {x1, x2 ... } がある場合、f[wx + b] を計算します。ここで、重み w と定数 b は通常、ネットワーク内のニューロンごとに異なるように選択されます。 f は通常同じです。

wx + b の計算は、行列の乗算と加算だけです。活性化関数 "f は非線形性を導入します (そして最終的には非線形動作につながります)。通常はさまざまな活性化関数が使用されますが、ここでは Ramp (または ReLU) だけを使用します。

ニューラル ネットワークに実行させたいタスクごとに (むしろ、評価したい全体的な機能ごとに)、重みの選択は異なります。(後で説明しますが、これらの重みは通常、機械学習を使用して、目的の出力のインスタンスでニューラル ネットワークを「トレーニング」することによって決定されます)。

最終的に、各ニューラル ネットワークは、全体的な数学関数に対応します。乱雑に書かれているかもしれませんが。上の例の場合、次のようになります。

ChatGPT のニューラル ネットワークはそのような数学関数にのみ対応しますが、実際には数十億の項があります。

しかし、個々のニューロンに戻りましょう。以下は、2 つの入力 (座標 x と y を表す) を持つニューロンが、異なる重みと定数 (および活性化関数としての Ramp) を選択した後に計算できる関数の例です。

しかし、上記のより大きなネットワークはどうなるのでしょうか? さて、計算内容は次のとおりです。

これは完全に「正しい」わけではありませんが、上で示した「最近接点」関数に近いものです。

他のニューラル ネットワークでは何が起こるかを見てみましょう。後で説明するように、それぞれの場合において、機械学習を使用して重みの最適な選択を見つけます。次に、これらの重みを使用したニューラル ネットワークの計算を示します。

一般に、大規模なネットワークほど目的関数をより適切に近似できます。そして、「各アトラクター盆地の真ん中」で、私たちは通常、望む答えを得ることができます。しかし、ニューラルネットワークが「決断するのに苦労している」境界では、事態はさらに厄介になる可能性があります。

この単純な数学形式の「識別タスク」では、「正解」が何かは明らかです。しかし、手書きの数字の認識となると、それほど明確ではありません。誰かが「2」をひどく書いて「7」に見える場合はどうなりますか? それでも、ニューラル ネットワークが数値をどのように区別するかを尋ねることはできます。これにより、次のことが分かります。

ネットワークがどのように区別されるかを「数学的に」言えるでしょうか? それは真実ではない。それは単に「ニューラルネットワークが行うことを行う」だけです。しかし、それは私たち人間が行う区別とかなりよく一致していることが多いことが判明しました。

より複雑な例を見てみましょう。猫と犬の画像があるとします。私たちはそれらを区別するように訓練されたニューラルネットワークを持っています。いくつかの例では次のようなことが行われます。

さて、「正しい答え」が何であるかはさらに明らかではありません。猫のスーツを着た犬はどうでしょうか?どのような入力が与えられても、ニューラル ネットワークは答えを生成します。そして、それは人間の行動と合理的に一致する方法で行われたことが判明しました。

上で述べたように、これは「第一原理から推定」できる事実ではありません。それは、少なくとも一部の領域では、経験的に真実であることが判明しているだけです。しかし、これがニューラル ネットワークが役立つ重要な理由です。ニューラル ネットワークは、物事を行う「人間らしい」方法をどういうわけか捉えているからです。

猫の写真を自分に見せて、「なぜそれは猫なのですか?」と尋ねてください。もしかしたら、「まあ、尖った耳が見えますね、まあまあ」と言い始めるかもしれません。しかし、その写真をどのようにして猫として認識するのかを説明するのはそれほど簡単ではありません。あなたの脳がどういうわけか理解したものです。しかし、脳の場合、その内部に「入って」どのように考えているかを確認する方法は(少なくともまだ)ありません。

では、(人工)ニューラルネットワークはどうでしょうか?さて、猫の写真を見せると、それぞれの「ニューロン」が何をしているのかを直接見ることができます。ただし、多くの場合、基本的な視覚化さえも非常に困難です。

上記の「最近接点」問題を解決するために使用した最終的なネットワークには 17 個のニューロンがあります。手書き数字の認識に使用されるネットワークには 2190 個あります。私たちが犬猫の識別に使用しているネットワークには、60,650 匹がいます。

一般に、60,650 次元に相当する空間を視覚化することは非常に困難です。しかし、これは画像を処理するために設定されたネットワークであるため、その多くのニューロン層は、注目するピクセルの配列のように配列に編成されます。

典型的な猫の画像を取り上げると、次のようになります。

次に、派生画像のセットを使用して、最初の層のニューロンの状態を表現できます。その多くは、「背景のない猫」や「猫のシルエット」などとして簡単に解釈できます。

10 階になると、何が起こっているのかを説明するのはさらに難しくなります。

しかし一般に、ニューラル ネットワークは「特定の特徴を選択」し (おそらく尖った耳もその中に含まれます)、これらの特徴を使用して画像が何であるかを判断していると言えます。しかし、これらの特徴には、「とがった耳」のような名前が付いているのでしょうか?ほとんどの場合はそうではありません。

私たちの脳も同様の特性を利用しているのでしょうか? ほとんどの場合、私たちは知りません。しかし、ここで示したようなニューラル ネットワークの最初の数層は、私たちが知っているものとは異なる画像の特定の側面 (オブジェクトのエッジなど) を抽出しているように見えることは注目に値します。脳の視覚処理の最初の層であり、その機能は似ています。

しかし、ニューラル ネットワークに「猫認識理論」が必要だとします。「見てください、この特定のネットワークがそれを実行しました」と言うことができます。これにより、「問題がどれほど難しいか」(たとえば、必要なニューロンまたは層の数など)がすぐにわかります。

しかし、少なくとも今のところ、ネットワークが何をしているのかを「物語的に説明」する方法はありません。おそらくこれは、実際に計算的に還元不可能であり、各ステップを明示的にトレースする以外に何をしているのかを知る一般的な方法がないためです。あるいは、私たちが「科学を解明」していないだけで、何が起こっているのかを一般化することを可能にする「自然法則」を特定していないだけかもしれません。

ChatGPT を使用した言語の生成について話すときも、同じ問題があります。また、「何をしているのかを要約する」方法があるかどうかも明らかではありません。しかし、言語 (そして言語に関する私たちの経験) の豊かさと詳細は、私たちを画像よりもさらに遠くへ連れて行ってくれるかもしれません。

4. 機械学習とニューラルネットワークのトレーニング

これまで、特定のタスクの実行方法を「すでに知っている」ニューラル ネットワークについて説明してきました。しかし、ニューラル ネットワークが (そしておそらく脳においても) 非常に役立つのは、原理的にさまざまなタスクを実行できるだけでなく、それらのタスクを実行するために徐々に「例によって訓練」できることです。

猫と犬を区別するニューラル ネットワークを作成するとき、実際には、ひげを明示的に見つけるプログラムを書く必要はありません。代わりに、猫とは何か、犬とは何かについての例をたくさん示すだけです。そして、ネットワークにこれらの例からそれらを区別する方法を「機械学習」させます。

重要なのは、トレーニングされたネットワークは、示されている特定の例から「一般化」されるということです。上で見たように、単にネットワークに猫の画像内の特定のピクセル パターンを認識させるだけではなく、画像の差別化に基づいています。

では、ニューラル ネットワークのトレーニングは正確にどのように機能するのでしょうか? 基本的に、私たちは与えられた例をニューラル ネットワークが正常に再現できる重みを見つけようとしています。次に、ニューラル ネットワークを利用して、これらの例の間を「合理的な」方法で「補間」(または「一般化」)します。

上記の最近点問題よりも簡単な問題を見てみましょう。ニューラル ネットワークに関数を学習させてみましょう。

このタスクでは、次のような入力と出力が 1 つだけあるネットワークが必要です。

しかし、どのような重みなどを使用すればよいでしょうか? 考えられる重みのそれぞれのセットの下で、ニューラル ネットワークは何らかの関数を計算します。たとえば、ランダムに選択された重みのいくつかのセットを使用した場合の動作は次のとおりです。

はい、このような場合、必要な機能の再現には程遠いことがはっきりとわかります。では、この関数を再現する重みはどのように見つければよいのでしょうか?

基本的な考え方は、多数の「入力→出力」の例を提供して「学習」し、これらの例を再現する重みを見つけようとすることです。例の数を増やした結果を次に示します。

この「トレーニング」の各段階で、ネットワークの重みが段階的に調整され、最終的には目的の機能を正常に再現するネットワークが完成することがわかります。では、重みをどのように調整すればよいのでしょうか? 基本的な考え方は、各段階で必要な機能の取得まで「どのくらい」離れているかを確認し、それに近づくように重みを更新することです。

「どれだけ離れているか」を調べるために、通常「損失関数」(または場合によっては「コスト関数」)と呼ばれるものを計算します。ここでは、取得した値と真の値の差の単純な二乗和である単純な (L2) 損失関数を使用しています。

私たちが見ているのは、トレーニング プロセスが進行するにつれて、ネットワーク (少なくとも適切な近似値) が正常に再現される点に到達するまで、損失関数が徐々に減少することです (特定の「学習曲線」に従い、タスクごとに異なります)。必要な機能:

さて、最後に説明する重要な部分は、損失関数を減らすために重みを調整する方法です。前述したように、損失関数は、取得した値と真の値の間の「距離」を示します。ただし、各段階で「どのような値が得られるか」は、ニューラル ネットワークの現在のバージョンとその重みによって決まります。しかしここで、これらの重みが変数であると想像してください (wi としましょう)。これらの変数に依存する損失が最小限に抑えられるように、これらの変数の値を調整する方法を見つけたいと考えています。

たとえば、重みが w1 と w2 の 2 つだけであると想像してください (実際に使用される典型的なニューラル ネットワークを驚くほど単純化したものです)。その場合、w1 と w2 の関数として、次のような損失が発生する可能性があります。

数値解析では、このような場合に最小値を見つけるためのさまざまな手法が提供されます。ただし、一般的なアプローチは、前の w1、w2 から開始して、最も急な降下パスを段階的にたどることです。

山を流れ下る水のように、保証されているのは、プロセスが地表の局所的な最小値 (「山の湖」) に到達することだけであり、最終的な地球規模の最小値には到達しない可能性が高くなります。

「重量地形」上で最も急な降下経路を見つけることは明白ではなく、実行可能でもありません。しかし、微積分は私たちを助けることができます。上で述べたように、ニューラル ネットワークは入力と重みに依存する数学関数を計算するものであると常に考えることができます。

しかしここで、これらの重みを微分して考えてみましょう。微積分の連鎖則により、実際にニューラル ネットワーク内の連続層によって実行される操作を「解く」ことができることがわかりました。その結果、少なくとも局所的な近似においては、ニューラル ネットワークの動作を「反転」し、出力に関連する損失を最小限に抑える重みを段階的に見つけることができるようになります。

上の図は、重みが 2 つだけという非現実的で単純な場合に、どの程度の最小化を行う必要があるかを示しています。しかし、重みを増やしても (ChatGPT は 1,750 億を使用)、少なくともある程度は最小化することが可能であることがわかりました。実際、2011 年頃に起こった「ディープ ラーニング」の大きな進歩は、ある意味、関係する重みがかなり少ない場合よりも、関係する重みが多い場合の方が (少なくともおおよそ) 最小化が容易であるという発見に関連していました。 。

言い換えれば、多少直感に反しますが、ニューラル ネットワークを使用すると、単純な問題よりも複雑な問題を解決する方が簡単です。この一般的な理由は、人が多くの「重み変数」を持っている場合、その人は最小値に導くことができる「多くの異なる方向」を持つ高次元空間を持っているためであると思われますが、変数が少ない場合は、行き詰まりが容易になるためです。 「外に出る方向」のない極小値(「山の湖」)。

一般的なケースでは、多くの異なる重みのセットがあり、それらはすべてほぼ同じパフォーマンスのニューラル ネットワークにつながることを指摘する価値があります。そして、実際のニューラル ネットワークのトレーニングでは、通常、次のような「異なるが同等の解決策」につながるランダムな選択肢が多数存在します。

ただし、これらの「異なるソリューション」はそれぞれ、少なくともわずかに異なる動作をします。たとえば、トレーニング例を提供する地域の外で「推定」するように依頼すると、大きく異なる結果が得られる可能性があります。

しかし、どちらが「正しい」のでしょうか?本当に伝える方法がありません。それらはすべて「観察されたデータと一致」しています。しかし、それらはすべて、「枠にとらわれずに」何をすべきかについての、さまざまな「生来の」「考え方」に対応しています。私たち人間にとって、ある人は他の人よりも「より合理的」に見えるかもしれません。

5.ニューラルネットワークトレーニングの実践と理論

特に過去 10 年間で、ニューラル ネットワークのトレーニング技術において多くの進歩が見られました。そして、はい、それは基本的に芸術です。時々、特に振り返ってみると、何が行われているかについて少なくとも「科学的説明」のようなものを見ることができます。しかし、ほとんどの場合、物事は試行錯誤によって発見され、アイデアやトリックが追加され、ニューラル ネットワークの使用方法に関する重要な伝説が徐々に構築されていきました。

いくつかの重要な部分があります。まず、特定のタスクにどのようなニューラル ネットワークのアーキテクチャを使用する必要があるかです。次に、ニューラル ネットワークをトレーニングするためのデータをどのように取得するかという重要な問題があります。さらに、ネットワークを最初からトレーニングするという問題に取り組まなくなる人が増えています。代わりに、新しいネットワークを、すでにトレーニング済みの別のネットワークに直接フィードするか、少なくともそれ自体でさらに多くのトレーニング サンプルを生成するために使用できます。

特定のタスクごとに異なるニューラル ネットワーク アーキテクチャが必要になると考える人もいるかもしれません。しかし、明らかに異なるタスクであっても、同じアーキテクチャが機能するように見えることが判明しました。

ある意味、これはユニバーサル コンピューティングの考え方 (および計算の等価性に関する私の原則) を彷彿とさせますが、後で説明するように、これはニューラル ネットワークが試みているタスクが頻繁に実行されるという事実をより反映していると思います。やるべきことは「人間に似た」ものであり、ニューラルネットワークはかなり一般的な「人間に似たプロセス」を捕捉できます。

ニューラル ネットワークの初期の頃、人々は「ニューラル ネットワークにできる限り少ないことをさせる」と考える傾向がありました。たとえば、音声をテキストに変換する場合、まず音声の音声を分析し、音素などに分解する必要があると考えられています。しかし、少なくとも「人間のようなタスク」の場合は、「エンドツーエンドの問題」でニューラル ネットワークをトレーニングし、必要な中間特徴やエンコーディングなどをニューラル ネットワークに「発見」させるほうが良い場合が多いことがわかっています。 。 そのままで。

実際に「特定のアルゴリズムのアイデアを明示的に実装する」ニューラル ネットワークに、複雑な個別コンポーネントを導入すべきだという考えもあります。しかし、繰り返しますが、これには価値がないことがわかります。代わりに、非常に単純なコンポーネントを扱い、コンポーネントを (通常は私たちの理解を超えた方法でとはいえ) 「自己組織化」させて、それらのアルゴリズムのアイデアと (ほぼ) 同等のことを実現する方がよいでしょう。

ニューラル ネットワークに関連する「構造化されたアイデア」が存在しないというわけではありません。したがって、たとえば、ローカル接続を持つニューロンの 2 次元配列は、少なくとも画像処理の初期段階では非常に役立つようです。また、「レビュー シーケンス」に焦点を当てた接続パターンを持つことは、後で説明するように、たとえば ChatGPT で人間の言語のようなものを扱うときに役立つようです。

しかし、ニューラル ネットワークの重要な特徴は、一般的なコンピューターと同様に、最終的にはデータを処理しているだけであるということです。一方、現在のニューラル ネットワーク (ニューラル ネットワークをトレーニングする現在の方法) は、数値の配列のみを扱うように設計されています。ただし、処理中に、これらの配列は完全に再配置され、再形成される可能性があります。例として、上記で数字を認識するために使用したネットワークは、「画像」の 2 次元配列から始まり、すぐに多くのチャネルに「厚くなり」ますが、その後、最終的には数字の要素を含む 1 次元配列に「凝縮」されます。 :

しかし、特定のタスクに対するニューラル ネットワークの規模をどのように判断するのでしょうか? それは芸術です。ある意味、重要なのは「このタスクがどれくらい難しいか」を知ることです。しかし、人間のようなタスクの場合、これを推定するのは困難なことがよくあります。

はい、コンピュータによって非常に「機械的に」タスクを達成する体系的な方法があるかもしれません。しかし、少なくとも「人間らしいレベル」において、この作業を容易にするトリックや近道があると認識されているかどうかを知るのは困難です。特定のゲームを「機械的に」プレイするには巨大なゲーム ツリーを列挙する必要があるかもしれませんが、「人間レベルのプレイ」を実現するより簡単な (「ヒューリスティック」な) 方法があるかもしれません。

小さなニューラル ネットワークや単純なタスクを扱っていると、「ここからはそこに到達できない」ことがはっきりとわかることがあります。たとえば、これは、前のセクションのタスクに関して、いくつかの小さなニューラル ネットワークを使用して達成できると思われる最高の結果です。

そして私たちの場合、ネットが小さすぎると、必要な機能を再現できません。しかし、一定のサイズを超えると、少なくとも十分な期間と十分な例を使用してトレーニングした場合には問題ありません。ところで、これらの写真はニューラル ネットワークの神話を示しています。中央に「圧迫」があり、すべてがより少ない数の介在ニューロンを通過するように強制される場合、多くの場合、より小さなネットワークが得られる可能性があります。

(注目に値するのは、「中間層がない」 -- いわゆる「パーセプトロン」 -- ネットワークは本質的に線形関数のみを学習できるということです -- しかし、中間層がある限り、原理的には任意に適切に近似することが可能です。少なくとも十分なニューロンがある場合には機能しますが、実行可能にトレーニングするには通常、何らかの正則化または正規化が必要です)。

さて、ある種のニューラル ネットワーク アーキテクチャに落ち着いたと仮定しましょう。ここで、ネットワークをトレーニングするためのデータを取得する方法が問題になります。一般に、ニューラル ネットワークと機械学習を取り巻く多くの実際的な課題は、必要なトレーニング データの取得または準備に重点が置かれています。多くの状況 (「教師あり学習」) では、入力と必要な出力の明示的な例が必要になります。

したがって、たとえば、画像に含まれるものやその他の属性によって画像にラベルを付けたい場合があります。おそらく、それを明示的に行う必要があるでしょう - 通常は骨の折れる作業です。しかし、多くの場合、すでに行われた作業を利用したり、それをある種の代理として使用したりすることができます。

したがって、たとえば、Web 上ですでに入手可能な画像の alt タグを使用できます。あるいは、別の分野で、ビデオ用に作成されたクローズド キャプションを使用することもできます。または、言語翻訳トレーニングでは、異なる言語の Web ページまたはその他のファイルの並行バージョンを使用できます。

特定のタスクを実行するようにニューラル ネットワークをトレーニングするには、どれくらいのデータが必要ですか? 繰り返しになりますが、これを第一原理から推定することは困難です。もちろん、「転移学習」を使用して、別のネットワークですでに学習された重要な機能のリストのようなものを「転送」することで、要件を大幅に軽減できます。

しかし一般に、ニューラル ネットワークが適切にトレーニングするには「多くの例を見る」必要があります。そして、ニューラル ネットワークに関する大きな誤解の 1 つは、少なくとも一部のタスクでは、例が非常に反復的になる可能性があるということです。実際、ニューラル ネットワークにすべての例を繰り返し表示するのが標準的な戦略です。各「トレーニング ラウンド」 (または「エポック」) 中に、ニューラル ネットワークは少なくともわずかに異なる状態になります。何らかの方法で特定の例を「思い出させる」ことが、ニューラル ネットワークに「その例を記憶させる」ために重要です。使える。(はい、おそらくこれは人間の記憶における反復の有用性に似ています)。

しかし、多くの場合、同じ例を何度も繰り返すだけでは十分ではありません。この例の変形もニューラル ネットワークに示す必要がありますそして、ニューラル ネットワーク理論の 1 つの特徴は、これらの「データ拡張された」バリエーションが複雑である必要がないことです。基本的な画像処理方法を使用して画像をわずかに変更するだけで、ニューラル ネットワークのトレーニングに使用できる画像を本質的に「新品同様」にすることができます。同様に、自動運転車を訓練するための実際のビデオなどを持っていない場合、実際の現実世界のシナリオの詳細をすべて知らなくても、シミュレートされたビデオゲーム環境からデータを取得し続けることができます。

ChatGPTのようなものはどうでしょうか?まあ、「教師なし学習」ができるという素晴らしい機能があり、トレーニング用のサンプルを取得しやすくなります。要約すると、ChatGPT の基本的なタスクは、与えられたテキストをどのように処理するかを理解することです。したがって、「トレーニング インスタンス」を取得するには、テキストの一部を取得して末尾をマスクし、それを「トレーニング用の入力」として使用するだけです。「出力」はマスクされていない完全なテキストです。これについては後ほど詳しく説明しますが、重要な点は、画像の内容を学習する場合とは異なり、「明示的なラベル」は必要ないということです。ChatGPT は実際に、与えられたテキストの例から直接学習できるということです。

好吧,那么神经网络的实际学习过程是怎样的呢?归根结底,这都是为了确定什么权重能够最好地捕捉所给的训练实例。有各种详细的选择和 “超参数设置”(之所以被称为超参数,是因为可以把权重看作是 “参数”),可以用来调整如何完成这一过程。

有不同的损失函数选择(平方之和、绝对值之和,等等)。有不同的方法来进行损失最小化(每一步要在权重空间中移动多远,等等)。然后还有一些问题,比如要展示多大的 “一批” 例子来获得每一个试图最小化的损失的连续估计。而且,是的,人们可以应用机器学习(例如,我们在 Wolfram 语言中所做的)来实现机器学习的自动化 —— 自动设置超参数等东西。

但最终,整个训练过程的特点是看到损失是如何逐渐减少的(如这个 Wolfram Language 的小型训练的进度监视器):

而人们通常看到的是,损失在一段时间内减少,但最终在某个恒定值上趋于平缓。如果这个值足够小,那么可以认为训练是成功的;否则,这可能是一个应该尝试改变网络结构的信号。

能否告诉我们 “学习曲线” 要花多长时间才能变平?就像许多其他事情一样,似乎有近似的幂律缩放关系,这取决于神经网络的大小和使用的数据量。但一般的结论是,训练一个神经网络是很难的,需要大量的计算努力。作为一个实际问题,这些努力的绝大部分都花在了对数字阵列的操作上,而这正是 GPU 所擅长的 —— 这就是为什么神经网络训练通常受限于 GPU 的可用性。

在未来,是否会有从根本上更好的方法来训练神经网络,或者一般地做神经网络的工作?我认为,几乎可以肯定。神经网络的基本理念是用大量简单(本质上相同)的组件创建一个灵活的 “计算结构”,并让这个 “结构” 能够被逐步修改,以便从实例中学习。

現在のニューラル ネットワークでは、基本的に微積分のアイデアを実数に適用して、この種の段階的な変更を行っています。しかし、高精度の数値が重要ではないことがますます明らかになりつつあり、現在の方法でも 8 桁以下で十分な場合があります。

セルオートマトンなどのコンピューティングシステムは、基本的に多くの個々のビットを並行して動作させるが、この種の段階的な変更をどのように行うのかはこれまで明らかになっていませんでしたが、それが不可能であると考える理由はありません。実際、2012 年の深層学習の画期的な進歩のように、この種の段階的な変更は、単純な場合よりも複雑な場合の方が簡単である可能性があります。

ニューラル ネットワーク (おそらく脳に少し似ています) は、ニューロン間の接続の強さ (「重み」) によって変更される、ほぼ固定されたニューロンのネットワークを持つようにプログラムされています。(おそらく、少なくとも若い脳では、まったく新しい接続が多数成長する可能性もあります。) しかし、これは生物学にとっては便利な設定かもしれませんが、それが私たちが望む機能を達成するための最良の方法であるかどうかは明らかではありません。そして、漸進的なネットワークの書き換えを伴うもの (おそらく私たちの物理学プロジェクトを思い出させるもの) は、最終的にはより良いものになる可能性があります。

しかし、既存のニューラル ネットワーク フレームワーク内であっても、現時点では重要な制限があります。今日のニューラル ネットワークのトレーニングは基本的に継続的であり、サンプルの各バッチの効果が重みを更新するために伝播されます実際、現在のコンピューター ハードウェアでは (GPU を考慮しても)、ニューラル ネットワークはトレーニング中にほとんどの時間を「アイドル状態」に費やし、一度に 1 つの部分のみが更新されます。ある意味、これは現在のコンピュータが CPU (または GPU) とは別にメモリを搭載する傾向にあるためです。しかし、脳ではおそらく異なります。すべての「記憶要素」(つまり、ニューロン)は、潜在的にアクティブな計算要素でもあります。将来のコンピューター ハードウェアをこのようにセットアップできれば、より効率的にトレーニングできるようになるでしょう。

「もちろん、十分な規模のネットワークがあれば何でもできます。」

ChatGPT のような機能は印象的であり、「先に進んで」さらに大規模なニューラル ネットワークをトレーニングできれば、最終的には「何でもできる」ようになるだろうと想像する人もいるかもしれません。人間が直接的に考えやすいことに注目すれば、そうなる可能性が高い。しかし、過去数百年にわたる科学の教訓は、形式的なプロセスを通じて計算できるものもあるが、人間の直接思考によっては容易に得られないものがあるということです。

自明ではない数学がその大きな例です。しかし、一般的なケースは実際にはコンピューティングです。そして最後の問題は計算既約性現象です。完了するまでに多くの手順が必要と思われる計算がいくつかありますが、実際にはかなり単純なものに「簡略化」できます。しかし、計算上の既約性の発見は、これが常に機能するとは限らないことを意味します。逆に、一部のプロシージャ (おそらく次のようなプロシージャ) では、何が起こったのかを把握するために各計算ステップをトレースする必要があります。

私たちが普段脳を使って行っていることは、おそらく、計算の還元不可能性を避けるために特別に選択されていると思われます。頭の中で数学を行うには特別な努力が必要です。そして実際には、顕微鏡以外のプログラムの動作手順を頭の中だけで「考える」ことはほとんど不可能です。

もちろん、私たちにはそのためのコンピューターがあります。コンピューターを使用すると、計算上では単純化できない長時間の処理を簡単に行うことができます。そして重要な点は、これらのことには通常、近道はないということです。

はい、特定のコンピューティング システムで何が起こったかについて、私たちは多くの具体的な例を思い出すことができます。おそらく、少し一般化できるいくつかの (「計算的に削減可能な」) パターンも見つかるかもしれません。しかし、問題は、計算の還元不可能性により、事故が起こらないという保証は決してできないということです。明示的に計算を行うことによってのみ、特定の状況で実際に何が起こったのかを知ることができます。

最後に、学習可能性と計算の非再現性の間には基本的な緊張関係があります。実際、学習では規則性を利用してデータが圧縮されます。しかし、計算による非再現性は、最終的には存在できる規則性には限界があることを意味します。

実際の問題として、セルラー オートマトンやチューリング マシンなどの小さなコンピューティング デバイスを、ニューラル ネットワークのような訓練可能なシステムに組み込むことを想像できます。さらに、Wolfram|Alpha が ChatGPT にとって優れたツールであるのと同じように、このデバイスは確かにニューラルネットにとって優れた「ツール」となり得ます。しかし、コンピューティングの還元不可能な性質により、これらのデバイスに「ハッキング」して学習させることは期待できません。

言い換えれば、能力と訓練可能性の間には究極のトレードオフが存在します。システムの計算能力を「真に活用」したいほど、計算上の非再現性が高まり、訓練可能性は低くなります。そして、基本的に訓練可能であればあるほど、複雑な計算はできなくなります。

(現在の ChatGPT の場合、状況は実際にはさらに極端です。各出力シンボルの生成に使用されるニューラル ネットワークは、ループのない純粋な「フィードフォワード」ネットワークであり、したがって、非複雑なものについては何もすることができないからです。」 「制御。流量」の計算)。

もちろん、不可逆計算を実行できることが本当に重要なのか疑問に思う人もいるかもしれません。実際、人類の歴史のほとんどにおいて、それは特に重要ではありませんでした。しかし、私たちの現代の技術世界は、少なくとも数学的計算、そしてますます一般的な計算を使用するエンジニアリングに基づいて構築されています。自然界に目を向けると、そこには還元不可能な計算があふれています。私たちはそれを模倣し、技術的目的に使用する方法を徐々に理解しています。

そう、確かにニューラルネットワークは自然界のさまざまな規則性に気づくことができ、私たちは「無力な人間の心」を通してそれらの規則性に簡単に気づくことができます。しかし、数学や計算科学の領域に含まれる問題を解決したい場合、「通常の」コンピューティング システムを「ツールとして」効果的に「使用」しない限り、ニューラル ネットワークではそれを行うことはできません。

ただし、このすべてにおいて混乱を招く可能性のある点がいくつかあります。以前は、記事の執筆など、コンピュータには「根本的に難しすぎる」と思われるタスクがたくさんありました。そして今、これらのタスクが ChatGPT などによって実行されているのを見ると、特にコンピュータがすでに基本的にできることを超えて、コンピュータがより強力になったに違いないと突然考える傾向があります (セル オートマトンや他のコンピューティング システムを段階的に計算するなど)。の動作)。

しかし、これは正しい結論ではありません。たとえコンピューターが個々のステップを簡単に計算できるとしても、計算的に還元できないプロセスは依然として計算的に還元不可能であり、コンピューターにとって根本的に困難なままです。むしろ、記事を書くなど、コンピュータにはできないと思われている人間にはできるタスクは、実際には、ある意味、私たちが思っているよりも計算するのが簡単であると結論づけるべきです。

言い換えれば、ニューラル ネットワークがエッセイを正常に書くことができたのは、エッセイを書くことが私たちが思っていたよりも「計算的に浅い」問題であることが判明したためです。ある意味、これは私たち人間がエッセイを書いたり言語を処理したりする方法全般について「理論を持つ」ことに近づくことになります。

十分な規模のニューラル ネットワークがあれば、確かに、人間が簡単に実行できることはすべて実行できるかもしれません。しかし、一般的に自然ができること、あるいは自然から形作られたツールが何をできるかを捉えることはできません。そして、実用的かつ概念的なこれらのツールの使用により、ここ数世紀で私たちは「純粋に無力な人間の思考」が達成できる限界を超え、物理的および物理的な領域でより多くのことを人間の目的のために捕捉することができました。計算宇宙。

6.埋め込みの概念

ニューラル ネットワークは、少なくとも現在の設定では、基本的に数値ベースです。したがって、テキストなどに使用する場合は、テキストを数値で表す方法が必要です。

もちろん、(基本的に ChatGPT が行ったのと同じように) 辞書内の各単語に番号を割り当てることを開始することもできます。ただし、たとえば、ChatGPT の中心となる重要なアイデアは、この範囲を超えています。これが「埋め込み」の概念です。エンベディングは、物事の「本質」を数値の配列として表現しようとする方法、つまり「近くのもの」が近くの数値で表されるという性質と考えることができます。

したがって、たとえば、単語の埋め込みは、何らかの形で「意味が近い」単語が埋め込み内に現れる、ある種の「意味空間」に単語を配置しようとするものと考えることができます。ChatGPT などで実際に使用される埋め込みには、多くの場合、大きな数値リストが含まれます。しかし、これを 2D 空間に投影すると、埋め込まれた単語がどのように配置されるかの例を示すことができます。

そして、はい、私たちが見たものは、典型的な日常の印象を非常にうまく捉えていました。しかし、そのような埋め込みをどのように構築できるのでしょうか? 一般的な考え方は、大量のテキスト (この場合は Web からの 50 億語) を調べて、さまざまな単語が出現する「環境」がどの程度類似しているかを確認することです。したがって、たとえば、「ワニ」と「ワニ」は、他の同様の文の中で同じ意味で出現することがよくあります。これは、それらが埋め込み内で近くに配置されていることを意味します。ただし、「大根」と「ワシ」は他の同様の文には出現しないため、埋め込み内で遠くに配置されます。

しかし、実際にニューラル ネットワークを使用してこのようなものを実装するにはどうすればよいでしょうか? まずは、単語ではなく画像の埋め込みについて話しましょう。私たちは、「似ていると思われる画像」が同様の番号のリストに割り当てられるように、番号のリストで画像を記述する何らかの方法を見つけたいと考えています。

「画像は似ていると考えるべきか」をどうやって判断すればよいのでしょうか? たとえば、画像が手書きの数字である場合、それらが同じ数字であれば「2 つの画像は似ていると考える」かもしれません。先ほど、手書きの数字を認識するようにトレーニングされたニューラル ネットワークについて説明しました。このニューラル ネットワークは、最終出力で画像を 10 個の異なるビン (各桁に 1 つずつ) に配置するように設定されていると考えることができます。

しかし、「それは「4」である」という最終決定を下す前に、ニューラルネットワーク内で何が起こっているかを「傍受」したらどうなるでしょうか? ニューラル ネットワークでは、画像を「ほとんどが 4 ですが、少しは 2」などと表現する数値があると想像するかもしれません。そして、そのような数値を埋め込み要素として抽出するというアイデアです。

ここにコンセプトがあります。「どの画像が他のどの画像に近いか」を直接説明しようとする代わりに、明示的なトレーニング データにアクセスできる、明確に定義されたタスク (この場合は数字認識) を検討します。そして、このタスクを実行する際に次の事実を利用します。 、ニューラル ネットワークは、「近接の決定」に相当するものを暗黙的に行います。したがって、「画像の近接性」について明示的に話す必要はなく、画像が表す数字についての具体的な問題だけを話し、それが「画像の近接性」を意味するものを暗黙的に決定するために「ニューラル ネットワークに任せる」のです。

では、これは数字認識ネットワークでどのようにより詳細に機能するのでしょうか? このネットワークは 11 の連続した層で構成されていると考えることができ、それを図的に要約することができます (アクティベーション関数は別個の層として示されています)。

最初に、ピクセル値の 2D 配列として表される実際の画像を最初のレイヤーに供給します。最後の層では、10 個の値の配列が与えられます。これは、画像が 0 から 9 までの各数字に対応していることがネットワークでどの程度「確実」であるかを表すものと考えることができます。

画像 (手書き 4) を入力すると、最後の層のニューロンの値は次のようになります。

言い換えれば、ニューラル ネットワークは、この時点で画像が 4 であることを「確信」しており、実際に出力「4」を取得するには、最大値を持つニューロンの位置を選択するだけで済みます。

しかし、さらに一歩進めたらどうなるでしょうか? ネットワークの最後の操作は、いわゆるソフトマックスであり、「確実性を強制」しようとします。その前に、ニューロンの値は次のとおりです。

「4」を表すニューロンは依然として最高値を持っています。しかし、他のニューロンの値にも情報があります。この数値のリストは、ある意味で画像の「性質」を説明するために使用でき、埋め込みとして使用できるものを提供することが期待できます。したがって、たとえば、ここでの 4 つのそれぞれにはわずかに異なる「署名」 (または「機能の埋め込み」) があり、すべて 8 とは大きく異なります。

ここでは、基本的に 10 個の数字を使用して画像の特徴を説明します。ただし、通常はそれよりも多くの数値を使用する方が良いでしょう。たとえば、数字認識ネットワークでは、前の層をマイニングすることで 500 桁の配列を取得できます。そして、これは「画像埋め込み」として使用するのに合理的な配列である可能性があります。

手書きの数字の「画像空間」を明示的に視覚化したい場合は、結果として得られる 500 次元のベクトルを、たとえば 3 次元空間に効果的に投影して、「次元を削減」する必要があります。

先ほど、画像間の類似点の識別、それらが同じ手書きの数字に対応するかどうかの判断(トレーニング セットに従って)に効果的に基づいて、画像の特徴(したがって埋め込み)を作成することについて説明しました。たとえば、各画像を 5000 種類の一般的なオブジェクト (猫、犬、椅子など) に属するものとして識別するトレーニング セットがある場合、より一般的な画像に対して同じことを行うことができます。

このようにして、一般的なオブジェクトの認識によって「固定」されながら、ニューラル ネットワークの動作に基づいて「その周囲を一般化」する画像埋め込みを作成できます。重要なのは、この動作が私たち人間が画像を認識し解釈する方法と一致している限り、これは最終的に「私たちにとって真実」となり、「人間の判断に似た」タスクを実行するために実際に役立つということです。

では、同じアプローチに従って単語の埋め込みを見つけるにはどうすればよいでしょうか? 重要なのは、いつでもトレーニングできる単語タスクから始めることです。そして標準タスクは「単語予測」です。「猫」を手に入れたとしましょう。大量のテキスト コーパス (Web 上のテキスト コンテンツなど) に基づいて、さまざまな単語が「空白を埋める」可能性がある確率はどのくらいでしょうか? または、「__black_」が与えられた場合、別の「フランカー」が出現する確率はどれくらいですか?

この問題をニューラル ネットワークに設定するにはどうすればよいでしょうか? 結局のところ、すべてを数値化する必要があります。これを行う 1 つの方法は、英語の 50,000 個ほどの一般的な単語のそれぞれに固有の番号を割り当てることです。したがって、たとえば、「the」は 914、「cat」(前にスペースが続く)は 3542 になる可能性があります。(これらは GPT-2 で使用される実際の数値です。) したがって、「the_cat」問題の場合、入力は {914, 3542} になる可能性があります。出力はどのようになるべきでしょうか? そうですね、これは 50,000 個ほどの数字のリストであり、考えられる各「フィラー」単語の確率を効果的に示しているはずです。

繰り返しますが、埋め込みを見つけるには、ニューラル ネットワークが「結論に達する」前に、ニューラル ネットワークの「内部」を「傍受」し、そこに表示される数値のリストを選択します。これは、「特徴」と考えることができます。

さて、これらの表現はどのように見えるでしょうか? 過去 10 年間にわたって、さまざまなシステム (word2vec、GloVe、BERT、GPT など) が開発され、それぞれが異なるニューラル ネットワーク アプローチに基づいています。しかし結局のところ、これらのシステムはすべて、単語を特徴付ける数百から数千の数字のリストです。

これらの「埋め込みベクトル」は、生の形式ではまったく情報がありません。たとえば、GPT-2 によって 3 つの特定の単語に対して生成された生の埋め込みベクトルを次に示します。

このベクトル間の距離を計測するなどすると、言葉の「近さ」などが分かると思います。この埋め込みの「認知的」意味として何が考えられるかについては、後ほど詳しく説明します。しかしここでの重要な点は、単語を「ニューラル ネットワークに適した」数値のコレクションに効率的に変換する方法があるということです。

しかし実際には、さらに一歩進んで、単語を数値の集合として記述するだけでなく、単語のシーケンスやテキストのブロック全体を記述することもできます。ChatGPT では、それが物事を処理する方法です。

これまでに取得したテキストを取得し、それを表す埋め込みベクトルを生成します。次に、その目標は、次に来る可能性のあるさまざまな単語の確率を見つけることです。これは、基本的に 50,000 個程度の単語の可能性を与える数値のリストとして答えを表します。

(厳密に言えば、ChatGPT は単語を扱うのではなく、便利な言語単位である「トークン」を扱います。これは、単語全体、または「pre」、「ing」、「ized」などの単なる断片である可能性があります。シンボルを使用すると、ChatGPT がより簡単に珍しい単語、複合単語、非英語単語を扱い、時には良くも悪くも新しい単語を発明します。)

 7. ChatGPT の内部

さて、いよいよ ChatGPT の内部について話す準備が整いました。はい、結局のところ、これは巨大なニューラル ネットワークです。現在、いわゆる GPT-3 ネットワークのバージョンであり、1,750 億の重みがあります。多くの点で、これはこれまで説明してきた他のニューラル ネットワークとよく似ています。しかし、これは言語の問題を処理するために特別に設定されたニューラル ネットワークです。最も注目すべき機能は、「トランスフォーマー」と呼ばれるニューラルネットワークアーキテクチャです。

上で説明した最初のニューラル ネットワークでは、任意の層のすべてのニューロンは基本的に (少なくともいくつかの重みを付けて) 前の層のすべてのニューロンに接続されていました。ただし、特別な既知の構造を持つデータを扱う場合、そのような完全に接続されたネットワークは(おそらく)過剰です。したがって、たとえば、画像処理の初期段階では、いわゆる畳み込みニューラル ネットワーク (「convnet」) を使用するのが一般的です。このネットワークでは、ニューロンが画像内のピクセルと同様のグリッド上に効果的に配置され、接続するだけです。グリッド上の近くのニューロンに送信されます。

トランスフォーマーの考え方は、テキストを構成する一連のトークンに少なくともある程度似た処理を実行することです。ただし、トランスフォーマーは、シーケンス内の接続を作成できる固定領域を定義するだけでなく、「注意」の概念を導入します。また、シーケンスの一部の部分に他の部分よりも「注意」の概念を導入します。おそらくいつか、汎用ニューラル ネットワークを起動し、トレーニングを通じてすべてのカスタマイズを行うことが意味をなすようになるでしょう。しかし、少なくとも現時点では、変圧器のように、そしておそらく私たちの脳のように、物事の「モジュール化」が実際には重要であるようです。

では、ChatGPT (というよりは、ChatGPT のベースとなる GPT-3 ネットワーク) は実際に何をするのでしょうか? その全体的な目標は、トレーニングで見た内容 (Web からの数十億ページのテキストの閲覧などを含む) に基づいて、「合理的な」方法でテキストを永続させることであるため、いつでもある程度の量のテキストを保持することを思い出してください。その目的は、次に追加するマークアップに適切な選択肢を提案することです。

これは 3 つの基本フェーズで動作します。

まず、これまでのテキストに対応するトークンのシーケンスを取得し、それらのトークンを表す埋め込み (つまり、数値の配列) を見つけます。次に、この埋め込みを「標準のニューラル ネットワーク方式」で操作し、値をネットワーク内の連続層に「通過」させ、新しい埋め込み (つまり、新しい数値配列) を生成します。次に、この配列の最後の部分から、次に考えられるさまざまなトークンの確率となる約 50,000 個の値の配列が生成されます。

(そして、はい、たまたま使用されるトークンの数は英語の一般的な単語の数と同じです。ただし、単語全体であるのは約 3000 トークンだけで、残りは断片です。) 重要な点は、このすべての部分が次のとおりであるということです。パイプラインはニューラル ネットワークによって実装され、その重みはネットワークのエンドツーエンドのトレーニングによって決定されます。言い換えれば、実際には、アーキテクチャ全体を除けば、何も「明示的に設計」されておらず、すべてがトレーニング データから「学習」されます。

ただし、アーキテクチャの設定方法には多くの詳細があり、ニューラル ネットワークに関するさまざまな経験や伝承が反映されています。そして、これは確かに雑草の中に入りつつありますが、特に ChatGPT のようなものを構築するのに何が必要かを理解するために、いくつかの詳細について話すことは有益だと思います。

1つ目は組み込みモジュールです。以下はGPT-2のWolfram言語図です:

入力は、n 個のトークンのベクトルです (前のセクションで説明したように、1 ~ 50,000 の整数で表されます)。これらの各トークンは (単層ニューラル ネットワークを介して) 埋め込みベクトル (GPT-2 の場合は長さ 768、ChatGPT の GPT-3 の場合は 12,288) に変換されます。同時に、マーカーの (整数) 位置のシーケンスを取得し、これらの整数から別の埋め込みベクトルを作成する「セカンダリ パス」があります。最後に、トークン値とトークン位置からの埋め込みベクトルが加算され、埋め込みモジュールの最終的な埋め込みベクトルのシーケンスが生成されます。

なぜトークン値とトークン位置の埋め込みベクトルを加算するだけなのでしょうか? これには特に科学的根拠はないと思います。いろいろ試してみた結果、これがうまくいきそうな感じです。これは、セットアップが「ほぼ正しい」限り、通常は「エンジニアリング レベルで理解する」必要がなくても、詳細を把握するのに十分なトレーニングを行うことができるという意味で、ニューラル ネットワークの伝承の一部でもあります。最終的には設定します。

以下は、組み込みモジュールが行う処理です。文字列「hello hello hello hello hello bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye」バイバイバイバイバイバイバイバイバイバイバイバイバイバイバイバイバイバイバイバイバイバイバイバイ2":

各マークアップの埋め込みベクトルの要素はページのさらに下に表示され、ページ全体で最初に「hello」の埋め込み、次に「bye」の埋め込みが表示されます。上の 2 番目の配列は位置埋め込みです。その一見ランダムな構造は単に「偶然に学習された」だけです (この場合は GPT-2)。

さて、埋め込みモジュールの後には、トランスフォーマーの「メイン イベント」、つまり一連のいわゆる「アテンション ブロック」が来ます (GPT-2 の場合は 12、ChatGPT の GPT-3 の場合は 96)。それはすべて複雑で、通常は理解できない大規模な人工システム、または生物学的システムを思い出させます。とにかく、これは単一の「アテンション ブロック」の概略図です (GPT-2 の場合):

このような各アテンション ブロック内には、一連の「アテンション ヘッド」(GPT-2 には 12、ChatGPT の GPT-3 には 96) があり、それぞれが埋め込みベクトル内の異なる数値ブロックで独立して動作します。(はい、埋め込みベクトルを分割することがなぜ良いアイデアなのか、あるいはそのさまざまな部分がどのような「意味」を持っているのかはわかりません。それは「機能することがわかった」ものの 1 つにすぎません)。

さて、それでは注意喚起者は何をするのでしょうか?基本的に、一連のトークン (つまり、これまでに作成されたテキスト) を「振り返り」、次のトークンを見つけやすい形式に過去を「パッケージ化」する方法です。

上の最初のセクションでは、2 グラムの確率を使用して直前の単語に基づいて単語を選択することについて説明しました。トランスフォーマーの「注意」メカニズムが行うことは、さらに前の単語にも「注意」できるようにすることです。つまり、動詞が、文中でその前に多くの単語が出現する名詞を参照する方法を捉えることが可能です。

より詳細なレベルでは、アテンション ヘッドが行うことは、特定の重みを持つさまざまなトークンに関連付けられた埋め込みベクトルのチャンクを再結合することです。したがって、たとえば、最初のアテンション ブロック (GPT-2) の 12 個のアテンション ヘッドには、上記の文字列 "hello, bye" に対して次のような内容が含まれます ("look-back-all-the-way- begin-the-sequence- of-tokens") 「再編成の重み」のモード:

アテンション ヘッドによって処理された後、結果の「再重み付けされた埋め込みベクトル」 (GPT-2 の場合は長さ 768、ChatGPT の GPT-3 の場合は長さ 12288) が標準の「完全に接続された」ニューラル ネットワーク層に渡されます。この層が何をしているのかを把握するのは困難です。ただし、これが使用する 768×768 の重み行列の図です (ここでは GPT-2)。

64×64 移動平均では、いくつかの (ランダム ウォークのような) 構造が現れ始めます。

この構造は何によって決まるのでしょうか?最終的には、それは人間の言語の特徴の「ニューラル ネットワーク エンコーディング」である可能性があります。しかしこれまで、それらの特徴が何であるかはあまり明らかではありませんでした。事実上、私たちは「ChatGPT (少なくとも GPT-2) の頭脳を開いて」、確かにそこには複雑さがあり、それを理解していないことを発見しています。ただし、最終的には認識可能な人間の音声が生成されます。

さて、1 つのアテンション ブロックを通過した後、新しい埋め込みベクトルを取得します。これは、他のアテンション ブロックに連続して渡されます (GPT-2 には合計 12 があり、GPT-3 には 96 があります)。各アテンション ブロックには、独自の「アテンション」および「完全接続」重み付けモードがあります。以下は、最初のアテンション ヘッドに対する、GPT-2 の「こんにちは、さようなら」入力に対するアテンションの重みのシーケンスです。

全結合層の(移動平均)「行列」は次のとおりです。

興味深いことに、これらの「重み行列」は異なるアテンション ブロックでは同様に見えますが、重みのサイズ分布は多少異なる場合があります (常にガウス分布であるとは限りません)。

では、これらすべての注意ブロックを通過した後の変圧器の最終的な効果は何でしょうか? 基本的に、シンボリック シーケンスの埋め込みの元のセットを最終セットに変換します。ChatGPT の具体的な動作方法は、このセットの最後の埋め込みを取得し、それを「デコード」して、次のトークンが何であるべきかについての確率のリストを生成することです。

以上がChatGPTの概要です。複雑に見えるかもしれません (特に、避けられないやや恣意的な「エンジニアリングの選択」が多数あるため) ですが、実際には、関係する最終要素は非常に単純です。なぜなら、最終的に私たちが扱っているのは単なる「人工ニューロン」のニューラル ネットワークであり、各ニューロンは一連の数値入力を取得し、それらをいくつかの重みと組み合わせるという単純な操作を実行しているからです。

ChatGPT への生の入力は数値の配列 (これまでのシンボルの埋め込みベクトル) であり、ChatGPT が新しいシンボルを生成するために「実行」されるときに起こることは、これらの数値がニューラル ネットワークの層を「通過」することだけです。各ニューロンは「独自の処理を実行」し、結果を次の層のニューロンに渡します。ループや「バック」はありません。すべてはネットワークを介して「フィードフォワード」されるだけです。

これは、結果が同じコンピューティング要素によって繰り返し「再処理」される典型的なコンピューティング システム (チューリング マシン) とは非常に異なる設定です。ここで、各計算要素 (つまり、ニューロン) は、少なくとも特定の出力シンボルを生成するときに 1 回だけ使用されます。

しかし、ある意味では、ChatGPT にも、計算要素を再利用する「外側のループ」がまだ存在します。なぜなら、ChatGPT が新しいトークンを生成したいときは、ChatGPT 自体が以前に「書き込んだ」トークンを含む、その前のトークンのシーケンス全体を常に「読み取る」(つまり、入力として受け取る) からです。この設定は、ChatGPT (少なくともその最も外側のレベル) が「フィードバック ループ」に関与していることを意味すると解釈できますが、このループでは各反復が明示的にマークとして表示されます。

しかし、ChatGPT の中心部、つまり各トークンを生成するために繰り返し使用されるニューラル ネットワークに戻りましょう。ある意味、それは非常に単純です。同一の人工ニューロンの集合全体です。ネットワークの一部の部分は、単に (「完全に接続された」) ニューロン層で構成されており、特定の層の各ニューロンが (特定の重みで) 前の層の各ニューロンに接続されています。しかし、特にそのトランスフォーマー構造において、ChatGPT には、異なる層の特定のニューロンのみが接続される、より多くの構造部分があります。(もちろん、「すべてのニューロンが接続されている」とも言えますが、重みがゼロのニューロンもあります)。

さらに、ChatGPT のニューラル ネットワークのいくつかの側面は、「同種の」層で構成されているとは自然には考えられません。たとえば、上のアイコンの概要が示すように、アテンション ブロックには、受信データの「複数のコピー」が作成され、各コピーが異なる「処理パス」を通過し、異なる量のレイヤーが含まれる可能性があります。再結成する前に。ただし、これは何が起こっているかを便利に表現したものかもしれませんが、少なくとも原理的には、レイヤーを「人口が密集している」とみなすことは常に可能ですが、一部の重みをゼロにするだけです。

ChatGPT の最長パスを見ると、約 400 (コア) 層が含まれていますが、ある意味ではそれほど多くありません。しかし、ニューロンは数百万個あり、合計で 1,750 億の接続があるため、重みは 1,750 億になります。認識すべき点の 1 つは、ChatGPT が新しいトークンを生成するたびに、これらの重みのそれぞれを含む計算が行われるということです。

実装の面では、これらの計算は「レイヤーごとに」高度に並列な配列演算に編成でき、GPU 上で簡単に実行できます。ただし、生成されるトークンごとに 1,750 億回の計算 (そして最後にはもう少し) が実行されるため、ChatGPT で長いテキストを生成するのに時間がかかるのは当然のことです。

しかし最終的に、最も注目すべきことは、これらの操作すべて (それぞれは非常に単純です) が何らかの形で連携して、「人間らしい」テキスト生成を非常にうまく実行できることです。このような研究を説明する「最終的な理論的理由」は(少なくともこれまでのところ私たちの知る限りでは)存在しないことを再度強調しなければなりません。実際、これから説明するように、これは潜在的に驚くべき科学的発見として見る必要があると思います。ChatGPT のようなニューラル ネットワークでは、言語を生成する際の人間の脳の本質を捉えることが可能です。

8.ChatGPTトレーニング

さて、ChatGPT 設立後の動作概要を説明しました。しかし、それはどのように構築されているのでしょうか?ニューラル ネットワーク内の 1,750 億の重みはどのように決定されるのでしょうか? 基本的に、それらは、人間によって書かれたウェブや書籍などの膨大なテキストのコーパスに基づく、非常に大規模なトレーニングの結果です。

すでに述べたように、すべてのトレーニング データが与えられたとしても、ニューラル ネットワークが「人間のような」テキストを正常に生成できるかどうかはまったく明らかではありません。そして、繰り返しになりますが、これを実現するには詳細なエンジニアリングが必要なようです。しかし、ChatGPT の最大の驚きと発見は、それが可能であるということです。実際、重み「わずか」 1,750 億のニューラル ネットワークは、人間が書いたテキストの「合理的なモデル」を作成できます。

現代では、人間が書いたテキストがデジタル形式で多数存在します。公開 Web には、少なくとも数十億人が作成したページがあり、テキストの合計はおそらく 1 兆ワードに達します。非公開ページを含めると、これらの数字は少なくとも 100 倍になる可能性があります。現在までに、デジタル化された書籍は 500 万冊以上 (これまでに出版された書籍の合計は 1 億冊ほど)、さらに 1,000 億語以上の単語が利用可能です。

個人的な比較として、私が生涯で出版したものの合計は 300 万語未満ですが、過去 30 年間で約 1,500 万語の電子メールを書き、合計で約 5,000 万語を入力しました。私はライブで1000万語以上の言葉を言いました。そして、はい、これらすべてからボットをトレーニングするつもりです)。

しかし、これだけのデータがあるとして、そこからニューラル ネットワークをどのようにトレーニングすればよいでしょうか? 基本的なプロセスは、上記の簡単な例で説明したものと非常に似ています。一連の例を提示し、それらの例に対するネットワークの誤差 (「損失」) が最小限になるようにネットワークの重みを調整します。エラーからの「逆伝播」に関する主な問題は、これを行うたびに、通常、ネットワーク内のすべての重みが少なくとも少量ずつ変化し、処理しなければならない重みの数が膨大になることです。(実際の「逆計算」は通常、順計算よりも難しい小さな定数にすぎません)。

最新の GPU ハードウェアを使用すると、数千の例からの結果を並行して計算することは簡単です。ただし、ニューラル ネットワークの重みを実際に更新する場合、現在の方法では基本的にバッチごとに更新する必要があります。(はい、実際の脳、つまりコンピューティング要素と記憶要素の組み合わせには、現時点で少なくとも 1 つのアーキテクチャ上の利点がある可能性があります)。

先ほど説明した数値関数を学習する一見単純なケースでも、少なくとも最初からネットワークを正常にトレーニングするには、多くの場合何百万ものサンプルを使用する必要があることがわかりました。つまり、「人間に似た言語」モデルをトレーニングするには、いくつの例が必要になるのでしょうか? それを知るための基本的な「理論的」方法はないようです。しかし実際には、ChatGPT は数千億語のテキストで正常にトレーニングされています。

テキストには複数回入力されるものと、1 回だけ入力されるものがあります。しかしどういうわけか、見たテキストから「必要なものを理解した」のです。しかし、学習する必要があるテキストの量を考慮すると、「よく学習」するにはどのくらいの規模のネットワークが必要でしょうか? 繰り返しますが、それを伝える基本的な理論的方法はまだありません。

最終的には、これについては後で詳しく説明しますが、人間の言語にはおそらく、ある種の「全体的なアルゴリズムの内容」と、その中で人間が通常言う内容が含まれていると考えられます。しかし、次の問題は、このアルゴリズムの内容に基づいてモデルを実装する際に、ニューラル ネットワークがどの程度効率的になるかということです。私たちにもわかりません。ただし、ChatGPT の成功は、それがかなり効率的であることを示唆しています。

最后我们可以注意到,ChatGPT 使用了几千亿个权重 —— 与它所获得的训练数据的总字数(或令牌)相比,它所做的事情是相当的。在某些方面,也许令人惊讶的是(尽管在 ChatGPT 的小型类似物中也有经验观察),似乎工作良好的 “网络规模” 与 “训练数据的规模” 如此相似。毕竟,这肯定不是说 “在 ChatGPT 内” 所有来自网络和书籍等的文本都被 “直接存储” 了。因为在 ChatGPT 里面的实际上是一堆数字 —— 精度略低于 10 位 —— 是对所有这些文本的总体结构的某种分布式编码。

换句话说,我们可以问人类语言的 “有效信息含量” 是什么,以及通常用它说什么。这里有语言实例的原始语料库。然后是 ChatGPT 的神经网络中的表述。这个表征很可能与 “算法上最小” 的表征相去甚远(我们将在下面讨论)。但它是一个很容易被神经网络使用的表征。在这种表示法中,训练数据的 “压缩” 程度似乎很低;平均而言,似乎只需要不到一个神经网络的权重就可以承载一个词的训练数据的 “信息内容”。

当我们运行 ChatGPT 来生成文本时,我们基本上不得不使用每个权重一次。因此,如果有 n 个权重,我们有 n 个计算步骤要做 —— 尽管在实践中,许多步骤通常可以在 GPU 中并行完成。但是,如果我们需要大约 n 个字的训练数据来设置这些权重,那么从我们上面所说的,我们可以得出结论,我们需要大约 n2 个计算步骤来进行网络训练 —— 这就是为什么,用目前的方法,人们最终需要谈论数十亿美元的训练工作。

9、基本训练之上

训练 ChatGPT 的大部分工作是向它 “展示” 大量来自网络、书籍等的现有文本。但事实证明,还有一个明显相当重要的部分。

一旦它完成了对所展示的原始语料库的 “原始训练”,ChatGPT 内的神经网络就可以开始生成自己的文本,继续提示等。但是,虽然这样做的结果往往看起来很合理,但它们往往 —— 特别是对于较长的文本 —— 以往往相当非人类的方式 “游离”。这不是人们可以轻易发现的,比如说,通过对文本做传统的统计。但这是实际阅读文本的人很容易注意到的东西。

构建 ChatGPT 的一个关键想法是,在 “被动地阅读” 网络等事物之后,还有一个步骤:让实际的人类主动与 ChatGPT 互动,看看它产生了什么,并在实际上给它反馈 “如何成为一个好的聊天机器人”。

但神经网络如何使用这种反馈呢?第一步只是让人类对神经网络的结果进行评价。但随后又建立了另一个神经网络模型,试图预测这些评分。但现在这个预测模型可以在原始网络上运行 —— 基本上就像一个损失函数,实际上是让该网络通过人类的反馈来 “调高”。而实践中的结果似乎对系统成功产生 “类似人类” 的输出有很大影响。

总的来说,有趣的是,“最初训练的” 网络似乎只需要很少的 “戳” 就能让它向特定的方向有用地发展。人们可能会认为,要让网络表现得像 “学到了新东西”,就必须运行训练算法,调整权重,等等。

但事实并非如此。相反,基本上只需要告诉 ChatGPT 一些东西,作为你所给的提示的一部分,然后它就可以在生成文本时成功地利用你告诉它的东西。我认为,这一点再次成为理解 ChatGPT “真正在做什么” 以及它与人类语言和思维结构的关系的一个重要线索。

这当然有一些类似于人类的东西:至少在它接受了所有的预训练之后,你可以告诉它一些东西,而它可以 “记住它” —— 至少 “足够长的时间” 来使用它生成一段文本。那么,在这样的情况下发生了什么?

可能是 “你可能告诉它的一切都已经在那里了” —— 你只是把它引向正确的地方。但这似乎并不靠谱。相反,似乎更有可能的是,是的,这些元素已经在那里了,但具体细节是由 “这些元素之间的轨迹” 这样的东西来定义的,这就是你告诉它的东西。

事实上,就像人类一样,如果你告诉它一些奇怪的、出乎意料的、完全不适合它所知道的框架的东西,它似乎并不能成功地 “整合” 这个。只有当它基本上以一种相当简单的方式骑在它已经拥有的框架之上时,它才能 “整合” 它。

还值得再次指出的是,对于神经网络能够 “接收” 的东西,不可避免地存在 “算法限制”。告诉它 “浅层” 的规则,如 “这个到那个”,神经网络很可能能够很好地表示和再现这些规则 —— 事实上,它从语言中 “已经知道” 的东西会给它一个直接的模式来遵循。

但是,如果试图给它制定一个实际的 “深度” 计算规则,涉及许多潜在的不可简化的计算步骤,它就无法工作了。(记住,在每一步,它总是在其网络中 “向前输送数据”;除了生成新的标记外,从不循环。)

当然,网络可以学习特定的 “不可简化的” 计算的答案。但只要有组合数的可能性,这种 “查表式” 的方法就不会奏效。因此,是的,就像人类一样,现在是时候让神经网络 “伸出手来”,使用实际的计算工具了。(是的,Wolfram|Alpha 和 Wolfram 语言是唯一合适的,因为它们是为了 “谈论世界上的事物” 而建立的,就像语言模型的神经网络一样)。

10、是什么真正让 ChatGPT 工作?

人类的语言 —— 以及产生语言的思维过程 —— 似乎一直代表着一种复杂性的顶峰。事实上,人类的大脑 —— “仅” 有 1000 亿个左右的神经元网络(也许还有 100 万亿个连接) —— 能够负责这项工作,似乎有些了不起。也许,人们可能会想象,大脑除了神经元网络之外还有其他东西,就像一些未被发现的物理学新层。

しかし、ChatGPT を使用することで、重要な新しい情報が得られました。脳のニューロンと同じ数の接続を持つ純粋に人工的なニューラル ネットワークが、驚くほどうまく人間の言語を生成できることがわかっています。

そして、はい、それは依然として大規模で複雑なシステムです - 現在世界に存在する単語と同じくらい多くの重みがニューラル ネットワークにあります。しかし、ある意味、言語の豊かさと言語で語られる内容のすべてが、このような限られたシステムの中にカプセル化され得るということは、依然として信じがたいことのように思えます。

この一部は、間違いなく、システムの基本が非常に単純であるにもかかわらず、計算プロセスがシステムの見かけの複雑さを実際に大幅に増幅する可能性があるという遍在的な現象 (ルール 30 の例で初めて明らかになります) を反映しています。しかし、実際には、上で説明したように、ChatGPT で使用される種類のニューラル ネットワークは、この現象の影響とそれに関連する計算の非再現性を制限する目的で構築される傾向があります。電車の行為。

では、言語という点では、ChatGPT のようなものはどのようにしてここまで発展したのでしょうか? 基本的な答えは、言語は基本的に見かけよりもはるかに単純であるということだと思います。これは、ChatGPT が、そのニューラル ネットワーク構造が究極的には単純であるにもかかわらず、人間の言語とその背後にある思考の本質をうまく「捕捉」できることを意味します。さらに、ChatGPT はトレーニング中に、それを可能にする言語 (および思考) の規則性をどういうわけか「暗黙のうちに発見」しました。

私の意見では、ChatGPT の成功は、基本的かつ重要な科学的証拠を私たちに提供します。それは、重要な新しい「言語の法則」、そして効果的な「思考の法則」がそこで発見されることが期待できることを示しています。ChatGPT ではニューラル ネットワークであるため、これらの規則性はせいぜい暗黙的なものです。しかし、何らかの方法でこれらの法則を明示できれば、ChatGPT が行うさまざまな処理をより直接的、効率的、透明性のある方法で行うことが可能になります。

しかし、それでは、これらの法律はどのようなものになるでしょうか? 最終的には、特定の言語とその中で私たちが言うことをどのように組み立てるかについての処方箋を与えてくれなければなりません。「ChatGPT を観察する」ことでこれに関するヒントがどのように得られるか、また、計算言語の構築から学んだことがどのように今後の方向性を示すことができるかについては、後ほど説明します。しかしその前に、「言語の法則」に相当するものと、それらが ChatGPT の動作方法にどのように関係しているのかについて、古くから知られている 2 つの例について説明しましょう。

1 つ目は言語の構文です。言語は単なる単語のランダムな集合ではありません。その代わりに、さまざまな種類の単語がどのように組み合わされるかについては、(かなり) 明確な文法規則があります。たとえば、英語では、名詞の前に形容詞があり、後ろに動詞が続くこともありますが、通常、それぞれの隣に 2 つの名詞を置くことはできません。他の。このような文法構造は、「解析ツリー」に相当するものをどのようにまとめるかを定義する一連のルールによって (少なくともおおよそ) 把握できます。

ChatGPT には、そのようなルールに関する明示的な「知識」がありません。しかし、トレーニング中に、暗黙のうちにこれらのルールを「発見」し、その後はそれに従うのがかなり上手になったようです。それで、それはどのように機能するのでしょうか?「全体像」レベルでは、これは明らかではありません。しかし、インスピレーションを得るためには、より単純な例を見ることが有益かもしれません。

解析ツリーで表されるように、 () と () のシーケンスで構成される「言語」を考えてみましょう。その文法では括弧のバランスが常に保たれている必要があります。

「文法的に正しい」括弧シーケンスを生成するようにニューラル ネットワークをトレーニングすることはできるでしょうか? ニューラル ネットワークでシーケンスを処理する方法はたくさんありますが、ChatGPT のようなトランスフォーマー ネットワークを使用してみましょう。単純なトランスフォーマー ネットワークを考えると、構文的に正しい括弧シーケンスをトレーニング サンプルとして供給することから始めることができます。

微妙な点 (実際、ChatGPT の人間の言語生成にも現れます) は、「コンテンツ マーカー」 (ここでは「(」と「)」) に加えて、生成が次のことを示す「終了」マーカーも含める必要があることです。出力はこれ以上続行すべきではありません (つまり、ChatGPT の場合、「ストーリーの終わり」に到達しました)。

如果我们只用一个有 8 个头的注意块和长度为 128 的特征向量来设置一个转换网(ChatGPT 也使用长度为 128 的特征向量,但有 96 个注意块,每个注意块有 96 个头),那么似乎不可能让它学会很多小括号语言。但是,如果有 2 个注意力头,学习过程似乎会收敛 —— 至少在给出 1000 万个左右的例子之后(而且,正如转化器网络所常见的那样,显示更多的例子似乎会降低其性能)。

因此,对于这个网络,我们可以做 ChatGPT 的类似工作,并询问下一个标记应该是什么的概率 —— 在一个括号序列中:

在第一种情况下,网络 “非常确定” 序列不能在这里结束 —— 这很好,因为如果它结束了,小括号就会留下不平衡。然而,在第二种情况下,它 “正确地认识到” 序列可以在这里结束,尽管它也 “指出” 有可能 “重新开始”,放下一个 “(”,估计后面还有一个 “)”。但是,哎呀,即使它有 40 万个左右经过艰苦训练的权重,它也说有 15% 的概率将 “)” 作为下一个标记 —— 这是不对的,因为这必然会导致一个不平衡的括号。

如果我们要求网络为逐渐变长的()序列提供最高概率的完成度,我们会得到以下结果:

是的,在一定长度内,网络做得很好。但随后它就开始失败了。这是在神经网络(或一般的机器学习)的这种 “精确” 情况下看到的非常典型的事情。人类 “一眼就能解决” 的情况,神经网络也能解决。但是需要做一些 “更多的算法”(例如明确地计算括号是否封闭)的情况,神经网络往往在某种程度上是 “计算上太浅”,无法可靠地做到。(顺便说一句,即使是目前完整的 ChatGPT 也很难正确匹配长序列中的括号)。

那么,这对像 ChatGPT 和像英语这样的语言的语法意味着什么呢?小括号语言是 “朴素的” —— 而且更像是一个 “算法的故事”。但在英语中,能够在局部选词和其他提示的基础上 “猜测” 什么是符合语法的,则要现实得多。

そして、はい、ニューラルネットはこの点でははるかに優れています - ただし、いくつかの「形式的に正しい」ケースを見逃す可能性があり、人間も同様です。しかし、重要な点は、言語には全体的な構文構造、およびそれが暗示するすべての規則性があるという事実により、ある意味、ニューラル ネットワークが学習できる「程度」が制限されるということです。重要な「科学的」観察は、ChatGPT のニューラル ネットワークのようなトランスフォーマー アーキテクチャが、ネストされたツリーのような構文構造の種類を首尾よく学習できるようだということです。

構文は言語に制約を与えます。しかし、どうやらそれ以上のものがあるようです。「好奇心旺盛な電子魚食魚の青色理論」のような文は、文法的には正しいですが、通常予想される発言ではなく、ChatGPT が生成したとしても成功とはみなされません。そこにある言葉は基本的に意味がありません。

しかし、文が意味をなしているかどうかを判断する一般的な方法はあるのでしょうか? これに関する伝統的な全体論は存在しません。ただし、ChatGPT は、Web からの数十億の (おそらく意味のある) 文でトレーニングされた後、暗黙的に「理論を開発した」と主張できます。

この理論はどのようなものになるでしょうか? そうですね、基本的に 2000 年前から知られている小さなコーナーが 1 つあります。それは当然のことです。もちろん、アリストテレスによって発見された三段論法の形での論理学は、基本的に、特定のパターンに従う文は合理的であり、他の文は合理的ではないと言う方法です。

したがって、たとえば、「すべての X は Y ですが、これは Y ではないので、X ではありません」と言うのは合理的です (「すべての魚は青ですが、これは青ではないので、これは魚ではありません」と同じです)。 )。少し気まぐれに、アリストテレスが(「機械学習スタイル」の)多数の修辞例を使用して二重論理を発見したと想像できるように、ChatGPT をトレーニングする際に、大量のテキストなどを使用して次のことを行うことができるだろうと想像できます。 「二重ロジックの発見」。

(はい、ChatGPT は二重ロジックなどに基づいて「正しい推論」を含むテキストを生成すると期待できますが、より複雑な形式ロジックになると状況はまったく異なります。ここでも同じ理由で失敗すると予想できると思います。かっこの一致に失敗します)。

しかし、論理という狭い例を超えて、もっともらしい意味のあるテキストであっても体系的に構築 (または認識) する方法について何が言えるでしょうか? はい、Crazy Freedom のように、非常に特殊な「フレーズ テンプレート」を使用するものもあります。しかしどういうわけか、ChatGPT はより一般的なアプローチを暗示しています。おそらくこれを行う方法については、「ニューラル ネットワークの重みが 1,750 億ある場合に何らかの形で起こる」ということ以外に言うべきことはあまりないでしょう。しかし、もっとシンプルで強力なストーリーがあるのではないかと私は強く疑っています。

11. 意味のある空間と意味運動の法則

ChatGPT では、あらゆるテキストが事実上、ある種の「言語特徴空間」内の点の座標とみなすことができる数値の配列によって表されることを上で説明しました。したがって、ChatGPT がテキストを継続することは、言語特徴空間の軌跡をたどることに相当します。しかし今では、この軌跡が私たちが意味があると考えるテキストに対応している理由を尋ねることができます。おそらく、「意味」を保持しながら言語特徴空間内の点がどのように移動するかを定義する、または少なくとも制約する、ある種の「意味運動法則」が存在するのでしょうか?

では、この言語特徴空間はどのようなものでしょうか? このような特徴空間を 2D 空間に投影した場合に、個々の単語 (ここでは一般名詞) がどのように配置されるかの例を次に示します。

上で見た別の例は、植物や動物を表す単語に基づいていました。しかし、どちらの場合も重要なのは、「意味的に似た単語」が近くに配置されているということです。

別の例として、さまざまな品詞に対応する単語がどのように配置されているかを次に示します。

もちろん、特定の単語は通常、「1 つの意味」を持たない (または、必ずしも 1 つの談話のみに対応する) わけではありません。単語を含む文が特徴空間でどのように配置されているかを見ることで、多くの場合、ここでの「クレーン」の例のように、さまざまな意味を「区別」できます (クレーン、鳥、または機械?)。

わかりました。つまり、この特徴空間は、この空間に「似た意味を持つ単語」が配置されている場所であると考えることができます。これは合理的です。しかし、この空間では、どのような追加の構造を特定できるでしょうか? たとえば、空間の「平坦性」を反映した「平行移動」という概念はあるのでしょうか?これを理解する 1 つの方法は、次の類似点を見ることです。

そして、確かに、二次元に投影した場合でも、確かに普遍的に見えるわけではありませんが、少なくとも「平坦性のヒント」が存在することがよくあります。

では、軌道はどうなるのでしょうか?特徴空間における ChatGPT のヒントの軌跡を確認してから、ChatGPT がどのようにこの軌跡を継続するかを確認できます。

もちろん、ここには「幾何学的に明白な」運動法則は存在しません。これはまったく驚くべきことではありませんが、かなり複雑な話になることが十分に予想されます。そして、たとえば、「意味論的な運動法則」が見つかったとしても、それがどのような埋め込み(あるいは実際にはどのような「変数」)を最も自然に表現しているのかは明らかではありません。

上の画像では、「軌道」のいくつかのステップを示しています。各ステップで、ChatGPT が最も可能性が高いと考える単語を選択します (「ゼロ温度」の場合)。しかし、ある時点で、どの単語がどのくらいの確率で「次」になるかを尋ねることもできます。

この場合、私たちが見ているのは、特徴空間内で多かれ少なかれ明確な方向性を持っているように見える、確率の高い単語の「ファン」です。これ以上進めたらどうなるでしょうか?これは、軌道に沿って「移動」するときに発生する連続的な「ファン」です。

以下は合計 40 のステップによる 3D 表現です。

そして、はい、それは混乱しているように見えます - そして、「そこでChatGPTが何を行うか」の意味法則を経験的に研究することによって「数学的に似た」動きを決定できると期待できるという考えを特に奨励するものは何もしていません。しかし、おそらく私たちは「間違った変数」 (または間違った座標系) を見ているだけかもしれません。正しい変数を見るとすぐに、ChatGPT が測地線に従うなどの「数学的に単純な」ことを実行していることがすぐにわかります。しかし今のところ、人間の言語がその「内部動作」からどのように「つなぎ合わされる」かについての ChatGPT の「発見」を「経験的に解読」する準備はまだできていません。

12. 意味文法と計算言語の力

「意味のある人間の言語」を生成するには何が必要ですか? 以前は、それが人間の脳であるはずがないと考えていたかもしれません。しかし今では、ChatGPT のニューラル ネットワークがこのタスクを非常にうまく実行できることがわかりました。それでも、おそらくそれが私たちができる限界であり、これ以上単純な、または人間が理解できるものではうまくいきません。

しかし、私が強く疑っているのは、ChatGPT の成功は、重要な「科学的」事実を暗黙のうちに明らかにしているということです。意味のある人間の言語の構造と単純さには、実際には私たちが知っている以上のものがあり、最終的にはそうなる可能性すらあります。言語がどのように構成されているかを説明します。

上で述べたように、構文文法は、人間の言語の単語がさまざまな談話に対応してどのように組み合わされるかについての規則を与えます。しかし、意味を扱うには、さらに一歩進む必要があります。そして、これを行う方法の 1 つのバージョンは、言語の構文文法だけでなく意味文法も考慮することです。

文法の目的で、名詞や動詞などを識別します。しかし、セマンティクスの目的のためには、「より細かいレベル」が必要です。したがって、たとえば、「移動」という概念と、「場所に依存せずに同一性を維持する」「物体」という概念を識別できます。これらの「意味概念」にはそれぞれ、無限の具体例があります。

しかし、意味論的な文法の目的としては、基本的に「オブジェクト」は「移動」できるという、ある種の一般的なルールを用意することにします。これがどのように機能するかについては、言いたいことがたくさんあります (そのうちのいくつかは以前に述べました)。しかし、私はここでいくつかの言葉を述べ、潜在的な発展の道をいくつか指摘したいと思います。

たとえ文が意味文法に従って完全に問題ないとしても、それが実際に達成された(または達成できる)という意味ではないことは言及する価値があります。「象は月に行った」は間違いなく私たちの意味文法を「通過」するでしょうが、それは確かに私たちの現実の世界では(少なくともまだ)実現していません - 架空の世界では間違いなく公平なゲームですが。

私たちが「意味論的文法」について話し始めると、すぐに「その下にあるものは何ですか?」と尋ねます。それはどのような「世界モデル」を想定しているのでしょうか? 構文文法は実際には、単語から言語を構築するだけの問題です。ただし、意味論的文法には必ず、ある種の「世界モデル」、つまり実際の単語で構成される言語を重ねることができる「骨格」として機能するものが必要です。

最近まで、私たちは(人間の)言語が私たちの「世界のモデル」を記述する唯一の一般的な方法であると想像していたのかもしれません。特に数学に基づいた、ある種の物事の形式化は何世紀にもわたって行われてきました。しかし現在では、より一般的な形式的なアプローチである計算言語が存在します。

はい、これは40年以上にわたる私の大きなプロジェクトでした(現在はWolfram言語で具体化されています):世界の物事について、そして私たちが抽象的な物事について何を気にしているのかについて、できるだけ広く伝えることができる正確な記号表現を開発することです。たとえば、私たちは都市、分子、画像、ニューラル ネットワークの記号表現を持っており、これらを計算する方法についての本質的な知識を持っています。

そして、何十年にもわたる取り組みを経て、私たちはこの方法で多くの領域をカバーしてきました。しかし、以前は特に「日常的言説」を扱っていませんでした。「私は 2 ポンドのリンゴを買いました」では、「2 ポンドのリンゴ」を簡単に表す (そして、栄養計算やその他の計算を実行する) ことができます。しかし、「私はそれを購入しました」という象徴的な表現は(まだ)ありません。

すべては意味論的な文法のアイデアに関するものです。目標は、概念に共通の象徴的な「構成スイート」を提供することです。これにより、何を何と組み合わせることができるかについてのルールが得られ、可能な翻訳の「フロー」が得られます。人間の言語に変換し、ルールを提供します。

しかし、私たちがこの「象徴的言説の言語」を持っていると仮定してください。それをどうするか?「ローカルで意味のあるテキスト」を生成するなどの作業を開始できます。しかし、最終的には、より「グローバルな感覚」の結果が必要になるかもしれません。つまり、世界 (おそらく、一貫した架空の世界で) に実際に存在するもの、または何が起こっているのかについて、より多くの「計算」を意味します。

Wolfram言語には,さまざまな種類のものについての膨大な量の計算知識が組み込まれています.しかし、完全な記号的談話言語のためには、一般に世界の物事について追加の「計算」を構築する必要があります。オブジェクトが場所 A から場所 B に移動し、場所 B から場所 C に移動する場合、それは場所 A から場所 C に移動します。 C、など。

象徴的な談話言語が与えられると、それを使って「独立した発言」をすることができます。しかし、「Wolfram|Alpha スタイル」として、世界について質問するためにそれを使用することもできます。あるいは、おそらく何らかの外部強制メカニズムを使用して、「こうであってほしい」と表明するためにそれを使用することもできます。あるいは、それを主張するためにそれを使用することもできます。おそらく現実の世界について、おそらく架空かどうかに関係なく、私たちが検討している特定の世界についてです。

人間の言語は基本的に不正確です。それは、具体的な計算実装に「結び付けられて」いないだけでなく、その意味は基本的にユーザー間の「社会契約」によってのみ定義されます。しかし、計算言語はその性質上、一定の基本的な精度を持っています。最終的には、計算言語で指定されたものは常に「コンピューター上で明確に実行」できるからです。

人間の言語は、ある種の曖昧さを回避できることがよくあります。(「惑星」というとき、それには系外惑星などが含まれますか?) しかし、コンピューティングという言語では、すべての区別を正確かつ明確にする必要があります。

コンピューティング言語では、名前を作成するために通常の人間の言語を利用すると便利なことがよくあります。しかし、コンピューティング言語におけるそれらの意味は必然的に正確であり、典型的な人間の言語使用における特定の含意をカバーする場合とカバーしない場合があります。

一般的な象徴的言説の言語に適した基本的な「存在論」をどのように見つけるべきでしょうか?まあ、それは簡単ではありません。おそらくこれが、2000 年以上前のアリストテレスの原始的な始まり以来、これらの点でほとんど何も行われていない理由でしょう。しかし、今日私たちが世界を計算的に考える方法について多くのことを知っていることは役に立ちます (そして、私たちの物理学プロジェクトやラギアドのアイデアから「基本的な形而上学」を得るのは害にはなりません)。

しかし、ChatGPT の文脈では、これは何を意味するのでしょうか? ChatGPT は、そのトレーニングから、意味論的な文法に相当するものを効果的に「混ぜ合わせ」ました (非常に印象的です)。しかし、その成功は、計算言語の形でより完全なものを構築することが実現可能であると考える理由を私たちに与えてくれます。そして、これまでの ChatGPT の内部の理解とは異なり、計算言語は人間が容易に理解できるように設計されることが期待できます。

意味文法について話すとき、それを二重論理に喩えることができます。当初、二重論理は本質的に人間の言語で表現された文規則の集合でした。しかし、(はい、2000 年後)形式論理が開発されたとき、音節論理の元の基本構造は、たとえば現代のデジタル回路の動作を含む巨大な「形式タワー」を構築するために使用できるようになりました。そして、より一般的な意味文法にも同じことが当てはまると予想できます。

起初,它可能只是能够处理简单的模式,例如以文本形式表达。但是,一旦它的整个计算语言框架建立起来,我们可以预期它将能够被用来竖起 “广义语义逻辑” 的高塔,使我们能够以精确和正式的方式处理各种我们以前从未接触过的东西,而只是在 “底层” 通过人类语言,以其所有的模糊性。

我们可以认为计算语言的构造 —— 以及语义语法 —— 代表了一种对事物的终极压缩。因为它允许我们谈论什么是可能的本质,而不需要,例如,处理存在于普通人类语言中的所有 “转折性的措辞”。我们可以把 ChatGPT 的巨大优势看作是有点类似的东西:因为它在某种意义上也已经 “钻研” 到可以 “把语言以一种有语义的方式组合在一起”,而不关心不同的可能的措辞。

那么,如果我们把 ChatGPT 应用于底层计算语言,会发生什么呢?计算语言可以描述什么是可能的。但仍然可以添加的是对 “什么是流行的” 的感觉 —— 例如基于对网络上所有内容的阅读。

但是,在下面,用计算语言操作意味着像 ChatGPT 这样的东西可以立即和基本地接触到相当于利用潜在的不可还原的计算的终极工具。这使得它成为一个不仅可以 “生成合理文本” 的系统,而且可以期望解决任何可以解决的问题,即这些文本是否真的对世界 —— 或者它应该谈论的东西做出了 “正确” 的陈述。

13、那么ChatGPT 在做什么,为什么它能发挥作用?

ChatGPT 的基本概念在某种程度上相当简单。从网络、书籍等人类创造的大量文本样本开始。然后训练一个神经网络来生成 “像这样” 的文本。特别是,让它能够从一个 “提示” 开始,然后继续生成 “像它被训练过的那样” 的文本。

正如我们所看到的,ChatGPT 中的实际神经网络是由非常简单的元素组成的,尽管有数十亿个元素。神经网络的基本操作也非常简单,主要是对它所生成的每一个新词(或词的一部分),通过其元素 “传递一次输入”(没有任何循环,等等)。

しかし、意外なことに、このプロセスによって、インターネットや本をうまく「好き」にする言葉が生み出されることがあります。さらに、それは一貫した人間の言語であるだけでなく、「何かを言い」、「その指示に従い」、「読んだ」内容を利用します。それは常に「世界的に意味がある」(または正しい計算に対応する)ことを言っているわけではありません -- なぜなら(たとえば、Wolfram|Alpha の「計算超能力」にアクセスできない場合)、それは何かが「言われたように聞こえる」だけだからです。

ChatGPT の特殊なエンジニアリングにより、ChatGPT は非常に説得力のあるものになっています。しかし、最終的には (少なくとも外部ツールを使用できるようになるまでは)、ChatGPT は蓄積した「社会通念の統計」からいくつかの「一貫したテキスト スレッド」を引き出すだけです。しかし、驚くべきことに、その結​​果は非常に人間らしいものになります。これまで議論してきたように、これは、少なくとも科学的には非常に重要なことを示しています。それは、人間の言語 (およびその背後にある精神モデル) は、私たちが思っているよりもどういうわけか単純で、より「法則に似ている」ということです。ChatGPT はこれを暗黙的に発見しました。しかし、意味論的文法や計算言語などを通じて、それを明示的に公開する可能性があります。

ChatGPT はテキストの生成において優れた仕事をしており、その結果は多くの場合、人間が生成するものと非常によく似ています。ということは、ChatGPT が脳のように機能するということでしょうか? その基礎となる人工ニューラル ネットワーク構造は、最終的には脳の理想化に基づいてモデル化されています。さらに、私たち人間が言語を生成するときに起こりそうなことの多くの側面は似ています。

トレーニング (別名学習) に関しては、脳と現在のコンピューターの「ハードウェア」が異なるため (そして、おそらくいくつかの未踏のアルゴリズムのアイデアも)、ChatGPT は多くの戦略を使用する必要があります。もう 1 つのポイント: 一般的なアルゴリズム計算とは異なり、ChatGPT 内では「ループ」や「データの再計算」は行われません。そして、それは必然的にその計算能力を制限します - 現在のコンピューターと比較しても、しかし間違いなく脳と比較して。

「これを修正」しつつ、適切な効率でシステムをトレーニングする能力を維持する方法は不明です。しかし、そうすることで、将来の ChatGPT はおそらく、より「脳のようなこと」を実行できるようになるでしょう。もちろん、脳がうまく処理できないことはたくさんあります。特に既約計算に相当する処理に関してはそうです。これらのために、脳とChatGPTのようなものの両方が、Wolfram言語などの「外部ツール」に目を向ける必要があります。

しかし今のところ、ChatGPT で何ができるようになるかを見るのはエキサイティングです。ある意味、これは、多数の単純なコンピューティング要素が並外れた予期せぬことを実行できるという基本的な科学的事実の好例です。しかし同時に、それは人間の状態の中心的特徴、人間の言語の基本的な特徴と原理、そしてその根底にある思考プロセスをよりよく理解するために、2000年間で私たちが得た最高の推進力も与えてくれます。

Charger は最新かつ最も包括的な解釈をできるだけ早くお届けします。トリプル ウェーブを忘れないでください。

WeChat パブリック アカウントに注意してください: リソースを充電してください

返信: チャット GPT
Charger があなたに送信します: GPTの中国語版を無料で使用してお楽しみください。魔法は必要ありません

どのような情報が必要でも、下のカードをクリックしてCharging Jun WeChatを追加し、完全な情報を無料で共有してください。

                                           

おすすめ

転載: blog.csdn.net/CDB3399/article/details/131004596