鉴别器(逻辑回归)估计两个概率分布的概率密度比

概率密度比

概率密度比是生成模型的重要组成部分,无论是在VAEs的情况下显式的(比如两个高斯分布之间的KL散度),还是在GANs的情况下隐式的。即我们在计算两个分布之间的KL散度(比如 p g p_{g} pg p d a t a p_{data} pdata之间的KL散度),这通常归结为计算两个概率分布对数的样本平均值。

以VAE举例,VAE的ELBO是:
E L B O = E q ( z ∣ x ) [ l o g p ( x ∣ z ) ] − K L [ q ( z ∣ x ) ∣ ∣ p ( z ) ] = E q ( z ∣ x ) [ l o g p ( x ∣ z ) ] − E q ( z ∣ x ) [ l o g q ( z ∣ x ) p ( z ) ] \begin{aligned} ELBO = & E_{q(z|x)}[logp(x|z)]-KL[q(z|x)||p(z)] \\ = & E_{q(z|x)}[logp(x|z)]-E_{q(z|x)}[log{q(z|x) \over p(z)}] \end{aligned} ELBO==Eq(zx)[logp(xz)]KL[q(zx)p(z)]Eq(zx)[logp(xz)]Eq(zx)[logp(z)q(zx)]

q ( z ∣ x ) p ( z ) {q(z|x) \over p(z)} p(z)q(zx)称之为概率密度比,这一项如何求出?VAE假设二者都是高斯分布,所以可以写出解析的形式,从而求解KL项,但是这也限制了VAE的能力,即样本的分布并不一定服从高斯分布,如果强制它服从高斯分布,必定会对VAE效果造成影响。相对而言,GAN就没有这个限制。是否可以使用GAN的思想,即不假设先验或者后验的具体形式,而是由网络去逼近 q ( z ∣ x ) p ( z ) {q(z|x) \over p(z)} p(z)q(zx),也就算出了VAE中的KL项。

鉴别器估计概率密度比

假设分布 p ∼ N ( 5 , 0.2 ) p \sim N(5, 0.2) pN(5,0.2) q ∼ U ( − 20 , 20 ) q \sim U(-20,20) qU(20,20),我们想算这两个分布的概率密度比。在两个分布形式已知的情况下很好算出,就是
q p = 1 40 ∗ N ( 5 , 0.2 ) {q \over p}={1 \over 40*N(5,0.2)} pq=40N(5,0.2)1

如果 p 或 者 q p或者q pq其中一个分布形式未知,或者两个分布都未知,但我们有一些从分布 p p p中采样的样本点 x p x_p xp(标签设置为1)和从分布 q q q中采样的样本点 x q x_{q} xq(标签设置为0)。能否根据这些样本点估计出二者的概率密度比?答案是可以的,使用逻辑回归便可。

根据贝叶斯公式有:
p ( Y = 1 ∣ X ) = p ( X ∣ Y = 1 ) p ( Y = 1 ) p ( X ∣ Y = 1 ) p ( Y = 1 ) + p ( X ∣ Y = 0 ) p ( Y = 0 ) p(Y=1|X)={p(X|Y=1) p(Y=1)\over p(X|Y=1)p(Y=1)+p(X|Y=0)p(Y=0)} p(Y=1X)=p(XY=1)p(Y=1)+p(XY=0)p(Y=0)p(XY=1)p(Y=1)
其中, Y 表 示 样 本 标 签 Y表示样本标签 Y p ( Y = 1 ) p(Y=1) p(Y=1) p ( Y = 0 ) p(Y=0) p(Y=0)在样本给定的情况下,也就是 x p 和 x q x_{p}和x_{q} xpxq给定的情况下是一个常数,如果设定 x p x_{p} xp的数量等于 x q x_q xq的数量,那么 p ( Y = 1 ) = p ( Y = 0 ) = 0.5 p(Y=1)=p(Y=0)=0.5 p(Y=1)=p(Y=0)=0.5
也就是上式可以化简为
p ( Y = 1 ∣ X ) = p ( X ∣ Y = 1 ) p ( X ∣ Y = 1 ) + p ( X ∣ Y = 0 ) p(Y=1|X)={p(X|Y=1) \over p(X|Y=1)+p(X|Y=0)} p(Y=1X)=p(XY=1)+p(XY=0)p(XY=1)

