AIGC实战——归一化流模型(Normalizing Flow Model)

本文介绍了归一化流模型(Normalizing Flow Model),这是一种用于生成建模的新型技术,它通过可逆变换直接建模数据的概率分布。文章深入探讨了基本原理,如变量变换、雅可比行列式和RealNVP模型,还提到了其他如GLOW和FFJORD等先进模型,展示了归一化流模型在处理复杂数据分布上的强大能力。

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

### 关于Softmax函数及其矩阵运算 #### 背景介绍 Softmax函数是一种常用的激活函数,在多分类问题中用于将模型输出转换成概率分布。该函数能够确保每个元素的值位于\( (0, 1) \),并且所有元素之和等于1。 #### 数学表达式 对于给定的输入向量\(\mathbf{z}=[z_1,z_2,\ldots,z_n]\), Softmax函数定义如下: \[ S(z_i)=\frac{\exp{(z_i)}}{\sum_{j=1}^{n}\exp{(z_j)}}, i = 1,..., n \] 为了防止数值溢出,通常会采用一种更稳定的版本来计算此函数[^4]。 #### 改进版公式推导 考虑到指数项可能导致极大或极小的结果,进而造成浮点数表示范围外的情况发生,因此引入了减去最大值得到的新形式: 设 \( m=\max({z}) \) 则新的softmax表达变为: \[S'(z_i)=\frac{\exp{(z_i-m)}}{\sum_{j=1}^{n}\exp{(z_j-m)}}\] 这样做既不会改变最终结果的比例关系又有效避免了潜在的数据溢出风险。 #### Python代码实现 下面给出不依赖第三方库(如NumPy)的情况下基于上述优化公式的Python实现方式: ```python def softmax(x): """Compute the softmax of vector x.""" e_x = [pow(math.e, xi-max(x)) for xi in x] sum_ex = sum(e_x) result = [] for exi in e_x: result.append(exi / sum_ex) return result ``` 这段程序首先找到列表中的最大值作为偏移量m;接着分别求得各个位置上的调整后指数幂e^(xi−m);最后按照比例分配这些权重形成最终的概率分布[^5]. #### Jacobian Matrix雅可比矩阵 当涉及到反向传播算法时,需要知道softmax相对于输入变量的变化率——即Jacobian matrix。由于softmax是一个矢量化操作,它的导数实际上构成了一个nxn大小的方阵A,其中第(i,j)个元素a_ij由下述规则决定: - 当i=j时:\[ a_{ii}=s_i*(1-s_i)\] - 否则 :\[ a_{ij}=-s_i*s_j\] 这里\( s_i \)代表经过softmax变换后的输出值之一[^1].
评论 90
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盼小辉丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值