ソフトなディクショナリ
誤字を指摘していただき、ありがとうございます。たいへん助かります。
ChatGPTさんに校正を依頼しているのですが、どうしても漏れがでてきます。
「Q, K, V ってあまり見かけない組み合わせね。どういう意味」
「Query、Key、Valueです。ここから、Self-Attentionが『ソフトな辞書』のように捉えられる理由を説明します。このQ、K、Vという表記は、最初のTransformer論文にも登場します」
「クエリ、キー、バリューって、辞書なんかの」
「そうです」
「データベースにも『キーバリュー型データベース』というのがあるな」マルコが言う
「ありますね。一番有名なのはWindowsのレジストリです」
「実際、"Attention Is All You Need"論文の筆者たちが、最初から『ソフトな辞書』を目指していたかどうか、論文だけからは断定できません。彼らの論文には dictionary という単語は書かれていませんから」アレックスが言う。
「いままで、内積でベクトルの向きを測って、似た向きのものを強調する。つまりそこに注意する、としていたのよね」
「そうです。QueryとKeyの適合度から取り出す情報の重みを決めるという点で、辞書検索に似ています。ただし、普通の辞書のように一つの項目を選ぶのではなく、複数の情報を重み付きで組み合わせるのです]
「まずコンピュータなどで使われる本来の辞書について説明します」
「先ほど『たしざん』のプログラムを作ったプログラミング言語をPythonといいます。Pythonにも辞書形式のデータというものがあります。例えばこんな感じです」
>>> dic = {'吾': 100, '輩': 200, 'は': 5, '猫':1234, 'で': 11, 'ある':20 }
「この辞書を使用するには、このようにします」
>>> dic['猫']
1234
「これが Python における辞書です」
「まあ、普通ね」
「つぎにこの辞書に'犬'を探させてみます」
>>> dic['犬']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: '犬'
「エラーになりました。指定されたキーが登録されていないことを示す KeyError が発生したのです」
「当然ね、辞書は'犬'を知らないんだから」
「そうです。このような辞書を仮に『ハードなディクショナリ』といいます」
「そこで『ソフトなディクショナリ』が出てくるのね」
「はい、仮に『ソフトなディクショナリ』というものがあるとします、そこに先ほどと同じようなデータを入れておきます」
>>> softdic = {'吾': 100, '輩': 200, 'は': 5, '猫':1234, 'で': 11, 'ある':20 }
「そして、'犬'を検索してみましょう」
>>> softdic['犬']
「どんなものが出てくると思いますか」
「見当もつかないわね。辞書は '犬' を知らないんだから」
「このように出てきて欲しいのです」
>>> softdic['犬']
'猫っぽい生き物'
アレックスの説明に、他の三人が笑う。
「それは、とても便利ね」とエレナが言った。
「まあ、softdicに今入れたものだけでは、出てこないだろうが、GPTが充分に学習したら、出て来るかもな」これはマルコだ。
ミアは笑い転げていて、話すことが出来ない。
「もちろん、これは実際のPythonの辞書ではありません。登録されていないキーでも、意味の近い情報を手掛かりに、それらしい答えを返す仕組みを考えてみましょう」アレックスが続ける。
「実は、『吾輩は猫である』は日本の夏目漱石という作家が書いた小説のタイトルです。その中には以下ような描写があります。小説の全文をGPTに学習させてあるとします」
白君は先日玉のような子猫を四疋産まれたのである。
吾輩は波斯産の猫のごとく黄を含める淡灰色に漆のごとき斑入の皮膚を有している。
「あら猫が御雑煮を食べて踊を踊っている」
猫だって笑わないとは限らない。
どうです奥さんこの猫は鼠を捕りますかね
猫の足はあれども無きがごとし、どこを歩いても不器用な音のした試しがない。
しかし猫の悲しさは力ずくでは到底人間には叶わない。
「このような文章を大量に学習させると、GPTは、『猫』という語彙に対して、このように知識を獲得します」
『すなわち、猫とは、足があり、子供を産み、斑入りの皮膚を持っていて、踊り、笑い、ネズミを捕るものだ。
加えて足音がせず、人間には力でかなわない生き物でもある』
「そういったものが、8192個の実数として学習されるわけだな」
「そうです、加えて仮に『犬』という語、そのものについてはほとんど学習させずに、秋田犬は四つ足であるとか、柴犬は茶色の毛皮を持つとか、そんな文章を学習をさせます」
そうすると、バックプロパゲーション時に、Attentionを通じて得られた関連性に関する学習信号がEmbeddingへ伝わります」
「そして、埋め込み行列のベクトル空間では、『猫』と『犬』の語彙ベクトルが似た方向をしめすようになります」
「で、先ほどのような回答がでてくるのです」
「『猫っぽい生き物』ね」そういってミアがもう一度笑い転げた。




