[生成模型]学习笔记
生成模型
生成模型概述(通俗解释)
生成的核心是生成抽象化的内容,利用已有的内容生成没有的/现实未发生的内容。这个过程类似于人类发挥想象力的过程。
生成模型的应用场景非常广泛,可以应用于艺术表达,如画的生成、电影(视频)的生成,音乐生成(借助提取的风格进行生成)等。
生成模型定义与思路
生成模型:给定训练集,产生与训练集同分布的新样本。
希望学到一个模型 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(A∣B)=P(B)P(B∣A)×P(A)
联合概率:
P ( A , B ) = P ( A ∣ B ) × P ( B ) P(A,B)=P(A|B)×P(B) P(A,B)=P(A∣B)×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=1∏np(xi∣x1,…,xi−1)
其中, 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
推荐阅读
深度生成模型文物修复--论文阅读笔记(指南-6)
ROS 理论与实践学习笔记 - 5 ROS 机器人系统模拟 URDF 集成 Gazebo
神经网络构建和训练深度学习模型全文(PyTorch 和 TensorFlow)
C++ 研发笔记 2 - 学习规划概述
学习笔记和每日一题 - 输入: nums = [7,8,9,11,12]
输出:1
解释: 最小的正数 1 没有出现:最小的正数 1 没有出现。
提示
现代数字信号处理 I-P2 概率论学习笔记
Canmv k230 C++ 案例 1 - 图像分类学习笔记 第一版-02 AI 模型开发
用 Python 实现深度学习模型:智能产品设计与开发-3.数据准备
C++ 学习笔记 ----8, 掌握类和对象 (VII) ---- 构建稳固的接口
NIO学习笔记