令: p ( X ∣ Y = 1 ) = p ( x ) , p ( X ∣ Y = 0 ) = q ( x ) p(X|Y=1)=p(x), p(X|Y=0)=q(x) p(XY=1)=p(x)p(XY=0)=q(x),那么:
p ( Y = 1 ∣ X ) = 1 1 + q ( x ) p ( x ) (1) \tag{1} p(Y=1|X)={1 \over 1+{q(x) \over p(x)}} p(Y=1X)=1+p(x)q(x)1(1)
在逻辑回归中,给定一个样本,其标签为1的概率是:
p ( Y = 1 ∣ X ) = 1 1 + e − ( w T X + b ) (2) \tag{2} p(Y=1|X)={1 \over 1+e^{-(w^{T}X+b)}} p(Y=1X)=1+e(wTX+b)1(2)
比较(1)和(2)式, q ( x ) p ( x ) = e − ( w T X + b ) {q(x) \over p(x)}=e^{-(w^{T}X+b)} p(x)q(x)=e(wTX+b),所以概率密度比就可以用 e − ( w T X + b ) e^{-(w^{T}X+b)} e(wTX+b)来代替。

在GAN中,GAN的鉴别器本质上就是逻辑回归,鉴别器具有这样的结构, g g g是一个非线性神经网络,最后一层激活函数是Sigmoid。输入是 x x x,输出是鉴别器判断样本 x x x为真的概率。

所以,更一般的,我们用 g ( x ) g(x) g(x)来代替 w T X + b w^{T}X+b wTX+b,也就是 q ( x ) p ( x ) = e − g ( x ) {q(x) \over p(x)}=e^{-g(x)} p(x)q(x)=eg(x) g ( x ) g(x) g(x)作为Sigmoid的输入。

参考博客:
Discriminators as approximations to likelihood ratios¶

逻辑回归是一种二分类算法,可以用于鉴别红酒的种类。在这里,我们可以使用Sofmax回归算法来预测红酒的产地,并输出uracy,画出ROC曲线。\n\首先,我们需要导入红酒数据。可以使用Siki-r库中的_wi()函数来导入数据,代码如下:\n\```pyth\from sklear.datasets impor _wi\n\rwi = _wi()\x = rwi.\y = rwi.targ\```\n\接下来,我们需要将数据集分为训练集和测试集。可以使用rai_tes_spli()函数来实现,代码如下:\n\```pyth\from sklear.m_selecti impor trai_tes_spli\n\x_trai, x_tes, y_trai, y_tes = trai_tes_spli(x, y, tes_siz=.3, random_s=)\```\n\然后,我们可以使用逻辑回归模型来训练数据集,并进行预测。在这里,我们使用Sofmax回归算法来进行多分类预测,代码如下:\n\```pyth\from sklear.linear_m impor LogistiRegressi\n\r = LogistiRegressi(multi_class='muimi', solver='bfgs')\r.fi(x_trai, y_trai)\y_pr = lr.predi(x_tes)\```\n\最后,我们可以输出模型的准确率和ROC曲线。代码如下:\n\```pyth\from sklear.metrics impor accuracy_scor, r_curv, au\impor matplotlib.pyp as p\n\uracy = accuracy_scor(y_tes, y_pr)\pri(\Accuracy\", accuracy)\n\fpr = di()\pr = di()\r_au = di()\for i i rang(3):\ fpr[i], pr[i], _ = r_curv(y_tes, y_pr, pos_lab=i)\ r_au[i] = au(fpr[i],pr[i])\n\p.figur()\p.p(fpr[], pr[], color='r', lw=2, lab='ROC curv (r = %.2f)' % r_au[])\p.p([, 1], [, 1], color='vy', lw=2, linesty='--')\p.xlim([., 1.])\p.ylim([., 1.05])\p.xlab('Fals Positiv R')\p.ylab('Tru Positiv R')\p.ti('Receiver operating characteristi examp')\p.leg(=\wer righ\")\p.show()\```\n\
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值