假设训练数据集中有10万个词,四元语法需要存储多少词频和多词相邻频率?

循环神经网络 Notes

1. 语言模型

语言模型(language model)是自然语言处理的重要技术。自然语言处理中最常见的数据是文本数据。我们可以把一段自然语言文本看作一段离散的时间序列。假设一段长度为T的文本中的词依次为,那么在离散的时间序列中,可看作在时间步(time step)t 的输出或标签。给定一个长度为TT的词的序列,语言模型将计算该序列的概率:

语言模型可用于提升语音识别机器翻译的性能。

例如,在语音识别中,给定一段“厨房里食油用完了”的语音,有可能会输出“厨房里食油用完了”和“厨房里石油用完了”这两个读音完全一样的文本序列。如果语言模型判断出前者的概率大于后者的概率,我们就可以根据相同读音的语音输出“厨房里食油用完了”的文本序列。在机器翻译中,如果对英文“you go first”逐词翻译成中文的话,可能得到“你走先”“你先走”等排列方式的文本序列。如果语言模型判断出“你先走”的概率大于其他排列方式的文本序列的概率,我们就可以把“you go first”翻译成“你先走”。

但我们实际情况往往是训练语料很有限,很容易产生数据稀疏,不满足大数定律,算出来的概率失真。比如(“发票”,“点数”,“优惠”)在训练集中竟没有出现,就会导致零概率问题。

又比如在英文语料库IBM, Brown中,三四百兆的语料,其测试语料14.7%的trigram和2.2%的bigram在训练语料中竟未出现!

另一方面,如果n很大,参数空间过大,产生维数灾难,也无法实用。假设词表的大小为100,000 ,那么n-gram模型的参数数量为100,000的n次方。 这么多的参数,估计内存就不够放了。

那么,如何选择依赖词的个数n呢?从前人的经验来看:

经验上,trigram用的最多。尽管如此,原则上,能用bigram解决,绝不使用trigram。n取≥4的情况较少。

  • 当n更大时:对下一个词出现的约束信息更多,具有更大的辨别力
  • 当n更小时:在训练语料库中出现的次数更多,具有更可靠的统计信息,具有更高的可靠性、实用性

思考:

  • 假设训练数据集中有10万个词,四元语法需要存储多少词频和多词相邻频率?

正确解析:

10万个词,需要存储每个词的词频p(wi)  共10万个。

相邻词频:

二相邻:第一个词从10万个里面选一个,第二个词也从10万个里面选一个。共计 10万的平方

三相邻:第一个词从10万个里面选一个,第二个词也从10万个里面选一个,第三个词也从10万个里面选一个。共计10万的3次方。。。

四相邻:。。。共计10万的4次方

综上:相邻词频是 10万^2 + 10万^3 + 10万^4

错误解析:(下面的解法是错误的!!!)

由于 P(w1,w2,w3,w4,...,w100000) = p(w1)p(w2|w1)p(w3|w1,w2)p(w4|w1,w2,w3)p(w5|w2,w3,w4)...p(w100000|w99997,w99998,w99999)

即若想知道P(w1,w2,w3,w4) 的概率 ,需要之后后面p(w1)、p(w2|w1)、p(w3|w1,w2)、p(w4|w1,w2,w3)这四个概率。

并且:  p(w2|w1) = p(w1,w2) / p(w1)

p(w3|w1,w2) = p(w1,w2,w3) / p(w1,w2)

p(w4|w1,w2,w3) = p(w1,w2,w3,w4) / p(w1,w2,w3)

......

p(w100000|w99997,w99998,w99999)  = p(w99997,w99998,w99999,w100000)/p(w99997,w99998,w99999)

综上:

10万个词一共需要存储 p(w1)......p(w100000) 共10万个词频;

一共需要存储 p(w1,w2)......p(w99999,w100000) 共10万-1个 二词相邻频率

p(w1,w2,w3)......p(w99998,w99999,w100000) 共10万-2个 三词相邻频率

p(w1,w2,w3,w4)......p(w99997,w99998,w99999,w100000)  共10万-3个 四词相邻频率

即相邻词频一共是 30万-6个

https://www.pianshen.com/article/55651452667/

