掲載済み (2025-12-13号)
#116 522文字 • 3分

## LLMが出力したテキストのリストから最も良いテキストを選択する方法

日本語

掲載情報

概要

https://qiita.com/Isaka-code/items/a52d71cf55854f3e8fc

詳細内容

## LLMが出力したテキストのリストから最も良いテキストを選択する方法 https://qiita.com/Isaka-code/items/a52d71cf55854f3e8fc LLMの複数出力から最適なテキストを選ぶための2つの主要な手法を紹介し、特に自由生成テキストに対して外れ値を効果的に排除する「編集距離選択」アルゴリズムとそのPython実装を詳述します。 **Content Type**: ⚙️ Tools **Language**: ja **Scores**: Signal:4/5 | Depth:4/5 | Unique:4/5 | Practical:5/5 | Anti-Hype:5/5 **Main Journal**: 88/100 | **Annex Potential**: 87/100 | **Overall**: 88/100 **Topics**: [[LLM, Python, 自然言語処理, 編集距離, 推論性能向上]] LLMは確率的なモデルであるため、同じ入力でも異なる出力を生成する特性があります。この特性を活かし、複数回推論を行い最良の結果を選択することで、推論性能を向上させることが可能です。本記事では、LLMの出力テキストリストから最適なテキストを選ぶ方法を、出力形式に応じて二つのケースに分けて解説しています。 一つは、出力テキストが特定のカテゴリー候補からサンプリングされる場合です。このケースでは、同一タスクに対して複数回推論を行い、最も頻度が高い出力を最終結果とする「Self-Consistency」が有効であると述べられています。これは、数学オリンピックの問題をAIに解かせるKaggleコンペでも採用された実績のある手法です。 もう一つ、そして本記事の主要なテーマは、出力テキストが特定のカテゴリー候補からサンプリング「されない」場合です。例えば、GitHubリポジトリのIssue解決を目指すKaggle Konwinski Prizeのように、LLMの出力が修正パッチ(プログラムコード)のような自由生成テキストである場合、Self-Consistencyは最頻値を特定できないため適用が困難です。 この課題に対し、著者のチームはKaggle Konwinski Prizeで15位に入賞したソリューションにおいて「編集距離選択」アルゴリズムを考案しました。このアルゴリズムは、候補テキストの中から他の全候補テキストとの総編集距離が最も小さいテキストを選択するというものです。これにより、最も代表的で平均化されたテキストが選ばれ、外れ値が効果的に除外される利点があります。 記事では、`SelectionAlgorithm`クラスとしてPythonによる具体的な実装コードが提示されており、「index」「length」「median」といった一般的な選択アルゴリズムに加え、核となる「edit_distance」選択が詳細に実装されています。特に、単語単位のLevenshtein距離(編集距離)を計算する`calculate_edit_distance`メソッドの実装は、本アルゴリズムの肝となっています。テストコードも合わせて提供されており、多様な候補リストに対する各選択アルゴリズムの挙動や、多言語対応、最小候補数、単語数制限などのエッジケースに対する堅牢性が示されています。 この「編集距離選択」アプローチは、コード生成や長文生成など、LLMが自由な形式のテキストを出力する多くのシナリオで、その出力品質を実用的に向上させる強力な手段となります。