另外 Polyvore 数据集的衣服是有一个固定的顺序的——一般是tops、bottoms、shoes 以及 accessories,对于 tops 的顺序也是固定的,一般是 shirts 或者 t-shirts,然后是外套,而 accessories 的顺序一般是手提包、帽子、眼镜、手表、项链、耳环等;
因此,这种固定顺序可以让 LSTM 模型学习到时间的信息。
3. 方法 3.1 Fashion Compatibility Learning with Bi-LSTM第一部分介绍的是基于双向 LSTM 的服饰匹配性学习。这主要是利用了 LSTM 模型的特性,它们可以学习到两个时间点之间的关系,同时使用由不同细胞调节的记忆单元,有助于利用长期的时间依赖性。
基于这个特性,本文将一套搭配看作一个序列,搭配中的每个图片就是一个独立的时间点,然后利用 LSTM 来对搭配的视觉搭配关系进行建模。
给定一套搭配,$F={x_1, x_2, \cdots, x_N}$,其中 $x_t$ 是搭配中第 t 个衣服经过 CNN 后,提取到的特征。在每个时间点,先采用前向的 LSTM 对给定的图片预测其下一张图片,这种做法学习两个时间点的关系相当于在学习两件衣服之间的匹配关系。
这里使用的 loss 函数如下所示:
其中 $\theta_f $表示前向预测模型中的模型参数,而 $P_r(\cdot)$ 是 LSTM 模型计算的,表示基于之前的输入来预测得到 $x_{t+1}$ 的概率。
更详细点说,LSTM 将输入映射到输出也是通过以下一系列的隐藏状态,计算公式如下:
其中 $x_t, h_t$ 分别表示输入和输出向量,其他的 $i_t, f_t, c_t, o_t$ 分别表示输入门、遗忘门、记忆单元和输出门的激活向量。
参考论文《 Recurrent neural network based language model》中使用 softmax 输出来预测一个句子中下一个单词,本文也是在 $h_t$ 之后增加了一个 softmax 层来计算下一件衣服出现的概率:
其中$X$ 表示的是当前 batch 的所有图片,这种做法可以让模型在看到多种样本后学习到具有区分度的风格和匹配性信息,另外,实际上可以让 $X$ 表示整个数据集,但是本文没有考虑这种做法的原因是数据集的数量太多以及图片特征的维度太大。只是限制在一个 batch 内可以提高训练的速度。
除了可以正向预测衣服,实际上也可以反向预测衣服,比如对于一条裤子,其下一件衣服可以是上衣或者是鞋子,所以可以有一个反向 LSTM :
这里的 $P_r(\cdot)$ 计算方式如下:
注意,这里在 F 中会添加两个零向量 $x_0, x_{N+1}$ ,作用是让双向 LSTM 知道何时停止预测下一件衣服。
一般来说,一套搭配通常都是同种风格衣服的集合,即有相似的风格,比如颜色或者纹理,而本文的做法,将搭配当做一种固定顺序的序列来学习,即可以学到搭配的匹配性,也能学习到搭配的整体风格(主要是通过记忆单元来学习)。
3.2 Visual-semantic Embedding第二部分是视觉-语义向量的学习。
通常对于服饰推荐,都会有多种形式的输入,比如图片或者文本描述类型,所以很有必要学习一个文本和图片的多模态向量空间。
本文没有选择比较耗时耗力的人工标注图片的标签属性方式,而是采用弱标注的网络数据(weakly-labeled web data),即数据集自带的每张图片的文本描述信息。根据这个信息,本文根据论文《Unifying visual semantic embeddings with multimodal neural language models》里常用的对图片-文本对构建模型的方法,将图片和其文本描述映射到一个联合空间,训练得到一个视觉-语义向量。
这里给出一些定义,令 $S={w_1,w_2,\cdots, w_M}$ 表示文本描述,其中 $w_i$ 表示单词,然后将其用一个 one-hot 向量 $e_i$ 进行表示,然后映射到向量空间 $v_i = W_T \cdot e_i$,其中 $W_T$ 表示词向量矩阵,所以最终这个文本描述的表示就是
$$
v=\frac{1}{M}\sum_i v_i
$$
而图片向量表示为:
$$
f=W_I\cdot x
$$
在视觉-语言向量空间,本文会采用余弦相似性来评估图片和其文本描述的相似性:
$$
d(f,v) = f\cdot v
$$
其中 f 和 v 都会进行归一化,因此对于视觉-语义向量学习会用一个对比损失(contrastive loss) 进行优化:
$$
E_e(\theta_e)=\sum_f \sum_k max(0, m-d(f,v)+d(f,v_k)) + \sum_v\sum_k max(0, m-d(v,f)+d(v,f_k))
$$
其中 $\theta_e={W_I, W_T}$ 表示模型参数,$v_k$ 表示和 f 不匹配的文本描述,而$f_k$ 表示和 v 不匹配的图片。所以最小化上述 loss 来达到让图片向量 f 和其文本描述 v 的距离,比 f 到不匹配的文本描述 $v_k$ 的距离要更近一个间隔 m ,对 v 也是相同的实现效果。在训练过程中,同个 batch 中这种不匹配的样本例子是用于优化上述 loss,这种做法使得具有相似语义属性和风格的服饰在学习到的向量空间中距离更近。
这里是将上述两种操作都联合起来,即同时学习搭配的匹配性和视觉-语义向量,因此整体的目标函数如下所示: