Unbiased PU learning.

该论文在之前PU learning中使用非凸函数作为loss的基础上,对正类样本和未标记样本使用不同的凸函数loss,从而将其转为凸优化问题。结果表明,该loss(double hinge loss)与非凸loss(ramp)精度几乎一致,但大大减少了计算量。

Introdution

Background

论文首先强调了PU问题的重要性,举了几个例子:

  1. Automatic face tagging

    • 用户对自己的画像标记为正类,其余都是未标记数据,需要正确识别用户的照片
  2. Inlier-based outlier detection
    • 需要在只有inliers和未标记数据中识别outliers,这种方法比完全无监督学习的效果要好
  3. Class is too diverse
    • 如果要识别的数据集中类别太多,也就是one-vs-rest classification
  4. Negative-class dataset shift
    • 由于训练数据和测试数据采集的实践差异导致负类样本的概率分布发生了变化,那么如果使用PU learning,可以减少重新标记的代价

Method

作者简单回顾了之前PU learning的常见做法:

  1. 直接在正类样本和未标记样本中训练一个分类器。但很显然这样的效果非常差,因为未标记样本中包含两类数据。
  2. 根据先验π\piπ使用一个loss function来权衡每个样本的权重,目标是使得loss function最小化。但这样做的结果是会产生bias。
  3. 使用满足l(z)+l(−z)=1l(z) + l(-z) = 1l(z)+l(−z)=1条件的loss function可以消除这种bias,但对于ramp loss,是非凸函数,导致在优化过程中可能求导局部解。

因此,本文提出了一种新的凸函数的loss function,也就是double hinge loss,不仅能够消除bias,同时也能保证凸性。关键点在于对未标记数据和正类数据使用不同的loss function。

Non-convex PU classification

