Inferring Generative Model Structure with Static Analysis-2017【论文理解】

本文探讨了如何使用弱监督方法处理大规模未标注数据,通过分析启发式函数间的依赖关系,构建生成模型以生成概率性标签,进而训练分类神经网络模型。重点介绍了Coral框架,该框架利用静态分析技术推断生成模型结构,提高了模型精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Inferring Generative Model Structure with Static Analysis-2017
在这里插入图片描述

此论文的两个重点:

  • 生成模型(Generative Model)
  • 静态数据分析(Static Analysis)

要干的活:
使用弱监督方法对大量无标注的数据进行弱监督的标注,然后使用弱监督标注的概率标签去训练分类的神经网络模型,得到的模型精度不亚于强监督学习的效果。
就像下面流程图所示:

无标注数据data
弱监督生成模型标注
probabilistic label
判别式模型训练
predict label

关键是:
如何构建弱监督生成模型

前言

在实际的深度学习模型训练过程中,数据是天,就是说只要是数据的质量不行,即使模型是Nasnet也不能学习出令人满意的效果;其中数据的质量可以理解为两部分:一是有有标注的数据太少了,根本不足以训练一个强分类器;二是数据集的标注质量有问题,直接拿错误的标注来训练,也肯定训练不出什么好东西。
在日常的任务中,尤其是医疗领域,数据集一般都是有标注的数据太少,也就是周志华老师所说的不完全监督,但是医疗的数据量却是异常庞大的,标注要花费掉大量的人力和金钱,对于像医疗这种,还必须是领域专家才能做准确的标注,但是有些时候,领域专家的标注也不一定是准确的。。
如何有效的大量标注未标注的数据呢?而且,得到的标注还必须能够用于神经网络判别器的学习。
一般,一个流行的解决方案是使用生成模型组合多个弱监督源。什么是弱监督源呢?其实就是能够对数据进行快速标注的函数,但是标注的准确性可能仅仅是60%左右。组合有很多方式,最简单的方法:投票。但是这个是最LOW的办法,得到的标注根本不敢用,也无法进行保证。
举个例子:
在这里插入图片描述
现在有两个数据源,1和2。1的准确率高,而2的准确率低。两个源有重叠。这时如果我们使用投票的方法来获得标签的化是行不通的,因为只有两个源。那么,如果我们能知道,1的准确率高,而2的准确率低,即在标注的时候,如果1有标注,则使用1的标注,否则才使用2的标注,然后再去训练最终的判别网络,那么,即使判别器的准确率为100%,学习到的实际准确率也只是如图计算的60.3%。这样,其实就是解决了冲突,但是最终的准确率仍然很低,这时我们还需将其次,将有关标签质量的关键谱系信息传递给正在培训的最终模型。告诉判别模型,哪么标签的更可信!----如何定义这个标签到底有多少可信的程度呢?我们后面会讨论到这个问题。—>实际上是利用了概率标注
所以生成模型上场了!
如何构建生成模型是最难的一部分了,构建好了就可以对大量的数据进行标注了,构建不好,就白做了很多的功夫;所以需要评价生成模型的好坏,这方面可能还是得需要一些真实的标注,这部分后面会提到。
本文的创新可能就是如何利用这个弱监督源了,分析这些弱监督源之间的关系,当然,这些弱监督源必须具有代码的结构,或者函数式的方式才行,不然就无法分析了。
本论文提出了Coral(珊瑚–猜测可能是寓意生成模型中所用到的关系图谱吧),一个通过静态分析这些启发式代码来推断生成模型结构的范例,因为对弱监督源进行分析,从而大大减少了学习结构所需的数据。

首先先来学习下新的基本概念吧!

Coral架构的部分名词解析

因为是搭建了一个架构,所以有些新的专业名字需要了解一下:

  1. 从特定领域抽取的基本单元DSP-domain-specific primitives
    什么是DSP呢?举个例子:
    在下面骨肿瘤的分类中,主要任务为判断肿瘤为良性或者是恶性,使用分割算法分割出肿瘤,然后提出相应的DSP。
    在这里插入图片描述
    此处提取了4个DSP:
    (1) 肿瘤的面积area; (2).周长perimeter;(3). 强度intensity;(4).比例ratio
    在这里插入图片描述
  2. 启发式函数-HFs-heuristic functions
    HF可以理解为简单的标注函数,不过是对处理过的数据中的DSP进行分析,得到并不准确的标注。
    继续使用上面的例子,下面就是定义了三个HF: λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2 λ 3 \lambda_3 λ3
    在这里插入图片描述
    HF的输入为DSP,判断并返回相应的标注结果,当然并不是准确的。不能直接用的!我们在前言中讨论过了。接下来,我们不仅仅是使用HF的输出,我们会分析每一个HF的代码,输入,输出,输入之间的关系以及各个HF之间的关系等,我们要利用的是这些东西!
    HF的编写是基于一些人为能够观察到特征。像鸟都有翅膀,或者鸟到会飞(当然并不是所有的鸟都会飞)。这些code都是我们将要分析的对象。
    在这里插入图片描述
    再来一个官方教程上的例子:判断人是否骑在自行车上,如下图所示,可以很明显的看出DSP与HF的关系:
    在这里插入图片描述
  3. 抽象语法树 abstract syntax tree (AST)
    上面说了,每个DSP可能是单独的,也有可能是其他的DSP组成的,这些也是非常重要的关系!使用AST分析DSP之间可能存在依赖关系。比如,在骨肿瘤诊断的例子中P.ratio就是由P.perimeter 和 P.intensity得到的。
    如下图所示的AST:
    在这里插入图片描述

