ハクソク

世界を動かす技術を、日本語で。

負の温度でのサンプリング

概要

  • 統計力学における温度定義と負の温度の可能性をLLaMAのサンプリングで検証
  • 負の温度での出力は極端に奇妙なものとなる現象
  • ソフトマックス関数とボルツマン分布の関係性
  • 負の温度では最も起こりにくいトークンが選択される仕組み
  • 実験結果と異常トークンの繰り返し出現の考察

統計力学における温度とボルツマン分布

  • 温度は統計力学で状態分布を特徴付けるパラメータ
  • ボルツマン分布:各状態の出現確率をエネルギー温度で決定
  • 低温では低エネルギー状態が支配的、高温では均等分布に近づく性質

ニューラルネットにおける温度

  • ニューラルネットの最終層ではソフトマックス関数を適用し確率分布を得る
  • ソフトマックスの温度パラメータはボルツマン分布の温度と本質的に同じ
  • 温度が低いと最も確率が高いトークンを確定的に選択、温度が高いとランダム性が増す
  • 創造性調整のための温度パラメータ活用

負の温度の意味と物理的背景

  • 絶対温度で0未満の値は通常の寒さとは異なる概念
  • 温度T→∞とT→−∞は同じ確率分布になるが、0付近で大きな不連続点が存在
  • 1/kBT(β)で考えると、T<0では確率分布の指数の符号が反転
    • 以前最も起こりにくかった状態が最も起こりやすくなる現象
  • 負の温度は有限個の状態を持つ系でのみ意味を持つ
    • ニューラルネットの最終層は有限状態なので負の温度適用が可能

LLaMAでの負の温度サンプリング方法

  • OpenAIモデルは温度0.0〜2.0のみ対応、LLaMAはローカル実行可能
  • llama.cppのサンプリング関数を温度負値でも動作するようにパッチ適用
    • 具体的には、温度<=0で貪欲サンプリングを行う箇所を修正
  • 繰り返しペナルティ・top-k・top-pを無効化して純粋な温度効果を観察

実験結果

  • T=0.001: 一般的な温度説明文を生成
  • T=−0.001: 最も起こりにくいトークン(例:Хронологија)を生成、以後同様のトークンを繰り返す
  • T=1000000: ほぼ完全なランダム出力、意味不明なトークンの混在
  • T=−0.001(LLaMA-13B): 意味不明なトークンや単語の繰り返しが続き、通常のランダム出力よりも不可解な結果

異常トークンの正体と考察

  • ХронологијаentferneなどのトークンはLLaMAの埋め込み空間の中心付近に位置
  • モデルが意味を理解できていないトークンで、ChatGPTでも同様の現象が報告
  • 正温度で最も生成されにくいが、負温度では最も生成されやすくなる
  • 人間が繰り返しを要求してもモデルはこれらの異常トークンを生成できない場合がある

まとめ

  • 負の温度サンプリングはニューラルネットの生成動作を根本から変える
  • 通常とは逆の、最も「ありえない」トークン列を出力する現象
  • 埋め込み空間の中心付近のトークンが頻出する理由
  • 本現象の理解はモデルの内部表現異常トークンの性質解明に繋がる可能性

参考文献

  • @misc{Kauffman2023negative-temperature, author = "Derik Kauffman", title = "Sampling at negative temperature", year = 2023, howpublished = "Blog post", url = "https://cavendishlabs.org/blog/negative-temperature/" }

Hackerたちの意見

