【读书笔记】Algorithms for Decision Making(4)

简介: 本部分讨论从数据学习或拟合模型参数的问题,进一步讨论了从数据中学习模型结构的方法,最后对决策理论进行了简单的概述。

二、概率推理(3)

到目前为止,均假设概率模型的参数和结构是已知的。本部分讨论从数据学习或拟合模型参数的问题,进一步讨论了从数据中学习模型结构的方法,最后对决策理论进行了简单的概述。


3. 参数学习

3.1 最大似然学习

所谓最大似然参数学习,就是试图找到最大化观测数据可能性的分布参数,即$$\hat{\theta} = \argmax_{\theta} \mathbb{P} (D \mid \theta).$$该方法主要面临两个挑战:

  1. 选择合适的概率模型,通过该模型定义$\mathbb{P} (D \mid \theta)$。通常假设数据$D$中的样本是独立同分布的(independently and identically distributed),分布可能是二项分布或高斯分布。
  2. 执行定义等式的最大化在常见的概率模型上是可执行的。对于其他的概率模型常使用最大化对数似然(log-likelihood),即$$\hat{\theta} = \argmax_{\theta} \sum_{i} \log \mathbb{P} (D \mid \theta).$$ 与计算许多小概率质量或密度的乘积相比,计算对数似然之和通常在数值上更稳定。

示例 最大似然估计贝叶斯网络。

function sub2ind(siz, x)
    k = vcat(1, cumprod(siz[1:end-1]))
    return dot(k, x .- 1) + 1
end

function statistics(vars, G, D::Matrix{Int})
    n = size(D, 1)
    r = [vars[i].r for i in 1:n]
    q = [prod([r[j] for j in inneighbors(G,i)]) for i in 1:n]
    M = [zeros(q[i], r[i]) for i in 1:n]
    for o in eachcol(D)
        for i in 1:n
            k = o[i]
            parents = inneighbors(G,i)
            j = 1
            if !isempty(parents)
                j = sub2ind(r[parents], o[parents])
            end
            M[i][j,k] += 1.0
        end
    end
    return M
end

3.2 贝叶斯参数学习

贝叶斯参数学习解决了最大似然学习在数据量有限时的缺陷。贝叶斯参数学习估计$\mathbb{P} (\theta \mid D)$,即给定数据$D$后$\theta$的后验分布$$\hat{\theta} = \mathbb{E}_{\theta \sim \mathbb{P} (\cdot \mid D)} [\theta].$$然而,在某些情况下,期望可能不是可接受的估计值也会使用最大后验估计$$\hat{\theta} = \argmax_{\theta} \mathbb{P} (\theta \mid D).$$

3.3 非参学习

常用的非参估计为核密度估计(kernel density estimation)$$\mathbb{P} (x) = \frac{1}{m} \sum_{i = 1} ^{m} \phi(x - D_{i}).$$常使用的核函数$\phi$为高斯核函数,即零均值的高斯分布函数。其方差被称为带宽(bandwidth),可用于控制密度函数的光滑度。

# kernel density estimation
gaussian_kernel(b) = x->pdf(Normal(0,b), x) #bandwidth of this kernel function is b

function kernel_density_estimate(ϕ, O)
    return x -> sum([ϕ(x - o) for o in O])/length(O)
end

3.4 缺失数据的学习

本部分关注数据随机缺失的情况,这意味着在给定观察变量值的情况下,条目缺失的概率与其值条件独立。具体包括两种通用方法,第一种使用缺失条目的预测值来学习分布参数,第二是基于参数估计的迭代方法。

  1. 数据补全(Data Imputation)
    事实上,使用最大似然或贝叶斯方法从缺失数据中学习模型参数。如果采用贝叶斯最大后验方法,估计过程为$$\begin{align*}\hat{\theta} & = \argmax_{\theta} p(\theta \mid D_{\rm obs}) \\ & = \argmax_{\theta} \sum_{D_{\rm mis}} p(\theta \mid D_{\rm obs}, D_{\rm mis}) p(D_{\rm obs} \mid D_{\rm mis}).\end{align*}$$

    如果将补全视为一种近似,有$$\hat{D}_{\rm mis} = \argmax_{D_{\rm mis}} p(D_{\rm mis} \mid D_{\rm obs}).$$进而有$$\hat{\theta}= \argmax_{\theta} p(\theta \mid D_{\rm obs}) \approx \argmax_{\theta} p(\theta \mid D_{\rm obs}, \hat{D}_{\rm mis}).$$

