返回介绍

数学基础

统计学习

深度学习

工具

Scala

一、Unigram Model

发布于 2023-07-17 23:38:25 字数 8106 浏览 0 评论 0 收藏 0

  1. 假设有一个骰子,骰子有 $ V $ 个面,每个面对应于词典中的一个单词。 Unigram Model是这样生成文档的:

    • 每次抛一次骰子,抛出的面就对应于产生一个单词。
    • 如果一篇文档有 $ n $ 个单词,则独立的抛掷 $ n $ 次骰子就产生着 $ n $ 个单词。
  2. 令骰子的投掷出各个面的概率为 $ \vec\Theta =(\theta_1,\theta_2,\cdots,\theta_V)^{T} $ ,其中 $ \theta_v $ 为抛出的面是第 $ v $ 面的概率: $ p(\text{word}_v)=\theta_v $ 。满足约束:

    $ \sum_{v=1}^{V}\theta_v=1\\ \theta_v \ge 0 $

    $ \vec\Theta $ 就是待求的参数。

  3. 假设文档包含 $ n $ 个单词,这些单词依次为 : $ \{\text{word}_{w_1},\text{word}_{w_2},\cdots,\text{word}_{w_n}\} $ ,其中 $ w_i \in \{1,2,\cdots,V\} $ 。用 $ (w_1,w_2,\cdots,w_n) $ 代表文档, 则生成这篇文档的概率为:

    $ p(w_1,w_2,\cdots,w_n;\vec\Theta)=p(w_1;\vec\Theta)\prod_{i=2}^{n}p(w_i\mid w_1,w_2,\cdots,w_{i-1};\vec\Theta) $

    在 $ p(w_i\mid w_1,w_2,\cdots,w_{i-1};\vec\Theta) $ 中, $ w_1,w_2,\cdots,w_{ i-1 } $ 称作 $ w_i $ 的上下文。由于采取的是词袋模型,没有考虑上下文,所以有:

    $ p(w_i\mid w_1,w_2,\cdots,w_{i-1};\vec\Theta) =p(w_i;\vec\Theta) $

    于是有:

    $ p(w_1,w_2,\cdots,w_n;\vec\Theta)=\prod_{i=1}^{n}p(w_i;\vec\Theta) $
    • 如果考虑了上下文(即抛弃词袋模型),则各种单词的组合会导致爆炸性的复杂度增长。
    • 由于是词袋模型,因此 $ p(w_1,w_2,\cdots,w_n;\vec\Theta) $ 并不构成一个概率分布。 $ p(w_1,w_2,\cdots,w_n;\vec\Theta) $ 仅仅是生成该文档的一种非归一化概率。
  4. 假设单词 $ \{\text{word}_{w_1},\text{word}_{w_2},\cdots,\text{word}_{w_n}\} $ 中,有 $ \tilde n_1 $ 个 $ \text{word}_1 $ ,有 $ \tilde n_2 $ 个 $ \text{word}_2 $ ,...有 $ \tilde n_V $ 个 $ \text{word}_V $ ,其中 $ \tilde n_1+\tilde n_2+\cdots+\tilde n_V=n $ ,则:

    $ p(w_1,w_2,\cdots,w_n;\vec\Theta)=\prod_{i=1}^{n}p(w_i;\vec\Theta)=\prod_{v=1}^{V}p(\text{word}_v)^{\tilde n_v}=\prod_{v=1}^{V}\theta_v^{\tilde n_v} $
  5. 参数估计:就是估计骰子的投掷出各个面的概率 $ \vec\Theta=(\theta_1,\theta_2,\cdots,\theta_V)^{T} $

