![見出し画像](https://assets.st-note.com/production/uploads/images/106409794/rectangle_large_type_2_02601ab322ab968c82178a9d95eabdd0.png?width=1200)
チューニングについてシュッと理解する
チューニング。それは。
チューニング (英語: tuning) とは、「調律する」「同調する」といった意味を持つ英語。音楽において、楽器の音の高さを合わせること。調律、調弦。および転じて高さが合った状態のこと(チューニングが狂うなどと表現する)。
ラジオなど無線機において、電波の周波数を合わせること。ダイヤル合わせ。同調。
機械や道具に手を加え、目的とする状態に調整すること。チューンアップ・チューンナップともいう。
ピアノ調律の実作業は音楽における調律を超えて、ピアノの修理や性能向上の改造なども行う場合がある。
機械や道具の性能アップを目的として手を加え改造を施すこと。ただし、本来は「チューニング」という単語に「改造」という意味は無い。
自動車のチューニングについては、チューニングカーを参照。
シンクロ召喚を行うこと - トレーディングカードゲームでの召喚方法の一つ。
Tuning - KinKi Kidsのシングル「光の気配」の通常盤収録曲。
ゆいちゃんず (今泉佑唯、小林由依) の楽曲。欅坂46のシングル「不協和音」のType-B収録曲。
いっぱい意味があるね!
でも今回は大規模言語モデル(LLM:Large Language Model)のチューニングのお話だよ!
ChatGPT から AI にはまり、その界隈の深淵を覗き込んだ人々はこう言うだろう。。。
チューニング手法、、、多くない?
何を隠そう私もその一人だった。
チューニングと一口にいってもいろいろあって何が違うの?
となるので主なやつを後の自分のために整理しますわよ。
そも LLM のチューニングとは?
LLM は基本事前に学習をして賢い状態にあります。
ので、チューニングなぞ不要!!
と、言うこともできます。
せやかて工藤
さらに賢くしたり特定の情報に強くしたくなる時があるやないかい
はい、そういう時にチューニングするわけですね。
では、ざっくりチューニングの種類を確認しよう!!
種類
情報抽出精度を向上させるための主な種類を見ていきますよいっと
※雑に列挙してます
素
素。すなわち何もしていない状態。
以上。
プロンプトチューニング
はい。名前そのまんまです。
LLM にはプロンプトがつきものですがその中身をいい感じにします。
過去に書いてたりするのでシュッと飛ばしますが
具体的に指示をする、役割を与える、Few-shot learning をする。
みたいなやつが該当します。
これだけで欲しい情報が手に入れやすくなるのだ。
これはとっても簡単でお手軽。
だって指示内容を変更するだけだもん。
以上!!
強化学習
次にわかりやすいのはこれかしら?
強化学習とは、、、
まるでビデオゲームをプレイするようなものです。ゲームのプレイヤーが「エージェント」、ゲームの世界が「環境」、そしてゲームの中でプレイヤーが取る行動が「行動」です。エージェント(プレイヤー):これはゲームをプレイするあなたです。あなたの目標はゲームをうまくプレイして、最高のスコアを得ることです。
環境(ゲームの世界):これはゲームのステージやレベルのことです。あなたはこの環境の中で行動します。
行動(プレイヤーの選択):これはゲームの中であなたが取る行動です。例えば、ジャンプする、走る、敵を倒すなどです。
報酬(スコア):これはあなたが行動を取った結果、ゲームから得られるポイントやスコアです。例えば、敵を倒すとポイントが上がる、トラップにひっかかるとポイントが下がるなどです。
ポリシー(ゲームの戦略):これはあなたがゲームをうまくプレイするための戦略です。どの敵を先に倒すか、どのアイテムを取るか、どの道を進むかなど、あなたがどの行動を選ぶかを決めるルールです。
強化学習では、エージェント(プレイヤー)はゲームをプレイしながら最高のスコア(報酬)を得るための最善の戦略(ポリシー)を学習します。最初はうまくいかないかもしれませんが、何度も試行錯誤を繰り返すことで、エージェントはどの行動が最高のスコアをもたらすかを学習します。これが強化学習の基本的なメカニズムです。
詳しいことはすっ飛ばしましょう。
シュッと理解する。それが大事。
要するにユーザーからのフィードバック等の経験からいい感じに成長させるチューニング。。。
と、認識すれば多分いいでしょう。
LoRA
やっほー!ローラだよ!
はい、そうですね。
Low-Rank Adaptation ですね。
LoRA(Low Rank Adaptation)とは、大規模な学習済みモデル(LLMなど)に対して、小さな適応を行うための手法です。
想像してみてください、あなたが巨大なロボットを操作しています。このロボットは非常に複雑で、多くのことを学んできました。しかし、あなたはこのロボットに新しい特定のタスクを教えたいと思っています。
全てのロボットを再学習させるのは時間がかかりすぎます。そこで、あなたはロボットの一部を少し調整して、新しいタスクをこなせるようにします。これがLoRAの考え方です。
詳しいことはすっ飛ばしましょう。
シュッと理解する。それが大事。
要するに LLM を部分的に意図的な情報になりやすいように既存のレイヤー自体は変更せずに特定の性質をもつ方向へと誘導するためのレイヤーを新規追加して既存レイヤーに重ねるイメージでやんす。
画像生成 AI で特定の画風?を出力させたいような場合に有効で学習コストが低いのが特徴でございます。
Fine-tuning
Yeah, I'm fine thank you !!
そうですね、fine-tuning です。
Fine-tuningは、機械学習モデルの訓練手法の一つで、特定のタスクに既存のモデルを適用するために使用されます。具体的には、大規模なデータセットで事前に訓練されたモデル(通常は深層学習モデル)を、新しいタスクのデータセットで微調整します。この新しいタスクのデータセットは元のデータセットと比べてはるかに小さいことが多いです。
詳しいことはすっ飛ばしましょう。
シュッと理解する。それが大事。
LLM ってね。事前に大量のデータを学習させているわけですよ。
つまりもともと賢いの。
でも、その学習データにない情報は答えられないのよ。
だってそもそも知らないから。
ので、例えば金融特化だとか、医療特化みたいなモデルへと進化させるために学習データにプラスして追加でデータを与えて訓練する方法でござんす。
これは一から LLM を作成するよりは圧倒的に簡単ではありますがまぁまぁ学習大変です。
でもこれをやるといい感じのモデルができるわけですね。はい。
ControlNet
まぁ、これはおまけみたいなもんです。
画像生成の文脈でよく目にしますね。
ControlNetは、ディフュージョンモデル(画像や音声などのデータを生成するための人工知能モデル)を制御するためのツールです。ディフュージョンモデルは、元のデータをランダムなノイズに変えてから、そのノイズを元のデータに戻すというプロセスを通じて、新しいデータを生成します。しかし、このプロセスは通常、制御が難しいです。
ControlNetは、この問題を解決します。それは、ディフュージョンモデルに「条件」を追加することで、モデルが生成するデータを制御します。たとえば、あなたが「犬」の画像を生成したいとき、ControlNetはその「犬」の条件をディフュージョンモデルに教えることができます。
ControlNetは、元のディフュージョンモデルの重み(モデルの学習結果)を2つのコピーに分けます。一つは「ロックされた」コピーで、元のモデルを保持します。もう一つは「訓練可能な」コピーで、新しい条件を学習します。これにより、小さなデータセットでも、元のディフュージョンモデルを壊すことなく訓練することができます。
また、ControlNetは「ゼロ畳み込み」という特殊な技術を使用します。これは、重みとバイアスがゼロで初期化された1×1の畳み込み層のことで、訓練前はゼロを出力します。これにより、ControlNetは訓練前にはデータに何の変形も加えません。
ControlNetのすごいところは、小さなデバイスでも訓練できること、そして、モデルや重み、ブロック、レイヤーの結合や置換、オフセットにも対応していることです。これにより、ControlNetは非常に柔軟で強力なツールとなっています。
詳しいことはすっ飛ばしましょう。
シュッと理解する。それが大事。
簡潔にいうと LoRA と似ている手法。
つまり?
既存のレイヤーのチューニングは不要ってことだね!!
だから学習コストが低いのだ(*´▽`*)
以上!
おまけ
チューニングと銘打ったけれども。
軽量化の文脈もちょいと書いておこう。
ちょいちょい目にすると思うので。
モデルの枝刈り(Pruning)
モデルのパラメータ(学習した情報)のうち、重要度が低いものを削除する方法。これにより、モデルのサイズが小さくなり、処理速度が向上します。しかし、枝刈りによるモデルのパフォーマンスの低下を避けるためには慎重な調整が必要です。
これはまぁそのままね。不要なものを始末する。それだけだね。
量子化(Quantization)
パラメータの精度を下げることでモデルを小さくする手法です。これにより、モデルのサイズと演算速度が改善されますが、モデルの精度に影響が出る可能性があります。
これもまぁそのままだね。16bit で取りまわしていたものを 8bit にするとか扱うサイズを小さくするってことね。
蒸留(Distillation)
大きなモデル(教師モデル)の知識を小さなモデル(生徒モデル)に伝える手法です。生徒モデルは教師モデルの出力を目指して学習します。
これはちょいとわかりにくいよね。
ざっくりいうと優秀な教師(強くてでかい LLM)の指導の下、優秀な生徒(強くて小さい LLM)を作るってわけよ。
細けぇことはいいんだよ。
シュッとわかりゃあそれでよぉ。
ということで自分が満足したのでおしまい。
この記事が気に入ったらサポートをしてみませんか?