讨论 2021-10-28 = ###### tags: `tutorials` `Fudan` `2021` # 单词的表示 本次主要讨论一下自然语言处理中的基础单元,单词是如何表示的,以及为何要这样表示。为此,我们需要先介绍一些背景知识 ## 内积空间 我们对欧氏空间非常熟悉,两点之间距离为各纬度坐标的根号平方和。 $$\sqrt{||x-y||_2}$$ 同时,还有一类非常适合矩阵运算的距离,那便是内积。可以定义内积的空间就称为内积空间,并且一般我们默认该空间的距离是基于内积定义的。其中,具备更好性质的内积空间成为希尔伯特空间 \begin{gather} (x,y) = x^T y \\ (x,y) = (y,x) \\ (\alpha x + \beta y, z) = \alpha (x,z) + \beta (y,z) \\ (x,x) \ge 0 \end{gather} 假如我们观察内积的定义可以发现,其有如下几个特点 - 内积的大小与向量本身模长高度相关 - 高维空间的内积有可能用低维形式表示 \begin{align} (x,y,W) =& x^T W y \quad x,y \in \mathbb{R}^d \\ =& x^T W_1 W_2 y \quad W_1 \in \mathbb{R}^{d \times e} W_2 \in \mathbb{R}^{e \times d} \end{align} 我们回顾一下常见神经网络的最后一层,可以发现其功能就是计算处理好的特征与备选项之间的内积。并将内积归一化得到概率。换言之,神经网最后的分类过程可以理解度量提取到的特征与备选项之间的相似度。然后选取相似度最高的选项作为答案。实际上相似度的概念在神经网络中非常有价值。假如我们认为提取的特征模长变化平滑并接近,那么候选项对应的向量模长就代表了一个固有偏好,比如某个类别就是高频出现,就是比其他类更容易作为答案。反之,假如后选项的模长固定,那么处理的特征的模长就反应了模型的置信度。(向量的差异在内积为度量的情况下只能反映在模长或方向上) 另一方面,一个简单的形式$x^T W y$,就有可能表达高维空间的内积。此时,观察矩阵的秩就显得尤为重要。 ## Word2Vec 很多神经网络相关的研究可以理解为对相似度的研究,word2vec就是其中之一。Word2Vec认为单词的词义应该和邻近词有关,换言之,和邻近词是相似的,由此设计了一个非常简单的训练目标。 \begin{align} \max &\sum_k P(w_{i+k}|w_i) \\ &=\frac{\exp(w_{i+k}^T w_i)}{\sum_j \exp(w_j^T w_i)} \end{align} 我们可以看到这实际上就是让邻近词在内积空间中尽可能相近。这里我们需要避开一个误区,相似度是可以定义和限定的,不是总表示含义相同。实际上,我们很多时候是让模型学习在某个层面上的相似,而非人理解的相似。 由于Word2Vec需要的计算量通常很大,所以研究者也相应提出了一些解决方法。 ## 词向量需要具备哪些性质 目前大部分神经网络的连续性是比较好的,即$$f(x+\Delta x) - f(x) < \epsilon \Delta x $$,假如我们认为两个词$w_i, w_j$对学习任务起到了相同的作用,比如在情感分类中都是正面词,那么我们也就希望$$ f(w_i) - f(w_j) < \epsilon ||w_i-w_j|| $$ 换言之,如果两个词语对模型的含义相同,那么他们的词向量也应该尽量相同,这样模型会更容易学习。上述描述是以欧式空间为例,对内积空间也一样。这从另一个侧面也阐述了为什么end-to-end训练是重要的,由于网络的连续性,假如两个需要区分的样本在输入阶段非常相似,网络是很难后续把他们区分开的。同样的,对于在输入阶段很不同的样本,网络后续把他们合并也不容易。当然,这种限制在网络深度大幅增加之后会被减轻。但从设计角度上来讲,尽量应该避免制造这种困难。 如果我们不采用end-to-end模型,而输入模块的参数已经固定,但其特征的分布与后续任务很不一致,前者相似的在后续任务中差别很大或前者差别很大的在后续任务中很相似。这都会给后续模型的训练带来很大的困难。 由此,也可以引出两个有趣的设计,一是模型抽取多个特征,每个候选项也有多个特征。二是增加一些重复候选项。 ## self-attention 我们可以看到 attention也采用了 $x^T W y$的形式,换言之 attention描述了一个内积空间或度量空间内的两两相似度。其实可以看做一个软聚类过程。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up