缺失数据$D_{\rm mis}$的计算仍具有挑战性。

  • 离散数据集的一种简单方法为边际模式(marginal mode)是用最常见的观测值替换缺失条目。
  • 连续数据通常缺少重复数据,可以将分布拟合为连续值,然后使用结果分布。但这种补全方法并不总是产生合理的预测,且学习模型相当差。

如果虑观测变量和未观测变量之间的概率关系,可使用最近邻补全,往往会导致更好的估计和学习分布。此外,还可将分布拟合到完全观察到的数据,然后使用该分布推断缺失值。

  1. 期望最大化(Expectation-Maximization)
    该方法即EM算法,往往分两步进行:
    1) 第一步称为期望步骤(E-step),使用$\theta$的当前估计来推断数据的完整性。
    2) 第二步称为最大化步骤(M-step),试图找到一个新的最大似然$\hat{\theta}$补全数据。
    这种方法不能保证收敛到最大化观测数据可能性的模型参数,但在实践中很有效。为了降低算法仅收敛到局部最优的风险,可以从参数空间中的许多不同初始点运行算法以收敛,只需在最后选择最大化可能性的结果参数估计。

4. 结构学习

网络$G$的评分,即对网络$G$对数据建模的好坏的评价。首先分析基于$\mathbb{P} (G \mid D)$的贝叶斯评分,然后解释如何在网络空间中搜索得分最高的网络。

4.1 贝叶斯网络评分

书中写了一段基于文献的一段论述,还没搞清楚。

本质上,贝叶斯评分为$${\rm score}_{B} = \log \mathbb{P} (G \mid D) = \log \mathbb{P} (D \mid G) + \log \mathbb{P} (G). $$

# A variety of graph priors have been explored in the literature, 
# although a uniform prior is often used in practice, 
# in which case log P(G) can be dropped from the computation of the Bayesian score.
function bayesian_score_component(M, α)
    p = sum(loggamma.(α + M))
    p -= sum(loggamma.(α))
    p += sum(loggamma.(sum(α,dims=2)))
    p -= sum(loggamma.(sum(α,dims=2) + sum(M,dims=2)))
    return p
end

function bayesian_score(vars, G, D)
    n = length(vars)
    M = statistics(vars, G, D)
    α = prior(vars, G)
    return sum(bayesian_score_component(M[i], α[i]) for i in 1:n)
end

4.2 有向图搜索

  1. K2 算法

    struct K2Search
        ordering::Vector{Int} # variable ordering
    end
    
    function fit(method::K2Search, vars, D)
        G = SimpleDiGraph(length(vars))
        for (k,i) in enumerate(method.ordering[2:end])
            y = bayesian_score(vars, G, D)
            while true
                y_best, j_best = -Inf, 0
                for j in method.ordering[1:k]
                    if !has_edge(G, j, i)
                        add_edge!(G, j, i)
                        y′ = bayesian_score(vars, G, D)
                        if y′ > y_best
                            y_best, j_best = y′, j
                        end
                        rem_edge!(G, j, i)
                    end
                end
                if y_best > y
                    y = y_best
                    add_edge!(G, j_best, i)
                else
                    break
                end
            end
        end
        return G
    end
  2. 局部搜索/爬山法:从初始图开始,移动到得分最高的邻居。图的邻域由距离基本图操作仅一次的图组成,其中基本图操作包括引入边、删除边和反转边。此外,可使用Randomized restart、Simulated annealing、Genetic algorithms、Memetic algorithms、Tabu search等方法避免陷入局部最优。

    # An opportunistic version of local search
    struct LocalDirectedGraphSearch
        G # initial graph
        k_max # number of iterations
    end
    
    function rand_graph_neighbor(G)
        n = nv(G)
        i = rand(1:n)
        j = mod1(i + rand(2:n)-1, n)
        G′ = copy(G)
        has_edge(G, i, j) ? rem_edge!(G′, i, j) : add_edge!(G′, i, j)
        return G′
    end
    
    function fit(method::LocalDirectedGraphSearch, vars, D)
        G = method.G
        y = bayesian_score(vars, G, D)
        for k in 1:method.k_max
            G′ = rand_graph_neighbor(G)
            y′ = is_cyclic(G′) ? -Inf : bayesian_score(vars, G′, D)
            if y′ > y
                y, G = y′, G′
            end
        end
        return G
    end
  3. 部分有向图搜索:利用马尔可夫等价类(Markov equivalence classes)的概念,将全空间分为若干个子空间,进行部分搜索,提高搜索效率。

