pytorch深入学习(七)

  • 关于RNN和LSTM的介绍可以看我之前的文章:RNN与LSTM

自然语言处理-词向量模型-Word2Vec

在这里插入图片描述

  • 输入两个词, 输出一个词语的概率, 也就是分类任务,
  • 输入其实用了torch.nn.Embedding层, 是顺着索引找到对应的向量, 所以embedding的维度很好知道,就是索引×需要的维度, 举个例子, 假如我们有4个词, 每个词想用10维向量表示, 那么embedding的维度就是4*10
    现在有个问题, 假如是多分类任务, 如果我的数据中有5w个词, 难道最后的输出是5w个吗?

构建训练数据

CBOW和Skip-gram模型

在这里插入图片描述

在这里插入图片描述
Skipgram是输入中间值预测上下文,CBOW是输入上下文预测中间值

负采样方案

在这里插入图片描述

  • 之前提到假如是按多分类来处理会很难, 那么就可以转化一下训练方案, 原来是输入一个词预测一个词, 现在可以变成输入两个词, 看看属于上下文的概率值, 这样就是个二分类任务,训练数据中满足的target为1
  • 为了满足训练要求,再人为构建target为0的数据, 一般5个左右就够了

语言分类任务

  • 先来看一下数据集:
    在这里插入图片描述
    也就是类似新闻标题对应标签, 那么对应的每个字的embedding怎么办呢? 比如‘我’这个词, 假如它对应的是300维向量,那么我们可以有一个文件提前设置好这个参数, 不用训练(暂时的理解)

  • 每句话长度不一, 我们可以选取最长的作为标准, 或者选取一个中位数, 太长的截断, 不够的可以用0或者特定的padding字符

猜你喜欢

转载自blog.csdn.net/landing_guy_/article/details/120398323