人工知能はどうやって作られるのでしょう?
を知らなくても大丈夫。データを入れると、が → 化 → → 生成という流れで作られる過程を目で見ることができます。望めば本物のコードで作ることもできます。
直前の単語一つだけを見て次の単語を選ぶ用の模型(単語)です。やはなく、事実を学ぶこともありません。単語の分け方も本物ののではなく、学習用です。
- データ準備
- ① トークン化
- ② IDとワンホットベクトル
- ③ トレーニング(学習)
- ④ 生成
データ準備
短い例文をいくつか集めてみましょう。同じ文を何度も入れると数えた回数は増えますが、資料は多いほど良いのではなく、目的に合うほど役に立ちます。文が終わるたびに「文末」も一つずつ数えます。
① トークン化
ここでは文を単語に近い断片に分けます。実際のLLMのは、単語、単語の一部、文字、のこともあります。トークンに分けるのは文章を数として扱うためで、文章が長すぎるからではありません。
② IDとワンホットベクトル
IDは名札のように付けた番号です。は自分の位置だけが1で、残りはすべて0です。どちらも、どの単語同士の意味が近いかは教えてくれません。その情報を持つのは学習済み埋め込みという別ので、この実習では学習しません。
③ トレーニング(学習)
前の単語の後にどの単語が何回来たかを数えます(「文末」も数えます)。候補のは、その候補が来た回数を、前の単語の後に来た全体の回数で割った値です。ニューラルは、このような小さな表を保存する代わりにを学習します。
④ 生成
いつも最も確率の高い単語を選ぶと、確率に従って抽選するを比べてみましょう。「文末」が選ばれると生成が止まります。サンプリングでも同じ文がまた出ることがあります。生成した文は、事実かどうかを確かめていない文です。
| 単語 | 番号 | 数値ベクトル(ワンホット) |
|---|---|---|
単語を一つ選ぶと、その次にどの単語が来る確率が高いか、が学んだ内容を見られます:
百分率は丸めているため、表示の合計が100%から少しずれる場合があります。
この単語は文末にしか出てこないので、次の単語がありません。別の単語を選んでみましょう。
表の割合は1のときの値です。温度は各単語が選ばれる確率を変えるだけで、数えた回数や、事実かどうかは変えません。
Python実行環境を準備中…
私のコード
実行結果
[実行]を押すと、ここに結果が表示されます。