赞
踩
Pang, Liang, et al. “Text Matching as Image Recognition.” AAAI. 2016.
https://github.com/pl8787/MatchPyramid-TensorFlow
概述:构建文本与文本的相似矩阵,把相似矩阵当作是图片,然后采用 CNN 对其进行分类二分类(相似与不相似)。
构建相似矩阵 M:
得到图 M,然后进行卷积得到特征图
再用动态最大池化将变长的特征图变为尺度一定(所谓动态池化就是使用池化窗口大小等于文本实际大小除确定的大小向上取整)
然后再进行卷积和max-pool得到最终的特征图
最后再用两层感知机(全连网络)和softmax进行二分类
训练时就采用梯度下降进行训练
读后感:感觉这种方法对语序比较鲁棒,想法也比较直观。在阅读代码时学习到一个好用的 tensorflow 函数 tf.einsum,爱因斯坦求和,6到飞起。
# tf.einsum( equation, *inputs)
# Matrix multiplication
output = tf.einsum('ij,jk->ik', u, v) # output[i,k] = sum_j u[i,j] * v[j, k]
# Dot product
output = tf.einsum('i,i->', u, v) # output = sum_i u[i]*v[i]
# Outer product
output = tf.einsum('i,j->ij', u, v) # output[i,j] = u[i]*v[j]
# Transpose
output = tf.einsum('ij->ji', u) # output[j,i] = u[i,j]
# Batch matrix multiplication
output = tf.einsum('aij,ajk->aik', u, v) # output[a,i,k] = sum_j u[a,i,j] * v[a, j, k]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。