線形分離
「イメージが湧かないわね」
「そうでしょうね。では、もう一つ試してみましょう。15センチメートル四方ほどの正方形の紙があるとします。日本でいう『折り紙』ほどの大きさです」
「『折り紙』はやったことがあるわ。鶴とかをつくるやつでしょ」
「そうです。ただ、ここでは白い紙です。中心に赤い点を描いたとします」
「中心に赤ね」
「そして周囲に10個ほど、赤点を囲むようにして青い点を丸く描いていきます」
「ぐるりと囲むのね」
「はい。イメージできましたか」アレックスが言うと、3人がうなずく。
「では、その状態でハサミを一度だけ使い、直線に沿って切って、赤点と青点を切り分けてください」
「できるわけないわね」
「そうね。まわりをぜんぶ囲まれているから」
「今回はさっきのxの二乗計算じゃ無理そうだな」
「まず、正方形の紙を、半分の大きさの長方形の紙になるように折りたたみます」
「赤点は、折り目上にあるわね」
「次に、それをまた半分に折って、元の4分の1の正方形にします」
「赤点が、角のところになったな」
「さらに、赤点のところを押さえながら、こんどは直角三角形になるように折ります」
「そうか、わかったぞ」マルコが言った。
「もう一回、赤点の所がピボット(要)になるように折りましょう。そして赤点のある、鋭角になっているところをハサミで切り取ります。どうです。一回直線で切るだけで赤点と青点を分離できました」
「で、非線形変換と線形変換を組み合わせることを『折り畳む』と表現するんだな」
「最初の二乗の例では、正負の値が二乗によって同じ値に写されるので、折り畳んだように考えられませんか」
「あれだけ見れば、折りたたんだようには見えるが、いまひとつ、わからんな。非線形変換と『折り畳み』がつながらない」と、マルコ。
「そうね、わからないわ」
「わたしも」
「そうですか。私がもっと深く理解していたら、うまく説明できるのでしょうが、残念です」アレックスが言った」
「まあ、ここは、そういうものだとしよう。続けてくれないか」マルコが言う。
「はい、self-attetionと、そのあとにFFN、つまり線形変換と非線形変換をいくつか組み合わせたもの、をつないだものを『Transformerブロック』と呼んでいます」
「このブロックを複数積み重ねています。そして、最後に線形変換で、元の『埋め込み行列』のサイズにまで展開します。語彙数は20万行でしたね。そして、softmaxを使って、そのなかから、いちばん正解に近いだろうとAIが考えた一つの単語(トークンID)を選び出して、次の単語候補とします」
「それと、『吾輩は猫である』の『ある』という正解の単語とを突き合わせるのか」
「そうです」
「で、損失を計算してバックし、たくさんのウェイトパラメタを修正するのね」
「はい、バックプロパゲーションのことですね」
「これでやっと一巡したわけだ。長かったな」
「そういうことです」
「で、やっていることは、テキストデータを途中まで読ませて、次の単語を予測させ、正解と突き合わせること繰り返しね」
「はい」
「だから、インターネットなどからテキストを持って来れば、いくらでも連続で学習できるというわけね」
「そのとおりです。ただし、GPTに与えるテキストは学習させる前に厳選しています。誤った情報を除いたり、重複を避けるためです」
「あと、ふたつ学習させると、会話ができるようになるって言っていたわよね」
「はい、では次の事後学習にすすみましょう」




