深度生成模型:自回归模型与流模型解析
1. 自回归模型(Autoregressive Models)
1.1 目标函数
自回归模型的目标函数具有良好的形式。假设 (x_{<1} = \varnothing)(即无条件),目标函数如下:
[
\sum_{n}\sum_{d}\sum_{l = 1}^{L}[x_d = l]\ln\theta_d(x_{<d})
]
对数作用于独立同分布(i.i.d.)数据 (D) 后,会得到各个数据点的分布 (p(x_n)) 的对数之和。再应用乘积法则与对数运算,会得到另一个求和,这次是对维度求和。通过使用因果卷积(CausalConv1D)对条件概率进行参数化,我们可以在一次前向传播中计算所有的 (\theta_d),然后检查像素值。理想情况下,当 (x_d = l) 时,我们希望 (\theta_{d,l}) 尽可能接近 1。
1.2 代码实现
以下是自回归模型(ARM)的代码实现:
import torch
import torch.nn as nn
from torch.distributions.categorical import Categorical
class ARM(nn.Module):
def __init__(self, net, D=2, num_vals=256):
super(ARM, self).__init__()
print('ARM by JT.')
self.net = net
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