Coral对创建DSP和HF的源代码进行静态分析(Static Analysis),通过是否共用了相同的DSP来确定那些HF之间是有相应的关系的。所以就有了我们上一节的AST。一旦Coral确定了这些依赖关系,它就使用一个因子图来建模HF、DSP和真正的类标签之间的关系。
使用coral的一个完整例子,coral会分析每个HF的准确性,并针对训练的数据集给出概率标注,再回顾一下整个流程:
在这里插入图片描述

以上都准备妥当之后,我们就要开始本论文第一关键的一步了:
静态数据分析(Static Analysis)!

静态独立性分析

1、HF分组以及源码分析

Coral利用了这样一个事实,即用户在已知的有限DSP集上编写HFs。它通过简单地查看如何构造dsp和HFs的源代码来推断HFs之间存在的依赖关系。这个过程我只是对HF的构造代码和输入进行分析,根本没有用到数据呀!,所以这个过程的学习非常的快!
这个部分有两步,先是根据是否共享同一个dsp对HF进行分组;再根据各自构造的源码进行分析。获得HF的依赖关系。
但是如果他们不共享DSP呢?那么这部分根据HF的输入是学习不到HF之间的依赖关系的。像下面例子中的 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2 λ 3 \lambda_3 λ3输入都不相同。但是,其实我们知道 λ 2 \lambda_2 λ2 λ 3 \lambda_3 λ3之间是存在关系的,但是我们并没有发现。
这时我们就需要继续对DSP的组成来进行分析了,弥补HF输入分析的不足!接下来就是DSP的依赖分析
在这里插入图片描述

2. DSP的依赖分析

Coral使用AST来分析每一个DSP的组成。Coral遍历以赋值表达式为根的子树,并添加所有其他遇到的DSP作为P.name的依赖项。如果子树中没有遇到DSP,则将该DSP标记为独立于其他的DSP。通过AST可以得到DSP的组成结构。
在这里插入图片描述

3. HF的独立性结构分析

知道了所有的DSP是如何构成的,接下来我们就可以再重新回过头来分析HF的输入了,前面已经说了。 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2 λ 3 \lambda_3 λ3三个HF,其中, λ 1 \lambda_1 λ1的输入为P.area, λ 2 \lambda_2 λ2 输入为P.perimeter, λ 3 \lambda_3 λ3 的输入为P.ratio,而P.ratio由P.area和P.perimeter构成。 λ 2 \lambda_2 λ2 λ 3 \lambda_3 λ3同时与一个dsp有关系P.perimeter,那么很明显 λ 2 \lambda_2 λ2 λ 3 \lambda_3 λ3之间就存在相应的依赖关系。这个关系结构隐式地编码关于HFs的依赖信息——如果一个边缘点从一个原语指向n个HFs,那么这些n个HFs通过dsp以n种方式存在关系。此依赖项信息可以更正式地编码为如下所示的因子图(因子图在构建生成模型时会讲到):
在这里插入图片描述

生成模型

Coral使用因子图来表示各个dsp,hf以及隐含的真实label之间的关系。
在这里插入图片描述
有关生成模型的算法,最有发言权的就是贝叶斯算法了。

