目录

Wu Z., Xiong Y., Yu S. & Lin D. Unsupervised Feature Learning via Non-Parametric Instance Discrimination. arXiv preprint arXiv 1805.01978

这篇文章也是最近很虎的contrastive learning的经典之作, 其用于下游任务的处理虽没现在的简单粗暴, 但效果依然很好.

主要内容

因为作者实际上是从一个无监督的角度去考虑的, 其出发点就是, 如果希望将分类器将每一个样本都区分开来, 是否能够获得比较好的特征呢? 输入\(x\)经过embedding function 得到\(f_{\theta}(x)\), 即特征, 那么现在的问题是:

  • 目标是将所有样本作为一个单独的类别, 这就会导致类别个数很大, 甚至成百上千万, 如果这是还和普通的分类任务一样, 将
\[P(i|x) = \frac{\exp (w_i^T f_{\theta}(x))}{\sum_{i=1}^n \exp (w_j^T f_{\theta}(x))},
\]

​ 则最后一个分类层的权重\(W \in \mathbb{R}^{k \times n}\), 这将是无法承受的存储量和计算量.

为了解决这个问题, 作者选择的首先构造一个memory bank, 将特征存储起来, 第\(i\)个样本对应的为\(v_i\), 而当前\(f_{\theta}(x_i)\)记作\(f_i\), 则

\[P(i|x) = \frac{\exp (f_{\theta}(x)^Tv_i/\tau)}{\sum_{j=1}^n\exp(f_{\theta}(x)^T v_j / \tau)},
\]

这里\(\tau\)是temperature.

这样就避免了\(w\), 且符合直觉: 即衡量了\(f_{\theta}(x)\)与数据中的第\(i\)个样本的相关度. 但是, 虽然这一定程度上减少了存储量, 但是计算量并没有减少, 即我们需要估计分母\(Z_i\), 实际上, 这就是一个配平的问题, 这是负样本采样可以发挥作用的地方.

假设

\[h(i, v) := P(D=1|i,v) = \frac{P(i|v)}{P(i|v)+m P_n(i)},
\]

其中\(P_n(i)\)为一个均匀分布, 即每个特征被选中的概率为\(\frac{1}{n}\). 然后便是经典的损失

