Quick thoughts:一種新型、有效的sentence vector模型
目錄
一、概要
英文原文連結:https://pan.baidu.com/s/1FwqOzn7kdDAiYpOHACQzEQ 密碼:sjsa
英文論文名稱:《An efficient framework for learning sentence representations》
本文主要提出了一種新的方法來實現sentence2vec,實際上則是對skip thoughts的一種改進。從效果上來看,它訓練得到的句向量在測試方面表現得也比較優異。而且他的另一個特點則是訓練快,這是它非常具有吸引力的一個地方。
如果不瞭解skip thoughts,請去了解……
二、原理
Quick thoughts的原理實際上非常簡單,就是將skip thoughts的預測行為修改成了分類問題。
(1)skip thoughts的原理簡介(真的只是簡介)
Skip thoughts採用的是encoder-decoder模型。所謂的coder,其實就是一個迴圈神經網路,無論採用lstm還是gru的方式。輸入的是一個句子,經過encoder編碼後,得到一個輸出,這個輸出作為decoder的輸入,decoder的輸出就是我們最終得到的東西。所以skip thoughts是用一個句子去預測另一個句子的模型。
(2)Quick thoughts模型
區別於skip thoughts的預測句子模型,quick thoughts在skip thoughts的模型基礎上,略加修改,使得預測行為變成了分類行為。圖解如下:
如上圖所示,輸入的是一系列句子的編碼(或者叫句子的向量形式)。
1、f,g是帶引數(需要訓練)的函式,它們的作用是將句子變為定長的向量。(常用的包括RNN、LSTM等)
2、s表示一個句子
3、表示出現s周圍的句子的集合(即s的上下文,context)
4、應該(據我的理解)是的子集,其中包含一個有效的上下文句子和許多無效的非上下文句子。模型的用處就是對這個集合進行分類。這部分的英文原文我貼出來:
模型的目標函式:
對於一個給定的句子s,一個是s的上下文的概率(上述4中有效的上下文句子)為:
我們的訓練目標則是最大化如下概率(D為訓練集,就是讓有效上下文的概率最大化):
其中函式c表示兩個向量的內積(或許還有其他定義函式c的方法)。f和g通常用RNN。最後句子s的向量用f(s)和g(s)的拼接來表示。