回顾一下贝叶斯和罗辑回归!(参考

参考一:
Bayes定理公式如下:

P ( H ∣ E ) = P ( H ) ⋅ P ( E ∣ H ) P ( E ) P(H|E) = \frac{P(H) \cdot P(E|H)}{P(E)} P(HE)=P(E)P(H)P(EH)

公式中的每一项都有一个单独的名字:

P(H) ⇒ 先验概率(prior probability),又叫基础概率,是无任何条件限制下事件H发生的概率

P(H|E) ⇒ 后验概率(posterior probability)

P(E|H) ⇒ 条件似然(conditional likelihood), 有时候我自己称之为似然概率。
举个形象化的例子:

问题1: 一机器在良好状态生产合格产品几率是90%,在故障状态生产合格产品几率是30%,机器良好的概率是75%,若一日第一件产品是合格品,那么此日机器良好的概率是多少。

分析:假定事件A代表机器良好,事件B代表某一日生产的是合格品,则目标概率是P(A|B),而已知条件包括:

  1. 先验概率 P ( A ) P(A) P(A)= 0.75
  2. 我们前面所谓的两类人在本题中指的就是A机器良好和~A机器故障,而题目中给出的似然概率就是这两种不同的机器生产产品时的合格率是不同的。

套公式:
P ( A ∣ B ) P(A|B) P(AB) = 0.9
此时我们得到的是一个概率,如果在生成模型中判断类别的化,那么就可以另label为1当 P ( A ∣ B ) P(A|B) P(AB) > 0.5的时候。
0.9可以只是当成一个事件的概率,或者是一个类别是否正确的概率—准确度。此处的生成模型恰好也是利用了这一点。

参考二:
逻辑回归算法会事先求一个全局的概率分布,如下所示:
定义:
P ( y = 1 │ x ; θ ) = h θ ( x ) P(y=1│x;θ)=h_θ (x) P(y=1x;θ)=hθ(x)

P ( y = 0 │ x ; θ ) = 1 − h θ ( x ) P(y=0│x;θ)=1-h_θ (x) P(y=0x;θ)=1hθ(x)
则全局分布:
P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y P(y|x;\theta) = (h_{\theta}(x))^y(1-h_{\theta}(x))^{1-y} P(yx;θ)=(hθ(x))y(1hθ(x))1y
然后我们使用极大似然估计对 θ \theta θ进行估计,使我们的分布逼近数据集的真实分布。
但是,在现在这种情况下,我们没有真实的标注 y y y,所以,这里使用了一种估计方式:
最大伪似然估计,并使用吉布斯采样来近似优化时的参数。
参考三:
本文生成模型的结构设计是根据下面这篇论文改进而来:
(Learning the Structure of Generative Models without Labeled Data
Stephen)
在这里插入图片描述
简单提一下本论文的一个简单思路,为了后面的理解:
记住一点:

真实的标签true label在生成模型中是一个隐变量
对于一个数据点 x i x_i xi,它的真实标注为(实际上没有) y i ∈ − 1 , 1 y_i \in {-1, 1} yi1,1,
现在有 n n n个标记函数,然后对 x i x_i xi就可以得到 n n n个预测结果, Λ i 1 \Lambda_{i1} Λi1, … Λ i n \Lambda_{in} Λin
如何从 n n n个结果中我们可以通过生成模型得到一个最终的结果 Λ i ∈ − 1 , 0 , 1 \Lambda_i \in {-1,0, 1} Λi101,三个值分别对应false,不确定,true。
现在我们要找到 Λ i \Lambda_i Λi y i y_i yi的关系。
我们的目标是估计一个概率模型,生成labeling-function输出 Λ ∈ − 1 , 0 , 1 m × n Λ∈{ −1 ,0, 1 }^{m×n} Λ1,0,1m×n
假设 n n n个结果 Λ i 1 \Lambda_{i1} Λi1, …, Λ i n \Lambda_{in} Λin都条件独立于 y i y_i yi Λ i \Lambda_i Λi y i y_i yi之间就存在 n n n个准确性依赖关系,那么估计每个结果相对于真实标签的一个准确率:
ϕ j A c c ( Λ i , y i ) : = y i Λ i j \phi_j^{Acc}(\Lambda_i, y_i) := y_i\Lambda_{ij} ϕjAcc(Λi,yi):=yiΛij
一个参数 θ j A c c θ^{Acc}_j θjAcc建模每个标签函数 λ j λ_j λj是多么准确。
我们将此结构称为条件独立模型,并将其指定为:
在这里插入图片描述

在概率论和统计学中,两事件R和B在给定的另一事件Y发生时条件独立,类似于统计独立性,就是指当事件Y发生时,R发生与否和B发生与否就条件概率分布而言是独立的。换句话讲,R和B在给定Y发生时条件独立,当且仅当已知Y发生时,知道R发生与否无助于知道B发生与否,同样知道B发生与否也无助于知道R发生与否。(维基百科)

我们要优化的目标函数:
我们估计的参数θ通过最小化的边际负对数似然 p θ ( Λ ^ ) p_θ(\hatΛ) pθ(Λ^) Λ ^ \hatΛ Λ^为观测矩阵函数输出 Λ ^ \hatΛ Λ^:
在这里插入图片描述
再使用随机梯度下降对似然函数进行优化~~(才疏学浅,怎么优化的其实还没有搞明白)。

本论文对其进行改进,并不仅仅是对标记函数的输出进行建模,更加上了标记函数的分析,基元之间的关系分析等。。
此处仍然没有用到真实标签。

隐含关系
隐含关系
one data without label
n label function
n nosie label
生成模型
one label Λ
true label

1. 对HF的独立性进行建模

我们已经可以追本溯源的得到HF依赖关系的图谱了,接下来就是对其进行生成模型建模的过程。
通过静态分析推断出相关性,我们的目标是了解每个HF的准确性,并相应地为训练数据分配标签。
因子图因此包含两种类型的因子:
精度因子- ϕ a c c \phi^{acc} ϕacc,HF因子- ϕ H F \phi^{HF} ϕHF
精度因子指定每个 λ i λi λi HF的准确性,公式定义为:
在这里插入图片描述
n n n为HF的总个数。
下面公式为静态分析因子(没搞明白什么时候值取0,其他情况竟然取负无穷。。。。)
在这里插入图片描述
这些因子都不需要任何的数据,只是通过分析因子图得到的结果。
有些时候,通过我们的静态分析,可能并不能完全分析出DSP之间的依赖关系,这时新增添了一个因子 ϕ D S P \phi^{DSP} ϕDSP对成对的DSP进行依赖建模:
在这里插入图片描述

最终的,概率分布!!
在这里插入图片描述
P ( y , λ 1 , . . . , λ n , p 1 , . . . . . , p m ) = e x p ( ∑ i = 1 n θ i A c c ϕ i A c c ) ∗ e x p ( ∑ i = 1 n ϕ i H F ) ∗ e x p ( ∑ i = 1 m ∑ j = i + 1 m θ i j S i m ϕ i j S i m ) P(y,\lambda_1,...,\lambda_n, p_1,.....,p_m) = exp(\sum_{i=1}^n\theta_i^{Acc}\phi_i^{Acc}) *exp(\sum_{i=1}^n\phi_i^{HF})*exp(\sum_{i=1}^m \sum_{j=i+1}^m\theta_{ij}^{Sim}\phi_{ij}^{Sim}) P(y,λ1,...,λn,p1,.....,pm)=exp(i=1nθiAccϕiAcc)exp(i=1nϕiHF)exp(i=1mj=i+1mθijSimϕijSim)

2. Generating Probabilistic Training Labels

说白了就是对目标函数进行优化。

为什么生成模型得到的Probabilistic Training Labels不能直接定一个阈值,然后得到label呢,而要再经过一个判别模型的训练??
2019-04-15

使用的方法跟[1]中是一样的,最大化 the L1-regularized marginal pseudolikelihood(伪似然函数)。
对于每个数据点,我们都有特定于领域的dsp,从这些dsp中启发式函数可以计算出有噪声的标签。然后通过这些精度因子估计潜在类标签的分布,并利用这些噪声标签训练判别模型。

具体的推导还是很麻烦的,具体就不放上来了,看的头疼,感兴趣的化可以自己研究一下。
生成模型还是很难的~~。。。呃呃
与之前的一个对比。
在这里插入图片描述

3. 生成概率标注用于最终模型训练

这是2017年论文Snorkel的一个流程.。在这里插入图片描述
最终判别式模型接受的仅仅是概率标签哦!
骨肿瘤的诊断:
使用了一组802标记的骨肿瘤x线图像及其放射学家绘制的分割。我们定义了我们的任务来区分恶性和良性肿瘤,生成的HFs是手工调整规则和决策树生成规则的组合(对数据集的一小部分进行调整)。鉴别模型使用了一组400个手工调优的特性(注意,这些特征与dsp之间没有重叠),这些特征编码了各种形状、纹理、边缘和基于强度的特征。虽然在这个数据集中没有显式共享的dsp,但是生成模型仍然能够更准确地建模训练标签,知道HF操作了多少个dsp,从而显著地改进了独立的情况。
在骨肿瘤诊断中,加上DSP依赖关系的提升不大。
各个项目的解释:

项目含义
MV投票
Indep假设所有的HF都相互独立
Learn Dep[1]学习启发式的内部依赖关系
HF Dep从静态分析中得到HF相互之间的依赖性
HF+DSP DepHF之间的依赖性 + DSP之间的依赖性
FS全监督

在这里插入图片描述
得到柱状图对比如下:
在这里插入图片描述
HF+DSP Dep 相比于其他方法在不同任务上的提升!
在这里插入图片描述
骨肿瘤使用的DSP:
在这里插入图片描述

参考

[1] S. H. Bach, B. He, A. Ratner, and C. Ré. Learning the structure of generative models without labeled data. In ICML, 2017.
[2] Snorkel: Rapid Training Data Creation with Weak Supervision
arXiv:1711.10160v1
[3] A. J. Ratner, C. M. De Sa, S. Wu, D. Selsam, and C. Ré. Data programming: Creating large training sets, quickly. In Advances in Neural Information Processing Systems, pages 3567–3575, 2016.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值