Conv-knrm模型介绍


论文链接

前言

该模型是同作者对KNRM的改进,KNRM直接计算了query和document的单词嵌入向量之间的余弦作为其单词level的相似性,进而使用kernel-pooling计算query和document的相似性,Conv-knrm则考虑了n-gram级别的单词表达,通过卷积的形式计算单词的n-gram representation,同时将所有的query和document表达矩阵交叉匹配,计算多个相似矩阵,每个相似矩阵都是用kernel-pooling提取单词不同程度的软匹配,从而从更多的角度,更细粒的来获得query和document的相似性。

在这里插入图片描述

N-gram组成和交叉匹配

T d , T q T_d, T_q Td,Tq表示document和query的嵌入矩阵。单词的嵌入维度为 L L L
v = w ⋅ T i : i + h v = w·T_{i:i+h} v=wTi:i+h
对于一个窗口大小为h的卷积来说,一个卷积核就是对这h个单词嵌入加权求和,获得一个value。 w w w 1 × h L 1\times hL 1×hL
F F F个卷积核来从不同角度计算value:
g → i h = r e l u ( W h ⋅ T i : i + h + b → h ) , i = 1 , . . . , m W h : F × h L , b → h : F × 1 \overrightarrow{g}^h_i = relu(W^h·T_{i:i+h}+\overrightarrow{b}^h), i=1,...,m \\ W^h:F\times hL, \overrightarrow{b}^h:F\times1 g ih=relu(WhTi:i+h+b h),i=1,...,mWh:F×hL,b h:F×1
当计算到边界单词时添加’<PAD>’。
即:
G h = C N N h ( T ) = [ g → 1 h , g → 2 h , . . . , g → m h ] G h : m × F G^h = CNN^h(T) = [\overrightarrow{g}^h_1,\overrightarrow{g}^h_2,...,\overrightarrow{g}^h_m]\\ G^h:m\times F Gh=CNNh(T)=[g 1h,g 2h,...,g mh]Gh:m×F
G h G^h Gh的每一行都代表一个长度为F的h-gram向量。这样可以计算 G q h , G d h , h = 1 , . . . , h m a x G^h_q, G^h_d, h=1,...,h_{max} Gqh,Gdh,h=1,...,hmax

交叉匹配层就是匹配query和document的各个长度(这个长度指的是h-gram的h)的n-grams。设query的n-gram的长度为 h q h_q hq,document的n-gram的长度为 h d h_d hd,可以生成一个转换矩阵 M h q , h d M^{h_q,h_d} Mhq,hd,该矩阵的每一个元素都代表query-document的n-gram对的相似值。
M i , j h q , h d = c o s ( g → i h q , g → j h d ) M = { M h q , h d ∣ 1 < = h q < = h m a x , 1 < = h d < = h m a x } M_{i,j}^{h_q,h_d} = cos(\overrightarrow{g}_i^{h_q},\overrightarrow{g}_j^{h_d})\\ M=\{M^{h_q,h_d}|1<=h_q<=h_{max}, 1<=h_d<=h_{max}\} Mi,jhq,hd=cos(g ihq,g jhd)M={Mhq,hd1<=hq<=hmax,1<=hd<=hmax}

使用n-gram的转换矩阵来排序

这一步把转换矩阵 M M M池化为K维的软特征向量,对于每一个转换矩阵: ϕ ( M h q , h d ) = { K 1 ( M h q , h d ) , K 2 ( M h q , h d ) , . . . , K k ( M h q , h d ) } ϕ ( M h q , h d ) : k × 1 K k ( M h q , h d ) = ∑ i = 1 m log ⁡ K k ( M i h q , h d ) K k ( M i h q , h d ) = ∑ j exp ⁡ ( − ( M i j h q , h d − μ k ) 2 2 σ k 2 ) \\ \phi(M^{h_q,h_d})=\{K_1(M^{h_q,h_d}),K_2(M^{h_q,h_d}),...,K_k(M^{h_q,h_d})\}\\ \phi(M^{h_q,h_d}):k\times 1\\ K_k(M^{h_q,h_d}) = \sum_{i=1}^{m}\log K_k(M_i^{h_q,h_d})\\ K_k(M_i^{h_q,h_d}) = \sum\limits_{j}\exp(-\frac{(M_{ij}^{h_q,h_d}-\mu_k)^2}{2\sigma_k^2}) ϕ(Mhq,hd)={K1(Mhq,hd),K2(Mhq,hd),...,Kk(Mhq,hd)}ϕ(Mhq,hd):k×1Kk(Mhq,hd)=i=1mlogKk(Mihq,hd)Kk(Mihq,hd)=jexp(2σk2(Mijhq,hdμk)2)
其中 μ k , σ k \mu_k,\sigma_k μk,σk是人为确定的。

