论文笔记:Deep Hashing Network for Efficient Similarity Retrieval

论文笔记: Deep Quantization Network for Efficient Image Retrieval

灵魂三问

论文提出的问题

由于quantization error, 哈希编码将不能准确地表达特征

论文做了什么?

  1. 用多池化层卷积神经网络,来表达图片
  2. 用全连接的哈希层来生成二进制哈希编码
  3. 用相应的交叉熵层来学习相似性
  4. 用配对的量化损失来控制哈希质量

论文达到了什么效果?

通过在标准的哈希检索数据集上的实验,文中的方法超过了最新的哈希方法。

深度哈希网络 Deep Hashing Network

相似检索通常是给一系列为N个点的的数据集 { x i } i = 1 N \left\{\boldsymbol{x}_{i}\right\}_{i=1}^{N} { xi}i=1N, 其中每一个点都是一个D维的特征向量 x ∈ R D \boldsymbol{x} \in \mathbb{R}^{D} xRD

所以我们的目标就是找一个非线性的哈希函数 f : x ↦ h ∈ { − 1 , 1 } K f: \boldsymbol{x} \mapsto \boldsymbol{h} \in\{-1,1\}^{K} f:xh{ 1,1}K来编码,将每一个 x x x编码成一个K-比特的哈希码。其中 S = { s i j } \mathcal{S}=\left\{s_{i j}\right\} S={ sij}通常由语义来构建。

所以整个结构以配对 ( x i , x j , s i j ) \left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}, s_{i j}\right) (xi,xj,sij)的形式作为输入。

模型

作者从Alexnet网络开始,作者将AlexNet网络中全连接层 fc8换成了 fch层,包括了K个隐形单元,也就是将fc7层转换为了一个K维的哈希编码。并把这一层的输出结果叫做 z i 8 z_i^8 zi8也就是第八层的输出,也就是哈希编码。

在这里插入图片描述

作者将输出挤压到 [ − 1 , 1 ] [-1,1] [1,1]上,通过hyperbolic tangent(tanh)函数。

这个文章中,作者使用了pairwise-relationship,以及在Bayesian框架下控制了量化差异。

我们用汉明距离(Hamming distance)表示两个二进制编码的距离 dist ⁡ H ( h i , h j ) = 1 2 ( K − ⟨ h i , h j ⟩ ) \operatorname{dist}_{H}\left(\boldsymbol{h}_{i}, \boldsymbol{h}_{j}\right)=\frac{1}{2}\left(K-\left\langle\boldsymbol{h}_{i}, \boldsymbol{h}_{j}\right\rangle\right) distH(hi,hj)=21(Khi,hj)

我们用MLP最大似然估计估计 H H H, 也就是MAP 估计
log ⁡ p ( H ∣ S ) ∝ log ⁡ p ( S ∣ H ) p ( H ) = ∑ log ⁡ p ( s i j ∣ h i , h j ) p ( h i ) p ( h j ) \begin{aligned} \log p(\boldsymbol{H} \mid \mathcal{S}) & \propto \log p(\mathcal{S} \mid \boldsymbol{H}) p(\boldsymbol{H}) \\ &=\sum \log p\left(s_{i j} \mid \boldsymbol{h}_{i}, \boldsymbol{h}_{j}\right) p\left(\boldsymbol{h}_{i}\right) p\left(\boldsymbol{h}_{j}\right) \end{aligned} logp(H

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Deep Hashing for Compact Binary Codes Learning" 是一篇关于深度哈希学习的论文。该论文提出了一种用于学习紧凑二进制码的深度哈希算法。以下是该论文中深度哈希算法的公式推导过程: 1. 首先,给定一个训练集 $\{x_i\}_{i=1}^n$ 和它们的标签 $\{y_i\}_{i=1}^n$,其中 $x_i$ 是输入数据,$y_i$ 是输出标签。 2. 然后,利用神经网络学习一个将输入数据映射到二进制码的哈希函数 $h(x_i)$,其中 $h(x_i)$ 是一个 $k$ 位的二进制向量,$k$ 是哈希码的长度。 3. 在深度哈希学习中,我们使用多个哈希函数来生成多个二进制码。因此,我们学习 $m$ 个哈希函数,每个哈希函数对应一个二进制码 $B_j$。 4. 对于每个输入数据 $x_i$,我们得到 $m$ 个哈希码 $B_j^i$,其中 $j=1,2,...,m$。 5. 然后,我们将这些哈希码组合成一个紧凑的二进制码 $b_i$,即 $b_i = [B_1^i, B_2^i, ..., B_m^i]$。 6. 确定损失函数,使得学习到的二进制码可以最大程度地保留数据之间的相似度。 7. 定义损失函数 $L$,其中 $L$ 由两部分组成:量化损失和分类损失。 8. 量化损失用于衡量哈希码的质量,分类损失用于保留数据之间的相似度。 9. 量化损失可以表示为:$L_{quan} = \sum_{i=1}^n\sum_{j=1}^m\frac{1}{2}(B_j^i - h_j(x_i))^2$,其中 $h_j(x_i)$ 是第 $j$ 个哈希函数的输出。 10. 分类损失可以表示为:$L_{cls} = -\sum_{i=1}^n\sum_{j=1}^n w_{ij}y_iy_j\log\sigma(b_i^Tb_j)$,其中 $w_{ij}$ 是样本 $i$ 和 $j$ 之间的相似度权重,$\sigma$ 是 sigmoid 函数。 11. 最终的损失函数可以表示为:$L = \lambda L_{quan} + L_{cls}$,其中 $\lambda$ 是量化损失的权重。 12. 在训练过程中,我们使用反向传播算法来优化损失函数,学习到最优的哈希函数和二进制码。 这就是 "Deep Hashing for Compact Binary Codes Learning" 论文中深度哈希算法的公式推导过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值