transformer学习笔记+详细记录

transformer

通过B站up(水论文的程序猿)视频内容记录笔记 https://www.bilibili.com/video/BV1f34y1V7Ch/?share_source=copy_web&vd_source=4df5f191ed6cfa3f54382cfb42a6be35

预训练

深度学习,需要大数据支持,但是研究往往缺少大数据的支持,(ImageNet太大,自己训练没有这样的算力条件)。

预训练就是利用别人训练过的模型结果。

在这里插入图片描述

浅层的特征是可以通用的。

一般我们使用的浅层特征(已经训练好的模型)的方法fine-tuning微调。

fine-tuning就是在浅层的特征上,继续我们的训练,加强我们的小数据特征识别并会改变浅层的参数。

预训练的浅层模型,需要找相似的数据训练。

统计语言模型

语言模型

人们说的话+模型=去完成某一个任务。

类似NLP模型的处理,预测一句话的输出。

统计语言模型则是解决预测的词句结果。使用的是概率论里的条件概率链式法则。

在这里插入图片描述

通过一句话的序列(如:“我”,“是”,“谁”),判断每个词出现的概率,最后得到一句话出现的概率。

p(w_next |“我”,“是”,“谁” ),通过词库(语言的数据集)整合一个集合进行条件概率链式法则计算。

词量太大的话,计算成本太高。

在这里插入图片描述

所以提出了n元统计语言模型

把n个词,取其中几个词,(几元模型)。

计算方法

神经网络语言模型

独热编码(one-hot )

八个单词,给出一个8x8的矩阵,以维度标识单词。

有关联性的单词,就可以用余弦相似度进行计算。

**余弦相似度算法:**一个向量空间中两个向量夹角间的余弦值作为衡量两个个体之间差异的大小,余弦值接近1,夹角趋于0,表明两个向量越相似,余弦值接近于0,夹角趋于90度,表明两个向量越不相似。

img

img

img

在这里插入图片描述

w x + b wx+b wx+b and w ( t a n h ( w x + b ) ) + b w(tanh(wx+b))+b w(tanh(wx+b))+b

Q作为随机矩阵,是一个可学习的参数

词向量

给定一个词,设独热编码, w 1 ∗ q = c 1 w1*q=c1 w1q=c1 为这个词的词向量。

用一个向量表示一个词(独热编码)。

词向量可以控制维度

在这里插入图片描述

乘以一个词向量,则余弦相似度为零的概率就减低了。

Word2Vec

该模型的主要目标是为了得到词向量。
在这里插入图片描述

CBOW

给出一句话的上下文,得到中间承上启下的部分。

w t w_t wt作为缺失的部分, w t − 1 w_t-1 wt1 or w t + 1 w_t+1 wt+1 则是缺失部分的上下两个部分。

eg:一个老师告诉多个学生,Q怎么变

SKIP-GRAM

给出一个词,得到上下文。

eg:多个老师告诉一个同学,Q怎么变。

NNLM重点是预测下一个词,而wodr2vec是为了得到一个Q矩阵。

词向量不可以做到一词多义。

ELMo

该模型主要解决多义词问题

在这里插入图片描述

不只是训练一个Q矩阵,把上下文的信息融入到Q矩阵中,然后将三层的信息进行叠加,T1作为一个新的词向量。

Attention

Q是最适合查找目标的,K是最适合接收查找的,V就是内容,计算QV事物的重要度,相似度计算

Q, K = k 1 , k 2 . . . . . , k n K=k_1,k_2.....,k_n K=k1,k2.....,kn ,一般使用点乘QK,拿到Q和每一个K的相似值 Q ∗ k n = a n Q*k_n=a_n Qkn=an

做一层 s o f t m a x ( a 1 , a 2 , ⋯   , a n ) softmax(a_1,a_2,\cdots,a_n) softmax(a1,a2,,an) 得到概率。

找到Q最相似的对象。

将得到的概率乘上V后进行叠加处理,则现在的V就能体现出谁更重要。

猜你喜欢

转载自blog.csdn.net/m0_51581537/article/details/129311229