DSSM模型

文本匹配

文本匹配是NLP中的一个核心问题,例如信息检索可以归结成查询项和文档的匹配;智能问答可以归结为问题和候选答案的匹配;对话系统可以归结为对话和回复的匹配。
文本匹配任务发展历程:单语义模型–>多语义模型–>匹配矩阵模型–>深层句间交互模型。

DSSM模型

DSSM将query和doc映射到同一个低维向量空间,在这个空间内,query和doc的相似度可以由这两个向量的空间距离计算得出。(向量间的距离表示匹配程度)
模型优化策略:给定输入时,最大化正确标签出现的条件概率,即相当于分类任务,利用softmax交叉熵损失。
关键点: 采用词哈希技术应对大规模的网络搜索。

词哈希技术

本质为一种embedding技术,以#开始,#结束,利用n-gram滑动窗口记录每次滑过的单词切片,简历单词切片索引字典。
例如:单词text , n=3(即3-gram)
第一步,添加开始结束标识:#text#
第二步,设置步长为1,大小为n的滑动窗口,记录每次滑过的单词切片。 结果: #te,tex,ext,xt#

优点:

  • 压缩空间,采用词哈希技术,可以词的向量空间大幅度减少,同时增强泛化能力。
  • 使得形态上相近的单词有相近的表达,有很强的鲁棒性,大幅度缓解OOV问题。

问题:

  • 切分冲突,即不同的切分后的n-gram存在相同的情况。

网络结构
在这里插入图片描述

  1. 词哈希–线性映射
    在这里插入图片描述

  2. 全连接层
    在这里插入图片描述

  3. 余弦相似度计算语义相关性
    在这里插入图片描述
    优化函数:
    在这里插入图片描述
    代码

class DSSM(nn.Module):
    def __init__(self):
        super(DSSM, self).__init__()
        self.embedding = nn.Embedding(args.char_size, args.embedding_size)
        self.liner1 = nn.Linear(args.embedding_size, 256)
        self.liner2 = nn.Linear(256, 128)
        self.liner3 = nn.Linear(128, 64)
        self.dropout = nn.Dropout(p=0.2)

    def forward(self, a, b):
        a = self.embedding(a).sum(dim=1)
        b = self.embedding(b).sum(dim=1)

        a = torch.tanh(self.liner1(a))
        a = self.dropout(a)
        a = torch.tanh(self.liner2(a))
        a = self.dropout(a)
        a = torch.tanh(self.liner3(a))

        b = torch.tanh(self.liner1(b))
        b = self.dropout(b)
        b = torch.tanh(self.liner2(b))
        b = self.dropout(b)
        b = torch.tanh(self.liner3(b))

        cosine = torch.cosine_similarity(a, b, dim=1, eps=1e-8)

        return cosine

    def _initialize_weights(self):
        for m in self.modules():
            if isinstance(m, nn.Linear):
                torch.nn.init.xavier_normal_(m.weight, gain=1)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值