1. 程式人生 > >Quick thoughts:一種新型、有效的sentence vector模型

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_{ctxt}表示出現s周圍的句子的集合(即s的上下文,context)

4、S_{cand}應該(據我的理解)是S_{ctxt}的子集,其中包含一個有效的上下文句子和許多無效的非上下文句子。模型的用處就是對這個集合進行分類。這部分的英文原文我貼出來:

模型的目標函式:

對於一個給定的句子s,一個s_{cand}\in S_{cand}是s的上下文的概率(上述4中有效的上下文句子)為:

                   

我們的訓練目標則是最大化如下概率(D為訓練集,就是讓有效上下文的概率最大化):

                                    

其中函式c表示兩個向量的內積(或許還有其他定義函式c的方法)。f和g通常用RNN。最後句子s的向量用f(s)和g(s)的拼接來表示。