seq2seq聊天機(jī)器人中,輸入上句話,下句話是什么訓(xùn)練出來的?
輸入上句話,轉(zhuǎn)化為詞向量,模型訓(xùn)練后,對(duì)應(yīng)上句話的每個(gè)字,會(huì)從語料庫(kù)中找出對(duì)應(yīng)這個(gè)字出現(xiàn)概率最高的字,然后拼成下句話
整個(gè)步驟:
1.數(shù)據(jù)預(yù)處理,獲取語料,xx格式,將對(duì)話分成問答train_encode.vec,創(chuàng)建詞匯表,讀到數(shù)據(jù)庫(kù)中,再分桶
2.模型框架搭建,訓(xùn)練,并將訓(xùn)練好的模型參數(shù)進(jìn)行保存。
3.加載模型,預(yù)測(cè)模型效果
https://blog.csdn.net/a18852867035/article/details/53816030
一、神經(jīng)網(wǎng)絡(luò):
DNN、RNN是幫你做特征工程,怎么去提取特征,并且?guī)湍惆言瓉淼木仃囅∈杌?br>
而不是分類,分類是全連接層的softmax
二、DNN:
神經(jīng)網(wǎng)絡(luò)用圖像去提取特征,都是用像素去提取,像素是圖像的最小單元。
數(shù)據(jù)輸入層,也可以叫feature map
卷積過程:
將一個(gè)55的feature map(或者input layer)用一個(gè)33的卷積核,去進(jìn)行卷積操作。
原始的卷積核的w是隨機(jī)生成的(符合標(biāo)準(zhǔn)正態(tài)分布),得到一個(gè)3*3的卷積層。
步長(zhǎng)stride,公式 (5-3)/1+1,第一個(gè)1是步長(zhǎng)
如果步長(zhǎng)取3,2/3除不盡,有兩種,向上取整,或者向下。
如果不夠的還想保留,那么向上取整,超過邊界的部分就補(bǔ)0,
如果不想要了,就向下取整,多余的部分直接丟棄
卷積+激勵(lì),做稀疏化。激勵(lì)層之后,池化做進(jìn)一步的降維。
降維用到的感知野,一般是2*2的,因?yàn)榭梢越党梢话搿?/p>
卷積核里面是w1-w9,但是感知野里面是沒有參數(shù)的。一般取最大或平均。
感知野一般步長(zhǎng)=2,感知也一般取22,44,或6*6.
公式 (3-2)/2+1,除不盡的處理方法同上
cnn分為兩個(gè)部分:
卷積部分:卷積+池化,完成特征工程
全連接部分:完成分類
池化后,可以與全連接層之間加上隱層。
如果池化后是44的,需要resize成161,因?yàn)檫@里只能是一維的
上面的例子,如果用傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),w參數(shù)會(huì)有25*9=225個(gè),而用卷積,
只有隨機(jī)初始化的9個(gè)w參數(shù),9個(gè)參數(shù)在一次卷積過程中是共享的。
卷積可以降低網(wǎng)絡(luò)的復(fù)雜度。同時(shí)解決了局部像素?zé)o關(guān)特征共同映射的問題,
使得局部圖像屬性更加凸顯。
卷積核越小越好,因?yàn)椋?,w參數(shù)會(huì)更少。2,不會(huì)影響圖像的效果。
當(dāng)然,大的卷積核收斂快,小的收斂慢,但是小的精度可以保證,大的精度可能下降
后面的googleNet,resNet大量使用1*1的卷積,同時(shí)網(wǎng)絡(luò)也加深,會(huì)達(dá)到154層
池化到全連接有個(gè)resizie,池化不會(huì)引入新的參數(shù),只是把原來的數(shù)據(jù)砍一半
反向傳播 學(xué)習(xí)到池化這一層就夠了。池化的最大值是會(huì)記住位置的額
面試回答:全連接部分和dnn一樣,唯一的區(qū)別是池化部分,梯度向之前poling最大值的標(biāo)記位去傳導(dǎo)梯度,再往前就超綱了,設(shè)計(jì)矩陣。
用max的原因是,在反向bp的時(shí)候,max是平均值計(jì)算量的1/4
LeNet比較靈活,CNN+softmax
卷積神經(jīng)網(wǎng)絡(luò)的好處,輸入的圖像尺寸可以是任意的,全連接不是任意的
三、RNN:
跟記憶性有關(guān)的,都可以用遞歸神經(jīng)網(wǎng)絡(luò)
有三個(gè)時(shí)刻,三套參數(shù),但是模型只有一套。
用softmax,輸出的是 多個(gè)詞對(duì)應(yīng)的概率
卷積,一個(gè)輸入代表一張圖,遞歸,一個(gè)輸入代表一句話,一句話有幾個(gè)詞就有幾個(gè)樣本
其中f可以是tanh,relu,logistic等激活函數(shù),g通常是softmax也可以是其他。 值得注意的是,我們說遞歸神經(jīng)網(wǎng)絡(luò)擁有記憶能力,而這種能力就是通過W 將以往的輸入狀態(tài)進(jìn)行總結(jié),而作為下次輸入的輔助??梢赃@樣理解隱藏狀 態(tài):h=f(現(xiàn)有的輸入+過去記憶總結(jié))
反向更新:
DNN只會(huì)更新在網(wǎng)絡(luò)深度方向上的w; RNN在深度d方向上的權(quán)重v、u,在時(shí)序t方向上的權(quán)重w。求導(dǎo)鏈?zhǔn)椒▌t,要分開對(duì)w,u求偏導(dǎo)
共享參數(shù):
t-1,t,t+1時(shí)刻共用一套模型。
Relu容易產(chǎn)生梯度爆炸,sigmoid容易產(chǎn)生梯度消失。
梯度消失原因:網(wǎng)絡(luò)太深,在進(jìn)行反向傳播的時(shí)候,往前傳遞一次,c就變小一點(diǎn),網(wǎng)絡(luò)太深,前面的c就會(huì)變得非常小,甚至趨于零,導(dǎo)致前面幾層網(wǎng)絡(luò)的權(quán)重?zé)o法更新,從而減少模型預(yù)測(cè)的精度。
LSTM的思想:就是反向傳播時(shí)前面幾層不需要梯度更新,就把參數(shù)停在某一層,不再向前傳播
“我是中國(guó)人,我今天要去上課”,反向跟新的時(shí)候,只需要更新到,部分就停止,bp的路徑變短了,就會(huì)減少梯度消失的風(fēng)險(xiǎn)。
而殘差神經(jīng)網(wǎng)絡(luò)的方式不一樣:在正向傳播的過程中,把c不斷地去增大,每傳播兩層,就增加一次feature map的值,所以一般只用來處理圖像。
如果兩個(gè)詞的相關(guān)性比較大,那么權(quán)重相加再加個(gè)偏置,做sigmoid激活的概率越趨近于1.
Sigmoid(w1+u2+b),可以設(shè)計(jì)很多sigmoid或者tanh函數(shù),來判斷某兩個(gè)詞是不是有關(guān)。
防止梯度爆炸:
gradient clipping,也就 是當(dāng)你計(jì)算的梯度超過閾值c的或者小于閾值?c時(shí)候,便把此時(shí)的梯度設(shè)置 成c或?c。
F(x) = min(x,c) x>0
F(x) = max(x,-c) x<0
LSTM:
長(zhǎng)時(shí)依賴:文本的方向就是RNN的時(shí)間t方向
A是在去隱層的路上設(shè)置的關(guān)卡。
有兩個(gè)輸入,初始化為1或0,不用管。
上面的輸入,高架暢通無阻,將上面一個(gè)詞的信息,傳遞到下面的詞
下面的一條,經(jīng)過各種各樣的輸入,來控制上面一條。如果關(guān)系比較大,就讓上面的通過,如果關(guān)系比較小,就通過一小部分,控制輸入多少。(0-1)
第一道門決定:傳多少過來。第二道門:關(guān)系越近的+1,關(guān)系越小的-1,功率縮放機(jī),強(qiáng)的更強(qiáng),弱的更弱。第三道門,一部分直接傳下去(下一個(gè)A),另一部分經(jīng)過sig和tanh,直接作為輸出到ht,上面輸入的信息比下面多一點(diǎn)
比較重要的:RNN自身特點(diǎn),LSTM、GRU、雙向循環(huán)
雙向循環(huán),如圖,完形填空的場(chǎng)景,“花鳥一床書”,
正向的AI是A0和x1所得,先放在這里,然后等反向的A1”=f(W”A2”+U”X2)
得到了A1和A1”,相加得到輸出y1
四、激活函數(shù):
激活,有0產(chǎn)生,相當(dāng)于對(duì)矩陣稀疏化。如果是relu,則(0,+無窮大)
如果是sigmoid/softmax,就是(0,1)
CNN用到激活函數(shù)的兩個(gè)地方,
1.卷積之后的激活層:relu
2.全連接層:softmax,如果中間加隱層,繼續(xù)用sigmoid或relu
五、Dropout: 只在fc全連接層使用,不在卷積網(wǎng)絡(luò)去做。
droupourt只能在全連接層做,也就是fc
adam會(huì)隨著時(shí)間自己去調(diào)節(jié)學(xué)習(xí)率,初始值可以給0.0001.
深度學(xué)習(xí)不建議交叉驗(yàn)證去試學(xué)習(xí)率,因?yàn)檫\(yùn)算速度慢
網(wǎng)絡(luò)退化:在訓(xùn)練集和測(cè)試集上的效果都不好。是由于梯度消失引起的。過欠擬合是由于矩陣稀疏化沒有做徹底。
(不收斂的圖像比較粗糙,不平滑,不收斂也是稀疏化沒做好,或者卷積核設(shè)置太大,或者學(xué)習(xí)率、懲罰因子)
六、其他:
正則化推導(dǎo):
加了正則相之后,本來w就是變小的,我們的目標(biāo)是讓他變小,這里讓他在變小之前變的更小,減少的更快,加快收斂,
收斂就變快了。如果恰好抵消掉了前面的1,就變成0了,矩陣就變稀疏劃了。給的越小,收斂慢,給的大,收斂越快,
大到一定值,就稀疏畫了。l2是從一個(gè)方向讓w向0去收斂,l1是從正負(fù)兩個(gè)方向向0去收斂,目標(biāo)都是讓w變小
預(yù)處理:
1.去均值: x-均值
2.歸一化:有好幾種方式,比如 (x-min)/(max-min)
3.白化: (x-均值)/標(biāo)準(zhǔn)差
4.PCA
預(yù)處理這個(gè)部分用在哪里?
用在輸入[batch_size,224,224,3]x輸入時(shí),可以直接進(jìn)行卷積,也可以預(yù)處理完再進(jìn)行卷積,batch_size=一次循環(huán)輸入的圖片數(shù)量
工程上一般用1.去均值,后面幾種不用。
因?yàn)橄袼攸c(diǎn)是0-255,如果用0-255減去均值,比如均值是150,剩下的值就是-150到105
大的值與w相乘之后,收斂慢。
并且可以通過加上均值,得到原始矩陣。
PCA降維好像跟特征值和特征向量有關(guān)
LRN局部歸一化
圖像增強(qiáng):叫上采樣(對(duì)不嚴(yán)謹(jǐn)?shù)目梢杂脠D像增強(qiáng),但是像醫(yī)學(xué)這種就不可以)
下采樣,PCA?
七、面試的
w梯度的公式要記住
問卷積的優(yōu)點(diǎn),共享參數(shù),筆記上兩點(diǎn)
三張圖片
卷積可解釋,因?yàn)樵降胶竺娴狞c(diǎn),向區(qū)分度比較大的地方收斂。這個(gè)點(diǎn)是當(dāng)前幾張圖片的全局最優(yōu)點(diǎn)
八、GAN
納什均衡點(diǎn)
兩個(gè)神經(jīng)網(wǎng)絡(luò),判別模型的輸入是生成模型的輸出
概率=0.5,不知道是假還是在真,就是真
G生成模型是無監(jiān)督的,D判別模型是有監(jiān)督的,加起來是半監(jiān)督的
訓(xùn)練過程:
G先輸入任意的隨機(jī)變量點(diǎn),隨機(jī)numpy或tensorflow隨機(jī)產(chǎn)生一個(gè)100維的數(shù)
G生成之后出入到D中,D在真實(shí)數(shù)據(jù)里去采樣,采樣的數(shù)據(jù)生成一個(gè)y值,G生成一個(gè)y,只要y-y存在生誤差,就更新D模型,也更新G模型。直到y(tǒng)-y^之間的損失小于某個(gè)值,模型停止,這個(gè)時(shí)候?qū)㈦S機(jī)變量帶入G模型的時(shí)候,生成的值就和真實(shí)值非常相似
需要訓(xùn)練D模型
G的初始值有兩種,如果是隨機(jī)變量,則最后的模型和真實(shí)值差不多一樣,如果是輸入的本來就是一個(gè)人的臉,則是風(fēng)格遷移,也就是常見的人臉互換,臉會(huì)含有這個(gè)臉的屬性,但不會(huì)完全一樣。
要一樣,只能輸入隨機(jī)變量,要不一樣風(fēng)格遷移(融合),就輸入原來的圖片
GAN就是增強(qiáng)這樣一個(gè)效果,自我訓(xùn)練,類似于強(qiáng)化學(xué)習(xí),直接讓他做,可能做不了
注意:D模型不是一個(gè)二分類器,它會(huì)產(chǎn)生一個(gè)損失函數(shù)。因?yàn)镈中的w權(quán)重也要更新的,
W d開始的時(shí)候并沒有被訓(xùn)練好,它也要被訓(xùn)練的,一個(gè)沒訓(xùn)練好的模型還不能稱之為訓(xùn)練器。
馬爾科夫鏈要生成聯(lián)合概率,計(jì)算量比較大。
機(jī)器學(xué)習(xí)(用幾萬個(gè)方程去解幾個(gè)未知數(shù))和深度學(xué)習(xí)中都是約等于,只有樸素貝葉斯是等于。因?yàn)榈忍?hào)就是過擬合
GAN最后求的是G模型,不是D模型。D模型是幫助我們求參數(shù)的。
損失函數(shù):
二分類就用交叉熵,不用softmax。
RBF徑向基,就是SVM的高斯核函數(shù)。SVM是最接近神經(jīng)網(wǎng)絡(luò)的模型
極大極小博弈。
面試的時(shí)候按照課件上0.5去說,工程上可以簡(jiǎn)化。
上采樣卷積。反卷積采樣
九、seq2seq
現(xiàn)有的模型只能處理人文科學(xué),在專業(yè)領(lǐng)域,有些名詞是不能分割的(非典,急性上呼吸道感染),不能直接使用。谷歌有框架,但是不開源,細(xì)節(jié)不知道。
垂直領(lǐng)域,特定的領(lǐng)域訓(xùn)練特定的機(jī)器人。
上面一句話濃縮成一個(gè)數(shù)值,到下面一句話再解碼出來。
就是中間態(tài)c。
timestep時(shí)序(方向?yàn)槲谋緜鞑シ较颍?,下句要比上句長(zhǎng),差10個(gè)字
項(xiàng)目的精確度不是很高的時(shí)候用字,高的時(shí)候用詞。常用字2000-3000個(gè),
但是詞是由字排列的,大約3-5萬個(gè)。
向Encoder輸入一個(gè)字、詞,精確的話,映射成一個(gè)向量,不精確的話映射成一個(gè)數(shù)值。
“月 明 星 稀”上句輸完之后,緊接著輸出一個(gè)語義向量c,c包含了前面四個(gè)字的意思的集合。 對(duì)照ppt。
c是中間態(tài)。將c解碼出來,就是繞樹三匝。至于怎么解碼出來的 。
可以將c也作為Decoder(代碼中由體現(xiàn))
整個(gè)Seq2seq有兩個(gè)lstm,左邊右邊各一個(gè),因?yàn)檫@是時(shí)序上的,到某一時(shí)刻,之前的就沒了。時(shí)序上到 樹 的時(shí)候,繞 就沒了,繞的輸出其實(shí)是樹,這個(gè)樹被存在一個(gè)list中。,每輸出一個(gè)值就把它存起來,最后一起輸出來。所以下句不是四個(gè)lstm,而是一個(gè)。
H2有三個(gè)輸入: h1(上一個(gè)的隱態(tài),hidding層的輸出),鳥(y1:上一個(gè)的輸出),c。解碼階段除了h1(c和h0重合),每個(gè)h都有三個(gè)輸入。
書的后面還有eos。編碼階段長(zhǎng)度為5,解碼階段為6,始終多一個(gè)eos
Ppt上:
上一句應(yīng)該倒序,因?yàn)槭菍?duì)仗的。精度可以提高不少。
c應(yīng)該與下句每一個(gè)相連;最后有eos
英文需要兩套字典。EOS也要放在字典中,映射成一個(gè)數(shù)值。
Cxt,hXT其實(shí)就是c,隱態(tài)和c重疊了.
4層lstm: 在deep方向。
面試陷阱,左邊沒有頭,右邊才有。整個(gè)圖,從左到右,從上到下傳遞。
最后取的輸出結(jié)果是上面一層。
有三個(gè)序列:編碼階段的輸入,解碼階段的輸入(因?yàn)榻獯a階段也需要輸入),解碼階段的輸出
最基礎(chǔ)的seq2seq模型包括三部分:編碼、解碼、語義編碼中間態(tài)(面試時(shí)說)。seq2seq最小的構(gòu)成單元就是lstm和gru。
c解碼階段為何這樣準(zhǔn)確:
1.編碼階段除了c的解碼之外,還要有它的輸入序列,這個(gè)輸入序列就是上一個(gè)解碼解碼的輸出
2.前面的隱層態(tài)
3.每個(gè)都要輸入c,三個(gè)變量來控制的,所以比較精準(zhǔn)
Attention(注意力機(jī)制): 在上面模型上加的一個(gè)控制因素,讓模型更加精確,不是一個(gè)新的框架.Head
在上一句話,每個(gè)h1,h2,h3,h4,h5都加一個(gè)參數(shù)a1,a2,a3,a4,a5。比如一和三是對(duì)仗的,那到了一的時(shí)候,三的系數(shù)a3就設(shè)置大一點(diǎn),其他的設(shè)置很小,甚至為0。這個(gè)是“一”輸入的第四個(gè)值。(如果不是對(duì)仗,每個(gè)a都要保留,對(duì)仗可以存在為0的情況)
兩種做法:上一句的a全部做,全部訓(xùn)練;二是隨機(jī)采樣,選擇部分
H2就有四個(gè)輸入:上一個(gè)的輸出,上一個(gè)的隱層,c,Attention機(jī)制(求和Aij * hj)
生成模型:要算后面一個(gè)值的時(shí)候,先把聯(lián)合概率算出來,根據(jù)聯(lián)合概率和先驗(yàn)概率,來計(jì)算后驗(yàn)概率。(貝葉斯,馬爾可夫,seq2sqe)
判別模型:不需要計(jì)算全(聯(lián)合)概率
Seq2Seq
一、場(chǎng)景
現(xiàn)有的模型只能處理人文科學(xué),在專業(yè)領(lǐng)域,有些名詞是不能分割的(非典,急性上呼吸道感染),不能直接使用。谷歌有框架,但是不開源,細(xì)節(jié)不知道。
垂直領(lǐng)域,特定的領(lǐng)域訓(xùn)練特定的機(jī)器人。
對(duì)話機(jī)器中人:
我們提(輸入)一個(gè)問題,機(jī)器會(huì)自動(dòng)生成(輸出)回答。在以往的很多模型中,我們一般都說輸入特征矩陣,每個(gè)樣本對(duì)應(yīng)矩陣中的某一行。就是說,無論是第一個(gè)樣本還是
最后一個(gè)樣本,他們都有一樣的特征維度。
機(jī)器翻譯英文需要兩套字典。
二、關(guān)于詞的選用
Time Step時(shí)序(方向?yàn)槲谋緜鞑シ较颍?,一般下句要比上句長(zhǎng),差10個(gè)字。
項(xiàng)目的精確度不是很高的時(shí)候用字,高的時(shí)候用詞。常用字2000-3000個(gè),但是詞是由字排列的,大約3-5萬個(gè)。
三、過程
最基礎(chǔ)的seq2seq模型包括三部分:編碼Encoder、解碼 Decoder 、語義編碼中間態(tài)c(面試時(shí)說,也就是語義向量)。seq2seq最小的構(gòu)成單元就是LSTM和GRU。
編碼階段:
Encoder是一個(gè)RNN Cell(RNN ,GRU,LSTM等)結(jié)構(gòu)。每個(gè)Time Step,向 Encoder 中輸入表示這個(gè)字/詞的一個(gè)實(shí)數(shù)向量,直到輸入這個(gè)句子的最后一個(gè)字/詞 XT ,然后輸出整個(gè)句子的語義向量 c(c=h XT)。
RNN 的特點(diǎn)就是把前面每一步的輸入信息都考慮進(jìn)來了,理論上這個(gè) c 就能夠把整個(gè)句子的信息都包含了,可以把c當(dāng)成這個(gè)句子的一個(gè)語義表示,也就是一個(gè)句向量。
解碼階段:
在Encoder中得到了一個(gè)涵蓋了整個(gè)句子信息的句向量c。然后一步一步的從c中抽取信息。首先給Decoder輸入一個(gè)啟動(dòng)信號(hào) y0,如特殊符號(hào)<START>, 然后Decoder根據(jù)h<0>,y0,c ,就能夠計(jì)算出y1的概率分布,同理,根據(jù) h<1>,y1,c 可以計(jì)算y2 的概率分布。直到預(yù)測(cè)到結(jié)束的特殊標(biāo)志 <END>,才結(jié)束預(yù)測(cè)。
【其中】
H <1>是上一個(gè)的隱態(tài),也就是Hiding層的輸出,y1是上一個(gè)的輸出,c。
解碼階段任務(wù)是根據(jù)句子X的中間語義表示C和之前已經(jīng)生成的歷史信息y1,y2….yi-1來生成i時(shí)刻要生成的單詞 yi:每個(gè)yi都依次這么產(chǎn)生,那么看起來就是整個(gè)系統(tǒng)根據(jù)輸入句子X生成了目標(biāo)句子Y。
H2的四個(gè)輸入:上一個(gè)的輸出,上一個(gè)的隱層,c,Attention機(jī)制(求和Aij * hj)
總結(jié):
Encoder Cell 最后 一個(gè)時(shí)刻的狀態(tài) [c XT, h XT] 就是上面說的中間語義向量 c ,它將作 為 Decoder Cell 的初始狀態(tài)。然后在 Decoder Cell 中,每個(gè)時(shí)刻的 輸出將會(huì)作為下一個(gè)時(shí)刻的輸入。以此類推,直到 Decoder Cell某個(gè)時(shí)刻預(yù)測(cè)輸出特殊符號(hào) <END> 結(jié)束。
LSTM: 整個(gè)Seq2seq有兩個(gè)LSTM,左邊右邊各一個(gè),編碼和解碼各一個(gè),因?yàn)檫@兩個(gè)LSTM參數(shù)不同。
四、舉例
[圖片上傳失敗...(image-7a354-1556200563492)]
風(fēng)云三尺劍,花鳥一床書:
H2有三個(gè)輸入: h1(上一個(gè)的隱態(tài),hiding層的輸出),鳥(y1:上一個(gè)的輸出),c。
解碼階段除了h1只有兩個(gè)(c和h0重合,隱態(tài)和c重疊了),每個(gè)h都有三個(gè)輸入。書的后面還有EOS。編碼階段長(zhǎng)度為5,解碼階段為6,始終多一個(gè)EOS。
C應(yīng)該與下句每一個(gè)相連;最后有EOS。
上一句應(yīng)該倒序,因?yàn)槭菍?duì)仗的。精度可以提高不少。且這樣的處理使得模型能夠很好地處理長(zhǎng)句子。
月明星稀,繞樹三匝:
向Encoder輸入一個(gè)字、詞,精確的話映射成一個(gè)向量,不精確的話映射成一個(gè)數(shù)值。
“月明星稀”上句輸完之后,緊接著輸出一個(gè)語義向量c,c包含了前面四個(gè)字的意思集合。
上面一句話濃縮成一個(gè)數(shù)值,到下面一句話再解碼出來。就是中間態(tài)c。將c解碼出來,就是繞樹三匝。至于怎么解碼出來的??梢詫也作為Decoder(代碼中由體現(xiàn))。
五、原理
LSTM層次:
整個(gè)Seq2seq有兩個(gè)LSTM,左邊右邊各一個(gè),編碼和解碼各一個(gè),因?yàn)檫@兩個(gè)LSTM參數(shù)不同。不是四個(gè)因?yàn)檫@是時(shí)序上的,到某一時(shí)刻,之前的就沒了。時(shí)序上到 樹 的時(shí)候,繞 就沒了,繞的輸出其實(shí)是樹,這個(gè)樹被存在一個(gè)list中。每輸出一個(gè)值就把它存起來,最后一起輸出來。所以下句不是四個(gè)LSTM,而是一個(gè)。
解碼階段為何這樣準(zhǔn)確:
主要就是因?yàn)樗巳齻€(gè)輸入,后面加上attention就是四個(gè)。三個(gè)變量來控制的,所以比較精準(zhǔn)。
1.編碼階段每個(gè)都要輸入c,
2.除了c的解碼之外,還要有它的輸入序列,這個(gè)輸入序列就是上一個(gè)解碼的輸出
3.前面的隱層態(tài)
4.attention機(jī)制(求和Aij * hj)
[圖片上傳失敗...(image-aef103-1556200563491)]
Attention(注意力機(jī)制):
LSTM雖然具有記憶性,但是當(dāng)Encoder階段輸入序列過長(zhǎng)時(shí),解碼階段的LSTM也無法很好地針對(duì)最早的輸入序列解碼,提出Attention注意力機(jī)制。
在Decoder階段每一步解碼,都能夠有一個(gè)輸入,對(duì)輸入序列所有隱藏層的信息h_1,h_2,…h(huán)_T x進(jìn)行加權(quán)求和。打個(gè)比方就是每次在預(yù)測(cè)下一個(gè)詞時(shí)都會(huì)把所有輸入序列的隱藏層信息都看一遍,決定預(yù)測(cè)當(dāng)前詞時(shí)和輸入序列的那些詞最相關(guān)。
Attention機(jī)制代表了在解碼Decoder階段,每次都會(huì)輸入一個(gè)Context上下文的向量Ci, 隱藏層的新狀態(tài)Si根據(jù)上一步的狀態(tài)Si-1, Y i, Ci 三者的一個(gè)非線性函數(shù)得出。
舉例:
在上面模型上加的一個(gè)控制因素,讓模型更加精確,不是一個(gè)新的框架.Head
在上一句話,每個(gè)h1,h2,h3,h4,h5都加一個(gè)參數(shù)a1,a2,a3,a4,a5。比如一和三是對(duì)仗的,那到了一的時(shí)候,三的系數(shù)a3就設(shè)置大一點(diǎn),其他的設(shè)置很小,甚至為0。這個(gè)是“一”輸入的第四個(gè)值。(如果不是對(duì)仗,每個(gè)a都要保留,對(duì)仗可以存在為0的情況)
有兩種做法:上一句的a全部做,全部訓(xùn)練;二是隨機(jī)采樣,選擇部分。
Soft Attention和Hard Attention
Soft Attention:每一步都對(duì)輸入序列的所有隱藏層hj(j=1….Tx) 計(jì)算權(quán)重再加權(quán)平均的方法,Hard Attention:是一種隨機(jī)過程,每次以一定概率抽樣,以一定概率選擇某一個(gè)隱藏層 hj*。
六、公式和其他
1.生成模型:要算后面一個(gè)值的時(shí)候,先把聯(lián)合概率算出來,根據(jù)聯(lián)合概率和先驗(yàn)概率,來計(jì)算后驗(yàn)概率。(貝葉斯,馬爾可夫,seq2sqe)
判別模型:不需要計(jì)算全 (聯(lián)合)概率
2.詞嵌入 降維/
3.面試:四層LSTM: 在deep方向縱向;兩個(gè)LSTM,在Time Step方向橫向。
面試陷阱,左邊沒有頭,右邊才有。整個(gè)圖,從左到右,從上到下傳遞。
最后取的輸出結(jié)果是上面一層。
有三個(gè)序列:編碼階段的輸入,解碼階段的輸入(因?yàn)榻獯a階段也需要輸入),解碼階段的輸出