关于CFLOW-AD论文中数学部分逻辑推理解析与代码对照

数学推理部分:

代码部分:

1 基本逻辑:根据论文中的阐述,我们通过编码器(encoder)是可以获得一个复杂分布z的,由于z分布复杂,不容易用来求解损失函数,所以我们通过解码器(decoder)来获取一个简单(0,1)高斯分布u,配合一个雅可比矩阵J,来代替掉复杂分布z。

2 论文推理部分:

        公式5:最终损失是真实分布p(假设的一个东西)和预测分布\hat p的差值的期望,表示让真实分布和预测分布尽可能小。

        公式5.1和5.2:表示真实分布和预测分布的计算,其中预测分布计算方式已经根据基本逻辑进行了替换。

        公式6:前三个公式的结合。

        公式7:引入KL散度,本质也是让两个分布更接近。

        公式 7.1 将公式4和7结合,其中公式4:

两者结合发现其实要求最终的损失,只要求预测分布p的负对数熵即可,换言之,最小化负对数似然可以逼近真实数据分布(具体可见链接,有详细公式推导,简单易懂)。

        公式7.2 :由7.1转化过来,约等号在于将ui出现的概率近似为一致,这样就可以直接取平均了。(数据量越大,近似效果越好)。

接下来是代码:

        代码与论文中负号表示有差异,decoder的输入为c和e 代表论文中的c(位置编码)和z(复杂分布),输出为z 代表论文中的u。

        其中 mean_train_loss 代表的就是最终公式7.2的loss。

    decoder_log_prob = get_logp(C, z, log_jac_det)得到的是公式5.2中的结果或7.2中的每一个相加的小部分。
    log_prob = decoder_log_prob / C 除一个通道数是为了让损失更稳定,避免过拟合等问题。
    loss = -log_theta(log_prob) 这里的log_theta指的是:

log softmax log相比log 更不容易出现梯度爆炸问题。

此外FIB(纤维处理)的原因是在计算机损失时是针对每个像素的,所以每一次元计算计算量都非常大,再次细分为多个小批次可以减轻GPU的计算负担。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值