数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
一、Paragraph Vector [2014]
文本分类和文本聚类在许多应用中发挥着重要作用,例如,文档检索、
web
搜索、垃圾邮件过滤。这些应用的核心是机器学习算法,如逻辑回归或Kmeans
。这些算法通常需要将text input
表示为一个固定长度的向量。对于文本,最常见的固定长度的vector representation
是bag-of-words: BOW
或bag-of-n-grams: BONG
,因为它简单、高效,而且通常具有令人惊讶的准确性。然而,
BOW
有很多缺点:单词的顺序丢失了,因此只要使用相同的单词,不同的句子可以有完全相同的
representation
。即使
bag-of-n-grams
考虑了short context
中的单词顺序,它也受到了数据稀疏和高维度的影响。bag-of-words
和bag-of-n-grams
对单词的语义(正式地说,是单词与单词之间的距离)没有什么感觉。这意味着"powerful"
、"strong"
和"Paris"
等单词的距离相同,尽管从语义上来说,"powerful"
应该更接近"strong"
,而不是更接近"Paris"
。
在论文
《Distributed Representations of Sentences and Documents》
中,作者提出了Paragraph Vector
,这是一个无监督的框架,可以为文本段学习连续分布式向量表示continuous distributed vector representation
。这些文本可以是句子、段落、或者文档。Paragraph Vector
这个名字是为了强调这个方法可以应用于不同长度的文本段,从一个短语或句子到一个大文档。在作者的模型中,
vector representation
被训练成有助于预测段落中的单词。更确切地说,作者将当前段落的paragraph vector
与当前段落中的一些word vector
拼接起来,并预测给定context
中的following word
。word vector
和paragraph vector
都是通过随机梯度下降和反向传播来训练的。paragraph vector
在段落之间是唯一的,而word vector
在段落之间是共享的。在预测时,paragraph vector
是通过固定word vector
并训练新的paragraph vector
(直到收敛)来推断的。论文的技术受到最近使用神经网络学习
word vector
的工作的启发。在word vector
的工作中,每个单词由一个向量表示,该向量与context
中的其他word vector
拼接或取平均,结果向量用于预测context
中的其他单词。其结果是,在模型被训练后,word vector
被映射到一个向量空间中,从而使语义相似的单词具有相似的vector representation
(例如,"strong"
与"powerful"
相近)。在这些成功的技术之后,研究人员试图将模型扩展到
word-level
之外,实现phrase-level
或sentence-level
的representation
。例如,一个简单的方法是使用文档中所有单词的word vector
的加权平均值。一个更复杂的方法是使用matrix-vector
操作,将word vector
按照一个句子的解析树给出的顺序进行组合。这两种方法都有不足之处:第一种方法,即
word vector
的加权平均法,与标准的BOW
模型一样,失去了单词的顺序。第二种方法,使用解析树来组合
word vector
,已经被证明只对句子有效,因为它依赖于解析。
Paragraph Vector
能够构建长度可变的输入序列的representation
。与之前的一些方法不同,它是通用的,适用于任何长度的文本:句子、段落和文档。它不需要对word weighting
函数进行task-specific
调优,也不依赖于解析树。在论文中,作者将进一步介绍在几个基准数据集上的实验,以证明Paragraph Vector
的优势。例如:在情感分析任务中,
Paragraph Vector
取得了新的SOTA
,比复杂的方法更好,在错误率方面有超过16%
的相对改善。在文本分类任务中,
Paragraph Vector
击败了BOW
模型,产生了约30%
的相对改进。
相关工作:略。(技术过于古老,不用花时间研究相关工作)。
1.1 模型
我们首先讨论了以前的学习
word vector
的方法。这些方法是我们Paragraph Vector
方法的灵感来源。
1.1.1 学习 Word Vector
一个众所周知的学习
word vector
的框架如下图所示。其任务是根据上下文中的其他单词来预测一个单词。在这个框架中,每个单词都被映射成一个unique vector
,用矩阵 $ \mathbf W\in \mathbb R^{d\times |\mathcal V| } $ 中的一列来表示,其中 $ d $ 为emebdding size
, $ \mathcal V $ 为vocabulary
。 $ \mathbf W $ 的列是以单词在vocabulary
中的位置为索引的。然后,上下文中所有单词的word vector
的拼接或sum
,用于预测句子中下一个词。正式而言,给定单词序列
$ (w_1,w_2,\cdots,w_T) $ ,word vector model
的objective
是最大化平均对数概率:其中:
$ k $ 为上下文窗口大小, $ T $ 为单词序列长度, $ p(w_t\mid\cdot) $ 为给定上下文的条件下预测 $ w_t $ 的概率。预测任务通常是通过
multiclass
分类器(如softmax
)来完成的:其中:
$ y_i $ 是每个输出单词 $ i $ 的未归一化对数概率:其中:
$ \mathbf {\vec u}_i $ 和 $ b_i $ 为softmax
参数; $ h(\cdot) $ 是从 $ \mathbf W $ 中提取的word vector
的拼接或均值池化来构建的。在实践中,可以使用
hierarchical softmax
用于加速训练。基于神经网络的
word vector
通常使用随机梯度下降进行训练,梯度是通过反向传播获得的。这种类型的模型通常被称为neural language model
。 在code.google.com/p/word2vec/
上有一个基于神经网络的训练word vector
算法的具体实现。 训练收敛后,具有相似含义的单词被映射到向量空间中的相似位置。例如,"powerful"
和"strong"
彼此接近,而"powerful"
和"Paris"
则比较遥远。word vector
之间的差值也具有意义。例如,word vector
可以用简单的向量代数来回答类比问题:"King" - "man" + "woman" = "Queen"
。
1.1.2 PV-DM
我们学习
paragraph vector
的方法受到学习word vector
方法的启发。其灵感在于,word vector
被用于预测句子中的下一个单词。我们的paragraph vector
的思想也是类似的:paragraph vector
被用于预测句子中的下一个单词。如下图所示,在我们的
Paragraph Vector framework
中,每个paragraph
被映射到一个unique vector
(由矩阵 $ \mathbf D\in \mathbb R^{d\times |\mathcal P|} $ 中的一列来表示),每个单词也被映射到一个unique vector
(由矩阵 $ \mathbf W \in \mathbb R^{d\times |\mathcal V|} $ 中的一列来表示)。其中, $ d $ 为embedding
维度, $ \mathcal D $ 为paragraph
集合, $ \mathcal V $ 为vocabulary
。在实验中,我们拼接这些向量。paragraph vector
类似于BERT
中的CLS token
。但是在BERT
中,CLS token
是全局共享的;而在paragraph vector
中,每个句子都有自己的CLS token
。那么,是否可以有折中的方案:同一篇文档的
CLS token
共享、不同文档的CLS token
不共享,这样CLS token
捕获到整篇文档的语义。同一个段落的
CLS token
共享、不同段落的CLS token
不共享,这样CLS token
捕获到了该段落的语义。
即,
global CLS token
、language id
(捕获不同语言的信息)、domain id
(捕获不同领域的信息)、document id
(捕获不同文章的信息)、paragraph id
(捕获不同段落的信息)、sentence id
(捕获不同句子的信息)。此外,
BERT
中通过多层的Transformer Layer
,可以使得CLS token
能够捕获到整个序列的语义。而paragraph vector
是一个浅层的网络,paragram id
没有信息融合使得无法捕获整个序列的意义。更正式地,与
word vector framework
相比,这个模型的唯一变化是通过 $ \mathbf W $ 和 $ \mathbf D $ 来构建 $ h(\cdot) $ :paragraph token
可以被认为是另一个单词。它就像一个memory
,可以记住当前context
中缺少的东西,或者说记住段落的主题。由于这个原因,我们通常把这个模型称为Distributed Memory Model of Paragraph Vector: PV-DM
。context
是固定长度的,它是利用滑动窗口在段落上采样而得到的。paragraph vector
在同一段落产生的所有context
中共享,但没有在不同段落中共享。然而,word vector
矩阵 $ \mathbf W $ 是跨段落共享的。也就是说,"powerful"
的vector representation
在所有段落中是相同的。paragraph vector
和word vector
是用随机梯度下降训练的,梯度是通过反向传播获得的。在预测时,人们需要执行一个推理步骤来计算一个新段落的paragraph vector
。这也是通过梯度下降得到的。在这个步骤中,模型其他部分的参数,即word vector
$ \mathbf W $ 和softmax
参数 $ \left\{\mathbf{\vec u}_i,b_i\right\}_{i=1}^{|\mathcal V|} $ ,是固定的。经过训练后,
paragraph vector
可以作为段落的特征。我们可以将这些特征直接馈入传统的机器学习技术,如逻辑回归、支持向量机或K-means
。总之,该算法本身有两个关键阶段:
在训练数据集上训练
word vector
$ \mathbf W $ 、softmax
权重 $ \left\{\mathbf{\vec u}_i \right\}_{i=1}^{|\mathcal V|} $ 、softmax bias
$ \left\{ b_i\right\}_{i=1}^{|\mathcal V|} $ 、paragraph vector
$ \mathbf D $ 。在推断时,通过在
$ \mathbf D $ 中增加更多的列,并在保持 $ \left\{\mathbf W, \left\{\mathbf{\vec u}_i \right\}_{i=1}^{|\mathcal V|}\right\} $ 不变的情况下对 $ \mathbf D $ 进行梯度下降,以获得新段落的paragraph vector
。
推断时还需要重新训练,成本太高了。
paragraph vector
的优势:paragraph vector
的一个重要优点是它们是从未标记的数据中学习的,因此可以很好地用于没有足够标记数据的任务。paragraph vector
也解决了BOW
模型的一些关键弱点:首先,
paragraph vector
继承了word vector
的一个重要属性:单词的语义。在语义空间,"powerful"
比"Paris"
更接近于"strong"
。其次,
paragraph vector
考虑到了单词顺序,至少在small context
中是这样的,就像具有较大n
值的n-gram
模型。paragraph vector
仅考虑部分的单词顺序(通过上下文窗口)而没有像GPT
那样完全地考虑单词顺序。
1.1.3 PV-DBOW
上述方法考虑了
paragraph vector
与word vector
的拼接来预测文本窗口中的下一个单词。另一种方法是忽略输入中的context word
,但强迫模型预测从段落中随机抽取的单词,如下图所示。我们把这个版本命名为Distributed Bag of Words version of Paragraph Vector: PV-DBOW
,与上一节的Distributed Memory version of Paragraph Vector: PV-DM
相对应。除了概念上的简单外,这个模型需要存储更少的数据。我们只需要存储
softmax
参数 $ \left\{\mathbf{\vec u}_i,b_i\right\}_{i=1}^{|\mathcal V|} $ ,而不是之前模型中的softmax
参数和word vector
。这个模型也类似于word vector
中的Skip-gram
模型。在我们的实验中,每个
paragraph vector
是两个向量的组合:一个是由PV-DM
学习的、另一个是由PV-DBOW
学习的。单独的PV-DM
通常对大多数任务都很有效,但它与PV-DBOW
的组合通常在我们尝试的许多任务中更加一致的改善,因此强烈推荐。
1.2 实验
略。(技术过于古老,不用花时间研究实验细节)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论