P517 exercises 10.3 solution(solution to exercises tutor’s edition p164)
从公式(10.6)(10.6)开始,推导整理可得

KL( p||q )=====−∫p(Z)[∑i=1Mlnqi(Zi))]dZ+const.−∫⎛⎝p(Z)lnqj(Zj)+p(Z)∑i≠jlnqi(Zi))⎞⎠dZ+const.−∫p(Z)lnqj(Zj)dZ+const.−∫lnqj(Zj)⎡⎣∫p(Z)∏i≠jdZi⎤⎦dZj+const.−∫Fj(Zj)lnqj(Zj)dZj+const.,

\begin{align*} \mathrm{KL} ( \ p \; || \; q \ ) =& - \int {p({\mathbf Z})[\sum_{i=1}^{M}\ln q_i({\mathbf Z_i}))]d{\mathbf Z} + \mathrm{const.}} \\ =& - \int \left ( p({\mathbf Z})\ln q_j({\mathbf Z_j}) + p({\mathbf Z})\sum_{i \ne j}\ln q_i({\mathbf Z_i})) \right )d{\mathbf Z} + \mathrm{const.} \\ =& - \int p({\mathbf Z}) \ln q_j({\mathbf Z_j})d{\mathbf Z} + \mathrm{const.} \\ =& - \int \ln q_j({\mathbf Z_j}) \left [ \int p({\mathbf Z})\prod_{i \ne j}d{\mathbf Z_i} \right ]d{\mathbf Z_j} + \mathrm{const.} \\ =& - \int F_j({\mathbf Z_j}) \ln q_j({\mathbf Z_j})d{\mathbf Z_j} + \mathrm{const.}, \end{align*}
其中

F=Fj(Zj)=∫p(Z)∏i≠jdZi

F = F_j({\mathbf Z_j}) = \int p({\mathbf Z}) \displaystyle {\prod_{i \ne j}^{}} d{\mathbf Z_i}
const\mathrm const表示与 qj(Zj)q_j(\mathbf Z_j)无关的项, 最小化 KL divergence\mathrm{KL \ divergence}中可以忽略
根据约束 ∫p(Z)dZ=1\int p(\mathbf Z)d\mathbf Z = 1加入Lagrange multiplifier得

δF=−∫Fj(Zj)lnqj(Zj)dZj+λ(∫qj(Zj)dZj−1)

\delta F = - \int F_j({\mathbf Z_j}) \ln q_j({\mathbf Z_j})d{\mathbf Z_j} + \lambda \left ( \int q_j({\mathbf Z_j})d{\mathbf Z_j} - 1 \right )
整理, 得到优化的目标函数, 该函数为泛函数 δF(qj(Zj),Zj)\delta F(q_j(\mathbf Z_j), Z_j)

δF=∫{Fj(Zj)lnqj(Zj)+λqj(Zj)}dZj+λ

\delta \mathrm{F} = \int \{F_j(\mathbf{Z_j})\ln{q_j(\mathbf{Z_j})} + \lambda q_j(\mathbf{Z_j})\}d\mathbf{Z_j} + \lambda
由于 λ\lambda为常数优化中可以忽略, 且按照Appendix D中的 (D.5)(D.5)公式,可得,

G=Fj(Zj)lnqj(Zj)+λqj(Zj)

G = F_j(\mathbf{Z_j})\ln{q_j(\mathbf{\mathbf{Z_j}})} + \lambda q_j(\mathbf{Z_j})

∂Gqj(Zj)=0

\frac{{\partial G}}{q_j(\mathbf{Z_j})} = 0
根据 AppendixDAppendix D的 Euler−LagrangeequationEuler-Lagrange\quad equation的简化假设 G(y,x)G(y,x)不依赖于 ∂yx\frac {\partial y}{x}, 求函数 δF\delta F的驻点即为求functional derivative ∂Gqj(Zj)=0\frac {\partial G}{q_j(\mathbf Z_j)}=0, 由此得

−Fj(Zj)q(Zj)+λ=0

- \frac{F_j(\mathbf{Z_j})}{q(\mathbf{Z_j})}+ \lambda = 0
移项变换以后得

λqj(Zj)=Fj(Zj).

\lambda q_j(\mathbf{Z_j})=F_j({\mathbf Z_j}).

λ=∫Fj(Zj)dZj=∫⎡⎣∫p(Z)∏i≠jdZi⎤⎦dZi=1,

\lambda = \int F_j({\mathbf Z_j})d{\mathbf Z_j} = \int \left [ \int p({\mathbf Z})\prod_{i \ne j}d{\mathbf Z_i} \right ] d{\mathbf Z_i} = 1,
将 λ=1\lambda = 1代入 λqj(Zj)=Fj(Zj)\lambda q_j(\mathbf{Z_j})=F_j({\mathbf Z_j})可得

