欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[生成模型]学习笔记

最编程 2024-10-04 07:16:22
...

生成模型

生成模型概述(通俗解释)

生成的核心是生成抽象化的内容,利用已有的内容生成没有的/现实未发生的内容。这个过程类似于人类发挥想象力的过程。

生成模型的应用场景非常广泛,可以应用于艺术表达,如画的生成、电影(视频)的生成,音乐生成(借助提取的风格进行生成)等。

生成模型定义与思路

生成模型:给定训练集,产生与训练集同分布的新样本。

希望学到一个模型 p m o d e l ( x ) p_{model}(x) pmodel(x),其与训练样本的分布 p d a t a ( x ) p_{data}(x) pdata(x)相近。

无监督学习里的一个核心问题——密度估计问题

几种典型思路:

  • 显式的密度估计:显式的定义并求解分布 p m o d e l ( x ) p_{model}(x) pmodel(x)
  • 隐式的密度估计:学习一个模型 p m o d e l ( x ) p_{model}(x) pmodel(x),而无需显式地定义它。

条件概率、联合概率的贝叶斯公式[3]

条件概率:

P ( A ∣ B ) = P ( B ∣ A ) × P ( A ) P ( B ) P(A|B)=\frac{P(B|A)×P(A)}{P(B)} P(AB)=P(B)P(BA)×P(A)

联合概率:

P ( A , B ) = P ( A ∣ B ) × P ( B ) P(A,B)=P(A|B)×P(B) P(A,B)=P(AB)×P(B)

举例说明联合概率分布:打靶时命中的坐标(x, y)的概率分布就是联合概率分布(涉及两个随机变量),其他同样类比。

联合分布的边缘分布:

  • P { X = x i } = ∑ j P { X = x i , Y = y j } = ∑ j p i j = p i P\{X=x_i\}=\sum_{j}P\{X=x_i, Y=y_j\}=\sum_j p_{ij}=p_i P{X=xi}=jP{X=xi,Y=yj}=jpij=pi
  • P { X = x j } = ∑ i P { X = x i , Y = y j } = ∑ i p i j = p j P\{X=x_j\}=\sum_{i}P\{X=x_i, Y=y_j\}=\sum_i p_{ij}=p_j P{X=xj}=iP{X=xi,Y=yj}=ipij=pj

极大似然估计[5]

e.g. 在一个未知的袋子里摸球,有若干红色和蓝色的球。此概率服从二项分布:

X 红色 蓝色
P θ 1-θ

由于不知道袋子中究竟有多少个球以及每个颜色的球有多少个,所以无法对参数θ进行计算,也不能计算出摸到哪种颜色的球的概率是多少。于是,假设有一个测试人员对袋内球进行有放回的抽取,进行了100次随机测验之后,统计得出:有30次摸到的是红球,有70次摸到的是蓝球。

从测试结果推测,红色:蓝色=3:7,进而求得θ=0.3。

需要注意的是,极大似然估计中采样需满足一个重要的假设,就是所有的采样都是独立同分布的。

PixelRNN与PixelCNN

显式的密度模型

利用链式准则将图像x的生成概率转变为每个像素生成概率的乘积:

p ( x ) = ∏ i = 1 n p ( x i ∣ x 1 , … , x i − 1 ) p(x)=\prod_{i=1}^{n} p(x_i|x_1, \dots, x_{i-1}) p(x)=i=1np(xix1,,xi1)

其中, p ( x ) p(x) p(x)是图像x的似然, x i x_i xi是给定已经生成的像素的前提下生成第i个像素的概率。

(描述图像的生成过程:先生成图像中的第一个点,再根据第一个点生成第二个点,再根据第一个点和第二个点生成第三个点,以此类推)

似然:密度函数

这个分布很复杂,但是可以使用神经网络来建模。

PixelCNN:

在这里插入图片描述

PixelRNN与PixelCNN的优缺点:

  • 优点:
    • 似然函数可以精确计算
    • 利用似然函数的值可以有效地评估模型性能
  • 缺点:
    • 序列产生速度慢

信息量、香农熵、交叉熵、KL散度[1]

信息量(Amount of Information):对于一个事件,如果小概率事件发生,则事件带来了很大的信息量;如果大概率事件发生,信息量很小;对于独立的事件来说,它们的信息量可以相加。

e.g. 如果说有人中了彩票,则信息量很大;如果说没人中彩票,则信息量很小。

信息量定义:

I ( x ) = log ⁡ 2 ( 1 p ( x ) ) = − log ⁡ 2 ( p ( x ) ) I(x)=\log_{2}{(\frac{1}{p(x)})}=-\log_{2}{(p(x))} I(x)=log2(p(x)1)=log2(p(x))

e.g. 抛硬币 h代表正面向上 t代表反面向上

均匀硬币:

p ( h ) = 0.5 p(h)=0.5 p(h)=0.5 I p ( h ) = log ⁡ 2 1 0.5 = 1 I_p(h)=\log_{2}{\frac{1}{0.5}}=1 Ip(h)=log20.51=1

p ( t ) = 0.5 p(t)=0.5 p(t)=0.5 I p ( t ) = log ⁡ 2 1 0.5 = 1 I_p(t)=\log_{2}{\frac{1}{0.5}}=1 Ip(t)=log20.51=1

不均匀硬币:

q ( h ) = 0.2 q(h)=0.2 q(h)=0.2 I p ( h ) = log ⁡ 2 1 0.2 = 2.32 I_p(h)=\log_{2}{\frac{1}{0.2}}=2.32 Ip(h)=log20.21=2.32

q ( t ) = 0.8 q(t)=0.8 q(t)=0.8 I p ( t ) = log ⁡ 2 1 0.8 = 0.32 I_p(t)=\log_{2}{\frac{1}{0.8}}=0.32 Ip(t)=log20.81=0.32

香农熵:一个概率分布所带有的平均信息量。这里的熵可以描述概率分布的不确定性。

香农熵定义:离散概率分布中每一个事件发生的概率乘信息量并求和

H ( p ) = ∑ p i I i p = ∑ p i log ⁡ 2 1 p i = − ∑ p i log ⁡ 2 p i H(p)=\sum p_iI_i^p=\sum p_i\log_{2}{\frac{1}{p_i}}=-\sum p_i\log_2{p_i} H(p)=piIip