🏷️sec_beam-search
:numref:sec_seq2seq
'te, özel dizi sonu andıcı, "<eos>", tahmin edilene kadar çıktı dizisini andıç andıç ile tahmin ettik. Bu bölümde, bu açgözlü arama stratejisini formüle dökmeye ve onunla ilgili sorunları araştırmaya başlayacağız, daha sonra bu stratejiyi diğer seçeneklerle karşılaştıracağız: Kapsamlı arama (exhaustive search) ve ışın arama (beam search).
Açgözlü aramaya biçimsel bir girişten önce, :numref:sec_seq2seq
'ten aynı matematiksel gösterimi kullanarak arama problemini formülleştirelim. Herhangi bir
İlk olarak, basit bir stratejiye bir göz atalım: Açgözlü arama. Bu strateji :numref:sec_seq2seq
'teki dizileri tahmin etmek için kullanılmıştır. Açgözlü aramada, çıktı dizisinin herhangi bir
$$y_{t'} = \operatorname*{argmax}{y \in \mathcal{Y}} P(y \mid y_1, \ldots, y{t'-1}, \mathbf{c}),$$
"<eos>" yayıldıktan veya çıktı dizisi maksimum uzunluğuna ulaştıktan sonra çıktı dizisi tamamlanmış olur.
Peki açgözlü arama ile ne yanlış gidebilir? Aslında, en iyi dizi maksimum
Bir örnekle gösterelim. Çıktı sözlüğünde “A”, “B”, “C” ve "<eos>" dört andıcı olduğunu varsayalım. :numref:fig_s2s-prob1
'te, her zaman adımının altındaki dört sayı, o zaman adımında sırasıyla “A”, “B”, “C” ve "<eos>" üretme koşullu olasılıklarını temsil eder. Her adımda, açgözlü arama, en yüksek koşullu olasılığa sahip andıcı seçer. Bu nedenle, “A”, “B”, “C” ve "<eos>" çıktı dizisi :numref:fig_s2s-prob1
'te tahmin edilecektir. Bu çıktı dizisinin koşullu olasılığı
Sonra, :numref:fig_s2s-prob2
'teki başka bir örneğe bakalım. :numref:fig_s2s-prob1
'ün aksine, zaman adımında :numref:fig_s2s-prob2
'te ikinci en yüksek koşullu olasılığa sahip “C” andıcını seçiyoruz. 3. zaman adımı dayandığı zaman adımları 1 ve 2, çıktı dizileri :numref:fig_s2s-prob1
'te “A” ve “B”'den :numref:fig_s2s-prob2
'de “A” ve “C”'ye değiştiğinden, :numref:fig_s2s-prob2
'de her andıcın koşullu olasılığı 3. zaman adımında da değişti. 3. zaman adımında “B” andıcını seçtiğimizi varsayalım. Şimdi adım 4, :numref:fig_s2s-prob1
'te ilk üç zaman adımın çıktısı "A", "B" ve "C" altdizisinden farklı olan “A”, “C” ve “B” üzerinde koşulludur. Bu nedenle, :numref:fig_s2s-prob2
'teki 4. adımda her andıcı üretmenin koşullu olasılığı da :numref:fig_s2s-prob1
'teki durumdan farklıdır. Sonuç olarak, :numref:fig_s2s-prob2
'te “A”, “C”, “B” ve "<eos>" çıktı dizisinin koşullu olasılığı fig_s2s-prob1
'teki açgözlü aramadakinden daha büyüktür. Bu örnekte, açgözlü arama ile elde edilen “A”, “B”, “C” ve"<eos>" çıktı dizisi en uygun sıra değildir.
Amaç en uygun diziyi elde etmekse, kapsamlı arama kullanmayı düşünebiliriz: Olası tüm çıktı dizilerini koşullu olasılıklarıyla kapsamlı bir şekilde numaralandıralım, ardından en yüksek koşullu olasılığa sahip olanı çıktıyı alalım.
En iyi diziyi elde etmek için kapsamlı arama kullanabilsek de, hesaplama maliyeti
Sıra arama stratejileri ile ilgili kararlar, her iki uç da kolay sorularla birlikte bir spektrumda yatar. Eğer sadece doğruluk önemliyse? Açıkça görülüyor ki, kapsamlı arama. Ya sadece hesaplamalı maliyet önemliyse? Açıkça, açgözlü arama. Gerçek dünya uygulamaları genellikle bu iki uç arasında bir yerde karmaşık bir soru sorar.
Işın arama açgözlü aramanın geliştirilmiş bir versiyonudur. Işın boyutu adında bir
:numref:fig_beam-search
, bir örnek ile ışın arama sürecini gösterir. Çıktı kelime dağarcığının sadece beş öğe içerdiğini varsayalım:
ve bu on değer arasında en büyük ikisini seçeriz, diyelim ki
ve bu on değer arasında en büyük ikisini seçeriz, diyelim ki
Sonunda, bu altı diziye dayalı nihai aday çıktı dizileri kümesini elde ederiz (örneğin, “<eos>” ve sonrasındaki tüm parçaları atın). Ardından, çıktı dizisi olarak aşağıdaki skorun en yüksek seviyesine sahip diziyi seçeriz:
$$ \frac{1}{L^\alpha} \log P(y_1, \ldots, y_{L}\mid \mathbf{c}) = \frac{1}{L^\alpha} \sum_{t'=1}^L \log P(y_{t'} \mid y_1, \ldots, y_{t'-1}, \mathbf{c}),$$
:eqlabel:eq_beam-search-score
Burada eq_beam-search-score
toplamında daha fazla logaritmik terime sahip olduğundan, paydadaki
Işın aramasının hesaplama maliyeti
- Dizi arama stratejileri, açgözlü arama, kapsamlı arama ve ışın aramasını içerir.
- Işın arama, ışın boyutunun esnek seçimi ile hesaplama maliyetine karşılık doğruluk arasında bir denge sağlar.
- Kapsamlı aramayı özel bir ışın araması türü olarak ele alabilir miyiz? Neden ya da neden olmasın?
- :numref:
sec_seq2seq
'teki makine çeviri probleminde ışın aramasını uygulayın. Işın boyutu çeviri sonuçlarını ve tahmin hızını nasıl etkiler? - :numref:
sec_rnn_scratch
'te kullanıcı tarafından sağlanan önekleri takip eden metin üretmek için dil modelleme kullandık. Hangi tür bir arama stratejisi kullanılıyor? Bunu geliştirebilir misiniz?