水平卷积
水平卷积的特点: filter 的宽 与 embedding 矩阵的宽是相等的,在embedding 矩阵从上向下滑动的过程中是通过 filter 的高 来控制要关注几个行为。
如图所示,水平卷积层中的卷积在 latent space 上滑动并卷积计算后通过激活函数得到的向量,再通过一个max-pooling ,取出向量中最大的一个值,最后若干卷积的结果 concat 到一起就是该层的输出。
W ------------- | | | | H | | --------------
举个例子,如下图,历史行为有4个,要预测的候选为长城和酒吧。这时可以设计有8个 filter,长为1、2、3、4的 filter 各有两个。下图中的F1、F2就是长为2的两个 filter,用来挖掘序列中2个行为的 union-level pattern。
最后学出来的效果很可能就如左图所示,颜色越深的格子代表值越大。F1在 latent space 上从上到下滑动一遍做卷积得到的值中,最大的就是飞机和旅店 embedding 的加权和,对于预测 target 长城时起到很大的作用;F2相当是提取快餐和饭店 embedding 的组合,对于预估 target 酒吧时起到很大的作用。
实际上,水平卷积层得到的是 不同窗口长度,窗口中不同关注度 的行为加权和的最大值,以此进行union-level pattern 建模。
竖直卷积
竖直卷积 filter 的特点是:长和 latent space 的长是相等的,宽为1。竖直卷积在 latent space 从左往右滑动一遍得到的向量:相当于序列中各个行为embedding的加权求和。使用多个filter,相当对序列行为用不同关注度的加权求和。该层并没有max-pooling操作,每个filter 得到的向量都concat 到一块作为该层的输出。
实际上, 这种方式保留了历史行为embedding 的所有维度,得到以不同关注度对历史所有行为 加权和的结果。可能第一个filter 关注的是第n个行为,第二个filter 关注的是第m个行为,以此进行point-level pattern 建模。
水平卷积在图像上
竖直卷积在图像上
垂直边界卷积核与水平边界卷积核
我们可以看下面这种图,垂直边界卷积核就只把垂直方向的线条给提取出来了,忽略水平方向的线条。
水平边界卷积核就只把水平方向的线条给提取出来了。