热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

《PRML》学习笔记2.2——多项式分布和狄利克雷分布

上回讲完了伯努利分布、二项分布和Beta分布,以及从最大似然估计的非参数化思想和引入共轭先验,使得参数变成一个变量,建模求解的参数化方法两

    上回讲完了伯努利分布、二项分布和Beta分布,以及从最大似然估计的非参数化思想和引入共轭先验,使得参数变成一个变量,建模求解的参数化方法两方面介绍了求解模型参数\mu的方法。没有读过的朋友可以参考:《PRML》学习笔记2.1——伯努利分布、二项分布和Beta分布,从贝叶斯观点出发

    今天将为大家介绍两个更难理解的分布——多项式分布和狄利克雷分布。


1.多项式变量和多项式分布

    伯努利分布的一个经典例子就是掷硬币,当你掷出去的时候,得到的结果只有正面朝上或者反面朝上两种可能,因此可以用p(x|\mu)=\mu^{x}\cdot(1-\mu)^{1-x}进行建模。概率密度的表达式中,x的取值只有两种情况——0或1,那么,这个建模方法就不适用于掷骰子了,毕竟骰子有6个面,对应着6种投掷结果。所以这时候就要将服从伯努利分布的变量进行扩展了。

    首先,使用一种方式来表达投掷骰子的结果,这里推荐的是"1-of-K"表示法,使用一个K维向量\boldsymbol{x}来表示状态,向量中一个元素x_k等于1,其余元素为0,用来表示发生的是第k中情况:

                                                                          \large \boldsymbol{x}=(0,0,0,1,0,0)^T                                                                                  (1)

    如果用参数\mu_k表示x_k=1的概率,那么\mathbf{x}的分布为:

                                                                          \large p(\boldsymbol{x}|\boldsymbol{\mu})=\prod_{k=1}^{K}\mu_k^{x_k}                                                                                        (2)

    因为\mu_k代表的是一种情况的概率,所以\mu_k满足\mu_k\ge0而且\sum_{k=1}^{K}\mu_k=1。可以看出,这是伯努利分布的一个多维上的推广,伯努利分布p(x|\mu)=\mu^{x}\cdot(1-\mu)^{1-x}也可以换成相同的形式表达:p(\boldsymbol{x}|\boldsymbol{\mu})=\mu_1^{x_1}\cdot\mu_2^{x_2}\boldsymbol{x}是一个2维向量,同样是用"1-of-K"表示法,这里的\mu_k也满足\mu_k\ge0\sum_{k=1}^{K}\mu_k=1

    继续K维向量的讨论,由刚才的分布推导出其数学期望为:

                                                      \large \mathbb{E}[\boldsymbol{x}|\boldsymbol{\mu}]=\sum_{\boldsymbol{x}}p(\boldsymbol{x}|\boldsymbol{\mu})\boldsymbol{x}=(\mu_1,...,\mu_K)^T=\boldsymbol{\mu}                                                       (3)

    那么,可以联系之前从伯努利分布到二项分布的引出过程,我们也制造一个集合\mathcal{D},它由N个独立同分布(如上面的分布)的向量\boldsymbol{x_1}...\boldsymbol{x_N},那么对应的似然函数是:

                                                    \large p(\mathcal{D}|\boldsymbol{\mu})=\prod_{n=1}^{N}\prod_{k=1}^{K}\mu_k^{x_{nk}}=\prod_{k=1}^{K}\prod_{n=1}^{N}\mu_k^{x_{nk}}=\prod_{k=1}^{K}\mu_k^{\sum_{n=1}^{N}x_{nk}}                                       (4)

    设 m_k=\sum_nx_{nk},那么这个部分代表了似然函数对于N个数据点的依赖关系,而m_k也可以理解为,在N次观测中,观测到x_k=1的次数。接下来求解最大似然解,转化成对数似然函数:

                                                                     \large \mathrm{ln}p(\mathcal{D}|\boldsymbol{\mu})=\sum_{k=1}^Km_k\cdot \mathrm{ln}(\mu_k)                                                                        (5)

    同时存在的限制条件为\sum_{k=1}^{K}\mu_k=1,这个限制通过拉格朗日乘数\large \lambda实现,总的函数变为:

                                          \large \mathrm{ln}p(\mathcal{D}|\boldsymbol{\mu})+\lambda(\sum_{k=1}^K\mu_k -1)=\sum_{k=1}^Km_k\cdot \mathrm{ln}(\mu_k)+\lambda(\sum_{k=1}^K\mu_k -1)                               (6)

    求导:

                                                            \large \frac{\partial f}{\partial \mu_k}=\frac{m_k}{\mu_k}+\lambda=0 \to \mu_k=-\frac{m_k}{\lambda}                                                                   (7)

    将\mu_k=-\frac{m_k}{\lambda}代入\sum_{k=1}^{K}\mu_k=1中,解得\lambda=-N,\mu_k^{ML}=\frac{m_k}{N},对应的就是在N次观测中,观测到x_k=1的次数的比例。然后,类似于二项分布,考虑m_1...m_k的联合分布(二项分布只考虑m_1的分布),可以得到:

                                                     \large p(m_1,m_2...m_k|\boldsymbol{\mu},N)=(_{m_1,m_2...m_k}^{N})\prod_{k=1}^K\mu_k^{m_k}                                                          (8)

    此时满足\sum_{k=1}^{K}\mu_k=1


2.狄利克雷分布

    由多项式分布的形式可知,参数\{\mu_k\}的共轭先验分布满足p(\boldsymbol{\mu}|\boldsymbol{\alpha})\propto\prod_{k=1}^K\mu_k^{\alpha_k-1},其中1\ge\mu_k\ge0\sum_{k=1}^{K}\mu_k=1,由于这两个条件的限制,参数\{\mu_k\}被限制在了k-1维的单纯性中(作为特例,Beta分布的参数分布在一条直线\mu_1+\mu_2=1上)。归一化后,得到了狄利克雷分布:

                                                                p(\boldsymbol{\mu}|\boldsymbol{\alpha})=\frac{\Gamma(\sum_{k=1}^K\alpha_k)}{\Gamma(\alpha_1)...\Gamma(\alpha_K)}\cdot \prod_{k=1}^K\mu_k^{\alpha_k-1}                                                                        (9)

    它是Beta分布的多维推广。同样,用贝叶斯公式可得,参数\{\mu_k\}的后验概率正比于似然函数和先验概率的乘积。因此形式一致,得到归一化后的后验概率分布也是狄利克雷分布,为:

                                                        p(\boldsymbol{\mu}|\boldsymbol{\alpha})=\frac{\Gamma(\sum_{k=1}^K\alpha_k+N)}{\Gamma(\alpha_1+m_1)...\Gamma(\alpha_K+m_K)}\cdot \prod_{k=1}^K\mu_k^{\alpha_k+m_k-1}                                                  (10)

    因此参数\alpha_k可以理解为x_k=1的有效观测数。


推荐阅读
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 热血合击脚本辅助工具及随机数生成器源码分享
    本文分享了一个热血合击脚本辅助工具及随机数生成器源码。游戏脚本能够实现类似真实玩家的操作,但信息量有限且操作不可控。热血合击脚本辅助工具可以帮助玩家自动刷图、换图拉怪等操作,并提供了雷电云手机的扩展服务。此外,还介绍了使用mt_rand函数作为随机数生成器的代码示例。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
author-avatar
棒棒冰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有