You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

340 lines
14 KiB

WEBVTT
00:00.260 --> 00:02.930
さて、 トークンについて少し話をしよう。
00:02.960 --> 00:07.700
トークンとは、 モデルに渡される個々のユニットのことである。
00:07.880 --> 00:16.790
ニューラルネットワークを構築した初期には、 一文字ずつ学習させたニューラルネットワークをよく見かけたものだ。
00:16.790 --> 00:22.400
つまり、 一連の個々の登場人物をモデル化し、 前に登場した人物から、
00:22.400 --> 00:28.250
次に登場する可能性の高い人物を予測するように訓練するのだ。
00:28.280 --> 00:33.020
あれは特殊なテクニックで、 ある意味、 多くの利点があった。
00:33.020 --> 00:39.950
つまり、 入力可能な数は限られており、 アルファベットといくつかの記号の数だけだった。
00:39.950 --> 00:43.760
つまり、 非常に扱いやすいボキャブラリーサイズだったということだ。
00:43.760 --> 00:49.910
そして、 そのウェイトが必要なのだから、 インプットに多くの異なる可能性を心配する必要はない。
00:49.940 --> 00:57.200
しかし、 一連の異なる文字がどのようにして単語になるのかを理解するという点で、
00:57.200 --> 01:15.550
モデルには多くのことが要求され、 単語の背後にある意味に関連するすべての知性をモデルの重みの中に取り込まなければならない。
01:15.550 --> 01:25.270
そこで私たちは、 可能性のある単語をひとつひとつ訓練してニューラルネットワークを構築した。
01:25.270 --> 01:31.840
それは辞書のようなもので、 ありとあらゆる単語の索引のようなものだ。
01:31.840 --> 01:37.420
そして、 トークンが持つ可能性のある単語は、 これらの可能性のある単語のいずれかである可能性がある。
01:37.420 --> 01:49.600
つまり、 一連の文字がどのような意味を持つかを理解するのではなく、 個々の単語がそれぞれ異なる意味を持つことをモデル自体が理解し始めたのだ。
01:49.600 --> 01:51.040
だから、 それはいいことだった。
01:51.040 --> 01:55.210
しかし、 その結果、 膨大なボキャブラリーを抱えることになった。
01:55.240 --> 01:58.740
可能な限りの単語をボキャブラリーとして持っておく必要があった。
01:58.740 --> 02:04.140
もちろん、 地名や人名もあるので、 可能性のある単語はたくさんある。
02:04.140 --> 02:07.800
だから、 未知の言葉には特別なトークンが必要だった。
02:07.800 --> 02:10.650
そして、 そのためにいくつかの制限が生じた。
02:10.830 --> 02:13.860
珍しい言葉は省略され、 特別な場所は省略されなければならなかった。
02:13.860 --> 02:17.370
それで、 いくつか奇妙なことが起きた。
02:17.550 --> 02:25.860
そしてGPTの頃、 ある発見がなされた。 個々の文字に基づいてモデルを訓練し、 それらを組み合わせて単語を形成する方法を学習させるのではなく、
02:25.860 --> 02:36.360
この2つの両極端の中間に、 ある種の幸福な媒体があるという画期的な発見がなされたのだ。
02:36.360 --> 02:43.350
各単語が異なるトークンであると言うのではなく、 文字のかたまり、 あるときは完全な単語を形成し、
02:43.350 --> 02:48.600
あるときは単語の一部を形成するかたまりをトークンと呼び、 一連のトークンを受け取り、
02:48.600 --> 02:57.740
渡されたトークンに基づいてトークンを出力するようにモデルを訓練することができる。
02:57.740 --> 03:01.250
そして、 これには多くの興味深い利点があった。
03:01.250 --> 03:07.880
そのひとつは、 物事をトークンに分解することで、 地名や固有名詞のようなものも扱えるようになることだ。
03:07.880 --> 03:10.040
トークンの断片が増えるだけだ。
03:10.040 --> 03:15.800
それは、 単語の語幹、 つまり同じ語頭と複数の語尾の可能性があるものを1つのトークンにエンコードし、
03:15.950 --> 03:27.950
その後に2つ目のトークンをいくつか並べるという処理に長けているということだ。
03:27.950 --> 03:40.400
つまり、 トークンが同じような構造を持っているので、 言おうとしていることの根本的な意味をモデルの中で簡単に表現することができた。
03:40.400 --> 03:42.380
もう少し現実的な話をしよう。
03:43.100 --> 03:51.530
GPT、 OpenAIは実際にプラットフォームopenaiであるツールを提供しています。 comのスラッシュ・トークナイザーで、 テキストを入力して、
03:51.530 --> 03:58.240
そのテキストがトークンにどのように変換されるかを視覚的に見ることができる。
03:58.390 --> 04:05.080
そこで私はある文章を取り上げた。 私のクラスのAIエンジニアにとって重要な文章だ。
04:05.350 --> 04:08.650
GPTがそれをトークン化しているのがわかるだろう。
04:08.650 --> 04:12.700
これは、 言葉をトークンに変えるときに使う動詞だ。
04:12.700 --> 04:17.080
そして、 それをどのようにトークンに変えたかを色分けして強調している。
04:17.080 --> 04:26.320
そしてこの場合、 これらはすべて一般的な単語であるため、 これらの単語のひとつひとつがひとつのトークンに正確に対応する。
04:26.590 --> 04:28.480
だから、 これは明確な例だ。
04:28.480 --> 04:29.860
色を見ればわかるだろう。
04:29.860 --> 04:34.060
もうひとつ、 少し興味深い点がある。
04:34.060 --> 04:40.030
色つきのボックスの中には、 例えば "for "の前にスペースが入っているものがある。
04:40.060 --> 04:41.200
まるで宇宙のようだ。
04:41.200 --> 04:43.570
そして、 それが形骸化したものだ。
04:43.660 --> 04:49.330
トークン化の際、 単語と単語の間の区切りにも意味があるからだ。
04:49.330 --> 04:55.440
このトークンはforという単語を単独で表し、 単語の頭に続くforという文字が1つのトークン、
04:55.530 --> 05:05.010
トークンの単語の頭にマッピングされる。
05:05.010 --> 05:05.250
でもね。
05:05.250 --> 05:11.970
しかし、 単語と単語の間のギャップがトークンの一部として含まれることは注目に値する。
05:12.780 --> 05:15.120
では、 別の例を挙げてみよう。
05:15.150 --> 05:26.880
この例では、 もう少し面白い文章、 つまりLMの魔術師である私のマスタリングのために絶妙に手作りされた小ネタを考えている。
05:26.910 --> 05:30.060
Musterersは造語だと思う。
05:30.060 --> 05:34.950
ご覧のように、 赤い四角いアンダーラインは、 それが本当の言葉ではないことを示している。
05:34.950 --> 05:38.010
トークン化がどのように行われたかを見てみよう。
05:38.010 --> 05:48.330
だから、 この4はまだ1つの単語としてここにある。
05:48.330 --> 05:54.920
しかし、 冒頭のアンもそうだが、 絶妙に複数のトークンに分割されている。
05:54.950 --> 05:56.690
絶妙だ。
05:57.380 --> 06:04.130
そしてこれは、 珍しい単語がある場合、 その単語がボキャブラリーの中に1単語として含まれていないことを示している。
06:04.130 --> 06:08.630
そのため、 複数のトークンに分割しなければならなかったが、 それでも通過させることができた。
06:08.750 --> 06:11.570
そして今、 ハンドクラフトという言葉を見てほしい。
06:11.570 --> 06:19.280
このボキャブラリーも単一のトークンとして持っているわけではなく、 それを手で分解して作ることができるのだ。
06:19.280 --> 06:25.640
そしてそれは、 ある意味、 意味を反映している。
06:25.670 --> 06:28.280
この2つの手を組み合わせて作られる。
06:28.280 --> 06:33.320
そして、 細工されたトークンには文頭が含まれていないこともわかるだろう。
06:33.320 --> 06:38.810
つまり、 真ん中に細工が施された単語を表すトークンなのだ。
06:38.810 --> 06:41.000
それがこのトークンに反映されている。
06:41.090 --> 06:43.430
その口癖がまったくないことがわかるだろう。
06:43.430 --> 06:48.700
侵入されて、 それで......マスタリーを見ることになる。
06:48.700 --> 06:52.300
そしてこれは、 私が語幹について言ったことの良い例である。
06:52.300 --> 06:58.900
Masteriesはmaster、 つまりマスターする人という動詞と、
06:58.900 --> 07:04.720
その延長線上にあるerrsに分かれる。
07:05.020 --> 07:15.820
実際の単語ではないにもかかわらず、 2つのトークンに分割することで、 私たちが言おうとしていることの意味を反映することができるのです。
07:16.390 --> 07:22.600
また、 魔術が魔女と工芸に分かれたのも興味深い。
07:23.170 --> 07:25.540
それで、 そう、 手作りなんだ。
07:25.540 --> 07:29.740
そしてマスターは、 私が言ったように、 トークンによってそこにどのように意味が反映されているかがわかるだろう。
07:29.740 --> 07:35.980
そして、 何かをトークンに分解するということがどういうことなのか、 これが本当の意味での洞察になることを願っている。
07:37.150 --> 07:42.250
そこで興味深いのは、 もう少し洗練された例をお見せすることだ。
07:42.280 --> 07:48.130
ええと、 私の好きな番号、 6534589793238462643383らしい。
07:48.160 --> 07:49.030
ブラブラブラ。
07:49.180 --> 08:01.750
円周率のような長い数字は、 もちろん1つのトークンには対応しない。
08:01.930 --> 08:11.020
そして実際、 ここで起こっているのは、 3桁の数字が1つのトークンにマッピングされているということだ。
08:11.260 --> 08:13.030
これは興味深い性質だ。
08:13.030 --> 08:19.000
実はこれはGPTの2つのトークナイザーの特性なのだが、 他の多くのケースはそれほど多くない。
08:19.000 --> 08:23.170
複数のトークンにマッピングされていることがわかるだろう。
08:24.220 --> 08:33.670
一般的に言って、 トークンを見るときに覚えておくと便利な経験則があります。
08:33.670 --> 08:41.560
経験則では、 平均して1トークンは約4文字に対応する。
08:41.860 --> 08:50.060
つまり、 通常の英文では、 トークンは単語の4分の3程度ということになる。
08:50.060 --> 08:53.210
1トークンは約0に相当する。 75語。
08:53.210 --> 08:54.950
そして、 それをより簡単に考える方法もある。
08:54.950 --> 09:00.260
つまり、 1000トークンは約750ワードということだ。
09:00.260 --> 09:01.880
だから、 これがあなたの頭の中にあるマッピングなんだ。
09:01.910 --> 09:04.820
1000トークンは750ワードである。
09:04.820 --> 09:11.300
ということは、 例えばシェイクスピア全集で、 実際の例を挙げれば、
09:11.300 --> 09:16.460
約90万語ということになる。
09:16.460 --> 09:23.510
だから1. 200万トークンといえば、 シェークスピア全集のサイズだ。
09:23.540 --> 09:26.270
さて、 これは英語の話だ。
09:26.270 --> 09:33.920
数学の公式や科学用語、 コードなどを見ている場合、 トークン数はもっと多くなる。
09:33.920 --> 09:43.990
数字で見たように、 右の記号などを組み込むにはもっと多くのトークンに分割する必要があるからだ。
09:44.290 --> 09:48.790
そして、 もうひとつのポイントは、 これはGPTトークナイザーを示しているということだ。
09:48.820 --> 09:52.930
トーケナイザーがどのように機能すべきかについて、 確固たるルールはない。
09:52.960 --> 09:57.340
実際、 1分前に見たように、 初期の頃はトークナイザーがあり、
09:57.340 --> 10:02.770
すべての文字が1つのトークンにマッピングされていた。
10:02.770 --> 10:08.440
オープン・ソースを後で見るときには、 いろいろなトークナイザーに触れることになる。
10:08.470 --> 10:12.280
そして、 Llamaのトークナイザーの興味深い特性も探求するつもりだ。
10:12.310 --> 10:15.280
だから、 トークナイザーによって動作が異なることがある。
10:15.280 --> 10:20.170
トークンの数が少なかったり、 多かったりすることには賛否両論がある。
10:20.380 --> 10:27.640
モデルのパラメーターの数や学習方法などによって、 答えは一つではない。
10:27.820 --> 10:34.930
言葉や文字からトークンの世界に入るということがどういうことなのか、
10:34.930 --> 10:41.230
少しはわかってもらえただろうか。