GPTのアルゴリズムを理解したいと思うようになった。
何でも専門家の御託宣に従っていたのでは発展はない。
まずwiki でGPT2の解説を読んだ。
一部転載:
”ニューラルネットワークは、「訓練(training)」および「学習(learning)」という過程を経て、さまざまな入力を分類することができるようになる(すなわち個別のカテゴリに区分する)。学習は、まずネットワークの重み(各ニューロンの「活性化」が後続層の特定ニューロンの活性化に影響を与える量)をランダム(無作為)に初期化する。この状態では、ネットワークの出力も同様にランダムとなる。そして、ネットワークの出力がどれだけ望ましいできばえに近いかを定量的に測定する損失関数(英語版)などの目的関数を定義する(たとえば、手書きの数字からなる入力が、その数字に対応する出力ニューロンのみを活性化させる頻度)[37]。この関数とネットワークのできばえから、重みを調整して性能を改善することができる[38]。
バックプロパゲーションは、1974年のポール・ワーボス(英語版)の学位論文で初めて機械学習システムに適用した教師ありアルゴリズムであり[39]、所与の入出力例に対するネットワーク全体の重みの最適調整を記述するベクトル場である「勾配」の計算を効率化した[38][37]。この勾配を使用してニューラルネットワークを訓練する勾配降下法によって、より複雑なシステムを構築することが可能となり、1980年代にはニューラルネットワークの自然言語処理への応用が広まることになった[40][32]。1985年にはD.B. Parkerがワーボスの手法を再発見し[41]、1986年にはラメルハート、ヒントン、ウイリアムスが「深層学習(ディープラーニング)」ネットワークと呼ばれる隠れ層を持つニューラルネットワークで、入力データの内部表現を生成するためにこの手法を応用し[42]、この研究はその後の回帰型ニューラルネットワークの基礎を築いた。
”
その入り口で引っかかるのは
言葉からどうやって誤差の量を定量化するのかという方法が説明されていない。
言葉をどうやってベクトル化するのか?
そもそも単語ってスカラー量でしょう。
それをベクトル化するっておかしくない?
ベクトルからどう誤差を計算するのか?
ベクトルの差分を取るのだろうけど、元々が人工的な操作だからおかしくない?
入門書がいる。