Siamese CBOW原理

作者: 晓柒NLP与药物设计 | 来源:发表于2022-07-16 15:30 被阅读0次

    论文链接:Siamese CBOW: Optimizing Word Embeddings for Sentence Representations

    Siamese CBOW是一个孪生网络(Siamese network),并且在句子层面应用了CBOW根据周围词预测中心词的策略,即相邻句子与中心句语义相近。原论文根据该策略,将每个目标句的相邻句子作为正样本,非相邻句子作为负样本。但本质思想为正样本和目标句的语义相近,负样本和目标句的语义不同,根据知识库的实际场景,可以将query作为目标句,与query同标问的相似问作为正样本,与query不同标问的相似问作为负样本。Siamese CBOW的网络结构如下:

    在深度学习FAQ模型的实际应用如下:

    1. 输入句子分别为query(对应word embedding sentence i),与query同标问的两个正样本(对应word embedding sentence i-1 和 i+1),与query不同标问的两个负样本(对应negative example 1 和 n)

    2. 为5个输入句子分词(jieba),以词序列形式表示句子(对应[w_{i,1}w_{i,2}、...、w_{i,...}],......)

    3. 每个输入句子的词序列经过词向量矩阵W获取每个词的词向量,并平均词向量生成每个句子的句向量(分别对应average_iaverage_{i-1}average_{i+1}average_{neg \ 1}average_{neg \ n}

    4. query的句向量分别和正负样本的句向量计算余弦相似度

    5. 余弦值经过softmax得到预测值

      query的句向量(s_i)与各正负样本的句向量(s_j)的预测值如下:
      p_\theta(s_i, s_j) = \frac{e^{cos(s_i^\theta,s_j^\theta)}}{\sum_{s_{‘} \in \{S^+ \cup S^- \}}e^{cos(s_i^\theta, s_j^\theta)}}
      其中\theta为模型参数,即词向量矩阵W(Siamese CBOW的唯一可训练参数)

    6. 使用梯度下降不断优化损失函数,则可以得到词向量矩阵W。

      query和正负样本的目标概率与预测值的交叉熵作为损失函数:
      L = \sum_{s_j \in \{S^+ \cup S^- \}} p(s_i,s_j) \cdot log(p_\theta(s_i, s_j))
      其中目标概率:
      p(s_i,s_j) = \left\{\begin{matrix} \frac{1}{|S^+|},\ \ if \ s_j \in S^+ \\ 0,\ \ if \ s_j \in S^- \end{matrix}\right.

    相关文章

      网友评论

        本文标题:Siamese CBOW原理

        本文链接:https://www.haomeiwen.com/subject/aqwhirtx.html