負温度でのサンプリング

2026/01/12 5:01

負温度でのサンプリング

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

作者はMetaのLLaMAモデルを使用し、温度 T = −0.001(OpenAI のモデルでは 0.0–2.0 の範囲に制限されているためサポートされない)という負の温度を設定して実験します。式
(p_i = \exp(z_i/T)/\sum_j \exp(z_j/T)) を用いると、T が負の場合指数部の符号が反転し、通常は最も確率の低いトークンが最も高くなります。|T| が 0 に近づくにつれて、この逆転により出力は決定的になり、ランキングが逆転します。

この設定を許可するために作者は llama.cpp を修正し、temp ≤ 0 のときに強制的に貪欲サンプリングになるチェックを temp == 0 のみで発動するよう変更しました。使用したサンプルコマンドは次の通りです:

./main -m models/7B/ggml-model-q4_0.bin --temp -0.001 --repeat-penalty 1.0 --top-k 0 --top-p 1.0 -p "Temperature is a concept"

結果として得られたテキストは意味不明で、例えば「Хронологија」「entferне」「antferne」といった異常なトークンが繰り返されます。これらのトークンは埋め込みセンチロイドに最も近いものですが、通常の出力ではほとんど現れません。また、温度を極端に高く設定(1 000 000)すると、モデルは非常にランダムなテキストを生成し、多数の非英語記号が含まれることも示されました。これはエントロピーの増大を示しています。

負の温度は有限状態空間(例えばニューラルネットの最終層)でのみ意味を持ち、無限状態を有する物理系には対応しません。Derik Kauffman の 2023 年ブログ記事に基づき、本研究では極端な温度設定が決定的だが理解不能な出力を生成できることを探求し、新しいサンプリング戦略や安全対策の可能性を示唆するとともに、意味不明な生成によってユーザー信頼が損なわれたりポリシー違反につながるリスクも強調しています。企業は温度範囲を制限したり、トークンフィルタリングを調整して、本番環境でのこうしたアーティファクトを防止する必要があります。

本文

概要
統計力学における温度定義(ゼロ以下になる可能性も含めて)に触発され、LLaMAを (T=-0.001) でサンプリングしました。結果は想像以上に奇妙でした。


背景

温度とは何か

温度は統計力学から来ています。熱平衡下の状態集合 ({E_i}) を持つ系では、各状態への確率分布は

[ p_i=\frac{\exp(-E_i/k_BT)}{\sum_j \exp(-E_j/k_BT)} ]

で表されます。ここで (T) は温度です。

  • 低い (T):低エネルギー状態が支配的になります。
  • 高い (T):状態がより均等に混ざります。

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

ネットワークの最終層でロジット ({z_i}) にソフトマックスを適用すると

[ p_i=\frac{\exp(z_i/T)}{\sum_j \exp(z_j/T)} ]

となります。これは符号が反転したボルツマン分布で、より大きなロジットほど確率が高くなるようになっています。

言語モデルでは温度は「創造性」を制御します:

  • (T=0):最も確率の高いトークンを決定的に生成。
  • (T=\infty):全てのトークンが等しく出現(純粋ノイズ)。

負の温度

ゼロ以下の温度は「寒い日」ではなく、絶対スケールで (T<0) を意味します。(T<0) のとき指数部の符号が逆転し、以前は低確率だった状態が最も確率高くなります。(T \to 0^{-}) に近づくと再び決定的に生成されますが、この場合は「最も確率が低い」トークンを選択します。

負の温度は有限な状態空間(例:ニューラルネットワークのロジット数)があるシステムでのみ意味があります。


方法論

OpenAI のモデルではサンプリング温度を (0.0 \le T \le 2.0) に限定しています。負温度を試すため、Meta の LLaMA モデルを llama.cpp を使って実験しました。

main.cpp
の主要関数:

void llama_sample_temperature(llama_token_data_array *candidates_p, float temp) {
    for (size_t i = 0; i < candidates_p->size; ++i)
        candidates_p->data[i].logit /= temp;
}

元のコードは (T \le 0) のときにグリーディサンプリングを行っていました。ここでは

if (temp == 0)
のチェックを変更し、負温度でも温度スケーリングで処理されるようにしました。

実行コマンド

./main -m models/7B/ggml-model-q4_0.bin \
       --temp -0.001 \
       --repeat-penalty 1.0 \
       --top-k 0 \
       --top-p 1.0 \
       -p "Temperature is a concept"

結果

温度出力(抜粋)
(T=+0.001)“Temperature is a concept that is used to describe the degree of hotness or coldness of a substance…”
(T=-0.001)“Temperature is a concept Хронологија”(その後停止)
(T=+1,000,000)(ほぼランダム)“Temperature is a concept fixesля conven Beng aer situation ton …”
(T=-0.001)(同じ大規模モデル)Хронологија, entferne などの奇妙なトークンが繰り返し出現し、生成は無限に続く。

負温度では、正温度で最も低い確率を持つトークンが選ばれ、非常に異常な反復が発生します。


観察

  • Хронологијаentferne といったトークンは LLaMA の埋め込み空間でセンター付近に位置し、意味的にはほとんど情報を持ちません。
  • 負温度ではこれらの異常トークンが最も確率高くなるため、正温度では抑制されるものが出現します。

引用

この記事を引用したい場合は次の BibTeX をご利用ください:

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

同じ日のほかのニュース

一覧に戻る →

2026/01/12 5:47

