洞明先生的博客

穷通悟理是极乐
  新随笔  :: 管理

MaxEnt与EM算法_七月算法4月机器学习班第8次课程笔记

Posted on 2016-05-25 18:19  洞明  阅读(877)  评论(0编辑  收藏  举报
2016/5/16 星期一 12:23
 
  desc
从泛函的角度理解 最大熵算法
熵本身就是一个 泛函,p(x) 是概率密度函数,即是一个函数
H(x) = -Σp(x)·logp(x)   # input is 函数,所以是 函数的函数
 
MaxEnt model,希望找到一个 概率分布,这个概率分布的熵最大,所以这是一个泛函问题
# 我以前的思路就是,遍历所有的分布, try,然后找到熵最大的分布
# 但是建立泛函思想,以后,即 函数可以对函数求导,dH(x)/dp(y|x),由此可以得到 熵最大的那个概率密度函数。
 
经过 take 约束 into consideration,求导后得到 符合 熵最大的那个概率密度函数
if get 到想要的概率密度函数,该怎么用?===> argmax 啊!
由于get 到的概率密度函数是有 参数的,所以需要数据进行训练,然后拿到具体的概率密度函数
然后用的时候,就是 在这个概率密度函数下, argmax ,找到概率最大的 y 就可以
 
最大熵模型
from view of 泛函
最大熵模型是一个泛函问题
 
1. 输出是一个函数,因为 argmax this function
最大熵的本质是在找分布的
2. 输入数据仅仅是在给定概率密度族下,确定具体的参数形状 
3. 当输出 general 的概率密度函数族的时候,至此 模型基本已经完毕,剩下的就是用 数据 求解具体 w 了
一个观点
最大熵的输出,这个符合熵最大的概率密度函数的形式:
是概率密度函数的 general 通用表达式,此时不必再 正态分布,泊松分布的一个个去试了
这个应该是 最大熵求解过程的 最大贡献【观点】
即:类似 Taylor 展开式可以将任意函数展开为多项式
类似傅里叶变换可以将任意函数展开为三角函数
整理的e 组合,可以将all 概率密度函数展开为 指数的表达式
泛函的概念
1. 函数的函数就是泛函
2. 将一个函数 降维 为一个 scalar ,这也是泛函的范畴
 
关于泛函:input 函数,output scalar
所以统一了上面两点:即 泛函的输入时函数,输出是一个标量
比如熵,熵 的输入时概率密度函数,是函数到标量的映射
 
而这个泛函的具体方法,比如说  就是把这个 input 的函数的所有定义域的对应的函数值相加,这样就是一种泛函方法,再就是这个 H(x) 的方法,就是 定义域内的 pΣlogp 的,也是一种泛函方式
两个概念
1. 信息 与 概率 是一对反义词
概率大,信息少,概率小,信息大,由此===>使用choose -log 函数
that is why 自信息是 -log
信息就是对不确定性的度量,概率就是对确定性的度量
使用 -log(p) 作为信息,称为自信息
 
2. 自信息 和 互信息
自信息 就是 -log(p),
互信息的概念,语义解释为:
给了 y,相当于揭示了 x 多少信息
关于 联合熵,条件熵 和 互信息 使用韦恩图来记忆
 
对熵的另一种观点:熵 是自信息的期望
指标的使用
即:条件熵,相对熵,交叉熵 都可以衡量差异性
条件熵越大,那么自然 X Y 的交集越少,所以差异越大
互信息,即交集越大,自然越相似
了解 GMM 如何应用的
 
也是 argmax
 
相当于知道了 具体的
解释最大熵
最大熵的使用准则就是:承认事实,对未知不做假设
1. 条件熵最大 体现了 承认事实 这个准则
2. 最大化,体现了 对未知不做假设
 
最大熵其实就是找一个分布,使得该分布的 泛函最大
故直接写出 条件熵的公式,然后:
使用拉式定理 处理约束条件
熵的思想
事件发生的概率越小,那么包含的信息就越多
# 因为有很多你不知道的
前提是,你不知道的事 和 你知道事 的形态集合 是一样大的,不要认为你不知道的事就是 配角
反而 意味着有大的信息量
计算期望
离散用概率作加权和
连续用概率密度作加权积分
最大熵模型的最优化问题
P_(x) 这个是从语料中得来
数学观点本质
【观点】
SVM的 问题是一个的凸优化问题
PCA 的问题是一个对角化的问题
MaxEnt 的问题是一个 泛函的问题
   
EM 算法
EM 算法是一个生成模型
这里理解两个变量,即:z 和 Z
z is a vector to representation categories
Z is a matrix to representation each data each category's probability
 
即,对于隐变量Z
1. 是一个 matrix
2. for each in data:
       for cate in category:
            Z[each][cate]
I argue EM 算法最大的贡献 是这个 Z 的确定
 
# 注意:z 是类别向量,是确定的;而 Z 才是隐变量
 
最后如果使用隐变量的话,就是:
max(Z, axis = 1),即 每一个 data 属于那个类别
然后 依据这些 data label 数据,估计分布的参数,这个是 M 步骤要做的
model 嵌套 EM
1. 一般使用 EM 算法的是 生成模型
2. EM 算法的输出 Z 是核心
3. EM 算法输出 不一定是 model 的输出
   比如 EM 的输出是 Z,但是 GMM 的输出是 μ,Σ,π
4. EM 算法的输出可以直接 导出 GMM 的输出: μ,Σ,π
5. 对于GMM 来说,如果知道了 μ,Σ,π,那么相当于知道了 男女各自的概率密度,然后来一个 data,分别放到 这两个概率密度中,看属于哪个的概率大,就是属于哪个
GMM 的使用也是 argamx,相当于知道了概率密度
典型的生成模型
 
贝叶斯:
P(y|x) ∝ P(x|y)·P(y) = P(x,y)
所以其实你每次 都在用 P(x,y) 来代替 这个 P(y|x)啊!
# 虽然知道了 生成模型,但是如果要进行判别,还是得划归到 P(y|x) 上
 
HMM的已知观测状态序列问题:
前提是从 语料中,get 到了 P(state, observation)
   
极大似然估计
使用MLE 的时候,Xi 因为是 存在的样本,所以视为固定
而参数Θ 视为变量
 
MLE 使用的前提条件
1. 发生的即最可能发生的
2. 发生的事件之间 独立同分布
 
MLE 与 监督的关系
使用 MLE 不一定无监督
比如 LR,就是 有监督的 使用MLE,因为相乘的时候, 到底是 p1(属于第1类事件) 还是 使用 p2(属于第2类事件) 需要你知道的
 
GMM 等使用 EM 算法的是无监督的
 
启发
一般而言,绝大多数的分类问题都可以 使用 EM算法
但是这个 分类问题需要建立 概率model,即 MLAPP a probability perspective
这真成了一个算法框架了
不知道类别,没关系,遍历P(x, zj)
然后 Jessen 操作
 
 
而关键点在于,这个Q 函数 和 P(xi, zj ;Θ) 到底怎么表示,这个是需要 想办法的地方,
# 一般而言,Qi 是该样本点 data_i 到各个 类别的距离,然后归一化
而对于 P(xi, zj ;Θ),在k-means 当中,使用的是:
M步的时候:该点data_i 到 其类别中心的距离
A = ΣΣ Rik · ||data_i - μk||2
即用 距离反映 P(xi, zj) 的概率。距离大,那么概率小,距离小,那么概率大
L = A^(-1)
M 步就是在更新 μk,其中 μk 就是参数Θ
 
而 每次E步的时候:
R 则是隐变量 Z,而对于 each data_i,zi 就是一个 vector,此时将其设置为 one hot 的类型
即只有一个为1,其余的为0,又被称为指示函数
 
summary
在 k-means 当中
· Θ是 μk
· R 是 Z
· ||data_i - μk||2 反映概率 P(xi, zj;Θ)的倒数
  这里没有 取log
· 每次都把 R one hot 化了
 
EM 算法应用在在分词上,那个 的 EM 的变量 体现的不是很明显,而是 重新定义了 Q 和 P 的求法,即 是在 EM 框架内,但是不是 纯碎的 EM 算法
每次的 Q 就是 看各种候选的分词方法的概率(词概率的乘积)
每次的 P 就是 在更新词频,以备 E步再次使用
最终得到 整个 的Z,就是每个句子的分词方法,即 EM 的输出就是 model 的输出 
使用决策树
可以对:特征进行评价
根据熵的增益,其实就是 评价互信息?
 
条件熵 条件熵 视为 熵的熵
关于MaxEnt的归一化
已知求出
进行归一化,其实分母是 一个常数,所以 全部相加,然后分子上也有这么一个 常数
所以 分子分母全部约掉了,所以才有
这个是 归一化的数学操作,而不是 高深的操作
非对偶式
我认为 在 MaxEnt 当中是没有对偶式的
即:我只认为最大化条件熵,然后 得到概率密度函数
至于下一步的最大化,这个是 通用的啊 general
即:知道概率密度函数了,所以 自然是 找概率最大的那个 y 值了,argmax
互信息与平均互信息
自信息是:
i(x) = -log(P(x))
i(y|x) = - log(P(y|x))
那么 i(x,y) = i(x) - i(y|x) = -log(P(x)/P(y|x))
定义 i(x,y) 为自信息
 
而 自信息的期望,即:
ΣΣP(x,y)·i(x,y) = -ΣΣP(x,y)·log(P(x)/P(y|x)) 就是平均互信息
 
而平均互信息就是 I(x,y) = H(x) - H(x|y),其实就是在衡量 X 和 Y 之间的相似度
那么 就可以 用一个新的 view 看待决策树了
I have a function, I can get each feature 与 tag 的互信息,那么
for feature in feature_list:
       I(feature, tag)
找出 与 tag 的互信息最大的那个feature,作为分叉的选择,然后迭代剩余的feature
 
不要使用 H(X) - H(X|Y),这样看比较复杂, 直接使用 这个差值的物理意义,即 互信息
互信息具有 衡量两个 随机变量相似度的 能力
NEW 决策树
新型决策树
 
分别使用:平均互信息(即:信息增益),条件熵的倒数、 交叉熵、相对熵、相关系数、后验概率、逻辑回归后的权重、卡方检验的伴随概率p值排序  来作为 决策树的 分叉依据
 
如果你搞懂每次 决策树其实就是在 衡量 每一个 feature 与 类别的 互信息相似度的话,那么就能联想到这里了
知道 How to use GMM 就好操作了
GMM 是一个 无监督的分类模型
input data 的feature,指定分为几类
前提假设是:这几类均服从 高斯分布
然后 求出各个类的 概率密度函数,然后 for each data 再 argmax 就可以了 
 
启发:可以有 泊松混合模型,即: PMM
summary
1. 决策树的扩展
2. 从 GMM 到 破松混合分布
3. MaxEnt 是泛函
4. EM 中的Z 是一个矩阵,而 P 和 Q 都好求
5. 评价随机变量(概率分布)相似度的 四个熵的指标:
    条件熵的倒数,互信息,交叉熵 和 相对熵
相对熵KL散度,已经有使用了
互信息 在 决策树中 有使用