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


    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散度,已经有使用了
    互信息 在 决策树中 有使用
  • 相关阅读:
    JSP实现数据传递(web基础学习笔记三)
    Spring Boot 参数校验
    Spring AOP实践
    Spring AOP介绍
    2018年春节
    InnoDB索引
    Kafka基本知识回顾及复制
    Kakfa消息投递语义
    Kafka Consumer
    Kafka Producer Consumer
  • 原文地址:https://www.cnblogs.com/jianzhitanqiao/p/5528033.html
Copyright © 2020-2023  润新知