出典#
本来はクラスでスピーチをする予定でしたが、期末試験のために中止されました QAQ
記念に残しておきます(
本文#
誰かが言った、2023 年は人工知能元年だと。なぜなら、OpenAI 社が 2022 年 11 月 30 日に ChatGPT を公開したからです。それ以来、人々は ChatGPT との対話を通じて、人工知能が私たちにもたらす便利さを直接知ることができるようになりました。そして今は 2024 年、皆さんは Chatgpt について多かれ少なかれ理解していると思います。ネットメディアの報道から、国語の作文から、あるいは英語のリーディングから。しかし、皆さんはその理解をさらに深めたいと思っていますか?今日は Chatgpt を出発点に、その背後にある原理を理解し、さらにその背後にある神経ネットワークの基本的なパターンを探求してみましょう。
まずは Chatgpt の名前から始めましょう。Chatgpt の正式名称は:Chat Generative Pre-trained Transformer で、生成型事前学習トランスフォーマーを意味します。生成型とは、Chatgpt が新しいテキストを生成するためのロボットであることを指します。「事前学習」とは、モデルが大量のデータから学習するプロセスを経ていることを指します。そして、最後の言葉である transformer、これは何でしょうか?実は、これは特別な深層学習モデルの一種であり、神経ネットワークです。Google が 2017 年に発表した論文「Attention Is All You Need」で提案されたアーキテクチャです。Chatgpt はこの Transformer モデルを基にさらに修正されたものです。
では、深層学習とは何でしょうか?深層学習は機械学習の一種であり、機械学習はデータ駆動型で、モデルパラメータにフィードバックし、モデルの動作を指導します。少し難しいかもしれませんね。ここでのモデルは、広義の関数、つまりマッピングを指します。そして神経ネットワークは、この関数内部の実装方法を指します。後で紹介します。機械学習について続けましょう。例えば、画像にラベルを付けることができる関数 fx があるとします。入力 x は画像であり、出力 fx はラベルです。機械学習の核心的な理念は、コード内で行動を定義するのではなく、調整可能なパラメータを持つ柔軟な関数を構築し、大量の例を使って機械に各パラメータを調整させ、こうした振る舞いを模倣させることです。実際、数学の未定係数法に似ています。
Transformer モデルを理解したところで、Chatgpt の原理を簡単に見てみましょう。もし一言で要約するなら、以前のすべてのテキストを基に、最も高い出現頻度の次の単語を予測してテキスト生成を実現するということです。実際、検索エンジンの自動補完に似ています。私たちが単語を入力するたびに、入力ボックスは後のテキストを予測し始め、確率が高いものが上に表示されます。しかし、モデルはどのようにして各単語の出現確率を得るのでしょうか?
これが上で述べた Transformer アーキテクチャに関係しています。上で述べたように、実際に Transformer は関数です。もし f (x) を例にとると、入力値 x は前のすべてのテキストであり、出力値は各単語の確率です。私たちは、関数、例えば二次関数 f (x) = ax^2+bx+c を知っていますが、abc はこの関数のパラメータです。この関数にとって、パラメータの数は 3 です。では、ChatGpt の修正された Transformer アーキテクチャのパラメータの数はどれくらいでしょうか?皆さん、推測してみてください。答えは 1750 億個です。
なぜこんなに多くのパラメータがあり、どのようにして機械に調整させるのでしょうか?次に、数字認識というもう少し簡単な例を使って神経ネットワークを理解してみましょう。これはこの関数の内部実装メカニズムです。
まず、私たちは一つの事実を認めなければなりません。実際、コンピュータに数字を認識させるのは非常に難しいことです。あなたの 3 と私の 3 は大きく異なるかもしれません。科学者たちはこの問題を解決するために、神経ネットワークという素晴らしいものを発明しました。
名前の通り、神経ネットワークは人間の脳の構造に由来しています。神経の中で最も重要なのは神経細胞と神経細胞の接続方法です。神経細胞は数字を持つ容器として理解でき、0 から 1 の数字を持ち、これを活性化値と呼びます。数字を認識するというタスクにおいて、入力される各神経細胞は画像上の各ピクセルの色の濃淡に対応しています。28 ピクセル x28 ピクセルの画像を例にとると、入力される神経細胞は 784 個あり、神経ネットワークの第一層を構成します。次に最後の層に飛ぶと、10 個の神経細胞があり、0 から 9 の 10 個の数字を表し、それらの活性化値も 0 から 1 の間にあります。これらの値は、システムが入力された画像がこの数字に対応する可能性を示しています。ネットワークの中間には隠れ層があり、そこで数字を認識する具体的な作業が行われます。
神経ネットワークが動作する際、前の層の活性化値が次の層の活性化値を決定します。したがって、神経ネットワークの核心は、前の層の活性化値がどのように次の層の活性化値を算出するかにあります。実際、設計された神経ネットワークは生物の神経系を模倣しようとしており、特定の神経細胞の刺激が他の神経細胞を刺激することになります。
第一層の活性化値は第二層の各神経細胞の活性化値を算出し、順次下に進んでいき、最後に出力層の中で最も明るいものが神経系の選択となります。では、なぜ層を分けるのでしょうか?私たちは実際に各層が特定の特徴を特異的に認識できることを期待しています。。。各層の活性化値が次の層の活性化値を算出するのは「パラメータ」に依存しています。例えば、第一層の 784 個の神経細胞の活性化値は a1,a2,a3,…,a784 だとします。仮に第二層に 16 個の神経細胞があり、それぞれ bi があるとします。第一層から算出するためには 784 のパラメータが必要です。例えば、b1=w1a1+w2a2+…+w784*a784 です。最初はこれらの値はすべてランダムで、コンピュータが何かを認識できるとは期待しないでください。私たちがするべきことは、大量の既に書かれた数字の画像とそれに対応する数字を用意し、毎回コンピュータに「投与」し、コンピュータがどれほど「悪い」かを算出することです —— コスト関数を用いて、パラメータを修正する「意見」を与えます —— コスト関数の負の勾配を与えます。一度の修正を経て、これらのパラメータが何度も調整され、新しい画像に出会ったとき、神経ネットワークも対応できるようになります。
実際、私たちの日常の学習においても、何らかの形でそうではないでしょうか。自分のパフォーマンスを評価し、最も「効率的」な向上方法を見つけ、大量の練習を加えれば、必ず自分で学ぶことができるようになります。+ 補足として QAQ を書き足します。