q∗j(Zj)=Fj(Zj)=∫p(Z)∏i≠jdZi.

q_j^*(\mathbf Z_j) = F_j(\mathbf Z_j) = \int p(\mathbf Z) \prod_{i \ne j}d\mathbf Z_i.
即p468 的 (10.17)(10.17)

PRML exercises 10.3 解析相关推荐

  1. mulesoft Module 10 quiz 解析

    mulesoft Module 10 quiz 解析 概述(重中之重) 1. How can an error scope be configured to catch all errors in t ...

  2. 新手XP下硬盘安装ubuntu10.10全程解析

    http://linux.itwaka.com Ubuntu 10.10在2010年10月正式发布,让众多Ubuntu用户都对这款全新的系统充满期望.毕竟,Ubuntu 10.10是Canonical ...

  3. 人脸识别合集 | 10 ArcFace解析

    转自:https://zhuanlan.zhihu.com/p/76541084 ArcFace/InsightFace(弧度)是伦敦帝国理工学院邓建康等在2018.01发表,在SphereFace基 ...

  4. 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime

    从微信公众平台的消息接口指南中可以看出,每种类型的消息定义中,都包含有CreateTime参数,它表示消息的创建时间,如下图所示: 上图是消息接口指南中4.1-文本消息的定义.注意CreateTime ...

  5. dayjs 源码解析(一)(api)

    前言 作为一个程序员,阅读别人优秀代码是提升自己技术能力的一个很好的方法.下面,我将自己阅读 dayjs(v1.6.10)的源码的过程记录下来. 阅读库的代码,首先先要知道这个库的作用 dayjs 是 ...

  6. shell脚本参数$10问题

    2019独角兽企业重金招聘Python工程师标准>>> 示例: 脚本test.sh #!/bin/shten=$10echo $ten 执行脚本: sh test.sh 0 1 2 ...

  7. Django 的反向解析与有无名分组

    无名分组(将加括号的正则表达式匹配到的内容当做位置参数自动传递给对应的视图函数)url(r'^test/(\d+)/',views.test), # 匹配一个或多个数字def test(request ...

  8. DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件(详细)...

    Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM开发的.与JDOM不同的是,dom4j使用接口和抽象的人分离出来而后独立基类,虽然Dom4j的API相对要复杂一些,但它提供了 ...

  9. 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析

    . Android源码看的鸭梨大啊, 补一下C语言基础 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/detai ...

  10. 10道Python面试常见的问题

    1.类继承 有如下的一段代码: class A(object):def show(self):print 'base show'class B(A):def show(self):print 'der ...

最新文章

  1. excel 按数据拆分 xlam_Excel按类别名称自定义排序:玩转Excel数据
  2. 【Android 插件化】VirtualApp 源码分析 ( 启动应用源码分析 | HomePresenterImpl 启动应用方法 | VirtualCore 启动插件应用最终方法 )
  3. 如何在Membership中实现修改密码的功能
  4. python3数据类型:Dictionary(字典)
  5. 两个字符串的删除操作
  6. Dotnet Core Windows Service
  7. php实现文件留言,PHP文件操作及实例:留言板
  8. 搭建IBM z/OS 1.9(ADCD 1.9)
  9. Linux驱动(14)--字符类设备与驱动
  10. [设计模式-创建型]单态(Singleton)
  11. Rabbit-音乐欣赏
  12. 将TQ2440的ADS测试程序放到MDK下或Ubuntu下开发
  13. java JSONObject JSONArray对象使用小记
  14. 服务器视频文件外链,视频图床 视频外链网站 视频上传外链分享
  15. html广告倒计时代码,jquery实现可关闭的倒计时广告特效代码
  16. python定时更换mac 超美桌面背景
  17. Unity项目优化-Alpha通道分离
  18. 使用python+selenium发送QQ邮件
  19. python除法有余数时+1
  20. Simulink移动机器人仿真学习--Trick记录

热门文章

  1. 第一个JAVA实战项目!
  2. java流程图是什么形状,流程判断(流程图判断框什么形状)
  3. TiledMap快捷键
  4. 学习WPF绝佳的去处……WPF教程,WPF入门教程,WPF视频教程
  5. Nmap进行主机探测出现网段IP全部存活情况分析
  6. 最全MySQL数据类型详解
  7. linux系统u盘启动项,linux怎么以u盘启动
  8. java分布式面试题之消息队列ActiveMQ部分,java反序列化原理
  9. 计算机发展简史ppt教程,计算机发展简史ppt课件.ppt
  10. 2021年游戏项目的十大编程语言:C++、Java、JavaScript、Python均在榜上