トレーニングのためのハイパーパラメータについての冒険を続ける｡
次はかなり重要で､ 学習率と呼ばれるものだ｡
そしてまた､ 皆さんの中の多くのデータサイエンティストは､ このことをよくご存知だろう｡
トレーニングの目的は､ モデルを作成し､ トレーニング・データを取得することです｡
フォワード・パスと呼ばれる推論で､ モデルを通して次に来るはずのトークンを予測し､
予測された次のトークンを予測する｡
あるいは実際には､ 次のトークンの可能性をすべて確率で示す｡
そして､ そのトークンを使って､ 実際にあるべき次のトークンを手に入れる｡
そして､ この2つ､ 予想と実際を総合して､ 負けを導き出すことができる｡
次にできることは､ そのロスを利用して､ バックプロパゲーション（逆伝播法）と呼ばれる､
モデルを遡り､ 次回はもう少し良い結果を出すために､ 各ウェイトをどれだけ上下に微調整すれば良いかを割り出すことだ｡
そして､ その方向に一歩踏み出すんだ｡
ウェイトを移動させ､ 次はもっとうまくやるための一歩を踏み出すのだ｡
その一歩､ その一歩が､ ウェイトを良い方向にシフトさせ､ 次回はもう少し良い結果が出るようにする｡
まさにその学習データに直面したとき､ ええと､ 学習率と呼ばれる｡
典型的なのは0か0かだ｡ 0001 または 0. 00001.
ええと､ いくつか例を挙げればわかるだろう｡
学習レート・スケジューラーと呼ばれる機能もあります｡ これは､ 学習レートをある数値で開始し､
数回のエポックにわたって実行する間に､ 学習レートを徐々に下げていくものです｡
モデルがより訓練されるにつれて､ 学習レート､ つまり学習ステップをどんどん短くしていき､
ネットワークにわずかな調整を加えるだけにしたいからです｡
なぜなら､ あなたは自分が正しい場所にいると確信しているからだ｡
それが学習率というわけだ｡
繰り返しになるが､ データ・サイエンスのバックグラウンドを持つ多くの人々にとっては､ 古くからある話だろう｡
他の人にとっては初めてのことかもしれない｡
グラデーションの蓄積は一つの方法だ｡
トレーニングの中で､ よし､ これからやるのは普通に前方へのパスだ､
と言ってスピードを向上させるテクニックなんだ｡
私たちは､ 今私が説明したような喪失感を味わうことになる｡
そして逆算して勾配を計算し､ 正しい方向に一歩を踏み出す｡
そして､ グラデーションの累積を繰り返すのだが､ おそらくできることは､ フォワードパスをしてグラデーションを取得し､
一歩も動かずに､ 2回目のフォワードパスをしてグラデーションを取得し､ それらのグラデーションを加算して､
さらに数回繰り返すことだ｡
勾配を積み重ね､ 一歩を踏み出し､ ネットワークを最適化する｡
そしてそれは､ これらのステップを行う頻度が少ないということであり､ つまり､ もう少し速く走ることができるということだ｡
ある意味､ バッチサイズに似ている｡
それは､ ある意味､ 概念的な類似性があるんだ｡
私が設定したハイパーパラメーターでは､ 勾配累積を使っていません｡
私はそれを1に設定している｡
でも､ 過去に試したことがあるんだ｡
だから､ それを試してみて､ どんな効果があるか見てみるのもいいかもしれない｡
これがグラディエントの蓄積だ｡
そして最後がオプティマイザーだ｡
オプティマイザーは､ 勾配が決まったら､ 学習率が決まったら､ 時間になったら使う計算式だ｡
そして今､ ニューラルネットワークにアップデートを加え､ すべてを良い方向に少しずつシフトさせ､
次回､ 正しい次のトークンを予測する可能性を少しでも高めるのだ｡
そして､ そのためのプロセスをオプティマイザーと呼ぶ｡
その方法については有名な計算式がたくさんあり､ それぞれに長所と短所がある｡
性能的には少し高価なものだ｡
それは少し大変な仕事だが､ 良い結果につながる｡
だから､ まずはそこから始めることをお勧めする｡
そして､ もしメモリに何らかの問題が生じても､ より少ないメモリ消費で済む代替手段がある｡
しかし､ そのプロセスは最適化と呼ばれている｡
そのために選ぶアルゴリズムがオプティマイザーと呼ばれるものだ｡
これもハイパーパラメーターのひとつで､ いろいろなものを試して､ その結果を見ることができる｡
だから､ すごくたくさんのことを話しているんだ｡
また､ ハイパーパラメーターについての会話を使って､ トレーニング・プロセスについても少し説明した｡
GoogleColabに戻り､ SFTトレーナーをセットアップして､
自分たちの専門的なLMを微調整する｡