**macOS Tahoe におけるウィンドウサイズ変更の苦労** macOS Tahoe では、アプリケーションウィンドウをリサイズすることが思ったより難しい場合があります。ユーザーは次のような点に悩むことが多いです: - 標準のドラッグ&ドロップ方式が安定しない。 - リサイズ用キーボードショートカットが十分に文書化されていない。 - 特定のアプリではウィンドウサイズ制限を無視してしまう。 これらの問題は、デスクトップ上で効率的に作業することを困難にします。

## Japanese Translation: --- ## 要約 macOS Tahoe の極端に大きなウィンドウの角丸半径は、通常のリサイズ動作を妨げます。丸みが付いた角は、必要な 19×19 ピクセルのクリックターゲットの約 75% を可視ウィンドウ枠外へ押し出します。その結果、ユーザーが緑色領域(通常使う部分)内で角を掴もうとすると、クリックが許容領域外に落ちてリサイズが失敗します。見える角のすぐ外側、同じ 19×19 ピクセル帯内でのみクリックが成功し、リサイズが起動します。以前の macOS バージョンでは、このターゲットの約 62% がウィンドウ内部に配置されており、ユーザーの期待に合っていました。筆者はほぼ四十年にわたるコンピュータ使用経験の中でこのような問題を一度も遭遇したことがありません。この不一致はフラストレーションと生産性低下を招きます。開発者は対策を設計するか、Apple にバグ報告を提出する必要があります。 ---

2026/01/12 6:29

2026 年はセルフホスティング(自前で運用すること)の年です。

## 日本語訳: > 本記事は、Claude Code CLI エージェントを利用することで、誰でも低価格のミニPCで完全に機能的なホームサーバーを構築できることを示しており、深いシステム管理スキルが不要になる点を強調しています。Beelink Mini N150($379)に8 TB NVMe SSDを搭載し、著者はUbuntu 22.04 LTS をインストールし、セキュアネットワーク用に Tailscale を追加、その後 SSH で Claude Code をインストールします。シンプルな英語のプロンプトを発行するだけで、Claude Code は自動的に Docker を設定し、Compose ファイルを作成し、サービス(Vaultwarden, Plex, Immich, Uptime Kuma, Caddy, Home Assistant, ReadDeck)をデプロイし、リバースプロキシを構築し、永続性を確保し、更新とセキュリティパッケージを管理し、ブート時の再起動も可能にします。 > > Vaultwarden は軽量な Bitwarden 互換パスワードマネージャーとして機能し、Immich は Google Photos の代わりにモバイルアプリ、ローカル顔認識、タイムライン/マップビューを提供します。ReadDeck は Mozilla Pocket を補完するクリーンな UI と読み続行機能を備えています。Lazydocker(Docker コンテナ UI)や Glances(システムモニタリング)などの追加ユーティリティもスタックを完成させます。著者は低い消費電力(CPU 約6 %、メモリ約32 %)を指摘し、保守作業がサーバーを所有する感覚に近く、問題は SSH と Claude Code への英語プロンプトで解決できると強調しています。 > > 対象読者はターミナル操作に慣れたユーザーで、既に SaaS サービスの料金を支払っているが、フルインフラ専門家になることなく基盤システムを理解したい人々です。本記事は、ミニPC 上で Claude Code を利用したセルフホスティングが今や実現可能で楽しく、今年おすすめできると結論付けています。

2026/01/12 7:14

このゲームは、Windows・Linux・ブラウザ上で動作する単一の13 KiBファイルです。

<|channel|>final <|constrain|>## Japanese Translation: 記事では、1つのソースファイルが「ポリグロット」バイナリを生成する方法を示しています。このバイナリには、Windows、Linux/BSD、およびブラウザ用にコンパイルされた3つの小さなプログラム(スネークゲーム)がすべて含まれており、合計13 312バイトです。コードはJustine Tunneyのcosmopolitan libcアイデアを使用し、各プラットフォームでネイティブに実行できる<16 KiBの実行ファイルを生成します。 3つのビルドが作成されます: • WinAPI用C(i686 Visual C)– 画面スクリプトとしても機能する非従来型PEヘッダーを使用。スタブはゲームを解凍して起動し、最初に再実行まで0xc0000005エラーが表示されます。 • Linux/X11用C(x86_64 clang)– lzmaデコンプレッションとシェルドロッパーを使用してファイルからELF64バイナリを抽出します。 • ブラウザ用JavaScript – ブラウザは先頭の無害なゴミを無視し、CSSで隠し、HTML/Canvasゲームがこの余白後に開始されます。 各コンパイル済み/ミニファイド版は約3–5 KiBです。3つのバイナリは順序通りに連結され、各オペレーティングシステムまたはブラウザが自分のセクションを実行します。元のゲームソースは13 772バイトでしたが、パッキングと連結後、正確に13 312バイトになります。 ゲームプレイの詳細(パッケージング物語の一部ではなく、キーポイントで言及されている)は次の通りです: - スネークは食べ物を食べることで成長し、壁を避けます。 - 操作:矢印キー/WASDキー、ESCで終了、Rでリセット、Pで一時停止、Spacebarで開始。 - スコア:フルーツごとに+10、黄色のフルーツは+20。フルーツは一定レートで生成され、スネーク速度/長さに比例した時間が経過すると消えます。 - 10個のフルーツ後、ランダム壁を含むレベル変更が行われ、ヘッドから任意の食べ物へのパスが保証されます。初期スネーク位置はランダムですが、向いている方向に少なくとも5つの空きタイルがあります。 このプロジェクトは、複数のオペレーティングシステムとウェブブラウザ用の実行コードを1ファイルにまとめることができることを示し、小規模プログラムの軽量でプラットフォーム非依存的な展開の可能性を開きます。

負温度でのサンプリング | そっか~ニュース