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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

    上回讲完了伯努利分布、二项分布和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的有效观测数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182917.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Redis版本5.0.5安装

    这篇文章主要讲解Redis安装,以后的文章我会对Redis做一个详细介绍,已经Redis应用。1.解压压缩包tar-zxvfredis-5.05.tar.gz2.安装gccyuminstallgcc检查gcc安装是否成功rpm-qa|grepgcc3.进入文件夹make安装cdredis-5.0.5makeMALLOC=libc4.后台运行redissrc/redis-server&检查redis服务启动情况..

  • zabbix监控redis信息

    zabbix监控redis信息了解Redis的info要获得Redis的当前情况,使用info命令即可。具体用法:redis-cli-h127.0.0.1-p6379-aredis_passwdinfo[参数]。针对不同的参数就会看到具体的数字,如果没有带参数,那么就会把默认情况写出来,如果带上all参数,那么就会把所有情况都写出来。比如:redis-cli-h127.0.0.1-p6379-aredis_passwdinfoserver,就会看到redis关于server的一些数据,如下:可以看

  • vue生命周期及其应用场景_介绍vue生命周期流程

    vue生命周期及其应用场景_介绍vue生命周期流程文章目录一,vue生命周期函数:一,vue生命周期函数:vue的生命周期函数又叫钩子函数:生命周期方法详解:beforeCreate//详情//实例初始化之后,组件被创建前,这个时候的el,data,message都是underfined//场景//可以加入loading事件;beforeCreated//详情//实例创建完成后,data、methods被初始化//场景//结束loading事件befor

    2022年10月21日
  • C语言之位运算符_c语言按位取反运算符怎么用

    C语言之位运算符_c语言按位取反运算符怎么用1、在C语言中,位运算符能够针对整数和字符数据的位(bit)进行逻辑与位移的运算,通常区分为“位逻辑运算符”与“位位移运算符”两种。2、位逻辑运算符如下表:运算符 功能 运算过程 & AND(与) 逐位与 | OR(或) 逐位或 ^ XOR(异或) 逐位异或 ~ NOR(非) 逐位非 案例程序如下:#include<stdio.h>#include<stdlib.h&gt…

  • vsftp 用户_linux虚拟用户

    vsftp 用户_linux虚拟用户Vsftp与PAM虚拟用户使用yum安装vsftpyum install vsftpd pam pam-* db4 db4-* 创建一个保存用户及密码的文件cd /etc/vsftpd/ touch virtual_login 添加用户(一行用户一行是密码)vim  virtual_login dongnan nandong

  • 简单理解常量、常量池、运行时常量池和字符串常量池

    简单理解常量、常量池、运行时常量池和字符串常量池1、常量常量在java中就值的是一般的字面量,比如字符串,整数,浮点数等等数据。简单理解java中什么叫常量2、常量池,也叫静态常量池,说常量池一定要指明是编译器生产

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号