<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深度學(xué)習(xí)模型訓(xùn)練的一般方法(以DSSM為例)

          共 2313字,需瀏覽 5分鐘

           ·

          2020-09-02 18:00




          向AI轉(zhuǎn)型的程序員都關(guān)注了這個(gè)號(hào)???

          機(jī)器學(xué)習(xí)AI算法工程?? 公眾號(hào):datayx


          本文主要用于記錄DSSM模型學(xué)習(xí)期間遇到的問題及分析、處理經(jīng)驗(yàn)。先統(tǒng)領(lǐng)性地提出深度學(xué)習(xí)模型訓(xùn)練過程的一般思路和要點(diǎn),再結(jié)合具體實(shí)例進(jìn)行說明。全文問題和解決方案盡可能具備通用性,同樣適用于一般深度學(xué)習(xí)模型的訓(xùn)練。

          深度學(xué)習(xí)模型訓(xùn)練要素概圖




          補(bǔ)充:目標(biāo)函數(shù)一般包含經(jīng)驗(yàn)風(fēng)險(xiǎn)(損失函數(shù)或代價(jià)函數(shù))和結(jié)構(gòu)風(fēng)險(xiǎn)(正則化項(xiàng)),此處僅指損失函數(shù)。

          訓(xùn)練深度學(xué)習(xí)模型,主要需要考慮四個(gè)方面(受限于當(dāng)前認(rèn)知水平,僅總結(jié)了四個(gè)方面),分別是:

          1. 數(shù)據(jù)處理,包含數(shù)據(jù)清洗和分布;

          2. 模型結(jié)構(gòu),包括網(wǎng)絡(luò)層結(jié)構(gòu)設(shè)計(jì)和一些細(xì)節(jié)處理,前者主要有輸入層設(shè)計(jì)和隱層設(shè)計(jì)(輸出層設(shè)計(jì)劃分至目標(biāo)函數(shù)),后者主要有初始化、正則化和激活函數(shù);

          3. 目標(biāo)函數(shù)設(shè)計(jì),包含目標(biāo)的意義和難度,前者決定了模型的學(xué)習(xí)方向,后者影響對(duì)模型能否收斂影響很大;

          4. 模型的復(fù)雜性,主要包括模型結(jié)構(gòu)復(fù)雜性(量化表現(xiàn)是參數(shù)數(shù)量)和數(shù)據(jù)復(fù)雜性(數(shù)據(jù)規(guī)模與數(shù)據(jù)本身的特性)。

          問題與處理


          • 負(fù)樣本采集方式過簡(jiǎn)

          最初為了迅速跑通模型,對(duì)DSSM-LSTM做了簡(jiǎn)單的復(fù)現(xiàn),此時(shí)的負(fù)樣本并未采用隨機(jī)負(fù)采樣,而是統(tǒng)一選取了負(fù)樣本空間的前n個(gè)(此部分工作已有人完成,我隨后接手)。

          實(shí)際使用模型時(shí),負(fù)樣本數(shù)量遠(yuǎn)多于正樣本,而模型訓(xùn)練時(shí)只使用了固定的幾類負(fù)樣本,間接造成正樣本多于負(fù)樣本,顯然是不合理的。為了使模型盡可能多地學(xué)到負(fù)樣本特征,采用隨機(jī)負(fù)采樣為正樣本配平負(fù)樣,初期正負(fù)樣本1:4。

          由此引發(fā)了學(xué)習(xí)過程中最大的問題——模型無法收斂。

          • 模型不能收斂

          使用隨機(jī)負(fù)采樣將負(fù)樣本變得豐富,本是正常操作,卻由此導(dǎo)致模型不能收斂(loss大多只在前三個(gè)epoch有明顯下降,最終loss與最初相比下降幅度不足1/4),實(shí)在是不應(yīng)該,這只能說明模型設(shè)計(jì)本身存在問題。

          模型無法收斂,排除梯度問題以外,通常是問題或目標(biāo)的復(fù)雜性超過了模型的學(xué)習(xí)能力,數(shù)據(jù)雜亂、數(shù)據(jù)復(fù)雜、模型結(jié)構(gòu)復(fù)雜、損失函數(shù)“太難”等。

          最初并沒有這些經(jīng)驗(yàn),先是調(diào)整了batch_size和學(xué)習(xí)率,這僅僅改變了loss的絕對(duì)大小,并未改變loss居高不下的問題。隨后更改了網(wǎng)絡(luò)層神經(jīng)元數(shù)量、梯度優(yōu)化器,也嘗試加入激活函數(shù)tanh,幾乎沒有效果。

          在此過程中注意到另一個(gè)問題——batch_loss變化幅度大,即便在最初三個(gè)能下降的epoch中,batch_loss震蕩也很厲害。

          • loss震蕩幅度大

          正常情況下,每個(gè)epoch中batch_loss是逐漸減小的,若loss較大且反復(fù)震蕩,則會(huì)導(dǎo)致模型無法收斂,若loss很小,震蕩則是趨于收斂的表現(xiàn)。

          batch_loss較大,并且震蕩,說明數(shù)據(jù)分布不均勻,經(jīng)過檢查發(fā)現(xiàn)數(shù)據(jù)是和標(biāo)準(zhǔn)問題對(duì)應(yīng)的,比如前50個(gè)問題對(duì)應(yīng)問題A,51-110問題對(duì)應(yīng)問題B,其分布具有特定性而非隨機(jī)性。

          因此,每個(gè)batch包含的數(shù)據(jù)差別較大,以batch論,這些batch已經(jīng)“不算一個(gè)數(shù)據(jù)集”了。解決方法就是隨機(jī)打亂數(shù)據(jù),使其分布沒有“特點(diǎn)”,batch之間越接近,數(shù)據(jù)分布越好。

          調(diào)整數(shù)據(jù)分布后,batch_loss相對(duì)穩(wěn)定,loss有了進(jìn)一步下降,與最初loss相比,最終loss約下降1/3(這是遠(yuǎn)遠(yuǎn)不夠的,loss下降90%才可初步體現(xiàn)模型效果,至少下降95%才能有較好表現(xiàn))。

          • 續(xù)模型不能收斂

          當(dāng)數(shù)據(jù)和模型結(jié)構(gòu)無法影響模型收斂性之后,只好試圖修改目標(biāo)函數(shù)。修改前,計(jì)算loss之前使用softmax函數(shù)對(duì)輸出做了歸一化,模型的學(xué)習(xí)目標(biāo)由query與正樣本的相似度接近1變成了對(duì)應(yīng)的softmax輸出接近1。

          為了對(duì)softmax的輸出有直觀的認(rèn)識(shí),模擬了幾組數(shù)據(jù):


          從softmax(a)和softmax(b)可以看出原本巨大的輸入差異,在輸出層被縮小了,在b中0.9遠(yuǎn)大于0.01,對(duì)應(yīng)的輸出分別為0.37和0.15,差異沒有那么大,在a中,0.6也遠(yuǎn)大于0.05,對(duì)應(yīng)的輸出分別為0.29和0.19,差異也沒有那么大。

          d與b、c相比可以看出最后一個(gè)維在整體數(shù)據(jù)中占比都是90%,但是隨著維度的增加,其輸出在逐漸下降。


          這反映了softmax的兩個(gè)特性:

          其一,縮小原本數(shù)據(jù)之間的大小差異;

          其二,隨著維度的增加優(yōu)勢(shì)輸入(在整體數(shù)據(jù)中占比較大)的輸出會(huì)削弱,即輸出逐漸下降。


          由數(shù)據(jù)b、c和d可以看出,最后一維這種占比90%的絕對(duì)優(yōu)勢(shì)維度,其輸出也不會(huì)達(dá)到0.9,且隨著維度的增加其值越來越小。因此以某一維度的softmax輸出逼近1為學(xué)習(xí)目標(biāo),幾乎不可能實(shí)現(xiàn),即損失函數(shù)的學(xué)習(xí)目標(biāo)太難。

          由此,以0.4作為softmax輸出的學(xué)習(xí)目標(biāo),間接達(dá)到softmax的輸入值大于0.9,即query與正樣本的相似度大于0.9。更改損失函數(shù)后,模型loss迅速下降,終于可以正常訓(xùn)練。

          • 模型差異較大

          模型調(diào)試階段,一直以A語料為訓(xùn)練數(shù)據(jù),以Top10的語義召回率R為評(píng)價(jià)指標(biāo),隨著參數(shù)調(diào)優(yōu),R從0.6逐漸上升,一度達(dá)到0.91,由此確定了模型的最佳參數(shù)。使用最佳參數(shù)配置訓(xùn)練了B語料的模型,R只達(dá)到了0.76,同樣的配置使用C語料訓(xùn)練模型,R只有0.61。處理同樣的任務(wù),

          A、B、C語料來自于同樣的場(chǎng)景,在模型結(jié)果上差距較大,這基本不是模型的問題,更多的可能是數(shù)據(jù)的問題。在這種假設(shè)下,對(duì)三種語料的特點(diǎn)做了對(duì)比分析。



          注):data_size數(shù)據(jù)集大小,ques_types多分類總類別,quiz<=3,數(shù)據(jù)量不超過3的類別比例。

          從上表中可以看出一條基本規(guī)律:數(shù)據(jù)規(guī)模越小,數(shù)據(jù)類別越多的語料訓(xùn)練出來的模型效果越差。數(shù)據(jù)規(guī)模小說明數(shù)據(jù)不充分,這對(duì)于深度學(xué)習(xí)模型訓(xùn)練來說確實(shí)不利,數(shù)據(jù)類別多說明數(shù)據(jù)特性復(fù)雜,會(huì)增大模型訓(xùn)練的難度。

          此外,在C語料中76%類別的問題對(duì)應(yīng)的樣本不超過3條,?在B語料中13%類別的問題對(duì)應(yīng)的樣本不超過3條,在A語料中僅有8%類別的問題對(duì)應(yīng)的樣本不超過3條??,這表明C語料不僅在整體數(shù)據(jù)上不充分,在單個(gè)類別上更加缺少數(shù)據(jù)。B語料類別雖然與C接近,但其數(shù)據(jù)規(guī)模相對(duì)充分,因此模型訓(xùn)練效果比C的好;同時(shí),B語料規(guī)模與A語料接近,但其類別遠(yuǎn)多于A,因此其模型訓(xùn)練效果不如A。

          總之,對(duì)于多文本分類問題,語料規(guī)模越大,單個(gè)類別樣本越充足,其模型訓(xùn)練效果越好。

          • 語料模型的微調(diào)

          上文已分析了機(jī)票模型表現(xiàn)差的原因,即數(shù)據(jù)不充分、特性復(fù)雜,但是這并不意味著完全喪失了進(jìn)一步優(yōu)化的可能性。

          數(shù)據(jù)就是這個(gè)情況,難以改變,目標(biāo)函數(shù)也已被證實(shí)有效,無需大的變動(dòng),剩下的唯有調(diào)整模型結(jié)構(gòu)了和一些超參數(shù)了。考慮到數(shù)據(jù)規(guī)模小,相應(yīng)的應(yīng)該減少模型參數(shù)(模型結(jié)構(gòu)調(diào)整),于是從輸入層和隱層兩個(gè)角度對(duì)其神經(jīng)元數(shù)量做了削減。

          結(jié)果表明,輸入層神經(jīng)元減少不僅無益于模型性能提升,反而下降了。這主要是因?yàn)椋斎雽迂?fù)責(zé)將文本轉(zhuǎn)為語義向量對(duì)其進(jìn)行語義表征,而維度降低也意味著表征能力下降,所以不利于模型學(xué)習(xí)。

          而對(duì)隱層神經(jīng)元數(shù)量的減小則進(jìn)一步加快了模型的收斂,并且使模型性能有了一定提升,最終將C語料訓(xùn)練的模型的語義召回率從0.61提升至0.7。此后,再怎么調(diào)整模型語義召回率也難以超越0.7。

          所以,數(shù)據(jù)不好是深度學(xué)習(xí)模型訓(xùn)練的硬傷,雖然可以在算法設(shè)計(jì)層面進(jìn)行一定優(yōu)化,但這種優(yōu)化是有限的,治標(biāo)不治本,要想從根本上解決問題,仍需提升數(shù)據(jù)質(zhì)量。




          閱讀過本文的人還看了以下文章:


          TensorFlow 2.0深度學(xué)習(xí)案例實(shí)戰(zhàn)


          基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測(cè)


          《基于深度學(xué)習(xí)的自然語言處理》中/英PDF


          Deep Learning 中文版初版-周志華團(tuán)隊(duì)


          【全套視頻課】最全的目標(biāo)檢測(cè)算法系列講解,通俗易懂!


          《美團(tuán)機(jī)器學(xué)習(xí)實(shí)踐》_美團(tuán)算法團(tuán)隊(duì).pdf


          《深度學(xué)習(xí)入門:基于Python的理論與實(shí)現(xiàn)》高清中文PDF+源碼


          特征提取與圖像處理(第二版).pdf


          python就業(yè)班學(xué)習(xí)視頻,從入門到實(shí)戰(zhàn)項(xiàng)目


          2019最新《PyTorch自然語言處理》英、中文版PDF+源碼


          《21個(gè)項(xiàng)目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實(shí)踐詳解》完整版PDF+附書代碼


          《深度學(xué)習(xí)之pytorch》pdf+附書源碼


          PyTorch深度學(xué)習(xí)快速實(shí)戰(zhàn)入門《pytorch-handbook》


          【下載】豆瓣評(píng)分8.1,《機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Scikit-Learn和TensorFlow》


          《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼


          汽車行業(yè)完整知識(shí)圖譜項(xiàng)目實(shí)戰(zhàn)視頻(全23課)


          李沐大神開源《動(dòng)手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材


          筆記、代碼清晰易懂!李航《統(tǒng)計(jì)學(xué)習(xí)方法》最新資源全套!


          《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼


          將機(jī)器學(xué)習(xí)模型部署為REST API


          FashionAI服裝屬性標(biāo)簽圖像識(shí)別Top1-5方案分享


          重要開源!CNN-RNN-CTC 實(shí)現(xiàn)手寫漢字識(shí)別


          yolo3 檢測(cè)出圖像中的不規(guī)則漢字


          同樣是機(jī)器學(xué)習(xí)算法工程師,你的面試為什么過不了?


          前海征信大數(shù)據(jù)算法:風(fēng)險(xiǎn)概率預(yù)測(cè)


          【Keras】完整實(shí)現(xiàn)‘交通標(biāo)志’分類、‘票據(jù)’分類兩個(gè)項(xiàng)目,讓你掌握深度學(xué)習(xí)圖像分類


          VGG16遷移學(xué)習(xí),實(shí)現(xiàn)醫(yī)學(xué)圖像識(shí)別分類工程項(xiàng)目


          特征工程(一)


          特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊


          特征工程(三):特征縮放,從詞袋到 TF-IDF


          特征工程(四): 類別特征


          特征工程(五): PCA 降維


          特征工程(六): 非線性特征提取和模型堆疊


          特征工程(七):圖像特征提取和深度學(xué)習(xí)


          如何利用全新的決策樹集成級(jí)聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?


          Machine Learning Yearning 中文翻譯稿


          螞蟻金服2018秋招-算法工程師(共四面)通過


          全球AI挑戰(zhàn)-場(chǎng)景分類的比賽源碼(多模型融合)


          斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


          python+flask搭建CNN在線識(shí)別手寫中文網(wǎng)站


          中科院Kaggle全球文本匹配競(jìng)賽華人第1名團(tuán)隊(duì)-深度學(xué)習(xí)與特征工程



          不斷更新資源

          深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、python

          ?搜索公眾號(hào)添加:?datayx??



          機(jī)大數(shù)據(jù)技術(shù)與機(jī)器學(xué)習(xí)工程

          ?搜索公眾號(hào)添加:?datanlp

          長(zhǎng)按圖片,識(shí)別二維碼


          瀏覽 73
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美性爱在线网 | 黄色欧美视频网站 | 日韩AⅤ无码| 四虎影成人精品A片 | 豆花视频操逼 |