?????作者簡(jiǎn)介:一位即將上大四,正專攻機(jī)器學(xué)習(xí)的保研er
??上期文章:機(jī)器學(xué)習(xí)&&深度學(xué)習(xí)——seq2seq實(shí)現(xiàn)機(jī)器翻譯(詳細(xì)實(shí)現(xiàn)與原理推導(dǎo))
??訂閱專欄:機(jī)器學(xué)習(xí)&&深度學(xué)習(xí)
希望文章對(duì)你們有所幫助
引入
上一節(jié)已經(jīng)實(shí)現(xiàn)了機(jī)器翻譯的模型訓(xùn)練和預(yù)測(cè),逐個(gè)預(yù)測(cè)輸出序列, 直到預(yù)測(cè)序列中出現(xiàn)特定的序列結(jié)束詞元eos,而對(duì)于預(yù)測(cè)序列的結(jié)果我們進(jìn)行了評(píng)估,發(fā)現(xiàn)了效果并不好。因?yàn)橹暗姆绞绞鞘褂昧素澬乃阉鞣绞?,這個(gè)搜索方式并不能使得全局上是優(yōu)秀的,甚至是非常差的。接下來(lái)將介紹搜索方式。
我們已經(jīng)知道,在任意的時(shí)間步,解碼器的輸出的概率取決于時(shí)間步之前的輸出子序列和對(duì)輸入序列的信息進(jìn)行編碼得到的上下文變量。為了量化計(jì)算代價(jià),用γ表示輸出詞表(包含eos),而|γ|顯然就是詞表大小。
除此之外,我們限制一下輸出序列的最大詞元數(shù)T’。
貪心搜索
對(duì)于輸出序列的每一個(gè)時(shí)間步t’,我們都將基于貪心搜索從γ中找到具有最高條件概率的詞元,即:
y
t
′
=
a
r
g
m
a
x
y
∈
γ
P
(
y
∣
y
1
,
.
.
.
,
y
t
′
?
1
,
c
)
y_{t^{'}}=argmax_{y∈γ}P(y|y_1,...,y_{t^{'}-1},c)
yt′?=argmaxy∈γ?P(y∣y1?,...,yt′?1?,c)
一旦輸出序列包含了eos或者已經(jīng)達(dá)到了最大長(zhǎng)度T’,則輸出完成。
上圖中的預(yù)測(cè)輸出序列是ABC和eos,這個(gè)輸出序列的條件概率就是0.5×0.4×0.4×0.6=0.048。
而如果我們?cè)诘诙€(gè)時(shí)間步換一下,換成C,那么可能AC后面跟著的A、B、C和eos的概率就會(huì)全變了,例如:
計(jì)算得出輸出序列ACB和eos的條件概率為0.054,大于之前的貪心方式得到的結(jié)果。搞過(guò)動(dòng)態(tài)規(guī)劃算法的朋友們都知道貪心就是很可能出現(xiàn)這種情況,所以貪心搜索本身就不是一個(gè)很好的搜索策略。
窮舉搜索
這個(gè)好理解,就是所有結(jié)果全部遍歷過(guò)去,這樣的話,我們絕對(duì)可以找到條件概率最高的一個(gè)。然而這樣的復(fù)雜度將會(huì)非常的大,計(jì)算量會(huì)達(dá)到:
O
(
∣
γ
∣
T
′
)
O(|γ|^{T^{'}})
O(∣γ∣T′)
因此在詞元數(shù)過(guò)多,或者預(yù)測(cè)序列的最大詞元數(shù)太大的話,這個(gè)方法簡(jiǎn)直是非常的慢。
束搜索
顯然,上面的可以得出一個(gè)簡(jiǎn)單的選擇策略:如果精度最重要,則顯然是窮舉搜索;如果計(jì)算成本最重要,則顯然是貪心搜索。而束搜索則是介于兩者之間的(算是貪心的一個(gè)改進(jìn)版本)。
它有一個(gè)超參數(shù),名為束寬,記為k。在每個(gè)時(shí)間步,我們都選擇具有最高條件概率的k個(gè)詞元,過(guò)程如下所示(束寬為2,最大長(zhǎng)度為3):
我們從這里面選出六個(gè)候選輸出序列:
(1)A;(2)C;(3)AB;(4)CE;(5)ABD;(6)CED
最后基于這六個(gè)序列, 我們獲得最終候選輸出序列集合。然后我們選擇其中條件概率乘積最高的序列作為輸出序列:
1
L
α
l
o
g
P
(
y
1
,
.
.
.
,
y
L
∣
c
)
=
1
L
α
∑
t
′
=
1
L
l
o
g
P
(
y
t
′
∣
y
1
,
.
.
.
,
y
t
′
?
1
,
c
)
\frac{1}{L^α}logP(y_1,...,y_L|c)=\frac{1}{L^α}\sum_{t^{'}=1}^LlogP(y_{t^{'}}|y_1,...,y_{t^{'}-1},c)
Lα1?logP(y1?,...,yL?∣c)=Lα1?t′=1∑L?logP(yt′?∣y1?,...,yt′?1?,c)
其中,L是最終候選序列的長(zhǎng)度,α通常設(shè)為0.75。這樣做是因?yàn)?,一個(gè)較長(zhǎng)的序列在求和中會(huì)有更多的對(duì)數(shù)項(xiàng),因此分母用來(lái)懲罰長(zhǎng)序列。
實(shí)際上,貪心搜索就可以看作是一種束寬為1的特殊類(lèi)型的束搜索。束搜索可以在正確率和計(jì)算代價(jià)之間進(jìn)行權(quán)衡。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-651220.html
小結(jié)
1、序列搜索策略包括貪心搜索、窮舉搜索和束搜索。
2、貪心搜索所選取序列的計(jì)算量最小,但精度相對(duì)較低。
3、窮舉搜索所選取序列的精度最高,但計(jì)算量最大。
4、束搜索通過(guò)靈活選擇束寬,在正確率和計(jì)算代價(jià)之間進(jìn)行權(quán)衡。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-651220.html
到了這里,關(guān)于機(jī)器學(xué)習(xí)&&深度學(xué)習(xí)——機(jī)器翻譯(序列生成策略)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!