目录

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. 【Reverse】每日必逆0x01

    附件:https://files.buuoj.cn/files/7458c5c0ce999ac491df13cf7a7ed9f1/SimpleRev 题解 查壳 64位ELF文件,无壳 IDApro处 ...

  2. [JAVA]动态代理与AOP的千丝万缕

    动态代理与AOP的联系 别的不说,直接上图 首先是AOP切面编程 什么是切面?(自己心里想想就ok)所以所谓的切面编程,你也就懂得大体了,只是这个被切的是个程序而已 那么AOP与动态代理有什么关系呢? ...

  3. tomcat 8 内存优化

    在Linux环境下设置Tomcat JVM,在/opt/tomcat/bin/catalina.sh文件中找到"# ----- Execute The Requested Command&q ...

  4. Linux学习 - IP地址配置

    1 首先选择桥接模式 2 配置IP.子网掩码.网关.DNS setup 本例中使用的是无线网连接, IP地址:  192.168.3.195 子网掩码:  255.255.255.0 网关: 192. ...

  5. show processlist命令详解

    1.show processlist; SHOW PROCESSLIST显示哪些线程正在运行.您也可以使用mysqladmin processlist语句得到此信息.如果您有SUPER权限,您可以看到 ...

  6. Spring Boot中使用Servlet与Filter

    在Spring Boot中使用Servlet,根据Servlet注册方式的不同,有两种使用方式.若使用的是Servlet3.0+版本,则两种方式均可使用:若使用的是Servlet2.5版本,则只能使用 ...

  7. Redis,Memcache,MongoDb的特点与区别

    Redis Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支 ...

  8. 【.NET 与树莓派】控制彩色灯带(WS28XX)

    彩色灯带,相信不用老周多说,大家都知道,没准你家里的灯墙里面就有.老周的茅屋是早期建造的,所以没有预留的灯槽,明灯的话是不好看的,因此老周家里没使用灯带.不过,像柜子后面,显示器后面,书桌边沿这些地方 ...

  9. Python语法之基本数据类型

    一.数据类型之字符串str 作用:主要用于记录描述性性质的数据,如姓名.地址.邮箱: 定义: 方式1 # 单引号 name = 'jason' 方式2 # 双引号 name = "jason ...

  10. 粒子群算法-PSO

    粒子群优化算法 1. 背景知识 1995年美国社会心理学家Kennedy和电气工程师Eberhart共同提出粒子群优化算法(Particle Swarm Optimization, PSO).PSO算 ...