精华内容
下载资源
问答
  • 我们把使得当时,的样本点,以及使得当时,的样本点称为“支持向量”,两个异类支持向量到超平面的距离之和为 它被称为“间隔”。 欲找到具有“最大间隔”划分的超平面,也就是要找到能满足约束条件的参数和,...

    在样本空间中,划分超平面可通过如下线性方程来描述

    其中法向量,决定了超平面的方向;位移项,决定了超平面与原点之间的距离。样本空间中任意点到超平面的距离为

    假设超平面能将样本正确分类,即对于,若,则有;若,则有。 我们把使得当时,的样本点,以及使得当时,的样本点称为“支持向量”,两个异类支持向量到超平面的距离之和为

    它被称为“间隔”。

    欲找到具有“最大间隔”划分的超平面,也就是要找到能满足约束条件的参数,使得最大,即 

    显然,为了最大化间隔,仅需最大化,这等价于最小化。于是

    这就是支持向量机(SVM)的基本型。

    通常我们通过其对偶问题运用SMO算法来更高效地求解。训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。

    然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面,例如“异或”问题。对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。

    表示将映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为

    接着有以下凸优化问题

    在求解其对偶问题的过程中涉及到计算,这是样本映射到特征空间之后的内积。由于特征空间维数可能很高,甚至可能使无穷维,因此直接计算通常是困难的。为了避开这个障碍,可以设想这样一个函数:

    在特征空间的内积等于它们在原始样本空间中通过函数计算的结果。有了这样的函数,我们就不必直接去计算高维甚至无穷维特征空间中的内积。这个就是“核函数”。

    “核函数选择”成为支持向量机的最大变数,这方面可通过一些基本经验来在常用核函数中进行选择。

    另外,缓解过拟合问题的一个办法是允许支持向量机在一些样本上出错。“软间隔”即是说允许某些样本不满足约束

    当然,在最大化间隔的同时,不满足约束的样本应尽可能少,于是,优化目标为

    其中是一个常数,是“0/1损失函数”。显然,当为无穷大时,上式迫使所有样本均满足约束;当取有限值时,上式允许一些样本不满足约束。这就是常用的“软间隔支持向量机”。

    我们还可以把上式中的0/1损失函数换成别的替代损失函数以得到其他学习模型,这些模型的性质与所用的替代函数直接相关,但它们具有一个共性:优化目标中的第一项用来描述划分超平面的“间隔”大小,另一项用来表述训练集上的误差,如下所示

    其中称为“结构风险”,用于描述模型的某些性质;称为经验风险,用于描述模型与训练数据的契合程度;用于对二者进行折中。上式也称为“正则化”问题,可理解为一种“罚函数法”,即对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标。

    综上所述,我们可以导出支持向量回归模型:假设我们能容忍之间最多有的偏差,即仅当之间的差别绝对值大于时才计算损失。这相当于以为中心,构建了一个宽度为的间隔带,若训练样本落入此间隔带,则被认为是被预测正确的

    最后,发展出一系列基于核函数的学习方法,统称为“核方法”。最常见的,是通过“核化”来将线性学习器拓展为非线性学习器。

    展开全文
  • SVM简介 通俗的解释: 给定两组不同类别的数据点,找一个超平面把他们分割开,并希望这个超平面离这两组数据点的距离尽可能大。这样,我们就认为超平面一侧是一个类别。...支持向量机算法的基本流程 代码实现 fro..
    1. SVM简介
      通俗的解释:
      给定两组不同类别的数据点,找一个超平面把他们分割开,并希望这个超平面离这两组数据点的距离尽可能大。这样,我们就认为超平面一侧是一个类别。另一侧则是另一个类别。当新来一个数据点时,只需看它在这个分割平面的那一侧,就可以预测其类别。
      任务类型:
      通常用来处理有监督的分类问题,即需要一定的类别标注的训练集来确定超平面,然后对没有标注的样本进行类别预测。SVM既可以处理两类别分类问题,也可以通过对类别进行划分,处理多类别分类问题。

    2. 支持向量机算法的基本流程

    3. 代码实现

    from sklearn.datasets import  make_moons
    from sklearn import svm
    import matplotlib.pyplot as plt
    import numpy as np
    X,y=make_moons(n_samples=100,noise=0.3,random_state=2021)
    fig1=plt.figure()
    plt.plot(X[:,0][y==0],X[:,0][y==0],"bo")
    plt.plot(X[:,0][y==1],X[:,1][y==1],"g^")
    plt.show()
    def predict_each_value(X,y,cls):
        X1_min,X2_min=np.min(X,axis=0)-1
        X1_max,X2_max=np.max(X,axis=0)+1
        X1,X2=np.meshgrid(np.arange(X1_min,X1_max,0.01),np.arange(X2_min,X2_max,0.01))
        CLS=cls.predict(np.transpose(np.array([X1.ravel(),X2.ravel()]))).reshape(X1.shape)
        plt.figure()
        plt.contourf(X1,X2,CLS)
        plt.xlim(X1_min,X1_max)
        plt.ylim(X2_min,X2_max)
        plt.plot(X[:, 0][y == 0], X[:, 0][y == 0], "bo")
        plt.plot(X[:, 0][y == 1], X[:, 1][y == 1], "g^")
        plt.show()
    #高斯核函数
    clf=svm.SVC(kernel='rbf',random_state=2021,gamma=0.1,C=100.0)
    clf.fit(X,y)
    predict_each_value(X,y,clf)
    print(clf.n_support_)
    clf=svm.SVC(kernel='rbf',random_state=2021,gamma=0.1,C=10.0)
    clf.fit(X,y)
    predict_each_value(X,y,clf)
    print(clf.n_support_)
    clf=svm.SVC(kernel='rbf',random_state=2021,gamma=0.1,C=1.0)
    clf.fit(X,y)
    predict_each_value(X,y,clf)
    print(clf.n_support_)
    #线性核函数
    clf=svm.SVC(kernel='linear',random_state=2021,gamma=0.1,C=10.0)
    clf.fit(X,y)
    predict_each_value(X,y,clf)
    print(clf.n_support_)
    #多项式核函数
    clf=svm.SVC(kernel='poly',random_state=2021,gamma=0.1,C=10.0)
    clf.fit(X,y)
    predict_each_value(X,y,clf)
    #输出支持的向量个数
    print(clf.n_support_)
    

    实验结果

    机器学习-----支持向量机模型
    1.导入所需的包,生成本次实验的数据以及数据分布图
    from sklearn.datasets import make_moons
    from sklearn import svm
    import matplotlib.pyplot as plt
    import numpy as np
    X,y=make_moons(n_samples=100,noise=0.3,random_state=2021)
    fig1=plt.figure()
    plt.plot(X[:,0][y0],X[:,0][y0],“bo”)
    plt.plot(X[:,0][y1],X[:,1][y1],“g^”)
    plt.show()

    2.定义函数,该函数可以在SVM训练好之后对数据集范围的点进行预测并作图,从而显示出SVM的分界线
    def predict_each_value(X,y,cls):
    X1_min,X2_min=np.min(X,axis=0)-1
    X1_max,X2_max=np.max(X,axis=0)+1
    X1,X2=np.meshgrid(np.arange(X1_min,X1_max,0.01),np.arange(X2_min,X2_max,0.01))
    CLS=cls.predict(np.transpose(np.array([X1.ravel(),X2.ravel()]))).reshape(X1.shape)
    plt.figure()
    plt.contourf(X1,X2,CLS)
    plt.xlim(X1_min,X1_max)
    plt.ylim(X2_min,X2_max)
    plt.plot(X[:, 0][y == 0], X[:, 0][y == 0], “bo”)
    plt.plot(X[:, 0][y == 1], X[:, 1][y == 1], “g^”)
    plt.show()

    3.分别使用高斯核函数和线性核函数和多项式核函数进行试验
    #高斯核函数
    clf=svm.SVC(kernel=‘rbf’,random_state=2021,gamma=0.1,C=100.0)
    clf.fit(X,y)
    predict_each_value(X,y,clf)
    print(clf.n_support_)
    clf=svm.SVC(kernel=‘rbf’,random_state=2021,gamma=0.1,C=10.0)
    clf.fit(X,y)
    predict_each_value(X,y,clf)
    print(clf.n_support_)
    clf=svm.SVC(kernel=‘rbf’,random_state=2021,gamma=0.1,C=1.0)
    clf.fit(X,y)
    predict_each_value(X,y,clf)
    print(clf.n_support_)
    #线性核函数
    clf=svm.SVC(kernel=‘linear’,random_state=2021,gamma=0.1,C=10.0)
    clf.fit(X,y)
    predict_each_value(X,y,clf)
    print(clf.n_support_)
    #多项式核函数
    clf=svm.SVC(kernel=‘poly’,random_state=2021,gamma=0.1,C=10.0)
    clf.fit(X,y)
    predict_each_value(X,y,clf)
    #输出支持的向量个数
    print(clf.n_support_)
    5.实验结果
    1.初始数据的数据分布
    在这里插入图片描述

    2.高斯核函数C=100(C为惩罚项系数,越大表示对越界惩罚力度越大。)
    在这里插入图片描述

    高斯核函数C=10
    在这里插入图片描述

    高斯核函数C=1
    在这里插入图片描述

    线性核函数C=10
    在这里插入图片描述

    多项式核函数C=10
    在这里插入图片描述

    总结:从实验结果可以得出,惩罚项的系数越大,表示越偏向于硬间隔,因此在训练集上错分率极低,但分界面较为复杂。反之惩罚项的系数越小,则模型更简单,但是有一定集的错分率。从线性核函数和多项式函数的图可以看出,线性核函数是超平面分割,多项式核函数是曲面分割。

    展开全文
  • 表2-1 文档向量 docid a arrived damaged delivery fire gold in of shipment silver truck D1 0 0 0.477 0 0.477 0.176 0 0 0.176 0 0 D2 0 0.176 0 0.477 0 0 0 0 0 0.954 ...]中就有关于向量空间模型的早期研究...

    2.1.1 相似度计算举例

    下面我们考虑一个固定的查询和文档集,包含一个查询Q和三篇文档组成的文档集:

    Q:"gold silver truck"

    D1:"Shipment of gold damaged in a fire"

    D2:"Delivery of silver arrived in a silver truck"

    D3:"Shipment of gold arrived in a truck"

    在这个文档集中,有三篇文档,所以d = 3。如果一个词项仅在三篇文档中的一篇中出现,那么该词项的IDF就是lg(d/dfi) =

    lg(3/1) = 0.477。类似地,如果一个词项在三篇文档中的两篇中出现,那么该词项的IDF就是lg(d/dfi) =

    lg(3/2) = 0.176。如果一个词项在三篇文档中都出现了,那么该词项的IDF就是lg(d/dfi) = lg(3/3) =

    0。

    三篇文档的每个词项的IDF值如下所示:

    现在就可以构造文档向量了。因为文档集中出现了11个词项,所以我们构造一个11维的文档向量。我们可以用上文给出的按字母顺序排列的词项来构建文档向量,所以t1对应第一个词项"a",t2对应"arrived",依次类推。向量j中词项i的权重计算方式为idfi×tfij。文档向量如表2-1所示。

    表2-1 文档向量

    docid

    a

    arrived

    damaged

    delivery

    fire

    gold

    in

    of

    shipment

    silver

    truck

    D1

    0

    0

    0.477

    0

    0.477

    0.176

    0

    0

    0.176

    0

    0

    D2

    0

    0.176

    0

    0.477

    0

    0

    0

    0

    0

    0.954

    0.176

    D3

    0

    0.176

    0

    0

    0

    0.176

    0

    0

    0.176

    0

    0.176

    Q

    0

    0

    0

    0

    0

    0.176

    0

    0

    0

    0.477

    0.176

    在20世纪60年代后期的文献[Salton和Lesk,1968]中就有关于向量空间模型的早期研究。该模型在20世纪70年代中期使用非常普遍[Salton等人,1975],并且现在仍然是计算查询和文档相似度最广泛使用的方法之一[TREC,2003]。这种方法非常重要,因为检索系统可以据此决定最终将哪些文档展示给用户。通常用户只需要最前面的n篇文档,并且这些文档按相似度进行排序。

    接下来,科研人员研究了提升基本的tf-idf权重的词项权重计算方式

    [Salton和Buckley,1988]。人们研究了许多不同的方法,并且认为用下面的公式计算文档i中词项j的权重效果出色:

    这样计算权重的出发点是:在已知的查询和文档中,词频很高的匹配词项淹没了其他匹配词项的效果。为了避免这种现象,科研人员提出使用lg(tf)

    + 1来缩小词频的范围。基于该思想的修订版本是在查询和文档中的词项使用不同的权重。

    一种被称作lnc.ltc的词项权重计算模式非常有效。文档中使用1+lg(tf)×idf计算权重,查询中使用1+lg(tf)计算权重。标签lnc.ltc是如下形式:qqq.ddd,其中qqq指查询权重,ddd指文档权重。这三个字母:qqq或ddd是xyz的形式。

    第一个字母x可以是n、l或a。n表示原始词频或指tf。l表示通过取对数来降低权重,所以可以使用1+lg(tf)。a表示加强权重,所以权重为498)this.width=498;" border=0>

    第二个字母y表示是否使用idf。n表示不使用idf,t表示使用idf。

    第三个字母z表示是否使用文档长度归一化。通过归一化文档长度,我们试着减小检索中文档长度的影响(见公式2-1)。在文献[Singhal,

    1997]中,n表示不使用归一化,c表示使用标准的余弦归一化,u表示使用临界点长度(pivoted

    length)归一化。

    展开全文
  • 摘要:本文介绍了GPT模型基本概念,讲解了GPT模型所需要的基本知识,包括词嵌入,自注意力机制,Transformer框架和Softmax函数,同时还详细阐述了GPT模型的数学原理和实现过程。对于人们了解并掌握预训练模型具有...

    摘要:本文介绍了GPT模型的基本概念,讲解了GPT模型所需要的基本知识,包括词嵌入,自注意力机制,Transformer框架和Softmax函数,同时还详细阐述了GPT模型的数学原理和实现过程。对于人们了解并掌握预训练模型具有较好的帮助作用。

    一、预训练模型简介

    预训练模型是一个通过大量数据上进行训练并被保存下来的网络。可以将其通俗的理解为前人为了解决类似问题所创造出来的一个模型,有了前人的模型,当我们遇到新的问题时,便不再需要从零开始训练新模型,而可以直接用这个模型入手,进行简单的学习便可解决该新问题。
    比如说一个会开手动档汽车的人去开自动档汽车的时候并不需要从头学起,只需要将他在操作手动档汽车时形成的经验,经过微调应用到自动档汽车。

    1、迁移学习与预训练模型

    预训练模型是迁移学习的一种应用。当神经网络在用数据训练模型时,在数据中获取到的信息,其本质就是多层网络一个的权重。将权重提取出来,迁移到其它网络中,其它的网络便学来了这个网络的特征和其所拥有的知识。

    2、预训练模型训练过程

    如何得到和使用预训练模型,下面以自然语言处理领域为例,对其进行解释。
    (1)用词嵌入方法将所要处理的数据的字符串转换成数字;
    (2)使用基于Transformers框架的方法对词向量进行训练;
    (3)将训练得到的网络进行微调,即针对具体的任务进行修正。
    下面将依次对训练过程中提到的几个概念进行解释。

    二、词嵌入

    深度学习的本质是对数字的学习,机器无法直接处理文本字符串,这要求我们先将文本转换为数字,然后继续执行后续的任务。这里介绍两种词嵌入的方法

    1、独热嵌入(one-hot embedding)

    根据所要处理的文本字符串信息创建一个词库表,从0开始为词库中的每一个词依次编号。比如词库中有1000个词,“我”这个词在词库中的位置是第123个,那么“我”用独热向量便表示为一个1×1000维的向量,其中第123维是1,其余位置均为0。
    这是自然语言处理算法中最常见的第一步,其能够清晰的表示每一个词。但其缺点也显而易见,一是若用该方法表示一段文本,矩阵会非常稀疏,二是随着词量的增加,会造成维度爆炸问题,三是这种方法无法表示不同词之间的相互关系,存在语义鸿沟。

    2、词向量嵌入(Word2Vec Embedding)

    词向量嵌入是用一个一层的线性神经网络将N维独热形式的稀疏向量映射为一个M维的稠密向量的过程。
    其有两种语言模型
    Skip-gram模型:用一个词作为输入,预测它周围的上下文。
    CBOW模型:用一个词的上下文作为输入,来预测该词语本身。
    在这里插入图片描述

    以CBOW模型为例,假设单词向量空间的维度为V(即整个词库大小为V),上下文单词窗口的大小为C,最终词向量的维度大小为N。一般来说V远远大于N。
    下面详细介绍其计算过程如下:

    1. 输入层(Input layer)是某词语(Word)的C个上下文单词的独热向量,每个向量的大小均为1*V。
    2. 权值共享矩阵W的大小为V∗N,用随机数对其进行初始化。
    3. 将C个1*V大小的独热向量分别跟同一个大小为V∗N的权值共享矩阵W相乘,得到的是C个1∗N大小的隐层向量(hidden
      layer)。
    4. C个1∗N 大小的hidden layer取平均,得到一个1∗N大小的向量。
    5. 输出权重矩阵W‘的大小为N∗V,用随机数对其进行初始化。
    6. 将得到的隐层向量1∗N与W’相乘(矩阵W‘是矩阵W的转置),并且用softmax处理,得到1∗V的向量,此向量的每一维代表词库中的一个单词。概率中最大的index所代表的单词为预测出的中间词。
    7. 与词语(Word)中的独热向量比较,求loss function的极小值。

    Word2Vec的最终目的,不是要把这个一层的网络训练得多么完美,而是得到模型训练完后的副产物——模型参数(即矩阵W),从而得到每一个独热向量在N维空间中的表示。

    三、自注意力机制

    注意力是我们大脑处理信息的一种非常有效的方法。当过载信息映入眼帘时,我们的大脑会把注意力放在主要的信息上,这就是大脑的注意力机制。比如当读过一本书后,我们会记得这本书大概讲了什么,却很难记全这本书的全部内容,这就是注意力机制发挥的作用。
    注意力机制的本质是从大量信息中筛选出少量重要信息,并聚焦在这些重要信息上,忽略大多数不重要的信息。自注意力机制是注意力机制的变体,减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。比如对于一句话“The animal didn’t cross the street because is was too tired.”中的单词“it”指的是animal还是street对机器来说并不一件容易的事,这时就可以利用自注意力机制进行判别。
    自注意力机制的计算步骤如下:

    1. 将句子中的每个词转换为词向量X;
    2. 用随机分布初始化三个矩阵WQ,QK,WV;
    3. 求出每个词向量所对应的q=WQX,k=WKX,v=WV*V;用Q,K,V表示由所有词向量所对应的q,k,v组成的矩阵
    4. 计算某一个词向量的输出:
      4.1)用该词向量注意力得分score=q*K’;
      4.2)对score进行归一化处理score=softmax(score);
      4.3)求加权值:用score的第i个值点乘V的第i行;
      4.4)将所有的加权值相加,该值即为该词向量对应的输出;
    5. 用4的方法求出每一个词向量的输出Z。

    四、Transformer框架

    与传统的深度学习不同,Transformer抛弃了传统的卷积神经网络(CNN)和循环神经网络(RNN),其整个网络结构全部由自注意力机制组成。
    Transformer由多个Encoder块和Decoder块组成。Encoder块由一个多头自注意力机制和一个前向神经网络组成;Decoder块有两个多头自注意力机制和一个前向神经网络组成,第一个多头自注意力机制采用了Masked操作,第二个多头自注意力机制的k和v使用Encoder块最后输出的编码信息矩阵WKC、WVC得到,q使用WQ*上层输出求出。
    以文本翻译为例解释Transformer大体的工作流程如下:

    1. 获取输入的表示向量X,X由单词的词向量嵌入(Word2Vec Embedding)和位置嵌入(Position Embedding)相加得到;(X是n*d维矩阵,n是句子中单词的个数,d是每个单词用向量表示后的维度)
    2. 将X传入Encoder,经过多个Encoder块后得到输出的编码矩阵C;
    3. 将C传入Decoder中,Decoder会根据翻译过的前i-1个单词来翻译第i个单词。

    在这里插入图片描述

    下面详细解释其各部分细节

    1、单词的向量化表示

    单词向量的词向量嵌入(Word2Vec Embedding)和位置嵌入(Position Embedding,简称PE)相加得到。Word2Vec已在前文介绍,它的问题在于只记录了每一个单词的词信息,而没有记录这些单词在句子中出现的位置信息,我们应该记录下单词在句子中的位置信息,这就是位置嵌入的意义。
    在Transformer中,选用了如下公式来表示PE:
    在这里插入图片描述
    其中,pos表示单词在句子中的位置,d表示PE的维度(与word2Vec Embedding维度一致),2i表示偶数的维度,2i+1表示奇数的维度。

    2、多头自注意力机制(Multi-Head self Attention)

    上图中的每一个self-attention都代表一个多头自注意力机制,它是多个自注意力机制的集成,为每个“头”(注意力机制)保持独立的WQ、WK、WV矩阵,从而产生不同的q、k、v。
    它扩展了自注意力机制的性能,比如当我们用多头注意力机制处理“The animal didn’t cross the street because is was too tired.”时,一个“头”将“it”指向了animal,另一个头则将“it”执行了tired。从某种意义上说,模型对“it”一词的表达在某种程度上是“animal”和“tired”的代表。
    在这里插入图片描述

    其具体的操作流程如下:

    1. 将数据X分别输入到n个自注意力机制中,从而得到n个特征矩阵Z;
    2. 将n个特征矩阵Z拼接(Concat)在一起;
    3. 将拼接后的特征矩阵传入一个一层的全连接网络后得到输出。
      在这里插入图片描述

    3、掩模自注意力机制(Masked Self-Attention)

    之所以采用 Masked 操作,因为在翻译的过程中是顺序翻译的,即翻译完第 i 个单词,才可以翻译第 i+1 个单词。通过 Masked 操作可以防止第 i 个单词知道 i+1 个单词之后的信息。
    与自注意力机制不同的是,在计算词向量的注意力得分矩阵S=QK’ 时,令
    在这里插入图片描述

    式中的是一个方阵,其主对角线及以下位置的元素为1,其余位置元素为0:
    在这里插入图片描述

    4、前向神经网络(Feed Forward)

    Transformer中的前向神经网络层是一个两层的全连接网络。其第一层使用激活函数Relu,第二次不使用激活函数,最终得到的前向神经网络公示如下:
    在这里插入图片描述

    X表示输入,Feed Forward最终得到的输出矩阵的维度与X一致。

    五、经典预训练模型——GPT

    Transformer模型由编码器(encoder)和解码器(decoder)组成,之所以这样设计是因为其能够处理机器翻译,编码-解码架构是过去在机器翻译取得成功的一大原因。
    后来的很多研究发现,架构要么只用编码器,要么只用解码器,并将堆栈堆得尽可能高,输入大量文本进行训练,同样能获得很多的训练效果。
    最具代表性的是基于Transformer框架两个最主要的预训练模型,一个是GPT模型(Generative Pre-Training),另一个是BERT模型(Bidirectional Encoder Representations from Transformers)。GPT是通过Transformer解码器模块构建的,BERT是通过Transformer的编码器构建的。本节主要对GPT模型展开介绍。

    1、仅含解码器的模块

    2018年,Peter J. Liu等提出了一种能够生成语言建模的Transformer模型,该模型摒弃了Transformer的编码器,由6个Transformer的解码器组建构成。
    在这里插入图片描述

    可以看到,它和原始的 Decoder 模块非常类似,也使用了掩模的自注意力机制,只是它们去掉了第二个 Self Attention 层。

    2、GPT模型

    GPT的就是仅含解码器的模块,其总体结构分为两个部分,一是无监督的预训练阶段,二是有监督的下游任务精调阶段。

    (1)无监督预训练阶段(Unsupervised pre-training)

    GPT预训练阶段是根据语言窗口内容预测当前内容。其利用常规语言建模的方法优化给定序列的最大似然估计:
    在这里插入图片描述

    式中,k表示语言窗口大小,θ表示神经网络的参数,使用随机梯度下降法来优化该似然函数的参数。
    对于某窗口词序列, x ′ = x − k . . . x − 1 x'=x_{-k}...x_{-1} x=xk...x1在这里插入图片描述
    e x ′ ∊ R k ∗ ∣ V ∣ e_{x'}∊R^{k*|V|} exRkV表示词序列中各个词汇的独热向量所组成的矩阵; W e W^e We表示词向量矩阵; W P W^P WP表示位置向量;L表示Transformer的总层数。P(x)为输出,是每个词被预测到的概率,然后利用最大似然估计,构造损失函数,进而优化模型的参数。

    (2)有监督的微调阶段(Supervised fine-tuning)

    该阶段是将上阶段从开发领域学习到的知识迁移到下游任务,从而改善低资源任务,其通常是由标注数据进行训练和优化。
    假设下游任务的标注数据集为C,每个样本的输入为 x = x 1 . . . x n x=x_1...x_n x=x1...xn,对应的标签为y。
    1)将C中的每一个x输入到预训练模型中,获得(5.3)式所对应的 h [ L ] h^{[L]} h[L];
    2)将 h [ L ] h^{[L]} h[L]输入一个一层的全连接网络,从而预测最终的标签:
    在这里插入图片描述
    式中的表示这个一层的全连接网络的权重。
    最终,通过优化以下损失函数来得到最终的权重矩阵 W y W_y Wy
    在这里插入图片描述

    六、预训练模型的一个Trick——Softmax函数

    Softmax函数,归一化指数函数,是当前深度学习研究中广泛使用在深度网络有监督学习部分的分类器,经常与交叉熵损失函数联合使用。具体表述如下:
    假设由数组 V V V V i V_i Vi表示 V V V中的第 i i i个元素,那么这个元素的softmax值为:
    在这里插入图片描述
    Softmax函数可将数组的各值映射到区间[0,1]上,且累和为1。
    我们之所以使用Softmax函数是因为其在求导表换上的优越性。对于一个输入为 A = [ a 1 , . . . , a n ] A=[a_1,...,a_n] A=[a1,...,an],权重矩阵为W,输出为 B = [ b 1 , . . . , b n ] B=[b_1,...,b_n] B=[b1,...,bn]的全连接神经网络,
    在这里插入图片描述
    对输出B使用Softmax函数进行处理后可得 S i = e b i ∑ j e b j S_i=\frac{e^{bi}}{∑_je^{bj}} Si=jebjebi
    使用交叉熵求其损失函数
    在这里插入图片描述
    式中 y i y_i yi代表真实值, s i s_i si代表Softmax函数求出的值。
    对于多任务分类问题来讲,在真实值中,只存在一个预测的结果,即只有一个 y i y_i yi的值对应为1,其它值都为0,所有损失函数Loss虽有求和符,实则只有一个值。
    如果真实值的第k个值为1,其余值为0,那么
    在这里插入图片描述
    梯度下降法求矩阵的最优解
    在这里插入图片描述
    已知 S i = e b i ∑ j e b j S_i=\frac{e^{bi}}{∑_je^{bj}} Si=jebjebi,那么可知
    在这里插入图片描述
    将(6.6)式代入(6.5)式可得
    在这里插入图片描述

    七、总结

    本文介绍了GPT模型的基本概念,以及GPT模型所需要的基本知识,主要包括词嵌入,自注意力机制,Transformer框架和预训练过程中常用的一个技巧Softmax函数,并在数学原理和实现过程上详细解释了一个经典的预训练模型——GPT模型。
    本文是一篇介绍性和解释性的文章,对于初学者了解预训练模型并掌握其基本原理和技术能够提供较好的帮助。

    展开全文
  • 1.向量空间模型(Vector Space Models) 1.1 基本概念 定义:向量空间模型将单词或文本用向量表示,通过上下文来获取其语义信息 功能:识别两文本/两类文档间的相似度和独立性 例: 单词基本相同的两句话可能...
  • 向量空间模型

    2021-06-29 16:18:23
    实数域定义向量 设有一个数的集合 F,它满足“F 中任意两个数的加减乘除法(除数不为零)的结果仍然在这个 F 中”,我们就可以称 F 为一个“域”。我们处理的数据通常都是实数,所以这里我只考虑实数域。而如果域 F ...
  • Python实现支持向量机SVM回归模型(SVR算法)项目实战。
  • 想要处理文本首先就要将单词表示成计算机可以处理的格式,表示的方法一般有两种,一种是one-hot编码,另一种是分布式表示,分布式表示涉及从单词个数维度的空间到具有更低维度的连续向量空间的数学嵌入。本篇博文...
  • 2.基于空间向量的余弦算法2.1算法步骤预处理→文本特征项选择→加权→生成向量空间模型后计算余弦。2.2步骤简介2.2.1预处理预处理主要是进行中文分词和去停用词,分词的开源代码有:ICTCLAS。然后按照停用词表中的...
  • 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习...
  • 在Keras模型中使用预训练的词向量文章信息通过本教程,你可以掌握技能:使用预先训练的词向量和卷积神经网络解决一个文本分类问题本文代码已上传到Github本文作者:Francois Chollet什么是词向量?”词向量”(词嵌入)...
  • R语言SVM支持向量模型数据分类实战:探索性数据分析、模型调优、特征选择、核函数选择 目录 R语言SVM支持向量模型数据分类实战:探索性数据分析、模型调优、特征选择、核函数选择 ​ #SVM基本原理 #案例...
  • 【NLP】⚠️学不会打我! 半小时学会基本操作 4⚠️词向量模型.
  • 向量和语言模型

    2021-01-09 16:53:09
    向量向量(word embedding):词的向量表征; 词向量表示: (1)one-hot vector: 将所有单词排序,排序之后每...语言模型 N-gram neural model 根据前n个词来预测下一个词,这样就得到了unigram model, bigram mod
  • 【NLP】⚠️学不会打我! 半小时学会基本操作 2⚠️词向量模型简介
  • support vector machine 支持向量机(二分类模型) 这是一种分类算法,针对于数据小的情况,非线性以及高维的分类问题。 在小数据的情况下,神经网络的的拟合算法都没有svm好 算法原理 svm - 构造出最大间距的边界,...
  • 第四章分类模型-支持向量机SVM知识点详细总结 目录 机器学习算法系列 前言 一、SVM简介 二、基本原理 三、实现步骤 四、求解模型 五、参数说明 六、SVM算法的优缺点 七、应用领域 八、模型代码 前言...
  • GoogleBERT预训练模型在深度学习、NLP领域的应用已经十分广泛了,在文本分类任务达到很好的效果。相比传统的词嵌入word2vec、golve,使用bert预训练得到的效果有更好地提升。这篇不会很深入复杂地分析bert的原理以及...
  • 核支持向量机是非常强大的模型,在各种数据集上的表现都很好。SVM 允许决策边界很复杂,即使数据只有几个特征。它在低维数据和高维数据(即很少特征和很多特征)上的表现都很好,但对样本个数的缩放表现不好。在有...
  • 学习 SVM 的最好方法是实现一个 SVM,可讲理论的很多,讲实现的太少了。... 上面就是如何实现一个相对成熟的 svm 模型的思路,以及配套优化方法,再往后还有兴趣,可以接着实现支持向量回归,也是一个很有用的东西。
  • 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的。...下文介绍了VECMs的基本概念,并在R中估计这种模型模型和数据 向量误差修正模型与VAR模型非常相似,可以有如下形式。 其..
  • 基本光照模型

    2020-12-28 21:49:28
    Phong Bui Tuong 提出一个计算镜面反射光强的经验模型,称为 phong模型,公式为: Ks为物体对于反射光线的衰减系数 Shininess为高光指数 高光指数反映了物体表面的光泽程度。Shininess越大,反射光越集中,当...
  • r语言支持向量机代码

    2020-12-19 13:03:54
    核函数: Linear:使用它的话就成为线性向量机,效果基本等价于Logistic回归。但它可以处理变量极多的情况,例如文本挖掘。 Polynomial:n次多项式核函数,适用于图像处理问题。选择n的好方法是从1(一个线性模型)...
  • 本文仅供自己日后复习所用,参考了很多博客和知乎回答... Word2vec引入CBOW和Skip-GramCBOW最简单的情况:One-word context推广至Multi-word contextWord2vec得到的词向量向量的性能探究几个优化方法Hierarchical So
  • 支持向量机(SVM)原理小结(3)支持向量回归SVR1. 支持向量回归(SVR)1.1 学习算法—对偶形式(1)求min⁡w,b,ξ,ξ^L(w,b,ξ,ξ^,α,α^,μ,μ^)\min\limits_{w,b,\xi,\hat\xi} L(w, b, \xi, \hat\xi, \alpha, \...
  • 支持向量机(Support Vector Machine,SVM)的基本模型是定义在特征空间上间隔最大的线性分类器。它是一种二类分类模型,当采用了核技巧之后,支持向量机可以用于非线性分类。1)线性可分支持向量机(也称硬间隔支持向量...
  • 本文通过两种文本向量化的方式即TF-IDF和词袋模型对中文文本邮件进行预处理,利用朴素贝叶斯、支持向量机、Logistic回归3种模型分别在两种向量化方式下进行建模分析,通过对比各个模型在对应向量化方式的训练精确度...
  • 在计算机上验证和测试莺尾花数据的支持向量机分类实验,sklearn的支持向量机分类算法。 实验目的 1、掌握支持向量机的原理 2、能够理解支持向量机分类算法; 3、掌握sklearn的支持向量机分类算法; 三、实验内容...
  • 基本思想3.间隔与支持向量4.对偶问题 第1关:线性可分支持向量机 1.线性二分类问题 经过前面的学习,我相信大家对线性二分类问题应该非常熟悉了,其本质上就是找到一条决策边界,将我们的数据分成两类。如下图: 图...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 148,148
精华内容 59,259
关键字:

向量基本模型