Hyv"{a}rinen A. Estimation of Non-Normalized Statistical Models by Score Matching. Journal of Machine Learning Research, 2005.

我们常常会建模如下的概率模型:

\[p(\xi;\theta) = \frac{1}{Z(\theta)} q(\xi; \theta).
\]

比如energy-based models.

上述问题一般来说用极大似然不易求解, 因为

\[Z(\theta) = \int_{\xi} q(\xi;\theta) \mathrm{d}\xi,
\]

常常不易估计(特别是高维的情形, 用MCMC是致命的).

所以倘若能够抛开\(Z(\theta)\)就能估计参数就好了, 本文就是提出了这个一个方法(虽然要求二阶导, 倘若用梯度方法求解便是需要三阶偏导了.)

我发现这个人也是噪声对比估计(负样本采样)的作者之一.

主要内容

方法

\[\psi(\xi;\theta) =
\left (
\begin{array}{cc}
\frac{\partial \log p(\xi;\theta)}{\partial \xi_1} \\
\vdots \\
\frac{\partial \log p(\xi;\theta)}{\partial \xi_n} \\
\end{array}
\right )
=\left (
\begin{array}{cc}
\psi_1(\xi;\theta) \\
\vdots \\
\psi_n(\xi;\theta) \\
\end{array}
\right )
=\nabla_{\xi} \log p(\xi;\theta),
\]

并令

\[\psi_x(\xi) = \nabla_{\xi} \log p_x(\xi),
\]

其中\(p_x(\xi)\)表示数据真实的分布.

最小化下列损失能够保证\(p(\xi;\theta)\)逼近\(p_x(\xi)\):

\[J(\theta) = \frac{1}{2} \int_{\xi \in \mathbb{R}^n} p_x(\xi) \| \psi(\xi;\theta) - \psi_{x}(\xi) \|^2 d\xi.
\]

损失函数的转换

显然

\[\psi_x(\xi) = \nabla_{\xi} \log p_x(\xi),
\]

设及真实分布, 不易求解, 但是通过对损失函数的转换, 我们发现其与真实分布并没有大的联系.

\[\nabla_{\xi} \log p_x(\xi) = \frac{\nabla p_x(\xi)}{p_x(\xi)}, \\
\psi(\xi;\theta) = \nabla_{\xi} \log p(\xi;\theta) = \nabla_{\xi} \log q (\xi;\theta).
\]
\[\| \psi(\xi;\theta) - \psi_{x}(\xi) \|^2
=\|\psi(\xi;\theta)\|^2 - 2\psi^T(\xi;\theta) \psi_x(\xi) + \|\psi_x(\xi)\|^2,
\]

第一项与\(p_x\)无关, 最后一项与\(\theta\)无关, 故只需考虑第二项:

\[\psi^T(\xi;\theta)\psi_x(\xi) = \sum_{i=1}^n \psi_{i}\psi_{x,i}
= \sum_{i=1}^n \psi_{i}\frac{1}{p_x(\xi)} \frac{\partial p_x(\xi)}{\partial \xi_i},
\]

\[\begin{array}{ll}
\int p_x(\xi) \psi^T(\xi;\theta)\psi_x(\xi) \mathrm{d}\xi
&=\int \sum_{i=1}^n \psi_{i}\frac{\partial p_x(\xi)}{\partial \xi_i} \mathrm{d}\xi \\
&=\sum_{i=1}^n \int \psi_{i}\frac{\partial p_x(\xi)}{\partial \xi_i} \mathrm{d}\xi \\
&=\sum_{i=1}^n \int \psi_{i}p_x(\xi)|_{\xi_i=-\infty}^{\xi_i=+\infty} \mathrm{d}\xi_{\setminus i} - \int p_x(\xi) \frac{\partial \psi_i}{\partial \xi_i} \mathrm{d}\xi.\\
&=-\sum_{i=1}^n \int p_x(\xi) \frac{\partial \psi_i}{\partial \xi_i} \mathrm{d}\xi.
\end{array}
\]

故:

\[J(\theta) = \sum_{i=1}^n\int_{\xi} p_x(\xi) [\frac{1}{2}(\frac{\partial q(\xi;\theta)}{\partial \xi_i})^2+ \frac{\partial^2 \log q(\xi;\theta)}{\partial^2 \xi_i}] \mathrm{d}\xi + \text{ const }.
\]

故我们可以用如下损失近似:

\[\hat{J}(\theta) = \frac{1}{2}\sum_{t=1}^T \sum_{i=1}^n [\partial_i \psi_i(x(t); \theta) + \frac{1}{2} \psi_i(\xi;\theta)^2].
\]

注: 上述证明需要用到如下条件:

  1. \(p_x(\xi), \psi(\xi;\theta)\)可微;
  2. \(p_x(\xi) \psi(\xi;\theta) \rightarrow 0, \text{ if } \|\xi\| \rightarrow +\infty\).

一个例子

考虑多为正态分布:

\[p(x;\mu, M) = \frac{1}{Z(\mu, M)} \exp (-\frac{1}{2}(x-\mu)^2 M(x-\mu)),
\]