1.1 最大似然估计

  1. 假设数据集 $ \mathbb D $ 包含 $ N $ 篇文档 $ \mathbb D =\{\mathcal D_1,\mathcal D_2,\cdots,\mathcal D_N \} $ 。对文档 $ \mathcal D_i $ ,假设其单词依次为 $ \{\text{word}_{w_1^{i}},\text{word}_{w_2^{i}},\cdots,\text{word}_{w_{n_i}^{i}}\} $ , 用 $ (w_1^{i},w_2^{i},\cdots,w_{n_i}^{i}) $ 来表示。其中:

    • $ v=w_j^i $ 表示文档 $ \mathcal D_i $ 的第 $ j $ 个单词为单词 $ \text{word}_v $ 。
    • $ n_i $ 表示文档 $ \mathcal D_i $ 一共有 $ n_i $ 个单词。
  2. 由于每篇文档都是独立的且不考虑文档的顺序和单词的顺序,则数据集发生的概率

    $ L=p(\mathbb D)=p(w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N};\vec\Theta)=\prod_{i=1}^{N}\prod_{j=1}^{n_i}p(w^{i}_j;\vec\Theta) $

    假设数据集的所有单词 $ \{\text{word}_{w_1^{1}},\text{word}_{w_2^{1}},\cdots,\text{word}_{w_{n_1}^{1}},\cdots,\text{word}_{w_1^{N}},\text{word}_{w_2^{N}},\cdots,\text{word}_{w_{n_N}^{N}}\} $ 中,有 $ \tilde n_1 $ 个 $ \text{word}_1 $ ,有 $ \tilde n_2 $ 个 $ \text{word}_2 $ ,...有 $ \tilde n_V $ 个 $ \text{word}_V $ 。其中 $ \tilde n_1+\tilde n_2+\cdots+\tilde n_V=n $ , $ n $ 为所有文档的所有单词的数量。则有:

    $ L=\prod_{i=1}^{N}\prod_{j=1}^{n_i}p(w^{i}_j;\vec\Theta)=\prod_{v=1}^{V}p(\text{word}_v)^{\tilde n_v}=\prod_{v=1}^{V}\theta_v^{\tilde n_v} $
  3. 使用最大似然估计法,也就是最大化对数的 $ L $ :

    $ LL=\log L=\log \prod_{v=1}^{V}\theta_v^{\tilde n_v}=\sum_{v=1}^{V}\tilde n_v\log \theta_v $

    于是求解:

    $ \arg\max_{\vec\Theta}\sum_{v=1}^{V}\tilde n_v\log \theta_v\\ s.t. \quad \sum_{v=1}^{V}\theta_v=1;\quad \theta_1,\theta_2,\cdots,\theta_V \ge 0 $

    用拉格朗日乘子法求解,其解为:

    $ \hat \theta_v=\frac{\tilde n_v}{n},v=1,2,\cdots,V $

    其物理意义为:单词 $ \text{word}_v $ 出现的概率 $ \theta_v $ 等于它在数据集 $ \mathbb D $ 中出现的频率,即:它出现的次数 $ \tilde n_v $ 除以数据集 $ \mathbb D $ 所有单词数 $ n $ 。

