CGMH:Constrained Sentence Generation by Metropolis-Hastings Sampling解读
根据关键字生成句子:
读进关键字,随机选择处理手段(增删改)以及待处理word的位置,然后计算接受/拒绝概率,根据概率生成一个新的序列,再循环这一过程,循环次数是500,每次都将困惑度最低的生成句子放在列表中第一个位置,最后根据config设置的最短长度(如7),当列表中的一个句子长度大于7时,则将该句子输出,作为最终生成的句子。
其中,计算接受/拒绝概率的方法:
先计算一个句子的固定分布:(=语言模型中该句的概率*关键字的指示函数)

再计算某个token被接受的概率:

论文翻译:
1.MH采样的框架:包括建议设计,固定分布,接受决定
1)温和条件下,样本得分不会瘦脸为马尔科夫链的固定分布。所以,目的是设计一个马尔科夫链,其固定分布是想要的句子分布。
首先,MH采样器分两步解决这个问题:一是提出一个实验性转换,根据接受率来接受或者拒绝一个建议。接受/拒绝率通过想要的固定分布和建议的固定分布来计算,这确保了细节平衡条件,该条件保证MH收敛到想要的分布。
让 π(x)表示我们想要从中取样的句子的分布(x表示一个特定的句子)。MH从任意状态x0开始(一个出示句子或 一系列关键字),在每个步骤t,根据建议的分布g(x’|x_t-1),提出一个新的句子x‘,其中x_t-1表示最后一步的句子。
根
根据概率1-A,一个建议应该被拒绝,则x_t = x_t-1。理论上,对于一个不可再分的且非周期性的马尔科夫链来说,当n趋于无穷时,样本x_n的分布会收敛到π(x)。实际上,初始的几个样本会被丢弃。如果样本收敛到固定分布,则该马尔科夫链建立完成。
2)

2.根据关键字生成句子实验
使用500万句子训练出一个语言模型,使用该语言模型训练CGMH模型
输入:使用3000个句子提供关键字,用来测试。对于每个句子,随机采样一个或者多个words作为限制条件。
输出:对于MH采样,我们使用关键字序列作为初始状态,然后选择100步后有最低困惑度(即流畅度最高)的语句作为输出。
CGMH:Constrained Sentence Generation by Metropolis-Hastings Sampling解读的更多相关文章
- Markov Chain Monte Carlo Simulation using C# and MathNet
Math.Net Numerics has capability to conduct Markov Chair Monte Carlo simulations, yet the document i ...
- 蒙特卡洛马尔科夫链(MCMC)
蒙特卡洛马尔科夫链(MCMC) 标签: 机器学习重要性采样MCMC蒙特卡洛 2016-12-30 20:34 3299人阅读 评论(0) 收藏 举报 分类: 数据挖掘与机器学习(41) 版权声明: ...
- LDA背景资料
[https://zhuanlan.zhihu.com/p/30226687] LDA模型的前世今生 在文本挖掘中,有一项重要的工作就是分析和挖掘出文本中隐含的结构信息,而不依赖任何提前标注的信息.L ...
- Metropolis-Hastings算法
(学习这部分内容大约需要1.5小时) 摘要 马尔科夫链蒙特卡洛(Markov chain Monte Carlo, MCMC)是一种近似采样算法, 它通过定义稳态分布为 \(p\) 的马尔科夫链, 在 ...
- 为什么要用Markov chain Monte Carlo (MCMC)
马尔科夫链的蒙特卡洛采样的核心思想是构造一个Markov chain,使得从任意一个状态采样开始,按该Markov chain转移,经过一段时间的采样,逼近平稳分布stationary distrib ...
- Image Paragraph论文合辑
A Hierarchical Approach for Generating Descriptive Image Paragraphs (CPVR 2017) Li Fei-Fei. 数据集地址: h ...
- (转)A Survival Guide to a PhD
Andrej Karpathy blog About Hacker's guide to Neural Networks A Survival Guide to a PhD Sep 7, 2016 T ...
- (转) A Survival Guide to a PhD
A Survival Guide to a PhD Sep 7, 2016 This guide is patterned after my “Doing well in your courses”, ...
- GAN︱GAN 在 NLP 中的尝试、困境、经验
GAN 自从被提出以来,就广受大家的关注,尤其是在计算机视觉领域引起了很大的反响,但是这么好的理论是否可以成功地被应用到自然语言处理(NLP)任务呢? Ian Goodfellow 博士 一年前,网友 ...
随机推荐
- Help Jimmy POJ - 1661 dp
#include<iostream> #include<stdio.h> #include<algorithm> #include<cstring> u ...
- 用Navicat连接mysql报错:2003-Can't connect to MySql server on '10.100.0.109'(10039)
问题描述 在 window 系统上,用 Navicat 连接 Mysql 数据库,弹出以下提示 问题原因 Mysql 数据库未启动 解决方案:启动 Mysql 数据库 1.点击桌面左下角运行 cmd ...
- Jmeter-几种脚本录制方式
一.使用代理服务器进行录制 1.创建线程组 2.创建http代理服务器 分组解释 不对样本分组:所有请求全部罗列 在组件添加分隔:加入一个虚拟的以分割线命名的动作 每个组放入一个新的控制器:执行时按控 ...
- numpy基础知识练习
# 1.导入numpy模块 # 2.创建一个大小为10的空向量 # 3.创建一个大小为10的空向量,但是第五个值为1 # 4.创建一个10-49的ndarray数组 # 5.创建一个3x3的矩阵,其值 ...
- 安装python包时遇到"error: Microsoft Visual C++ 9.0 is required"的简答(Python2.7)
简答 在Windows下用pip安装Scrapy报如下错误, error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall ...
- Xshell5配置ssh免密码登录-公钥与私钥登录linux服务器(xshell如何登陆上阿里云服务器)
原文地址:https://blog.csdn.net/longgeaisisi/article/details/78680180 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口 ...
- 题解【洛谷P1618】 三连击(升级版)
设三个数分别为n1.n2.n3,因为三个数的比为A:B:C,取一份量i,使得A·i=x,B·i=y,C·i=z(·是*的意思). 所以我们的代码只需要枚举i,并以此判断n1.n2.n3是否为三位数且包 ...
- K3修改字段名
在K3的BOS中,自定义字段之后我们往往会修改字段名,便于记忆和理解,但是修改字段名之后,只是数据库中的字段名被修改了,BOS中的字段标识并没有被修改,可以通过以下语句将标识和字段名改成一致. sel ...
- [CF276B] Little Girl and Game
[CF276B] Description 给定字符串 \(S\) ,两人轮流,每次从字符串中任意取出一个字符并从原串中删去.如果某人某次操作前,串种剩余的字符集合经过排列可以得到回文串,那么这个人就胜 ...
- JS高级---总结apply和call方法的使用
apply和call的使用方法 apply的使用语法 函数名字.apply(对象,[参数1,参数2,...]); 方法名字.apply(对象,[参数1,参数2,...]); call的使用语法 ...