作者回顾了在 Analysis of Learning from Positive and Unlabeled Data 这篇文章中的方法。

  1. 首先,根据two-simple的假设,我们可以认为正类样本和未标记样本是在两个数据集上分别进行采样得到的:

    • xi∼p(x∣y=1)xi′∼p(x)x_i \sim p(x|y = 1) \quad x^{'}_i \sim p(x)xi​∼p(x∣y=1)xi′​∼p(x)
    • 对于未标记样本来说,边际概率可以表示为:p(x)=πp(x∣y=1)+(1−π)p(x∣y=−1)p(x) = \pi p(x|y=1) + (1-\pi ) p(x|y=-1)p(x)=πp(x∣y=1)+(1−π)p(x∣y=−1)
    • 目标是训练一个分类器g(x)g(x)g(x)
  2. 最佳的分类器是最小化01损失:

    • J0−1(g)=πE1[l0−1(g(X))]+(1−π)E−1[l0−1(−g(X))]​J_{0-1}(g) = \pi E_1[l_{0-1}(g(X))] + (1-\pi )E_{-1}[l_{0-1}(-g(X))] ​J0−1​(g)=πE1​[l0−1​(g(X))]+(1−π)E−1​[l0−1​(−g(X))]​
    • 其中loss function为 l0−1(z)=12sign(z)+12l_{0-1}(z) = \frac{1}{2}sign(z) + \frac{1}{2}l0−1​(z)=21​sign(z)+21​
  3. 但由于我们的数据集没有负类样本,因此没有办法估计E−1E_{-1}E−1​,所以可以将其转换为:

    • J0−1(g)=2πE1[l0−1(g(X))]+EX[l0−1(−g(X))]−π​J_{0-1}(g) = 2 \pi E_1[l_{0-1}(g(X))] + E_{X}[l_{0-1}(-g(X))] -\pi​J0−1​(g)=2πE1​[l0−1​(g(X))]+EX​[l0−1​(−g(X))]−π​

    • 其中EXE_XEX​是在p(x)p(x)p(x)上的期望:EX[l0−1(−g(X))]=πE1[l0−1(−g(X))]+(1−π)E−1[l0−1(−g(X))]E_X[l_{0-1}(-g(X))] = \pi E_1[l_{0-1}(-g(X))] + (1-\pi)E_{-1}[l_{0-1}(-g(X))]EX​[l0−1​(−g(X))]=πE1​[l0−1​(−g(X))]+(1−π)E−1​[l0−1​(−g(X))]

    • 但是,对01损失函数进行优化是非常困难的,因为其梯度在除了0以外的地方都为0

  4. 因此,直觉的使用hinge loss作为替代,但是我们发现会多出来一个惩罚项,这样会导致估计的bias。而如果使用l(z)+l(−z)=1l(z) + l(-z) = 1l(z)+l(−z)=1这样的loss function,就不会有bias(使用凹函数ramp loss

Convex PU classifiction

  1. 由于l0−1(−g(X))=1−l0−1(g(X))l_{0-1}(-g(X)) = 1 - l_{0-1}(g(X))l0−1​(−g(X))=1−l0−1​(g(X)),可以将损失函数改写为:

    • J0−1(g)=πE1[l0−1(g(X))−l0−1(−g(X))]+EX[l0−1(−g(X))]J_{0-1}(g) = \pi E_1[l_{0-1}(g(X)) - l_{0-1}(-g(X))] + E_{X}[l_{0-1}(-g(X))]J0−1​(g)=πE1​[l0−1​(g(X))−l0−1​(−g(X))]+EX​[l0−1​(−g(X))]
  2. 我们用另外的损失函数l(z)l(z)l(z)代替,则可以得到:

    • J(g)=πE1[l^(g(X))]+EX[l(−g(X))]​J(g) = \pi E_1[\hat{l}(g(X))] + E_X[l(-g(X))]​J(g)=πE1​[l^(g(X))]+EX​[l(−g(X))]​

    • 注意到,在正类样本上我们的损失是composite loss:l^(z)=l(z)−l(−z)\hat{l}(z) = l(z) - l(-z)l^(z)=l(z)−l(−z)

    • 在正类样本上使用composite loss,在未标记样本上使用普通的损失

  3. 因此,最关键的就是l^(z)​\hat{l}(z)​l^(z)​是不是凸函数,论文做了以下的证明:

    • If the composite loss l^(z)\hat{l}(z)l^(z) is convex, it is linear.

      • 为了简便,论文取了最简单的线性关系:l^(z)=−z\hat{l}(z) = -zl^(z)=−z
      • 因此,损失函数变为:J(g)=πE1[−g(X)]+EX[l(−g(X))]​J(g) = \pi E_1[-g(X)] + E_X[l(-g(X))]​J(g)=πE1​[−g(X)]+EX​[l(−g(X))]​
      • 作者证明该损失函数表明learning with label noise实际上就是PU learning的特例
    • 实际中,我们用linear-inparameter mode来进行分类:
      • g(x)=αTϕ(x)+b​g(x) = \alpha^T\phi(x) + b​g(x)=αTϕ(x)+b​
      • 其中ϕ(x)=[ϕ1(x),....,ϕm(x)]T\phi(x) = [\phi_1(x),....,\phi_m(x)]^Tϕ(x)=[ϕ1​(x),....,ϕm​(x)]T,也就是作用在所有样本上的基函数(作者建议使用高斯核)
  4. 基于composite loss是线性的假设,用均值代替期望,可以将loss function改写为:

    • J^(α,b)=−πn∑i=1nαTϕ(xi)−πb+1n′∑j=1n′l(−αTϕ(xj′)−b)+λ2αTα\hat{J}(\alpha,b) = -\frac{\pi}{n}\sum\limits_{i=1}^n \alpha^T\phi(x_i) - \pi b + \frac{1}{n^{'}} \sum\limits_{j=1}^{n^{'}}l(-\alpha^T\phi(x_j^{'})-b) + \frac{\lambda}{2} \alpha^T \alphaJ^(α,b)=−nπ​i=1∑n​αTϕ(xi​)−πb+n′1​j=1∑n′​l(−αTϕ(xj′​)−b)+2λ​αTα
    • 最后一项做正则项
  5. 根据观察我们发现,在原来的损失函数中:J(g)=πE1[−g(X)]+EX[l(−g(X))]J(g) = \pi E_1[-g(X)] + E_X[l(-g(X))]J(g)=πE1​[−g(X)]+EX​[l(−g(X))],这两项始终为正数;然而在我们的经验风险函数中,由于正则项的存在,前两项可能变为可能为负数,论文说在实际中需要限制这两项始终非负(这导致了后面nnPU的出现

Convex loss functions for PU classification

可以发现,我们最终的目标函数就只需要指定lll就完成了,本节作者讨论了多种可能的凸函数作为loss。

  1. Squared loss

    • 论文使用了lS(z)=14(z−1)2​l_S(z) = \frac{1}{4}(z-1)^2​lS​(z)=41​(z−1)2​作为loss,可以将目标函数变为:

      • $J_S(g) = \frac{1}{4}\int g(x)^2p(x)dx -\frac{1}{2}\int g(x) [2\pi p_1(x) - p(x)]dx +C $
    • 同时,很巧妙的定义了在xxx给定的条件下,分类为1和分类为0的概率的差:
      • r(x)=p(y=1∣x)−p(y=−1∣x)=[2πp(x∣y=1)−p(x)]/p(x)r(x) = p(y=1|x) - p(y=-1|x) = [2\pi p(x|y=1) - p(x)] / p(x)r(x)=p(y=1∣x)−p(y=−1∣x)=[2πp(x∣y=1)−p(x)]/p(x)
      • 积分后可以是不相关的常数,带入目标函数并化简可以得到(太赞了!):
      • 14∫(g(x)−2πp1(x)−p(x)p(x))2p(x)dx\frac{1}{4}\int (g(x) - \frac{2\pi p_1(x) - p(x)}{p(x)})^2 p(x)dx41​∫(g(x)−p(x)2πp1​(x)−p(x)​)2p(x)dx
    • 论文说这个目标函数的好处是可以直接从理论分析得到数值解,如果我们省略linear-inparameter mode中的常数bbb:
      • J^S(α)=14n′αTΦUTΦUα+12n′1TΦUα−πn1TΦPα+λ2αTα\hat{J}_S(\alpha) = \frac{1}{4n^{'}} \alpha^T\Phi^T_U \Phi_U\alpha + \frac{1}{2n^{'}}1^T\Phi_U \alpha - \frac{\pi}{n}1^T\Phi_P \alpha + \frac{\lambda}{2}\alpha^T \alphaJ^S​(α)=4n′1​αTΦUT​ΦU​α+2n′1​1TΦU​α−nπ​1TΦP​α+2λ​αTα
      • 对这个二次型函数求导即可得到α\alphaα的数值解(牛啊。。)
    • 但这个loss函数并不好,原因在于lS(z)=14(z−1)2​l_S(z) = \frac{1}{4}(z-1)^2​lS​(z)=41​(z−1)2​当z​z​z​大于1时这个loss会增大,而对于二分类来说,如果大于1说明能正确识别。
  2. logistic loss

    • 定义Logistic loss为lLL(z)=log⁡(1+exp⁡(−z))l_{LL}(z) = \log(1+\exp(-z))lLL​(z)=log(1+exp(−z)),因此带入目标函数为:

      • JLL(g)=−πE1[g(X)]+EX[log⁡(1+exp⁡(g(X)))]J_{LL}(g) = -\pi E_1[g(X)] + E_X[\log(1+\exp(g(X)))]JLL​(g)=−πE1​[g(X)]+EX​[log(1+exp(g(X)))]
    • 有log⁡(1+exp⁡(−z))=−log⁡11+e−z=−z+log⁡(1+exp⁡(z))\log(1+\exp(-z)) = -\log \frac{1}{1+e^{-z}} = -z + \log(1+\exp(z))log(1+exp(−z))=−log1+e−z1​=−z+log(1+exp(z)),带入原始的分类损失中,可以得到其和目标函数是一样的,因此可以用于PU classification
    • 最终经验风险函数可以表示为:
      • J^LL(α,b)=−πn∑i=1nαTϕ(xi)−πb+λ2αTα+1n′∑j=1n′lLL(−αTϕ(xj′)−b)​\hat{J}_{LL} (\alpha,b) = -\frac{\pi}{n}\sum\limits_{i=1}^n \alpha^T \phi(x_i) - \pi b + \frac{\lambda}{2} \alpha^T\alpha + \frac{1}{n^{'}}\sum\limits_{j=1}^{n^{'}} l_{LL}(-\alpha^T\phi(x^{'}_j) - b)​J^LL​(α,b)=−nπ​i=1∑n​αTϕ(xi​)−πb+2λ​αTα+n′1​j=1∑n′​lLL​(−αTϕ(xj′​)−b)​
  3. Double hinge losses

    • 由于hinge loss并不是凸函数,因此不满足我们的定理(l^\hat{l}l^表示线性的)

    • 论文构造了Double hinge losses使得满足凸函数的性质:

    • lDH(z)=max⁡(−z,max⁡(0,12−12z))l_{DH}(z) = \max(-z,\max (0,\frac{1}{2} - \frac{1}{2}z))lDH​(z)=max(−z,max(0,21​−21​z))

    • 因此经验风险函数可以写为:

      • J^LL(α,b)=−πn∑i=1nαTϕ(xi)−πb+λ2αTα+1n′∑j=1n′lDH(−αTϕ(xj′)−b)\hat{J}_{LL} (\alpha,b) = -\frac{\pi}{n}\sum\limits_{i=1}^n \alpha^T \phi(x_i) - \pi b + \frac{\lambda}{2} \alpha^T\alpha + \frac{1}{n^{'}}\sum\limits_{j=1}^{n^{'}} l_{DH}(-\alpha^T\phi(x^{'}_j) - b)J^LL​(α,b)=−nπ​i=1∑n​αTϕ(xi​)−πb+2λ​αTα+n′1​j=1∑n′​lDH​(−αTϕ(xj′​)−b)

Theoretical Analysis

待看。。。

Experiments

三组对比实验在MNIST数据集上进行实验,将0作为正类,其余作为负类,同时假设先验已知:

  1. Hinge损失(会有bias)
  2. Logistic 和 Double hinge loss
  3. Ramp (非凸优化)

实验结果说明,提出的凸优化结果与非凸优化效果相当,但减少了计算量。

Convex Formulation for Learning from Positive and Unlabeled Data相关推荐

  1. 人群密度估计--Leveraging Unlabeled Data for Crowd Counting by Learning to Rank

    Leveraging Unlabeled Data for Crowd Counting by Learning to Rank CVPR2018 https://github.com/xialeil ...

  2. A Variational Approach for Learning from Positive

    从正的和未标记的数据中学习的变分方法 摘要 仅从正样本和未标记的样本中学习二类分类器在许多实际应用中是一项重要且具有挑战性的任务. 大多数最近的PU学习方法是基于监督学习类型的错误分类风险开发的,并且 ...

  3. [半监督学习] Combining Labeled and Unlabeled Data with Co-Training

    论文地址: Combining Labeled and Unlabeled Data with Co-Training 会议: COLT 1998 任务: 分类 A FORMAL FRAMEWORK ...

  4. Dual Contrastive Learning: Text Classification via Label-Aware Data Augmentation 阅读笔记

    Dual Contrastive Learning: Text Classification via Label-Aware Data Augmentation PyTorch实现:https://g ...

  5. 图像去噪--Noise2Noise: Learning Image Restoration without Clean Data

    Noise2Noise: Learning Image Restoration without Clean Data ICML 2018 1 Introduction 基于 corrupted or ...

  6. 读论文:Noise2Noise: Learning Image Restoration without Clean Data

    很有意思的文章,我之前做过一些深度学习的降噪任务,针对不同光照条件下的图像进行降噪.这个时候就会涉及到标签样本的制作. 在监控领域中,相差6个db的照度,图像的噪点就会有明显的差异性.所以我们在训练模 ...

  7. Noise2Noise:Learning Image Restoration without Clean Data读书笔记

    论文题目:Noise2Noise: Learning Image Restoration without Clean Data 一.简介 论文提出,在没有干净数据的情况下也能对图像进行重建,重建效果和 ...

  8. [论文评析]DeepSMOTE: Fusing Deep Learning and SMOTE for Imbalanced Data, IEEE TNNLS 2022

    DeepSMOTE: Fusing Deep Learning and SMOTE for Imbalanced Data 论文信息 动机 SMOTE回顾 主要思路 DeepSMOTE **Permu ...

  9. 论文阅读《Meta-FDMixup:Cross-Domain Few-Shot Learning Guided by Labeled Target Data》

    Background & Motivation 之前看的小样本论文大部分是目标域和源域属于同一个域,比如 COCO 数据集里的小样本设定:60类为 Base,20类为 Novel.Base 和 ...

最新文章

  1. python删除重复值所在的行数_使用python读取txt文件的内容,并删除重复的行数方法...
  2. iSCSI存储技术全攻略
  3. 教怎样写好一份“漏洞报告”
  4. 删除word中所有的表格_如何在Word中删除表格
  5. python3 urlencode及urldecode
  6. 2021-10-14 矩阵求导相关
  7. D3/Echarts/G2的对比分析
  8. 【LeetCode】【数组】题号:485,最大连续1的个数
  9. 34 个免费学习编程的最佳网站
  10. 我不生产代码,只是代码的搬运工!超级多的 —— 第三方
  11. Excel Pearson相关系数
  12. Java 性能优化实战工具实践:如何获取代码性能数据?
  13. “我只警告一次,下次我会直接忽略你发的垃圾,懂?”Linus 精彩炮轰语录集锦...
  14. jQuery ajax请求两次问题,jquery ajax请求了两次问题
  15. java毕业设计——基于java+JSP+J2EE的城市公交查询系统设计与实现(毕业论文+程序源码)——城市公交查询系统
  16. 魔力宝贝服务器端文件介绍,对魔力宝贝数据库的认识,及SQL数据库详细说明
  17. 结构体自定义指针函数c语言,C语言结构体中的函数指针
  18. 全国计算机应用语言设计,全国计算机应用技术证书考试程序设计教程:NIT C语言...
  19. mysql中数据发生变化时判断_MySql插入记录时判断
  20. 【正点原子STM32连载】 第二十五章 TFTLCD(MCU屏)实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

热门文章

  1. Android 隐私合规API检查方案
  2. 【Pytorch学习笔记2】Pytorch的主要组成模块
  3. BitLocker密码破解工具--部分代码
  4. 【日志】珂学——珂朵莉树
  5. html图片做一个转盘,H5+CSS3+JS制作抽奖转盘
  6. 超级简单分享:快乐数字
  7. HBase是什么?为什么要使用HBase?
  8. Java 多线程快速入门(面试概念解答一)
  9. python 单词翻译_Python翻译:我想在senten中翻译多个单词
  10. 用jmeter对抽奖接口进行抽奖概率分析测试