そのパラメータの意味は?Vertex AIのGenerative AI Studioで文章生成するときの設定を知ろう

おはこんハロチャオ~!何者(なにもん)なんじゃ?じょんすみすです。

Vertex AIで文章生成してますか? コンソールからも手軽に使えてお試しもしやすいこの機能ですが、設定値を決める項目があります。 で、この設定を変えると何が変わるの?という疑問が浮かび上がるかもしれません。

自然言語処理において、文章生成をするときの仕組みでの考え方に基づくものになります。 今回は、アルゴリズムの細かい解説などは抜きにしてイメージをつかんでもらうために以下のパラメータの解説をします。

  • Temperature
  • Top-K
  • Top-P

前提として

まず、前提としてLLMは以下のような仕組みで文章を生成しています。

  1. 与えられた途中までの文章から次の単語を予測する
  2. 予測された単語を加えてさらに次の単語を予測する
  3. 文章が一定の長さになるか、終わりであると判定されるまでこれを繰り返す

イメージとしては、人間が文章を入力している際における予測変換として出てくる候補を連続して選んでいるような感じとなります。

「予測変換のようなイメージ」と書きましたが、その予測変換を想像してもらうとわかる通り、単一の単語のみを候補として上げるのではなく、複数の候補リストが表示されているかと思います。 LLMでも同様に次の単語を1つだけポンと出力するのではなく、複数の候補の中から選ぶ仕組みになっているのです。

文章としての良し悪しは生成されたもの全体で決まるので、次の単語予測を繰り返すだけではチグハグな感じになってしまう可能性があります。 そのため、次の単語候補としてだけ見て最適なものを選べばいいというものではないからです。 また、複数の候補の中から選ぶことで生成される文章に多様性が生まれます。

次の単語候補の決め方

では、実際に次の単語の候補の選び方がどのようになるのかを考えます。

まず、候補となりえるのはLLMが出力可能な全ての単語となります。 LLMではそれら全ての単語がどれくらい次の候補になるかを確率値で出します。 「確率」と言われると怖いと感じる方もいるかもしれないですが、以下のように考えてください。

  • 各単語が次の候補として適切かのスコアを算出する
  • スコアは0~1の範囲の数値
  • 全ての単語のスコアを合計すると1になる

その候補を絞り込むためのパラメータとしてTop-KとTop-Pがあります。

まず、各単語を確率値が高い順に並べます。 それらに対して、上位何件まで候補として残しておくかを決めるのがTop-Kとなります。 K=40であれば上位40件が次の単語候補となります。

Top-Pは確率値を上から順に合計していったとき、その値を超えない範囲で候補が選ばれています。 P=0.8であれば上から順に確率値を合計していった値が0.8以下に治まる範囲で単語候補が選ばれます。

例えば、確率値が以下のような値になっているとします。

直前までの文章 予測する単語 確率
吾輩 は 0.30
0.25
0.10
0.05
0.03
0.025
0.02
・・・
・・・

まずは、Top-Pの設定値を考えてみます

Top-Pの値 選ばれる候補 候補の確率の合計値
0.5 0.3
0.6 猫、犬 0.55
0.7 猫、犬、鳥、牛 0.7

次にTop-Kを考えてみます

Top-Kの値 選ばれる候補
2 猫、犬
3 猫、犬、鳥
5 猫、犬、鳥、牛、豚

このようにTop-K, Top-Pの値を調整することで候補の範囲を絞り込みます。

候補の中からどれが選ばれるか

このようにして、次の単語の候補が絞られるわけですがあとは実際にこの中からどれを選ぶかとなります。 確率が高いものほど選ばれやすくなりつつもある程度ランダムに選択される要素があれば、文章生成に幅を持たせられそうですね。

その設定をするためのパラメータがTemperatureとなります。 Temperatureは値を高くするほどランダム性も高くなるパラメータです。

常に同じ結果を出力した場合には値を「0」にするといいでしょう。 その場合、毎回おなじプロンプトに対して同じ回答が得られます。

一方、値を高くするとランダム性も高くなるため、様々な文章を生成したいときにはこの値を調整してみていくつかの出力を見てみると面白いかもしれません。

おわりに

今回は、Google CloudのGenerative AIで文章を生成する際に利用可能な、ランダム性をコントロールするパラメータについて紹介しました。

これらはLLMや文章生成における自然言語処理での考え方を知っていないとなじみがないものですが、理解しておくと調整して利用できるようになりますので覚えておくといいかもしれません。