5. 简单决策

Humans are not always rational.

本部分的主要效用理论的角度去看待决策问题,其中最大期望效用准则(maximum expected utility principle)是决策理论的核心概念之一。

5.1 理性选择(rational preferences)与效用函数

理性选择的概念类似于概率推断,是概率在经济学领域的重写。根据这个有了效用函数(Utility Function)的概念。

It follows from our constraints on rational preferences that there exists a real-valued **utility
function** $\mathcal{U}$ such that

  • $\mathcal{U} (A) > \mathcal{U} (B)$ if and only if $A \succ B$, and
  • $\mathcal{U} (A) = \mathcal{U} (B)$ if and only if $A \sim B$.

效用函数具有
1) 正仿射变换唯一性;
2)线性性(?) $\mathcal{U} \left([S_{1} : p_{1}; \cdots; S_{n} : p_{n}]\right)= \sum_{i = 1}^{n} p_{i} \mathcal{U} (S_{i}).$
3)类似于其他概念,也可以归一化。

5.2 最大期望效用准则

假设概率模型$\mathbb{P} (s^{\prime} \mid o, a)$表示观察到状态$o$并执行行动$a$后,状态变为$s^{\prime}$的概率。假设效用函数$\mathcal{U}(s^{\prime})$表征对结果空间的偏好。给定状态$o$并执行行动$a$的期望效用为$$\mathbb{E}[\mathcal{U} (a \mid o)] = \sum_{s^{\prime} } \mathbb{P} (s^{\prime} \mid o, a) \mathcal{U}(s^{\prime}).$$最大预期效用原则指出,理性智能应选择最大化预期效用的行动:$$a^{\ast} = \argmax_{a} \mathbb{E}[\mathcal{U} (a \mid o)].$$

5.3 决策网络(decision network)

决策网络或影响图(influence diagram),是贝叶斯网络包括行动和效用节点的推广,以便紧凑地表示定义决策问题的概率和效用模型。其包含三种节点和三种有向边:

在这里插入图片描述

  • 机会节点(chance node)表示随机变量,由圆圈表示;
  • 行动节点(action node)表示决策变量,由正方形表示;
  • 效用节点(utility node)表示效用变量,由菱形表示,并且不能有子节点。
  • 条件边(conditional edge)以机会节点结束,并指示该节点的不确定性取决于其所有父节点的值;
  • 信息边(informational edge)以行动节点结束,并指示与该节点相关联的决策是在知道其父节点的值的情况下做出的;(这些边通常用虚线绘制,有时从图中省略。)
  • 功能边(functional edge)以效用节点结束,表示该节点由其父节点的结果决定。

与贝叶斯网络一样,决策网络不能有循环。与动作关联的效用等于所有效用节点的值之和。

struct SimpleProblem
    bn::BayesianNetwork
    chance_vars::Vector{Variable}
    decision_vars::Vector{Variable}
    utility_vars::Vector{Variable}
    utilities::Dict{Symbol, Vector{Float64}}
end

function solve(𝒫::SimpleProblem, evidence, M)
    query = [var.name for var in 𝒫.utility_vars]
    U(a) = sum(𝒫.utilities[uname][a[uname]] for uname in query)
    best = (a=nothing, u=-Inf)
    for assignment in assignments(𝒫.decision_vars)
        evidence = merge(evidence, assignment)
        ϕ = infer(M, 𝒫.bn, query, evidence)
        u = sum(p*U(a) for (a, p) in ϕ.table)
        if u > best.u
            best = (a=assignment, u=u)
        end
    end
    return best
end

5.4 信息价值

The value of information about variable $O^{\prime}$
Given $o$, the value of information about variable $O^{\prime}$ is $${\rm VOL} (O^{\prime} \mid o) = \left(\sum_{o^{\prime}} \mathbb{P} (o^{\prime} \mid o) \mathbb{E} [\mathcal{U}^{\ast} (o)] \right).$$

