初次遇见NLP:从词向量到BERT

目录

一、词向量Word2vector

二、Transformer

三、Bert


一、词向量Word2vector

  1. 语言的表达形式有两种:一种是离散的符号,一种是基于上下文的。eg.我 爱 你
    100
    010
    001

    上面的例子是离散的表示,基于one-hot编码,每个单词之间不存在上下文联系和语义之间的联系。而基于上下文的,比如我爱你,和我喜欢你,通过学习就会发现爱和喜欢这两个词比较解近.

  2. word2vec是一种方法来评估词间的关系,比如一个词“欢迎”,对应一个多维的词向量,这就可以通过word2vec实现。这个需要有一些前提来实现。
    1. >大的词表库
    2. >词表中的每个词都可以通过向量表征
    3. >有一个中心词c和一个输出词o
    4. >通过相似度计算来计算c和o同时出现的概率
    5. >调整词向量获得最大概率
  3. 损失函数:就是最大似然,基于中心词,预测周围词的概率的连乘,然后取对数求平均再取负号,就变成求最小问题
  4. 两种模型:skip-gram模型和cbow模型。
    1. >skip-gram模型,通过中心词求周围词的词向量。
    2. >cbow模型,与skip-gram相反,通过周围词求中心词的词向量;但是cbow需要注意的是因为多个输入到一个hidden layer 需要词向量求平均,所以会受影响,可能无法很好的表示词和词之间的关系
  5. 优化方法:hierarchical softmax 和 negative sampling
    1. >分层的softmax用树结构去存取单词,不使用softmax会使的运算速度变为log级别
    2. >负采样,就是只用几个词来训练,这样不需要softmax对整个数据集指数求和,自然快了很多;负采样的负样本有一定的采词依据,依据数学公式(归一化,分子是3/4次方)。
  6. 词向量的局限性:一词多义问题,因为词向量是静态的。

二、Transformer

  1. 组成:由多个encoder和decoder组成,encoder中包含self-attention(敲黑板,这是重点,自注意力主要表示词间的关系)和feed-forward
  2. self-attention:自注意力是transformer的核心。其中含有三个权重矩阵分别是WQ,WK,WV;输入的单词,通过embedding,嵌入到一个向量空间中,然后和这三个矩阵相乘,会生成对应的q,k,v向量,其中q代表query,k代表key,v代表value。然后通过,q*k得到整数型的score,这里要注意,比如针对thinking单词自己的q1,它需要去乘自己的k1得到一个score,也需要去乘其他单词的k,去得到另外的score,这个score就代表thinking和这些单词的相关性。然后需要对score进行除以维度开根号,一般是64维,所以除以8.然后softmax即可。对score除的原因在于,防止在softmax中,数值太大,导致数据偏离梯度比较好的范围,可能会弱化词间的关系。别急,这还没完,然后乘以自己的v向量,即可得到一个对应的自己的向量。
  3. self-attention的输入:需要embedding和positional encoding相结合,这里positional encoding使用的是正余弦的周期函数
  4. rnn与cnn比较:在语义特征提取能力、任务综合特征抽取能力,两者都ok;但是在长距离特征捕获能力,rnn更好

三、Bert

  1. 训练模型+微调
  2. Bert的结构就是输入+双向的transformer+输出
  3. Bert的输入的Embedding是三部分:单词的embedding+句子类型(一个句子一个类型)的Embedding+位置的embedding(这里的位置,就是比较普通的位置比如1,2,3,4这样子来表示)
  4. Bert的预训练的任务主要由两个:MLM(Mask language model)也就是做完形填空的和NSP(Next sentence predict)下个句子预测的
  5. 目前的预训练模型:
    XLNet
    RoBERTa
    ALBERT
    GPT2
    ERNIE
    DistilBERT
    VideoBERT
    FastBERT
作者也是开始逐步了解,和大家分享自己的心得,有不对的地方,欢迎读者指正,一起讨论。感谢。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值