うーん、なんでT=-0.0001じゃなくてT=-1なの?それに、もしT=-1でたくさんのテキストをサンプリングして、そのテキストで新しいモデルをトレーニングしたら、結果のモデルをT=-1でサンプリングしたときに、意味のあるものが得られるのかな?
記事からの引用: 「温度が負の側からゼロに近づくと、モデルの出力は再び決定論的になる — でも今回は、最もありえないトークンが出力される。」これは、ゼロから遠い負の数もかなりランダムだと理解してる(ただし、ありえないトークンを生み出す分布を持ってるだけ)。
これめっちゃ面白い!先週これについて学んだばかりなんだ。参考までに、私は分子動力学をやってる(自分のエンジンをRustで作ってる)。温度を測るのはシミュレーションの重要な部分なんだよね。(例えば、目標温度に調整するために使う)。この計算の重要な要素は、システムの自由度なんだ。これを計算するのはモデルによるよ。例えば、各原子が独立して動けるように表現してるのか?回転できる複数原子の剛体分子なのか?システムから重心速度を除いてるのか。この自由度の要素が、一般的で測定可能な温度の概念が実際のシステムにも、単純な点原子モデルにも適用できる理由なんだよね。(粗いモデルでも)。驚くことじゃないけど、負の温度が存在する理由の核心でもある!
この場合の負の温度はサンプリングのことだね。トークンのテーブルからサンプリングするとき、トークンiの確率の式はp_i = exp(logit_i/T) / sum_j(exp(logit_j/T)) だよ。分子動力学の温度とはあまり関係ないけど、現象的には(高温が結合確率のランドスケープで活性化障壁を越える)ちょっと関係してる。MDでは負の温度は意味がないね。
ネガティブ温度を示すことができる最もシンプルな物理モデルは、無限温度の状態よりもエネルギーが多いスピン格子の状態だよ。そんなシステムにエネルギーを追加すると、エントロピーが減るんだ。
> これはめっちゃクールだね!ネガティブ温度はそういう感じだよね。 ;)
Хронологија
ロジットの符号を反転させると「最もありえない」ものが得られるように思えるけど、実際にはノイズの中で動いてるだけの可能性が高いと思う。低確率のロジットが数値ノイズから微小なエネルギーを持ってることが多いだろうし、一番小さいもの(つまり、符号が反転したときに選ばれるもの)は基本的にノイズだと思う。(つまり、高確率のロジットの対義語として意味のあるものではない)。
Хронологијаはセルビア語で「年代記」って意味だよ。
「entferne」はドイツ語で「キャンセル」って意味だよね。これらはメニューやUIによく出てくる一般的な言葉みたい。もしかしたら、コピペされたテキストに頻繁に現れるから、埋め込みが意味がないと思ってスキップしちゃうのかも?
負の温度は物理学の人口反転と密接に関係していて、レーザーの重要な概念の一つなんだ。もしかしたら、レーザーLLMに近づいてるのかもね。
面白い実験だし、よく書けてるね。次の質問があるんだけど:1a. 温度=100000も興味深いね。明らかに「理想的」な温度は0と100000の間にあるはず。温度と知能の関係を調べた人はいる?このアイデアを考えたのは私だけじゃないはず。普通はtemp=0に設定して「決定論的」または「最も事実に基づいた」出力を得ようとするけど、あれはただのスキナーのハトのつつきだよね。1b. 「平均温度」を、パープレキシティのような指標として使えるかな?温度を逆パープレキシティと考えて、ちょっとしたランダム性を加えたら、基本的には同じものの逆ってこと?それとも微妙に違うのかな?1c. 大多数の人間のコミュニケーションの「平均温度」はどれくらい?「良い作家」のサブセットの「平均温度」は?「賢い作家」のサブセットの「平均温度」は?2a. 制約された語彙でこのネガティブな実験をやり直す。2b. モデルが自分の温度を動的に調整できるように強化学習する。1) 自信がないとき 2) ブレインストーミングモードのとき。2c. デコード中にXトークンごとにネガティブ温度を動的に注入して、その結果を判断/検証して、高いバリアンスの合成データを作る?2については、ネガティブ温度は実際には超高温とそれほど違わないから、考えについていくのが難しいな。
> 普通はtemp=0に設定して「決定論的」または「最も事実に基づいた」出力を得ようとするけど、あれはただのスキナーのハトのつつきだよね。うーん?同じランタイム、同じ重みで、モデルが実際にtemp=0で決定論的な出力を出しているなら、それは本当に決定論的じゃないって言ってるの?私の経験では、ほとんどのFOSS/ダウンロード可能なモデルはtemp=0で期待通りに動くよ。もちろん、それは「最も事実に基づいた」出力にはならないけど、それは全く別の話だからね。ほとんどのモデルでは決定論的な出力が得られるはずだよ。
著者です!1a. LLMは基本的にトークン列の確率分布をモデル化してるんだ。それはトランスフォーマーの最後の線形層からの(正規化された)ロジットだよ。温度を消すのに最も近いのはT=0またはT=1のサンプリングだね。1b. そういうこともできるよ。例えば、パープレキシティが最小になる温度を選ぶことで。パープレキシティはエントロピーの指数だから、熱力学のアナロジーを続けると。1c. AIが書いたテキストよりは高い、だいたい1.7くらい。これをAIが書いたテキストを区別する指標として実験したことがあるよ。人間が書いたテキストも一定温度のソフトマックス分布には従わないんだ。2b. LLMに自分のサンプリングパラメータをコントロールさせるのは面白い実験になりそう!もっとクリエイティブに書いたり、単純なミスを避けたりするために動的にコントロールできるかも。2c. それはナンセンスを生むだろうね。ネガティブ温度でサンプリングしたトークンは「ランダムよりも悪い」から。
temp=0は決定論的なだけじゃなくて、一般的に固定シードを選ぶことも温度に関係なく決定論的だよ。ただし、異なるクエリからのレスポンスを同時にバッチ処理している場合は別だけど(例えばOpenAI)。
温度の機械的解釈を示す面白い実験だね。「異常な」トークンがセントロイドの近くにあるっていう言及が気に入った。だから、LLMにとってはあまり「意味」がないんだね。
だから、負の温度だとLLMが「禁じられた言葉」を出すんだよね。つまり、モデルが言うのを拒否するほどあり得ないトークンのこと。
それってトゥレット症候群のこと?
物理学では、1/Tはエネルギーに対するエントロピーの偏微分だよね。負の温度っていうのは、例えば熱を加えるとシステムがより秩序立ってくるってこと。もうこのアナロジーの適用範囲は終わったと思う。