换句话说,有关变量的信息值是如果该变量被观测到则预期效用的增加。

# A method for decision network evaluation
function value_of_information(𝒫, query, evidence, M)
    ϕ = infer(M, 𝒫.bn, query, evidence)
    voi = -solve(𝒫, evidence, M).u
    query_vars = filter(v->v.name ∈ query, 𝒫.chance_vars)
    for o′ in assignments(query_vars)
        oo′ = merge(evidence, o′)
        p = ϕ.table[o′]
        voi += p*solve(𝒫, oo′, M).u
    end
    return voi
end

总结

第一部分给出了概率推理的基本概念和表示法。该部分专注于单步决策,将序列决策问题的讨论保留到下一部分。

相关文章
|
机器学习/深度学习 人工智能 算法
【读书笔记】Algorithms for Decision Making(1)
我自己的粗浅看法:机器学习要不是拟合逼近(经常提及的machine learning),要不就是决策过程(reinforcement learning),这本书主要讲述后者的前世今生。
323 0
【读书笔记】Algorithms for Decision Making(1)
|
机器学习/深度学习 算法 vr&ar
【读书笔记】Algorithms for Decision Making(9)
与基于模型的方法相比,无模型方法不需要构建转移函数和奖励函数的显性表示,而是直接作用于值函数建模。进一步地,考虑模拟学习来重建奖励函数。
【读书笔记】Algorithms for Decision Making(9)
|
机器学习/深度学习 算法 流计算
【读书笔记】Algorithms for Decision Making(6)
对于较大状态空间的问题,计算精确解需要极大的内存量,因而考虑近似解的方法。常使用approximate dynamic programming的方法去寻求近似解,进而使用在线方法实现实时计算。
154 0
【读书笔记】Algorithms for Decision Making(6)
|
Python
【读书笔记】Algorithms for Decision Making(2)
理性决策需要对不确定性和目标进行推理。不确定性源于预测未来事件能力的实际及理论限制。为了实现其目标,一个强有力的决策系统必须考虑到当前世界状况和未来事件中的各种不确定性来源。
117 0
【读书笔记】Algorithms for Decision Making(2)
|
机器学习/深度学习 API
【读书笔记】Algorithms for Decision Making(8)
解决存在模型不确定性的此类问题是强化学习领域的主题,这是这部分的重点。解决模型不确定性的几个挑战:首先,智能体必须仔细平衡环境探索和利用通过经验获得的知识。第二,在做出重要决策后很长时间内,可能会收到奖励,因此必须将以后奖励的学分分配给以前的决策。第三,智能体必须从有限的经验中进行概括。
202 0
【读书笔记】Algorithms for Decision Making(8)
|
算法 决策智能
【读书笔记】Algorithms for Decision Making(14)
本部分将简单游戏扩展到具有多个状态的连续上下文。马尔可夫博弈可以看作是多个具有自己奖励函数的智能体的马尔可夫决策过程。
358 0
【读书笔记】Algorithms for Decision Making(14)
|
算法
【读书笔记】Algorithms for Decision Making(3)
上一部分给出了概率分布的表示论。本部分将展示如何使用概率表示进行推理,即确定一组给定观察变量相关值的一个或多个未观察变量的分布。在该部分中首先介绍直接推断的办法,然后给出几种有效的近似方法。
152 0
|
vr&ar
【读书笔记】Algorithms for Decision Making(5)
此前讲述了在某个时间点做一个单一的决定的问题,但许多重要的问题需要做出一系列的决定。序列环境中的最佳决策需要对未来行动和观察序列进行推理。
111 0
|
决策智能
【读书笔记】Algorithms for Decision Making(13)
本部分将简单游戏扩展到具有多个状态的连续上下文。马尔可夫博弈可以看作是多个具有自己奖励函数的智能体的马尔可夫决策过程。
142 0
|
算法 机器人
【读书笔记】Algorithms for Decision Making(10)
在这一部分将不确定性扩展到状态。具体讲,接收到的观测值与状态只有概率关系,而不是精确地观察状态。此类问题可以建模为部分可观察的马尔可夫决策过程(POMDP),但POMDP很难以最佳方式解决所有问题,因而需要引入更多的近似策略。
161 0