<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>

          TextCNN可以和對比學(xué)習(xí)融合嗎-SimCSE論文讀后感

          共 2076字,需瀏覽 5分鐘

           ·

          2021-06-06 02:09

          最近抽時間把SIMCSE用Pytorch復(fù)現(xiàn)了一下,中途涉及到的幾個思考點,和大家分享一下:

          注:原作者有開源論文代碼,不過有些復(fù)雜,大家可以看一下自己魔改一下;

          全文思路如下:

          1. SIMCSE理論介紹以及代碼實現(xiàn)的部分細(xì)節(jié)點
          2. TextCNN是否可以借鑒SIMCSE的思路,來訓(xùn)練模型從而獲取比較好的Sentence embedding
          3. 是否可以借鑒Dropout數(shù)據(jù)增強(qiáng),使用amsoftmax,減少同類距離,增大不同類距離

          1. SIMCSE論文理論介紹

          當(dāng)時讀完SIMCSE論文之后,沒時間寫文章,趕緊發(fā)了個朋友圈把思路簡單的記錄了一下;

          感興趣的朋友加我微信【dasounlp】,互看朋友圈啊,笑;

          論文分為四個部分來講,對比學(xué)習(xí),無監(jiān)督SIMCSE,有監(jiān)督SIMCSE,評價指標(biāo);

          1.1 對比學(xué)習(xí)

          對比學(xué)習(xí)的目的是,是減少同類距離,增大不同類之間的距離,借此獲得一個文本或者圖片更好的表示向量;

          定義句子對:;其中N是一個Batch中句子對樣本數(shù)量,是語義相似的樣本,分別是經(jīng)過編碼器Encoder之后得到的表示向量;

          那么對比學(xué)習(xí)的訓(xùn)練目標(biāo)就是:

          這個公式看著比較唬人,其實本質(zhì)就是一個多分類softamx的交叉熵?fù)p失函數(shù);

          需要注意的是參數(shù)  是個超參數(shù),是一個相似性度量函數(shù),原論文使用的cosine,其實使用一些其他的相似性函數(shù)應(yīng)該也沒問題;

          注意一下分母這里:其實一個batch,比如有N個句子對,那么就有2N個句子,其中正例是1個,負(fù)樣本應(yīng)該是總樣本數(shù)目2N減去樣本本身加上樣本的正例,也就是2N-2;

          不過,看公式,作者這里用到的是一個batch中的N個樣本,也就是使用的是每個句子對中的其中一個;

          關(guān)于這個問題,是否使用更多的負(fù)樣本是不是會獲得更好的效果,作者回復(fù)說并沒有。

          我自己在復(fù)現(xiàn)的時候,使用的是2N-1個樣本【正例+負(fù)例總和】;

          那么在落地到代碼的時候,怎么實現(xiàn)這個交叉熵呢?我畫了一個簡單的圖,比如batch是2:

          1.2 正例和負(fù)例的構(gòu)建

          上面談到的整個過程,全程沒離開正例和負(fù)例;

          在圖像中,一個圖像經(jīng)過平移旋轉(zhuǎn)等數(shù)據(jù)增強(qiáng)的方式,可以看成是生成了圖像的正例;

          在文本上,一些常規(guī)的數(shù)據(jù)增強(qiáng)的手段就是刪減單詞,替換同義詞等等;

          文本的數(shù)據(jù)增強(qiáng)存在的一個問題就是,一個簡單的操作可能就會導(dǎo)致語義的改變;

          在無監(jiān)督的SIMCSE中,正例的構(gòu)造很有意思,就是通過添加一個Dropout的噪聲;

          Dropout是在隨機(jī)失活神經(jīng)元,每次句子經(jīng)過網(wǎng)絡(luò),失活的神經(jīng)元是不一致的,導(dǎo)致生成的embedding是不一致的;

          這一點其實大家應(yīng)該都懂,但是能聯(lián)想到把這個作為數(shù)據(jù)增強(qiáng)的一個手段,確實很強(qiáng)。

          在有監(jiān)督的SIMCSE中,其實是借助了NLI數(shù)據(jù)集中自帶的標(biāo)簽,來構(gòu)造正例和負(fù)例;

          直接來看作者原文中的圖吧;

          1.3 句子向量評價指標(biāo)

          句子向量的評價指標(biāo)這里,用兩個東西來量化一下,alignment和Uniformity;

          直接來看圖:

          2. TextCNN和Dropout的融合

          SIMCSE中,BERT作為Encoder未免太復(fù)雜了,這時候按照常規(guī)思路,我會去思考可不可以使用簡單網(wǎng)絡(luò)比如textcnn代替bert;

          那么實現(xiàn)方式就可以分為兩種:

          一種是我使用textcnn直接作為encoder,然后仿照無監(jiān)督simcse的訓(xùn)練方式進(jìn)行訓(xùn)練就可以了;

          第二種方式就是知識蒸餾,無監(jiān)督simcse訓(xùn)練一個bert的encoder出來之后,使用簡單網(wǎng)絡(luò)textcnn進(jìn)行學(xué)習(xí)就可以了;

          我針對第一種方式做了個實驗。

          在實驗之前,我就沒報什么大的希望,只是想親眼試一下究竟可行不可行;

          為什么沒有報太大希望呢,很簡單,我自己認(rèn)為dropout作為一種數(shù)據(jù)增強(qiáng)的形式,太過簡單了,textcnn這種簡單網(wǎng)絡(luò),不足以學(xué)習(xí)到其中的差異;

          我在中文的LCQMC和ATEC數(shù)據(jù)集上做了一個簡單的測試,Spearman作為評價指標(biāo),結(jié)果如下:

          之后,我看情況能不能把這部分代碼開源出來~~,自己實現(xiàn)也挺簡單的;

          3. Amsoftmax的引入

          第三個小思路是這樣的,dropout可以看做是一個最小化的文本數(shù)據(jù)增強(qiáng)的形式。同一個句子,經(jīng)過encoder,得到的embeding不同,但是語義是相似的,所以可以看做是一個正例;

          進(jìn)一步的,如果我同一個句子經(jīng)過多次encoder,比如經(jīng)過10次,那么我得到的就是10個embedding;

          也就是說,在同一個語義下面,我得到的是10個語義近似但是embedding不同的向量;

          如果我有10萬個句子,可以把這個10萬個句子當(dāng)做是10萬個類別,每個類別下有10個樣本;

          想一下這個感覺,不就是人臉識別的操作嗎?

          那么可不可以使用這種方式,得到更好的語義表達(dá)呢?

          這個我沒做實驗,只是一個思路,之后有時間再去做實驗,有興趣的朋友可以做一下;

          瀏覽 54
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  国产精品特级s毛片 | www.色五月 | 亚洲依依成人网 | 天堂中文在线资源视频 | 欧美精品偷拍 |