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.
 
 

421 lines
15 KiB

WEBVTT
00:00.620 --> 00:01.790
お帰りなさい。
00:01.790 --> 00:07.370
もしあなたがJupyterLabで私についてきているのであれば、
00:07.370 --> 00:16.550
コーヒー休憩のためにJupyterLabを立ち去る必要があるだろう。
00:16.550 --> 00:17.750
それがこれだ。
00:17.780 --> 00:23.810
自動車関連は最大で、 90万を超えるデータポイントがあり、 オフィスもある。
00:23.870 --> 00:27.830
あ、 すみません、 エレクトロニクスは40万人以上です。
00:27.830 --> 00:29.600
だから合計すると
00:29.600 --> 00:30.980
何があるのか見てみよう。
00:30.980 --> 00:36.410
合計で2人強だ。 800万データポイント。
00:36.410 --> 00:38.120
たくさんのデータだ。
00:38.120 --> 00:39.680
データが多すぎるんだ。
00:39.680 --> 00:43.580
私たちがやろうとしているようなトレーニングには、 そのような数字は必要ない。
00:43.640 --> 00:54.020
つまり、 このデータセットに磨きをかけ、 我々にとって最も価値があり、 最もシグナルを与えてくれるデータポイントを選択する機会があるということだ。
00:54.020 --> 00:59.480
ではまず、 トークンの数の分布をもう一度見てみよう。
00:59.510 --> 01:05.310
これは、 次回オープンソースのラマ・モデルをうまく微調整できるようにするため、
01:05.310 --> 01:10.440
またフロンティア・モデルを扱うときにコストを低く抑えるために、
01:10.440 --> 01:19.350
特に達成しようとしたことです。
01:19.890 --> 01:22.050
もう一度価格を見てみよう。
01:22.290 --> 01:33.690
これは200万ドルほどの価格分布で、 999ドル以下という制約があることがわかるだろう。
01:33.780 --> 01:39.510
つまり、 1〜999の間です。 これは、 トレーニングのすべてを歪めてしまうような異常値がなく、
01:39.510 --> 01:45.060
管理しやすいデータセットにするために入れた制約です。
01:45.450 --> 01:52.200
しかし、 データセットが小さい数字に非常に偏っているという同じ問題があることがわかるだろう。
01:52.230 --> 01:55.320
そして、 非常に細いトレイルがある。
01:55.320 --> 01:57.660
ええと、 これは300までです。
01:57.720 --> 02:05.460
だから、 1000まで行って、 データセットの終わりまで行ってみよう。
02:05.490 --> 02:06.030
そうだ。
02:06.060 --> 02:06.540
あれを見ろ。
02:06.540 --> 02:07.110
これがそうだ。
02:07.140 --> 02:14.850
909に達するデータもある。 49だが、 ほとんど見えない。
02:14.850 --> 02:18.840
軸にはほとんど触れていない。
02:18.960 --> 02:30.030
ええと、 80万人ほどのデータセットが低価格帯のものばかりだからです。
02:30.480 --> 02:34.170
ええと、 もうひとつ、 カテゴリーをざっと見てみましょう。
02:34.170 --> 02:40.920
この小さな棒グラフは、 各カテゴリーのデータ数を示している。
02:40.920 --> 02:44.970
つまり、 ここでも自動車が90万人と圧倒している。
02:44.970 --> 02:51.510
続いて、 工具とホームセンターが40万件、 エレクトロニクスが40万件と続く。
02:51.510 --> 02:59.580
というのも、 モデルが特定のカテゴリーの特定の価格についてより深く学ぶことに偏ってしまったり、
02:59.580 --> 03:09.670
歪んでしまったりするのは避けたいからだ。
03:09.790 --> 03:17.380
それが世界の現実なのだから。
03:17.530 --> 03:23.110
しかし、 トレーニングの進歩を歪めたり、 妨げたりするようなことはしたくない。
03:23.350 --> 03:31.090
それで、 これからやることは、 このデータセットのサンプルから、 価格とカテゴリーをよりよく表現したより小さなデータセットを得るために、
03:31.090 --> 03:37.960
いくつかの選択をすることだ。
03:37.960 --> 03:42.910
データセットのサイズは約40万点だ。
03:42.940 --> 03:48.100
それに、 微調整のための大規模なデータセットであっても、 それほど大きくする必要はない。
03:48.130 --> 03:50.290
しかし、 私は大きなジューシーなデータセットを持ちたかった。
03:50.290 --> 03:52.420
だから、 40万ドルを目指した。
03:52.510 --> 03:54.910
その方法については、 また今度話そう。
03:55.000 --> 04:00.580
そこでまず、 スロットという辞書を作った。
04:00.580 --> 04:01.810
そして、 これが何なのかを教えよう。
04:01.840 --> 04:04.060
そうすれば、 私がなぜこのようなことをしたのか、 よく理解してもらえるだろう。
04:04.090 --> 04:12.980
スロットは辞書であり、 辞書のキーは商品の全ドル価格である。
04:12.980 --> 04:17.720
つまり、 1ドルから9ドルだ。 99の1、 2、 3から999まで。
04:17.720 --> 04:21.830
この辞書には999個のキーがある。
04:21.830 --> 04:29.570
そしてその値は、 その価格を持つすべての商品、 すべてのアイテムのリストになる。
04:29.570 --> 04:36.590
つまり、 スロット辞書の2番スロットには、 2ドルの商品がすべてリストアップされていることになる。
04:36.620 --> 04:39.860
そうして、 すべてをこれらのスロットに整理している。
04:39.860 --> 04:43.100
基本的にデータセットをバケット化しているんだ。
04:43.370 --> 04:46.010
うーん......それで納得できればいいんだけど
04:46.010 --> 04:47.750
もちろん、 そうでなければこのコードを持ち出す。
04:47.750 --> 04:48.380
それを踏み越える。
04:48.380 --> 04:54.710
Defaultdictは、 基本的に辞書で、 辞書にないものがあれば、
04:54.710 --> 05:01.940
自動的に初期化してくれる。
05:01.970 --> 05:06.230
コードにifテストのようなものを入れる必要がなくなる。
05:06.230 --> 05:08.900
だから、 エレガントで素敵なコードになる。
05:08.900 --> 05:14.430
さて、 ここでちょっと肉厚な機能を説明しよう。
05:14.460 --> 05:14.850
アミティ
05:14.880 --> 05:15.360
アミティ
05:15.420 --> 05:16.170
Jupyterノートブック。
05:16.170 --> 05:16.740
細胞だ。
05:17.010 --> 05:21.390
ええと、 この枠をひとつひとつ見ていきます。
05:21.420 --> 05:23.760
999の各スロット。
05:23.760 --> 05:33.090
そして、 これらのスロットからデータのサブセットをサンプリングし、 トレーニングに使用する代表的なサンプルとするつもりだ。
05:33.240 --> 05:41.640
この後のヒストグラムに慣れるまで、 任意で微調整した部分もある。
05:41.640 --> 05:45.390
だから、 特別な理由があるわけではない。
05:45.390 --> 05:51.330
試行錯誤を繰り返し、 バランスの取れたデータセットに満足できるようになることだ。
05:51.330 --> 05:59.040
そしてもちろん、 それをトレーニングに回し、 こうすることでより質の高い結果が得られると自分自身を納得させる。
05:59.400 --> 06:05.370
それで、 僕がやっているのは、 各スロットを順番に見ていって、 240ドル以上の価値があるものは、
06:05.370 --> 06:09.930
単純にそのスロット全部を取ることにしているんだ。
06:09.960 --> 06:12.870
私はそれらの点をすべてサンプルに加える。
06:13.320 --> 06:13.950
うーん。
06:14.400 --> 06:16.710
それ以下の金額で。
06:16.710 --> 06:24.930
私は基本的に、 そのスロットから1200のアイテムをサンプリングするコードをここに持っている。
06:24.930 --> 06:29.790
その枠に数千の選手が入るかもしれない。
06:29.820 --> 06:39.090
私はそのスロットから1200を選ぶだけで、 choiceというnumpyのメソッドを使って、 スロットから特定の数字を選ぶことができる。
06:39.090 --> 06:48.870
そして、 チョイスのいいところのひとつは、 ウェイトと呼ばれるものを渡すことができることだ。
06:48.870 --> 06:53.970
そして......、 これがウェイトにとって驚きのない形でまとまることを願っている。
06:53.970 --> 07:02.160
私が言いたいのは、 自動車に関係するものには1の重みを、 それ以外のものには5の重みを与えようということだ。
07:02.310 --> 07:08.160
繰り返しになるけど、 これは、 出てくる数字に納得がいくまで、 いろいろな数字を使って遊んでみただけなんだ。
07:08.160 --> 07:15.930
そして、 現実の世界で我々が持っているようなデータに忠実でありたいので、 あまりやり過ぎたくなかった。
07:15.930 --> 07:19.700
しかし、 我々はデータセットの不均衡を補正したかった。
07:19.820 --> 07:23.570
だから、 一行ずつ説明するつもりはない。
07:23.570 --> 07:32.900
そして、 私の言うとおりになっていること、 そしてその結果が気に入っていることを確認してほしい。
07:32.900 --> 07:37.550
そしてもちろん、 データセットをもう少し違った形で作りたいのであれば、 これはチャンスである。
07:37.610 --> 07:43.880
また、 私のモデルのパフォーマンスという点では、 あなたが私の結果を打ち負かすことも十分にあり得るし、
07:43.880 --> 07:52.010
カテゴリの重み付けを変えたり、 スロットから別のものを選んだりした方がいいと思うかもしれない。
07:52.010 --> 07:57.170
だから、 絶対に実験してみるべきだよ。
07:57.170 --> 07:59.270
でも、 今はこれを実行した。
07:59.270 --> 08:07.460
現在、 サンプルリストが作成され、 そのサンプルには408,000のデータポイントがある。
08:07.460 --> 08:10.040
だから、 僕らが目指していたのはそのくらいのサイズなんだ。
08:10.460 --> 08:14.360
では、 価格の分布を見てみよう。
08:14.360 --> 08:18.230
そして、 価格の分布という点では、 その方がずっと合理的に見える。
08:18.230 --> 08:24.710
まだ安いものもたくさんあるが、 安い方ではどの価格帯でも一貫した数字だ。
08:24.740 --> 08:32.510
そして、 より高価格になるにつれて、 高価格に伴うデータポイントの完全なまともなセットが存在する。
08:32.540 --> 08:37.160
いろいろなポイントがあることに気づくだろう。
08:37.160 --> 08:46.100
予想通り、 399ドル、 499ドルという値段のものは、 データ・ポイントの数という点で少し急増する。
08:46.130 --> 08:48.530
それが現実の世界を反映しているのだから。
08:48.530 --> 08:51.140
だから、 データセットの中にそれがあるのはいいことだ。
08:51.140 --> 08:53.840
それを潰したくはない。
08:54.230 --> 09:07.220
この価格のヒストグラムを、 先ほどの価格のヒストグラムと比較すると、 データの価格分布が改善されていることがすぐにおわかりいただけると思います。
09:07.250 --> 09:12.080
これは明らかにもっと歪んでいるし、 現実の世界も歪んでいる。
09:12.170 --> 09:16.070
うーん、 でも、 高価格帯の商品の方がよく表現されている。
09:16.070 --> 09:23.220
そして、 質の高い学習ができるようになり、 サンプルの検証も進むということだ。
09:23.250 --> 09:26.700
それで満足できないなら、 ぜひいくつかのデータセットを作ってほしい。
09:26.730 --> 09:33.120
そしてトレーニングに入ったら、 両方を試して、 バランスの取れたデータセットがもたらす影響を見ることができる。
09:33.900 --> 09:36.810
カテゴリーももう一度見てみよう。
09:36.930 --> 09:38.640
これがカテゴリーだ。
09:38.640 --> 09:40.500
だから、 実は大した違いはないんだ。
09:40.500 --> 09:42.030
少しずれている。
09:42.210 --> 09:44.760
少しバランスが良くなったよ。
09:44.820 --> 09:51.990
うーん、 これ以上訂正したくなかったのは、 結局のところ、 これが現実の世界を多少なりとも反映していると感じたからだ。
09:51.990 --> 09:54.360
だから、 過度に歪めたくはない。
09:54.360 --> 10:00.630
販売されている自動車関連製品の数は、 他よりも多い。
10:00.630 --> 10:04.950
それで、 これで十分だと思われるが、 アンバランスな部分が少し修正された。
10:05.130 --> 10:08.370
おそらく、 別の見方として円グラフを見ることができるだろう。
10:08.370 --> 10:13.410
一般的に言って、 円グラフはデータサイエンティストに不人気であることが多い。 なぜなら、
10:13.410 --> 10:18.210
棒グラフの方が量を並べて見たり、 非常に定量的に見たりするのに適しているからだ。
10:18.420 --> 10:23.400
しかし、 円グラフは時として有用なビジュアルである。
10:23.490 --> 10:33.180
これはカテゴリー別の円グラフで、 これらの単語のいくつかを分離するために、 私は明らかに少し仕事をしなければならないが、 あなたはアイデアを得るだろう。
10:33.390 --> 10:40.530
つまり、 自動車が最大のシェアを占めてはいるのだが、 それが大量に支配しているわけではない、
10:40.530 --> 10:42.150
ということだ。
10:42.150 --> 10:45.600
そして、 この2、 3台が一緒になれば、 明らかに自動車以上のものになる。
10:45.660 --> 10:47.340
だから、 まったく理にかなっている。
10:47.340 --> 10:50.460
そして、 このチビは家電製品だ。
10:50.460 --> 10:57.510
私たちが昨日始めたのは、 パイの中で1%、 最も小さいものだった。
10:57.510 --> 10:59.400
この場合は文字通りだ。
11:00.000 --> 11:04.020
これが、 私たちのデータセットだ。
11:04.020 --> 11:07.170
うーん、 ちょっと大変だったね。
11:07.170 --> 11:13.200
そして、 サンプリングのような、 いくつかの、 ええと、 もっと難しい部分については、 私は目をつぶっていた。
11:13.350 --> 11:20.190
そして、 また戻ってきて、 それに目を通し、 自分で評価し、 より良いデータセットを作る可能性があることを強く勧める。
11:20.370 --> 11:25.260
ええと、 ハブにアップロードする前に、 ようやく最後の分析ができるんだ。
11:25.260 --> 11:27.630
それはまた次のビデオで。