Deep Learning
未读
总结
在此,笔者可以得到一些对Multi-Head-Attention的结论:
通俗点理解Self-Attention就是用Q、K计算出每个token的权重进而对V向量进行提纯的方法,为什么叫Self-Attention呢,就是Q、K、V是来自于同一个输入经过三个不同的线性变换得到的。
对于大部分query,每个头都学习了某种固定的pattern模式,而且12个头中大部分pattern是差不多的,但是总有少数的pattern才能捕捉到语法/句法/词法信息。
《Attention Is All You Need》这篇原论文原文中解释了多头的作用:将隐状态向量分成多个头,形成多个子语义空间,可以让模型去关注不同维度语义空间的信息(或者说让模型去关注不同方面的信息)。
多头attention的有些头的功能是不一样的,有的头可能没啥信息(如第5head),有的头pattern由位置信息主导,有的头由语法信息主导,有的头由词法信息主导,而能够捕捉到语法/句法/词法信息的头其实是非常少的(这一点已被大量学术论文证明,笔者的句法破坏实验也验证了这一点),那么multi-head的作 ...
正则化
0 范数:向量中非零元素的个数
1 范数: 向量中各个元素绝对值之和。
2 范数: 向量中各个元素平方和的 1/2 次方,L2 范数又称 Euclidean 范数或者 Frobenius 范数
p 范数: 为 x 向量各个元素绝对值 p 次方和的 1/p 次方
L1 和 L2 正则先验分别服从什么分布?L1 是拉普拉斯分布,L2 是高斯分布。
为什么 L1 和 L2 正则化可以防止过拟合?
拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,即抗扰动能力强。
L1 & L2 正则化会使模型偏好于更小的权值。更小的权值意味着更低的模型复杂度;**添加 L1 & L2 正则化相当于为模型添加了某种先验,**限制了参数的分布,从而降低了模型的复杂度。
模型的复杂度降低,意味着模型对于噪声与异常点的抗干 ...
Deep Learning
未读CosineSimilarity
DotProductSimilarity
ProjectedDotProductSimilarity
BiLinearSimilarity
TriLinearSimilarity
MultiHeadedSimilarity
1、余弦相似度
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,称为"余弦相似性"
12345import torchimport torch.nn as nnimport mathtorch.cosine_similarity()
123456class CosineSimilarity(nn.Module): def forward(self, tensor_1, tensor_2): normalized_tensor_1 = tensor_1 / tensor_1.norm(dim=-1, keepdim=True) normalized_tensor_2 = tensor_2 / te ...