此时\(\hat{J}\)存在显示解, 且恰为:

\[\mu^* = \frac{1}{T}\sum_{t=1}^T x(t), \\
M^* = [\frac{1}{T}\sum_{t=1}^T (x(t) - \mu^*) (x(t) - \mu^*)^T]^{-1},
\]

为极大似然估计的解.

Estimation of Non-Normalized Statistical Models by Score Matching的更多相关文章

  1. Statistical Models and Social Science

    1.1 Statistical Models and Social Reality KEY: complex society v.s statistical models relationship,d ...

  2. 2.6. Statistical Models, Supervised Learning and Function Approximation

    Statical model regression $y_i=f_{\theta}(x_i)+\epsilon_i,E(\epsilon)=0$ 1.$\epsilon\sim N(0,\sigma^ ...

  3. My deep learning reading list

    My deep learning reading list 主要是顺着Bengio的PAMI review的文章找出来的.包括几本综述文章,将近100篇论文,各位山头们的Presentation.全部 ...

  4. Deep Learning关于Vision的Reading List

    最近开始学习深度学习了,加油! 下文转载自:http://blog.sina.com.cn/s/blog_bda0d2f10101fpp4.html 主要是顺着Bengio的PAMI review的文 ...

  5. NCE损失(Noise-Constrastive Estimation Loss)

    1.算法概述 假设X是从真实的数据(或语料库)中抽取的样本,其服从一个相对可参考的概率密度函数P(d),噪音样本Y服从概率密度函数为P(n),噪音对比估计(NCE)就是通过学习一个分类器把这两类样本区 ...

  6. Tensorflow.nn 核心模块详解

    看过前面的例子,会发现实现深度神经网络需要使用 tensorflow.nn 这个核心模块.我们通过源码来一探究竟. # Copyright 2015 Google Inc. All Rights Re ...

  7. Data - Tools

    数据工具汇总 史上最全的大数据分析和制作工具 全球100款大数据工具汇总 SQL 数据分析常用语句 01 - NumPy HomePage:http://www.numpy.org/ NumPy(数值 ...

  8. 使用movielens数据集动手实现youtube推荐候选集生成

    综述 之前在博客中总结过nce损失和YouTuBe DNN推荐;但大多都还是停留在理论层面,没有实践经验.所以笔者想借由此文继续深入探索YouTuBe DNN推荐,另外也进一步总结TensorFlow ...

  9. Noise Contrastive Estimation

    Notes from Notes on Noise Contrastive Estimation and Negative Sampling one sample: \[x_i \to [y_i^0, ...

随机推荐

  1. JDBC01 获取数据库连接

    概述 Java Database Connectivity(JDBC)直接访问数据库,通用的SQL数据库存取和操作的公共接口,定义访问数据库的标准java类库(java.sql,javax.sql) ...

  2. Hadoop入门 常见错误及解决方案

    常见错误及解决方案 目录 常见错误及解决方案 ResourceManager连接失败 root用户和ranan用户两个用户启动集群不统一 不识别主机名 DataNode和NameNode进程同时只能工 ...

  3. Hadoop 相关知识点(二)

    1.HDFS副本机制 Hadoopde 默认副本布局策略是: (1)在运行客户端的节点上放置第一个副本(如果客户端运行在集群之外,就随机选择一个节点,不过系统会避免选择那些存储太满或者太忙的节点): ...

  4. Spark(二)【sc.textfile的分区策略源码分析】

    sparkcontext.textFile()返回的是HadoopRDD! 关于HadoopRDD的官方介绍,使用的是旧版的hadoop api ctrl+F12搜索 HadoopRDD的getPar ...

  5. 大数据学习day35----flume01-------1 agent(关于agent的一些问题),2 event,3 有关agent和event的一些问题,4 transaction(事务控制机制),5 flume安装 6.Flume入门案例

    具体见文档,以下只是简单笔记(内容不全) 1.agent Flume中最核心的角色是agent,flume采集系统就是由一个个agent连接起来所形成的一个或简单或复杂的数据传输通道.对于每一个Age ...

  6. const与指针的三种形式

    使用指针时涉及到两个对象:该指针本身和被它所指的对象. 将一个指针的声明用const"预先固定"将使那个对象而不是使这个指针成为常量.要将指针本身而不是被指对象声明为常量,必须使用 ...

  7. Dockers启动Kafka

    首先安装 Confluent Platform Quick Start for Confluent Platform (Local install) Use this quick start to g ...

  8. 【Linux】【Services】【SaaS】Docker+kubernetes(3. 用ansible管理机器和软件)

    1. 简介 1.1. 公司环境使用的puppet,但是我更喜欢ansible,原因有二,第一,我是红帽的忠粉:),第二,我对python比较熟悉 1.2. ansible官方网站:https://ww ...

  9. Kafaka相关命令

    开启zookeeper命令(备注:先进入zookeeper的bin目录) ./zkServer.sh start 关闭zookeeper命令(备注:先进入zookeeper的bin目录) ./zkSe ...

  10. matplotlib画3d图

    import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D fig = plt.f ...