英語は日本語の2倍GPT3に文脈情報を渡せる
ChatGPTに「これを参考にして返事して」と文脈情報を渡す場合、英語にして渡す方が2倍渡せる nishio.icon
https://gyazo.com/a418d926e2a625a47138abee6273bb1f
DeepL-ed
GPT3, there are often cases where a single Japanese character is chopped into bytes in the tokenizer layer. Input/output in Japanese is short in terms of characters but long in terms of tokens.
https://gyazo.com/9646677e6040165fc81b431a33d71172
これは結構厄介では
つまり、今まで漢字を使う中国人や日本人はアルファベットを使う人たちに比べて情報の密度が高かった
同じ内容を日本語で書くのと英語で書くのでは英語の方が2倍面積を取っていた
人間の物理的視野の広さは人種によって大差ないので、日本人は一度に目からインプットできる情報量が2倍大きい
しかし、AIの視点で見ると、同じ内容を日本語と英語で与えた場合に日本語の方が英語の2倍ほどのトークンになる 人間の物理的視野のようなもの
日本語で書かれたものの方が一度に見れる量が少ない
ChatGPTに「これを参考にして返事して」と文脈情報を渡す場合、英語にして渡す方が2倍渡せるということ、この差はでかい
料金が高くなるというのをみたけど一度に渡せる情報量も変わるのか〜基素.icon
というかトークン数が増えるからお金もかかるってことだ
これはトークナイザがutf8対応とかすれば済む話なのかな?inajob.icon 分かち書き対応がいる?meganii.icon
トークナイザーの出力するトークンが変わると以降の学習が全滅する気が…nishio.icon
トークナイザーの出力は一般的にはワンホットベクトルでニューラルネットに入れるのでトークナイザーの出力するトークン数が変わるとネットワークのサイズも比例して変わるんよ トークナイザーの変化を追加学習で吸収できるのかな…やってやれないことはなさそうな気がしてきたから全体再学習とはならなさそう
要するに埋め込まれた後のデンスなベクトルが同じものになるように学習すればいいわけだからそこだけ切り離して学習できるか??
いや、ダメだな、OpenAI側がベクトルを受け取るAPIを提供してくれないとこっちでどうこうできないな
別の場所での質問を見て、上記の質問を正しく理解してなかったかもと気づいたnishio.icon
「information」で1トークンになってるところが見所
元が何バイトであっても1トークンにすることには支障ない
ではなぜ「情」を構成する3バイトが2トークンに刻まれているのか
「情」の出現頻度は「information」の出現頻度よりはるかに低いので1つのトークンにする価値はない、とGPT3のトークナイザーが判断してしまっている状態
トークンは全部で50000種類程度
増やすことは技術的には問題ないが、増やした分だけ学習コストが掛かる
経済的理由により日本語とかいうマイノリティ言語に割くリソースが少ないという話
https://gyazo.com/10c1b8c1b9b9b1817d78f1133a748f82https://gyazo.com/9f52e93ff88b586b14311c82d230a8b8
https://gyazo.com/f0a0af30d47e17bf5cebf9d79774f2b6https://gyazo.com/b5be2d6f88a06f83777451a77264327b
https://gyazo.com/14e4f77793d723af030402d9042df1bf
もしかしたら gpt-3.5-turbo は日本語の消費トークン数に改善が入っている?
「おおきに!ぼちぼちやでぇ。貴様はどないや?」に対するトークン数がOpenAIのサイトで計算すると39なんだけど、API利用での消費は29で返ってくる。completionのtext-davinci-003でも39。
30%ぐらい少なくなった
嬉しい方向の変化だけど、モデルによってトークン数が異なるとなると見積もりが混乱するなぁwnishio.icon