アルゴリズム機械学習自然言語処理

ビーム探索

びーむたんさく · Beam Search
12 views

ビーム探索(Beam Search)は、自然言語処理のテキスト生成などで用いられる探索アルゴリズムです。各ステップで最も確率の高い上位候補(ビーム幅)のみを保持しながら探索を進めることで、計算量を抑えつつ、貪欲法よりも高品質な文を生成できます。完全な最適解を保証するわけではありませんが、実用性と効率性のバランスに優れています。

ビーム探索とは

ビーム探索とは、自然言語処理の文章生成や機械翻訳において、次に続く単語の候補を探索する際、常に尤度(もっともらしさ)の高い上位「K個」(ビーム幅と呼ばれる定数)の候補だけに絞り込んで探索を進めるヒューリスティックな探索アルゴリズムです。

詳しく解説

ビーム探索は、主にシーケンス生成(Sequence-to-Sequenceモデルなど)において、出力シーケンスの全体の確率を最大化するために使用されます。文を生成する際、1語ずつ確率の高い単語を選択していく「貪欲法」では、局所的な最適解に陥りやすく、全体として不自然な文章になることがあります。一方で、すべての単語の組み合わせを網羅する「全探索」は、語彙数が増えると計算量が指数関数的に増大し、現実的ではありません。ビーム探索はこれらの中間に位置する手法です。各ステップで一時的に保持する候補数(ビーム幅 K)を事前に設定し、スコアの高い上位K個の経路(ビーム)のみを残して次のステップに進みます。これにより、現実的な計算時間とメモリ使用量で、貪欲法よりも自然で精度の高いテキスト生成を実現しています。

具体例・使われ方

代表的な利用例として、機械翻訳や文章要約、音声認識のデコーディングフェーズが挙げられます。例えば、「私は」の後に続く単語を予測する際、ビーム幅を「3」に設定していると、「学校に(確率0.5)」「リンゴを(確率0.3)」「本を(確率0.1)」という上位3つの候補を保持します。次のステップでは、これら3つの候補それぞれからさらに次の単語を予測し、合算した確率スコアが最も高い上位3つの組み合わせを再び選び出します。このプロセスを文末トークンが出現するまで繰り返すことで、最終的に最も自然な翻訳文や要約文を出力します。

似た用語との違い

ビーム探索は「貪欲法」や「全探索」とよく対比されます。貪欲法は常にビーム幅が「1」である特別なビーム探索と言えます。処理速度は最速ですが、途中で選択を誤ると修正できません。全探索はすべての可能性を検証するため、理論上の最適解(厳密解)を必ず見つけられますが、計算量が膨大すぎて実質的に不可能です。ビーム探索は、ビーム幅 K を調整することで、貪欲法の「速さ」と全探索の「正確さ」のトレードオフを制御できます。また、多様な文章を生成するためにランダム性を取り入れるサンプリング手法とも異なり、ビーム探索は決定論的にスコアの高い出力を優先します。

注意点

ビーム探索の注意点として、必ずしも全体の最適解が保証されるわけではない(近似解である)点が挙げられます。また、ビーム幅を大きくしすぎると計算コスト(メモリと処理時間)が増大するだけでなく、生成される文章が短く、平凡で退屈な内容に偏る傾向が指摘されています。そのため、実務では文章の長さを調整する長さペナルティなどのハイパーパラメータ調整や、多様性を確保するための工夫が併せて導入されることが一般的です。

更新日時: 2026年10月1日 05:30