Φ ( M ) = ϕ ( M 1 , 1 ) ⊕ . . . ϕ ( M h q , h d ) . . . ⊕ ϕ ( M h m a x , h m a x ) Φ ( M ) : K × h m a x 2 \Phi(M) = \phi(M^{1,1})⊕...\phi(M^{h_q,h_d})...⊕\phi(M^{h_{max},h_{max}})\\ \Phi(M):K\times h_{max}^2 Φ(M)=ϕ(M1,1)...ϕ(Mhq,hd)...ϕ(Mhmax,hmax)Φ(M):K×hmax2

Learning-to-rank:
f ( q , d ) = t a n h ( w r T Φ ( M ) + b r ) f(q,d) = tanh(w_r^T\Phi(M)+b_r) f(q,d)=tanh(wrTΦ(M)+br)
计算上式时先把 M M M展开成 ( K ⋅ h m a x 2 ) × 1 , w r : 1 × ( K ⋅ h m a x 2 ) , b r : 1 (K·h_{max}^2)\times1,w_r:1\times (K·h_{max}^2),b_r :1 (Khmax2)×1,wr:1×(Khmax2),br:1
损失函数是:
l = ∑ q ∑ d + , d − ∈ D q + , − m a x ( 0 , 1 − f ( q , d + ) + f ( q , d − ) ) l=\sum\limits_{q}\sum\limits_{d^+,d^- \in D_q^{+,-}}max(0,1-f(q,d^+)+f(q,d^-)) l=qd+,dDq+,max(0,1f(q,d+)+f(q,d))
D q + , − D_q^{+,-} Dq+,表示的是对于query q q q的文档对, d + d^+ d+的相关性高于 d − d^- d(一般情况: d + d^+ d+是被用户点击过的文档, d − d^- d是被跳过的文档)。

域迁移

现实中可能目标域的标签十分有限。所以作者提出了一个域迁移的方法。在相似的数据充足的源域里训练Conv-knrm模型,然后在目标域里再次训练。不过再次训练的过程只更新learning-to-rank层。前面的是固定的。

因为转换矩阵M的每一个元素都从不同的角度(这里的不同角度我是这样理解的:不同的kernels( μ , σ \mu,\sigma μ,σ)代表了不同的侧重点,h-gram不同的h也代表了word representation的不同角度的表达,cross match更是通过排列组合的形式把所有可能出现的表达形式都计算出来)代表某一种特定类型的软标签,learning-to-rank层就是学习当前域里这些软标签的权重,域迁移时软标签是稳健的,但是他们的权重是会变化的,因此只学习learning-to-rank层的权重参数即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Conv-TasNet(全名为Convolutional Time-domain Audio Separation Network)是一种用于音频分离的神经网络模型。它的主要目标是将混合音频信号分离成单个源信号。 Conv-TasNet模型源代码包含了一系列用于实现该模型的函数和类。在代码中,可以找到以下关键组件: 1. 搭建网络架构:Conv-TasNet使用了一系列卷积层和线性层来实现音频分离的任务。代码中定义了这些网络层的结构,包括卷积层的卷积核大小、激活函数和填充方式等。 2. 定义损失函数:为了训练网络模型,需要定义一个适合音频分离任务的损失函数。Conv-TasNet使用了一种称为"time-domain pit loss"的损失函数,用于最小化预测结果与真实分离音频之间的差异。 3. 数据预处理:在代码中提供了一些函数用于音频数据的预处理,如读取音频文件、将音频转换为时域图像、对图像进行归一化处理等。 4. 训练和评估模型:代码提供了训练和评估模型的函数,可以使用给定的训练数据对Conv-TasNet进行训练,并使用测试数据评估模型的性能。 5. 模型调用和使用:在代码的最后,提供了一个函数或类用于加载训练好的Conv-TasNet模型,并使用该模型对新的音频信号进行分离。 Conv-TasNet模型的代码实现较为复杂,具体细节可以通过查看官方源代码或相关文档来了解。使用Conv-TasNet模型可以对混合音频信号进行分离,得到单个源信号的音频数据,具有一定的实用性和应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值