假设训练数据集中有10万个词,四元语法需要存储多少词频和多词相邻频率?《动手学深度学习 李沐》 转相关推荐

  1. 送10本今年最火的《动手学深度学习》

    点击我爱计算机视觉标星,更快获取CVML新技术 52CV曾经多次介绍FlyAI机器学习竞赛平台,不少粉丝也曾在FlyAI拿到现金奖励. 本次52CV & FlyAI联合送书,CV君查找了两天, ...

  2. 动手学深度学习之词嵌入基础及进阶

    参考伯禹学习平台<动手学深度学习>课程内容内容撰写的学习笔记 原文链接:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV/less ...

  3. 《动手学深度学习》task7_3 词嵌入进阶

    系统学习<动手学深度学习>点击下面这个链接,有全目录哦~ https://blog.csdn.net/Shine_rise/article/details/104754764 本篇目录 词 ...

  4. 【动手学深度学习】Softmax 回归 + 损失函数 + 图片分类数据集

    学习资料: 09 Softmax 回归 + 损失函数 + 图片分类数据集[动手学深度学习v2]_哔哩哔哩_bilibili torchvision.transforms.ToTensor详解 | 使用 ...

  5. 动手学深度学习Kaggle:图像分类 (CIFAR-10和Dog Breed Identification), StratifiedShuffleSplit,数据集划分

    目录 CIFAR-10 获取并组织数据集 下载数据集 整理数据集 组织数据集更一般的方式 图像增广 读取数据集 torchvision.datasets.ImageFolder()的特点 定义模型 定 ...

  6. 动手学深度学习:Fashion-MNIST数据集下载失败解决方法

    学习<动手学深度学习>的过程中,下载图片分类数据集时遇到了下载失败的问题: import torch import torchvision # 计算机视觉相关库 from torch.ut ...

  7. 《动手学深度学习》手动导入数据集产生错误的解决方法

    动手学深度学习 书本网页版 https://zh.gluon.ai/chapter_preface/preface.html b站视频讲解 https://space.bilibili.com/209 ...

  8. 动手学深度学习10:汇聚层(pooling)

    动手学深度学习10:汇聚层(pooling) 通常当我们处理图像时,我们希望逐渐降低隐藏表示的空间分辨率.聚集信息,这样随着我们在神经网络中层叠的上升,每个神经元对其敏感的感受野(输入)就越大. 而我 ...

  9. 《动手学深度学习》组队学习打卡Task7——词嵌入进阶

    词嵌入进阶 在"Word2Vec的实现"一节中,我们在小规模数据集上训练了一个 Word2Vec 词嵌入模型,并通过词向量的余弦相似度搜索近义词.虽然 Word2Vec 已经能够成 ...

最新文章

  1. python 正则表达式 re.compile() 的使用
  2. iOS直播(四)对视频进行压缩编码
  3. 求虚拟机11.0密钥
  4. 原型 - 实现自己的jQuery
  5. 字体大小 js 控制
  6. linux 驱动器发送信号,Linux设备驱动并发控制详解(自旋锁,信号量)
  7. 给radio添加点击事件
  8. 【渝粤教育】国家开放大学2019年春季 0755-22T学前儿童艺术教育 参考试题
  9. 从小到大排列组合 php,求一个一维数组中,n个元素的不同组合,并返回该数组
  10. 当第一资本、高盛、摩根士丹利等巨头纷纷启用CDO时,您想到了什么?
  11. Financial Modeling with Crystal Ball and Excel
  12. 华为双前置摄像头_华为P40系列的前置双摄像头到底隐藏了什么?我们一起来看看...
  13. linux 卸载oracle库,Linux下完美卸载 Oracle
  14. PXE和Cobble实现自动装机
  15. 【多线程】初识多线程
  16. oracle中rebuild,ORACLE中index的rebuild(转)
  17. java ews appointment_EWS Java API 1.1创建约会 - 缺少TimeZoneDefinition
  18. JavaSE (9)
  19. servlet容器,web容器,spring容器,springmvc容器的区别
  20. IDEA编译时提醒:系统资源不足

热门文章

  1. python可视化水平箭头_Python交互图表可视化Bokeh:2. 辅助参数
  2. 华为用MySQL还是oracle_25.Oracle和Mysql的区别
  3. android代码说明文档,android:label说明
  4. 面试前临时抱佛脚——常见的Shell脚本面试题
  5. Linux中yum源配置及软件安装管理
  6. 4、kubernetes 集群管理工具 kubectl
  7. include/filter.inc.php,dedecms /include/filter.inc.php 变量覆盖注入漏洞及解决方案
  8. iframe嵌套显示整个页面_【HTML】框架标签lt;iframegt;
  9. 结构体数组与指针习题
  10. python scapy 函数_【python|scapy】sprintf输出时raw_string转string