1.2 最大后验估计

  1. 根据贝叶斯学派的观点, 参数 $ \vec\Theta $ 也是一个随机变量而不再是一个常量,它服从某个概率分布 $ p(\vec\Theta) $ , 这个分布称作参数 $ \vec\Theta $ 的先验分布。

    此时:

    $ p(\mathbb D) = p(w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N})=\int p(w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N},\vec\Theta)d\vec\Theta\\ =\int p(w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N}\mid \vec\Theta)p(\vec\Theta)d\vec\Theta $

    根据前面的推导有: $ p(w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N}\mid \vec\Theta)=\prod_{v=1}^{V}\theta^{\tilde n_v} $ ,则有:

    $ p(\mathbb D) =p(w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N}) = \int \prod_{v=1}^{V}\theta^{\tilde n_v}p(\vec\Theta)d\vec\Theta $
  2. 此处先验分布 $ p(\vec\Theta) $ 有多种选择。注意到数据集条件概率 $ p(w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N}\mid \vec\Theta) $ 刚好是多项式分布的形式,于是选择先验分布为多项式分布的共轭分布,即狄利克雷分布:

    $ \vec\Theta \sim Dir(\vec\alpha):p(\vec\Theta;\vec \alpha)=\frac {1}{B(\vec\alpha)}\prod_{v=1}^{V} \theta_v^{\alpha_v-1} $

    其中: $ \vec \alpha=(\alpha_1,\alpha_2,\cdots,\alpha_V)^{T} $ 为参数向量, $ B(\vec\alpha) $ 为Beta函数:

    $ B(\vec\alpha)=\frac{\prod_{v=1}^{V}\Gamma(\alpha_v)}{\Gamma(\sum_{v=1}^{V}\alpha_v)} $

    显然根据定义有:

    $ \int p(\vec \Theta;\vec\alpha) d\vec\Theta=\int\frac {1}{B(\vec\alpha)}\prod_{v=1}^{V} \theta_v^{\alpha_v-1} d\vec\Theta=1 \longrightarrow \int\prod_{v=1}^{V} \theta_v^{\alpha_v-1}d\vec\Theta=B(\vec\alpha) $
  3. 令 $ \vec{\tilde{ \mathbf n}}=(\tilde n_1,\tilde n_2,\cdots,\tilde n_V)^{T} $ 为词频向量,其每个元素代表了对应的单词在数据集 $ \mathbb D $ 中出现的次数。

    此时有:

    $ p(\mathbb D) =p(w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N})=\int \prod_{v=1}^{V}\theta_v^{\tilde n_v}p(\vec\Theta)d\vec\Theta\\ =\int \prod_{v=1}^{V}\theta_v^{\tilde n_v}\frac {1}{B(\vec\alpha)}\prod_{v=1}^{V} \theta_v^{\alpha_v-1}d\vec\Theta\\ =\frac {1}{B(\vec\alpha)}\int \prod_{v=1}^{V}\theta_v^{\tilde n_v+\alpha_v-1}d\vec\Theta\\ =\frac {B(\vec\alpha+\vec{\tilde{ \mathbf n}})}{B(\vec\alpha)} $

    因此 $ p(\mathbb D) $ 仅由 $ \vec\alpha $ 决定,记作: $ p(\mathbb D) =\frac {B(\vec\alpha+\vec{\tilde{ \mathbf n}})}{B(\vec\alpha)} $

  4. 后验概率 :

    $ p(\vec\Theta\mid w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N};\vec \alpha)= \frac{p(w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N}\mid \vec\Theta)p(\vec\Theta)}{ p(w_1^1,\cdots,w_{n_1}^1,\cdots,w_1^N,\cdots,w^N_{n_N};\vec\alpha) } \\ =\prod_{v=1}^{V}\theta_v^{\tilde n_v}\frac {1}{B(\vec\alpha)}\prod_{v=1}^{V} \theta_v^{\alpha_v-1}\frac{B(\vec\alpha)} {B(\vec\alpha+\vec{\tilde{ \mathbf n}})}\\ =\frac{1} {B(\vec\alpha+\vec{\tilde{ \mathbf n}})}\prod_{v=1}^{V}\theta_v^{\tilde n_v+\alpha_v-1} $

    可见后验概率服从狄利克雷分布 $ Dir(\vec\alpha+\vec{\tilde{ \mathbf n}}) $ 。

  5. 因为这时候的参数 $ \vec\Theta $ 是一个随机变量,而不再是一个固定的数值,因此需要通过对后验概率 $ p(\vec\Theta\mid \mathbb D;\vec\alpha) $ 最大化或者期望来求得。

    • 这里使用期望值 $ \mathbb E(\vec\Theta\mid \mathbb D;\vec\alpha ) $ 来做参数估计。

      由于后验分布 $ p(\vec\Theta\mid \mathbb D;\vec\alpha) $ 服从狄利克雷分布 $ Dir(\vec\alpha+\vec{\tilde{ \mathbf n}}) $ , 则有期望:

      $ \mathbb E(\vec\Theta\mid \mathbb D;\vec\alpha )=\left(\frac{\tilde n_1 +\alpha_1}{\sum_{v=1}^{V}(\tilde n_v +\alpha_v)},\frac{\tilde n_2 +\alpha_2}{\sum_{v=1}^{V}(\tilde n_v +\alpha_v)},\cdots,\frac{\tilde n_V +\alpha_V}{\sum_{v=1}^{V}(\tilde n_v +\alpha_v)}\right) $

      即参数 $ \theta_v $ 的估计值为:

      $ \hat \theta_v=\frac{\tilde n_v+\alpha_v}{\sum_{v=1}^{V}(\tilde n_v +\alpha_v)} $

      考虑到 $ \alpha_v $ 在狄利克雷分布中的物理意义为:事件的先验的伪计数。因此该估计式物理意义为:估计值是对应事件计数(伪计数+真实计数)在整体计数中的比例。

    • 这里并没有使用最大似然数据集 $ \mathbb D $ 来做参数估计,因为 $ p(\mathbb D) =\frac {B(\vec\alpha+\vec{\tilde{ \mathbf n}})}{B(\vec\alpha)} $ 中并没有出现参数 $ \vec\Theta $ 。

1.3 文档生成算法

  1. 文档生成算法:根据主题模型求解的参数来生成一篇新的文档。

  2. 最大似然模型的 Unigram Model 生成文档步骤:

    根据词汇分布 $ \vec\Theta=(\frac{\tilde n_1}{n},\frac{\tilde n_2}{n},\cdots,\frac{\tilde n_V}{n})^T $ ,从词汇表 $ \mathbb V $ 中独立重复采样 $ n $ 次从而获取 $ n $ 个单词。则这些单词就生成一篇文档。

  3. 最大后验估计的 Unigram Model生成文档的步骤为:

    • 根据参数为 $ \vec\alpha $ 的狄利克雷分布 $ p(\vec\Theta;\vec\alpha)\sim Dir(\vec\alpha) $ 随机采样一个词汇分布 $ \tilde{\vec\Theta}=(\tilde \theta_1,\tilde \theta_2,\cdots,\tilde \theta_V)^{T} $ 。

      所谓随机采样一个词汇分布,即:根据狄里克雷分布生成一个随机向量。选择时要求 :

      $ \sum_{v=1}^V \tilde \theta_v=1\\ \tilde \theta_v\ge 0,\quad v=1,2,\cdots,V $
    • 根据词汇分布 $ \tilde{\vec\Theta} $ ,从词汇表 $ \mathbb V $ 中独立重复采样 $ n $ 次从而获取 $ n $ 个单词。则这些单词就生成一篇文档。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文