• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      打造NLP文本分類深度學(xué)習(xí)方法庫(kù)

      2017-09-29 09:22:34編譯徐子淇李煜
      機(jī)器人產(chǎn)業(yè) 2017年5期
      關(guān)鍵詞:解碼器編碼器標(biāo)簽

      □編譯/徐子淇、李煜

      打造NLP文本分類深度學(xué)習(xí)方法庫(kù)

      □編譯/徐子淇、李煜

      這個(gè)庫(kù)的目的是探索用深度學(xué)習(xí)進(jìn)行NLP文本分類的方法。它具有文本分類的各種基準(zhǔn)模型。它還支持多標(biāo)簽分類,其中多標(biāo)簽與句子或文檔相關(guān)聯(lián)。

      雖然這些模型大都看似簡(jiǎn)單,可能不會(huì)讓你游刃有余地進(jìn)行這項(xiàng)文本分類任務(wù)。但是其中還是有一些非常經(jīng)典的模型,可以說(shuō)是非常適合作為基準(zhǔn)模型的。

      每個(gè)模型在模型類型下都有一個(gè)測(cè)試函數(shù)。

      我們探討了用兩個(gè)seq2seq模型(帶有注意的seq2seq模型,以及transformer:attention is all you need)進(jìn)行文本分類。同時(shí),這兩個(gè)模型也可以用于生成序列和其他任務(wù)。如果你的任務(wù)是多標(biāo)簽分類,那么你就可以將問(wèn)題轉(zhuǎn)化為序列生成。

      我們實(shí)現(xiàn)了一個(gè)記憶網(wǎng)絡(luò):循環(huán)實(shí)體網(wǎng)絡(luò)(recurrent entity network),追蹤世界的狀態(tài)。它用鍵值對(duì)塊(blocks of key-value pairs)作為記憶,并行運(yùn)行,從而獲得新的狀態(tài)。它可以用于使用上下文(或歷史)來(lái)回答建模問(wèn)題。例如,你可以讓模型讀取一些句子(作為文本),并提出一個(gè)問(wèn)題(作為查詢),然后請(qǐng)求模型預(yù)測(cè)答案;如果你像查詢一樣向其提供一些素材資源,那么它就可以進(jìn)行分類任務(wù)。Network)

      模型

      1. fastText

      2. TextCNN

      3. TextRNN

      4. RCNN

      5. 分層注意網(wǎng)絡(luò)(Hierarchical Attention Network)

      6. 具有注意的seq2seq模型(seq2seq with attention)

      7. Transformer("Attend Is All You Need")

      8. 動(dòng)態(tài)記憶網(wǎng)絡(luò)(Dynamic Memory

      9. 實(shí)體網(wǎng)絡(luò):追蹤世界的狀態(tài)

      其他模型

      1. BiLstm Text Relation

      2. Two CNN Text Relation

      3. BiLstm Text Relation Two RNN

      性能

      (多標(biāo)簽預(yù)測(cè)任務(wù),要求預(yù)測(cè)能夠達(dá)到前5名,300萬(wàn)訓(xùn)練數(shù)據(jù),滿分:0.5)

      注意:“HierAtteNetwork”是指Hierarchical Attention Network

      用途

      1. 模型在xxx_model.py中

      2. 運(yùn)行python xxx_train.py來(lái)訓(xùn)練模型

      3. 運(yùn)行python xxx_predict.py進(jìn)行推理(測(cè)試)

      每個(gè)模型在模型下都有一個(gè)測(cè)試方法。你可以先運(yùn)行測(cè)試方法檢查模型是否能正常工作。

      環(huán)境

      python 2.7+tensorflow 1.1

      (tensorflow 1.2也是可以應(yīng)用的;大多數(shù)模型也應(yīng)該在其他tensorflow版本中正常應(yīng)用,因?yàn)槲覀冊(cè)谀承┌姹局兄皇翘砹朔浅I俚奶卣髯兓蝗绻闶褂玫氖莗ython 3.5,只要更改print / try catch函數(shù),它也會(huì)運(yùn)行得很好。)

      注:一些util函數(shù)是在data_util.py中的;典型輸入如:“x1 x2 x3 x4 x5 label 323434”,其中“x1,x2”是單詞,“323434”是標(biāo)簽;它具有一個(gè)將預(yù)訓(xùn)練的單詞加載和分配嵌入到模型的函數(shù),其中單詞嵌入在word2vec或fastText中進(jìn)行預(yù)先訓(xùn)練。

      模型細(xì)節(jié)

      1.快速文本(fast Text)

      《用于高效文本分類的技巧》(Bag of Tricks for Efficient Text Classification)論文的實(shí)現(xiàn)。

      ① 使用bi-gram 或者tri-gram。

      ② 使用NCE損失,加速我們的softmax計(jì)算(不使用原始論文中的層次softmax)結(jié)果:性能與原始論文中的一樣好,速度也非???。

      查看:p5_fastTextB_model.py

      2.文本卷積神經(jīng)網(wǎng)絡(luò)(Text CNN)

      《用于句子分類的卷積神經(jīng)網(wǎng)絡(luò)》(Convolutional Neural Networks for Sentence Classification)論文的實(shí)現(xiàn)。

      結(jié)構(gòu):降維---> conv ---> 最大池化--->完全連接層--------> softmax。

      查看:p7_Text CNN_model.py

      為了能夠使用TextCNN獲得非常好的結(jié)果,你還需要仔細(xì)閱讀此論文“用于句子分類的卷積神經(jīng)網(wǎng)絡(luò)靈敏度分析(和從業(yè)者指南)”【A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for Sentence Classification】,它可以幫助你了解一些影響性能的相關(guān)見(jiàn)解。當(dāng)然,你還需要根據(jù)具體任務(wù)來(lái)更改某些設(shè)置。

      3.文本循環(huán)神經(jīng)網(wǎng)絡(luò)(Text RNN)

      結(jié)構(gòu):降維--->雙向lstm ---> concat輸出--->平均 -----> softmax。

      查看:p8_Text RNN_model.py

      4.雙向長(zhǎng)短期記憶網(wǎng)絡(luò)文本關(guān)系(BiLstm Text Relation)

      結(jié)構(gòu)與Text RNN相同。但輸入是被特別設(shè)計(jì)的。例如:輸入“這臺(tái)電腦多少錢(qián)?筆記本電腦的股票價(jià)格(how much is the computer? EOS price of laptop)”?!癊OS”是一個(gè)特殊的標(biāo)記,將問(wèn)題1和問(wèn)題2分開(kāi)。

      查看:p9_BiLstm Text Relation_model.py

      5.兩個(gè)卷積神經(jīng)網(wǎng)絡(luò)文本關(guān)系(two CNN Text Relation)

      結(jié)構(gòu):首先用兩個(gè)不同的卷積來(lái)提取兩個(gè)句子的特征,然后連接兩個(gè)函數(shù),使用線性變換層將映射輸出到目標(biāo)標(biāo)簽上,然后使用softmax。

      查看:p9_two CNN Text Relation_model.py

      6.雙長(zhǎng)短期記憶文本關(guān)系雙循環(huán)神經(jīng)網(wǎng)絡(luò)(BiLstm Text Relation Two RNN)

      結(jié)構(gòu):一個(gè)句子的一個(gè)雙向lstm(得到輸出1),另一個(gè)句子的另一個(gè)雙向lstm(得到輸出2),最終softmax(輸出1 M輸出2)。

      查看:p9_BiLstm Text Relation Two RNN_model.py

      有關(guān)更多詳細(xì)信息,你可以訪問(wèn):《Deep Learning for Chatbots》的第2部分—在Tensorflow中實(shí)現(xiàn)一個(gè)基于檢索的模型(Implementing a Retrieval-Based Model in Tensorflow)。

      7.循環(huán)卷積神經(jīng)網(wǎng)絡(luò)(RCNN)

      用于文本分類的循環(huán)卷積神經(jīng)網(wǎng)絡(luò)。

      《用于文本分類的循環(huán)卷積神經(jīng)網(wǎng)絡(luò)》(Recurrent Convolutional Neural Network for Text Classification)論文的實(shí)現(xiàn)。

      結(jié)構(gòu):① 循環(huán)結(jié)構(gòu)(卷積層);② 最大池化;③ 完全連接層+ softmax。

      它用左側(cè)文本和右側(cè)文本學(xué)習(xí)句子或文檔中的每個(gè)單詞的表示:

      表示當(dāng)前單詞= [left_side_context_vector,current_word_embedding,right_side_context_vecotor]。

      對(duì)于左側(cè)文本,它使用一個(gè)循環(huán)結(jié)構(gòu),前一個(gè)單詞的非線性轉(zhuǎn)換與左側(cè)上一個(gè)文本相結(jié)合;右側(cè)文本與其類似。

      查看:p71_TextRCNN_model.py

      8. 分層注意網(wǎng)絡(luò)(Hierarchical Attention Network)

      《用于文檔分類的分層注意網(wǎng)絡(luò)》(Hierarchical Attention Networks for Document Classification )論文的實(shí)現(xiàn)。

      結(jié)構(gòu):

      ① 降維;

      ② 詞編碼器:詞級(jí)雙向GRU,以獲得豐富的詞匯表征;

      ③ 詞注意:詞級(jí)注意在句子中獲取重要信息;

      ④ 句子編碼器:句子級(jí)雙向GRU,以獲得豐富的句子表征;

      ⑤ 句子注意:句級(jí)注意以獲得句子中的重點(diǎn)句子;

      ⑥ FC + Softmax。

      數(shù)據(jù)輸入:

      一般來(lái)說(shuō),這個(gè)模型的輸入應(yīng)該是幾個(gè)句子,而不是一個(gè)句子。形式是:[None,sentence_lenght]。其中None意味著batch_size。

      在訓(xùn)練數(shù)據(jù)中,對(duì)于每個(gè)樣本來(lái)說(shuō),有四個(gè)部分,每個(gè)部分具有相同的長(zhǎng)度,將四個(gè)部分形成一個(gè)單一的句子。該模型將句子分為四部分,形成一個(gè)形狀為:[None,num_sentence,sentence_length]的張量。其中num_sentence是句子的個(gè)數(shù)(在設(shè)置中,其值等于4)。

      查看:p1_HierarchicalAttention_model.py

      9. 具有注意的Seq2seq模型

      具有注意的Seq2seq模型的實(shí)現(xiàn)是通過(guò)《共同學(xué)習(xí)排列和翻譯的神經(jīng)機(jī)器翻譯》來(lái)實(shí)現(xiàn)的。

      結(jié)構(gòu):

      ① 降維;

      ② bi-GRU也從源語(yǔ)句(向前和向后)獲取豐富的表示;

      ③ 具有注意的解碼器。

      數(shù)據(jù)輸入:

      使用三種輸入方法中的兩種:

      ① 編碼器輸入,這是一個(gè)句子;

      ② 解碼器輸入,是固定長(zhǎng)度的標(biāo)簽列表;

      ③ 目標(biāo)標(biāo)簽,它也是一個(gè)標(biāo)簽列表。

      例如,標(biāo)簽是:“L1 L2 L3 L4”,則解碼器輸入為:[_ GO,L1,L2,L2,L3,_PAD];目標(biāo)標(biāo)簽為:[L1,L2,L3,L3,_END,_PAD]。長(zhǎng)度固定為6,任何超出標(biāo)簽將被截?cái)?,如果?biāo)簽不足,將其填充完整。

      注意機(jī)制:

      ① 傳輸編碼器輸入列表和解碼器的隱藏狀態(tài);

      ② 計(jì)算每個(gè)編碼器輸入隱藏狀態(tài)的相似度,以獲得每個(gè)編碼器輸入的可能性分布;

      ③ 基于可能性分布的編碼器輸入的加權(quán)和。

      通過(guò)RNN Cell使用這個(gè)權(quán)重和解碼器輸入以獲得新的隱藏狀態(tài)。

      Vanilla E編碼解碼工作原理:

      在解碼器中,源語(yǔ)句將使用RNN作為固定大小向量(“思想向量”)進(jìn)行編碼:

      當(dāng)訓(xùn)練時(shí),使用另一個(gè)RNN嘗試通過(guò)使用這個(gè)“思想向量”作為初始化狀態(tài)獲取一個(gè)單詞,并從每個(gè)時(shí)間戳的解碼器輸入中獲取輸入。解碼器從特殊指令“_GO”開(kāi)始。在執(zhí)行一步之后,新的隱藏狀態(tài)將與新輸入一起獲得,可以繼續(xù)此過(guò)程,直到達(dá)到特殊指令“_END”。我們可以通過(guò)計(jì)算對(duì)數(shù)和目標(biāo)標(biāo)簽的交叉熵?fù)p失來(lái)計(jì)算損失。logits是通過(guò)隱藏狀態(tài)的映射層(對(duì)于解碼器步驟的輸出,在GRU中,我們可以僅使用來(lái)自解碼器的隱藏狀態(tài)作為輸出)。

      當(dāng)測(cè)試時(shí),沒(méi)有標(biāo)簽,所以我們應(yīng)該提供從以前的時(shí)間戳獲得的輸出,并繼續(xù)進(jìn)程直到我們到達(dá)“_END”指令。

      注意事項(xiàng):

      在這里使用兩種詞匯,一個(gè)是由編碼器使用的單詞; 另一個(gè)是用于解碼器的標(biāo)簽。

      對(duì)于詞匯表,插入三個(gè)特殊指令:“_GO”,“_ END”,“_ PAD”; “_UNK”不被使用,因?yàn)樗袠?biāo)簽都是預(yù)先定義的。

      10. Transformer(“Attention Is All You Need”)

      狀態(tài):完成主要部分,能夠在任務(wù)中產(chǎn)生序列的相反順序。你可以通過(guò)在模型中運(yùn)行測(cè)試函數(shù)來(lái)檢查它。然而,我還沒(méi)有在實(shí)際任務(wù)中獲得有用的結(jié)果。我們?cè)谀P椭幸彩褂貌⑿械膕tyle.layer規(guī)范化、殘余連接和掩碼。

      對(duì)于每個(gè)構(gòu)建塊,下面的每個(gè)文件中都包含測(cè)試函數(shù),并且已經(jīng)成功測(cè)試了每個(gè)小塊的性能。

      帶注意的序列到序列是解決序列生成問(wèn)題的典型模型,如翻譯、對(duì)話系統(tǒng)。大多數(shù)情況下,它使用RNN完成這些任務(wù)。直到最近,人們也應(yīng)用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行序列順序問(wèn)題。但是,Transformer,它僅僅依靠注意機(jī)制執(zhí)行這些任務(wù),便能快速地實(shí)現(xiàn)新的最先進(jìn)的結(jié)果。

      它還有兩個(gè)主要部分:編碼器和解碼器。

      編碼器:

      共6層,每個(gè)層都有兩個(gè)子層。第一層是多向自我注意機(jī)制;第二層是位置的全連接前饋網(wǎng)絡(luò)。對(duì)于每個(gè)子層使用LayerNorm(x+ Sublayer(x)),維度= 512。

      解碼器:

      ① 解碼器由N = 6個(gè)相同層的堆疊組成;

      ② 除了每個(gè)編碼器層中的兩個(gè)子層之外,解碼器插入第三子層,其在編碼器堆棧的輸出上執(zhí)行多向注意;

      ③ 與編碼器類似,我們采用圍繞每個(gè)子層的殘余連接,然后進(jìn)行層歸一化。我們還修改解碼器堆棧中的自我注意子層,以防止位置參與到后續(xù)位置。這種掩蔽與輸出嵌入偏移一個(gè)位置的事實(shí)相結(jié)合的操作確保了位置i的預(yù)測(cè)只能取決于位于小于i的位置的已知輸出。

      模型中的突出特點(diǎn):

      ① 多向自我注意:使用自我注意,線性變換多次獲取關(guān)鍵值的映射,然后開(kāi)始注意機(jī)制;

      ② 一些提高性能的技巧(剩余連接、位置編碼、前饋、標(biāo)簽平滑、掩碼以忽略我們想忽略的事情)。

      有關(guān)模型的詳細(xì)信息,請(qǐng)查看:a2_transformer.py

      11.循環(huán)實(shí)體網(wǎng)絡(luò)(Recurrent Entity Network)

      輸入:

      ① 故事:它是多句話,作為上下文;

      ② 問(wèn)題:一個(gè)句子,這是一個(gè)問(wèn)題;

      ③ 回答:一個(gè)單一的標(biāo)簽。

      型號(hào)結(jié)構(gòu):

      ① 輸入編碼:使用一個(gè)詞來(lái)編碼故事(上下文)和查詢(問(wèn)題);通過(guò)使用位置掩碼將位置考慮在內(nèi)。

      通過(guò)使用雙向rnn編碼故事和查詢,性能從0.392提高到0.398,增長(zhǎng)了1.5%。

      ② 動(dòng)態(tài)記憶:

      a. 通過(guò)使用鍵的“相似性”,輸入故事的值來(lái)計(jì)算門(mén)控;

      b. 通過(guò)轉(zhuǎn)換每個(gè)鍵、值和輸入來(lái)獲取候選隱藏狀態(tài);

      c. 組合門(mén)和候選隱藏狀態(tài)來(lái)更新當(dāng)前的隱藏狀態(tài)。

      ③ 輸出(使用注意機(jī)制):

      a. 通過(guò)計(jì)算查詢和隱藏狀態(tài)的“相似性”來(lái)獲得可能性分布;

      b. 使用可能性分布獲得隱藏狀態(tài)的加權(quán)和;

      c. 查詢和隱藏狀態(tài)的非線性變換獲得預(yù)測(cè)標(biāo)簽。

      這個(gè)模型的關(guān)鍵點(diǎn):

      ① 使用彼此獨(dú)立的鍵和值塊,可以并行運(yùn)行;

      ② 上下文和問(wèn)題一起建模。使用記憶來(lái)追蹤世界的狀態(tài),并使用隱性狀態(tài)和問(wèn)題(查詢)的非線性變換進(jìn)行預(yù)測(cè);

      ③ 簡(jiǎn)單的型號(hào)也可以實(shí)現(xiàn)非常好的性能,可以簡(jiǎn)單的編碼作為詞的使用包。

      有關(guān)模型的詳細(xì)信息,請(qǐng)查看:a3_entity_network.py

      在這個(gè)模型下,它包含一個(gè)測(cè)試函數(shù),它要求這個(gè)模型計(jì)算故事(上下文)和查詢(問(wèn)題)的數(shù)字,但故事的權(quán)重小于查詢。

      12.動(dòng)態(tài)記憶網(wǎng)絡(luò)

      模塊:Outlook

      ① 輸入模塊:將原始文本編碼為向量表示。

      ② 問(wèn)題模塊:將問(wèn)題編碼為向量表示。

      ③ 獨(dú)特的記憶模塊:通過(guò)輸入,通過(guò)注意機(jī)制選擇哪些部分輸入,將問(wèn)題和以前的記憶考慮在內(nèi)====>它將產(chǎn)生“記憶”向量。

      ④ 答案模塊:從最終的記憶向量生成答案。

      詳情:

      ① 輸入模塊:

      一個(gè)句子:使用gru獲取隱藏狀態(tài)b.list的句子,使用gru獲取每個(gè)句子的隱藏狀態(tài)。例如 [隱藏狀態(tài)1,隱藏狀態(tài)2,隱藏狀態(tài)...隱藏狀態(tài)n]。

      ② 問(wèn)題模塊:使用gru獲取隱藏狀態(tài)。

      ③ 記憶模塊:使用注意機(jī)制和循環(huán)網(wǎng)絡(luò)來(lái)更新其記憶。

      a.需要多集===>傳遞推理。

      e.g. ask where is the football? it will attend to sentence of "john put down the football"),then in second pass, it need to attend location of john.

      b.注意機(jī)制:

      two-layer feed forward nueral network.input is candidate fact c,previous memory m and question q. feature get by take: elementwise,matmul and absolute distance of q with c,and q with m.

      c.記 憶 更 新 機(jī) 制:h = f(c,h_previous,g)。 最后一個(gè)隱藏狀態(tài)是應(yīng)答模塊的輸入。

      ④ 答案模塊:

      要做的事情:

      ① 文本分類的字符級(jí)卷積網(wǎng)絡(luò);

      ② 文本分類的卷積神經(jīng)網(wǎng)絡(luò):淺詞級(jí)與深字符級(jí);

      ③ 文本分類的深度卷積網(wǎng)絡(luò);

      ④ 半監(jiān)督文本分類的對(duì)抗訓(xùn)練方法。

      猜你喜歡
      解碼器編碼器標(biāo)簽
      科學(xué)解碼器(一)
      科學(xué)解碼器(二)
      科學(xué)解碼器(三)
      線圣AudioQuest 發(fā)布第三代Dragonfly Cobalt藍(lán)蜻蜓解碼器
      無(wú)懼標(biāo)簽 Alfa Romeo Giulia 200HP
      車迷(2018年11期)2018-08-30 03:20:32
      基于FPGA的同步機(jī)軸角編碼器
      不害怕撕掉標(biāo)簽的人,都活出了真正的漂亮
      海峽姐妹(2018年3期)2018-05-09 08:21:02
      基于PRBS檢測(cè)的8B/IOB編碼器設(shè)計(jì)
      標(biāo)簽化傷害了誰(shuí)
      JESD204B接口協(xié)議中的8B10B編碼器設(shè)計(jì)
      電子器件(2015年5期)2015-12-29 08:42:24
      洮南市| 兴城市| 漳浦县| 河津市| 宝应县| 永昌县| 湖口县| 孝感市| 运城市| 沁阳市| 密山市| 河津市| 九江市| 苗栗县| 漳平市| 望奎县| 桑植县| 崇州市| 耒阳市| 庄浪县| 云龙县| 贵溪市| 无为县| 平谷区| 龙口市| 建水县| 姜堰市| 滨州市| 南部县| 盘山县| 酉阳| 通城县| 盐边县| 固始县| 元江| 胶州市| 孟津县| 山东省| 三都| 繁峙县| 清水县|