\[\mathcal{J}_{NCE} (\theta) = -\mathbb{E}_{P_d} [\log h(i, v)] - m \cdot \mathbb{E}_{P_n}(\log (1 -h(i,v'))).
\]

个人感觉: \(P_d(i, v) = P(v) \cdot Q(i|v)\), 其中\(Q(i|v)\)仅当\(v\)为第\(i\)个样本点的特征是概率为\(1\)否则为\(0\). 而\(P_n(i, v) = P(v) \cdot \frac{1}{n}\). 同时, 估计

\[Z_i \approx \frac{n}{m} \sum_{k=1}^m \exp(v_{jk}^T f_i/\tau),
\]

感觉就像是一个抽样. 这个\(\frac{n}{m}\)最新的文章里出现过, 但是当时没感觉出其意义来, 原来源头是在这?

解决了计算了和存储问题, 还有一个训练不稳定的问题要解决.

训练不稳定的诱因, 作者认为是每个样本作为一个类, 如此每个类在每个epoch里仅会被访问一次. 解决策略是用proximal 算子:

\[\mathcal{J}_{NCE}(\theta) = -\mathbb{E}_{P_d} [\log h(i, v^{(t-1)})-\lambda \|v^{(t)}-v^{(t-1)}\|] - m \cdot \mathbb{E}_{P_n}(\log (1 -h(i,v'))).
\]

有疑问的是, 我看的proximal算法里面, 应该是\(\log h(i, v^{(t)})\), 虽然二者可能相差不大.

Unsupervised Feature Learning via Non-Parametric Instance Discrimination的更多相关文章

  1. paper 124:【转载】无监督特征学习——Unsupervised feature learning and deep learning

    来源:http://blog.csdn.net/abcjennifer/article/details/7804962 无监督学习近年来很热,先后应用于computer vision, audio c ...

  2. 泡泡一分钟:Stabilize an Unsupervised Feature Learning for LiDAR-based Place Recognition

    Stabilize an Unsupervised Feature Learning for LiDAR-based Place Recognition Peng Yin, Lingyun Xu, Z ...

  3. 转:无监督特征学习——Unsupervised feature learning and deep learning

    http://blog.csdn.net/abcjennifer/article/details/7804962 无监督学习近年来很热,先后应用于computer vision, audio clas ...

  4. [转] 无监督特征学习——Unsupervised feature learning and deep learning

    from:http://blog.csdn.net/abcjennifer/article/details/7804962 无监督学习近年来很热,先后应用于computer vision, audio ...

  5. UFLDL(Unsupervised Feature Learning and Deep Learning)

    UFLDL(Unsupervised Feature Learning and Deep Learning)Tutorial 是由 Stanford 大学的 Andrew Ng 教授及其团队编写的一套 ...

  6. Unsupervised Feature Learning and Deep Learning(UFLDL) Exercise 总结

    7.27 暑假开始后,稍有时间,“搞完”金融项目,便开始跑跑 Deep Learning的程序 Hinton 在Nature上文章的代码 跑了3天 也没跑完 后来Debug 把batch 从200改到 ...

  7. Joint Detection and Identification Feature Learning for Person Search

    Joint Detection and Identification Feature Learning for Person Search 2018-06-02 本文的贡献主要体现在: 提出一种联合的 ...

  8. 论文笔记之:UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS

    UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS  ICLR 2 ...

  9. 图像分类之特征学习ECCV-2010 Tutorial: Feature Learning for Image Classification

    ECCV-2010 Tutorial: Feature Learning for Image Classification Organizers Kai Yu (NEC Laboratories Am ...

随机推荐

  1. 日常Java 2021/9/27

    题目: 在某个比赛中,有6个评委为参赛的选手打分,分数为1-100的随机整数.选手的最后得分为:除去最高分和最低分后的4个评委分值的平均值(不考虑小数部分). package m; import ja ...

  2. day06 目录结构

    day06 目录结构 文件目录 /bin # 存放系统常用命令的目录 /boot # 系统引导程序+内核 /dev # 设备.光驱.硬盘 /etc # 存放系统或服务的配置文件 /home # 普通用 ...

  3. Spark(十六)【SparkStreaming基本使用】

    目录 一. SparkStreaming简介 1. 相关术语 2. SparkStreaming概念 3. SparkStreaming架构 4. 背压机制 二. Dstream入门 1. WordC ...

  4. Oracle—全局变量

    Oracle全局变量 一.数据库程序包全局变量       在程序实现过程中,经常用遇到一些全局变量或常数.在程序开发过程中,往往会将该变量或常数存储于临时表或前台程序的全局变量中,由此带来运行效率降 ...

  5. gitlab之实战部署

    #:准备Java环境,安装jdk root@ubuntu:~# cd /usr/local/src/ root@ubuntu:/usr/local/src# ls jdk-8u191-linux-x6 ...

  6. CentOS6设置Django开发环境

    今天在我的Centos6.5机器上安装 Django 开发环境,在安装完使用 "django-admin.py startproject myapp" 创建应用的时候报了下面的错误 ...

  7. 【C/C++】BanGDream活动点数计算器

    作为一个白嫖咸鱼,我每个活动都只打出三星卡就不玩了,于是写了一个模拟器,算算还要打几把hhh #include <iostream> #include <algorithm> ...

  8. SpringBoot服务间使用自签名证书实现https双向认证

    SpringBoot服务间使用自签名证书实现https双向认证 以服务server-one和server-two之间使用RestTemplate以https调用为例 一.生成密钥 需要生成server ...

  9. ZooKeeper 06 - ZooKeeper 的常用命令

    目录 1 - 服务端常用命令 2 - 客户端常用命令 3 - 常用四字命令 4 - ZooKeeper 日志的可视化 版权声明 若要部署 ZooKeeper 单机环境,请查看此篇:https://ww ...

  10. 从零开始写一个前端脚手架四、初始化进程提示(chalk)

    我们之前说过bin里面的index.js文件是作为入口文件存在的.实际上的初始化内容在.action里面操作的,为了方便管理,我们把实际操作的代码抽出来放一块儿管理 创建指令文件 在根目录创建一个co ...