Deep Learning(深度学习) 学习笔记(四)
神经概率语言模型,内容分为三块:问题,模型与准则,实验结果。[此节内容未完待续...]
1,语言模型问题
语言模型问题就是给定一个语言词典包括v个单词,对一个字串
做出二元推断,推断其是否符合该语言表达习惯。也就是
的取值为0或者为1。
概率语言模型放松了对取值的限制,让其在0~1之间取值(语言模型
v.s 概率语言模型),而且全部的字串的概率之和为1。维基百科对于概率语言模型的解释为:是借由一个概率分布,而指派概率给字词所组成的字串。可是须要注意的是直接对进行求其概率分布是不现实的,由于理论上这样的字串数量是无限的。直接求其概率分布会导致维度灾难。
为了解决这个问题,首先引入链式法则(chain rule),觉得字串中第i个字符出现的概率是由其前面i-1个字符决定的。这样就有例如以下公式:
可是,有了这个公式还是太复杂了。继续引入如果简化公式,觉得字串中第i个字符出现的概率是由其前面n-1个字符决定(也就是如果)的。这样公式就继续被简化:
模型如今就变得非常easy了,就是计算条件概率。也就是须要计算给定字串
后,字典中的每一个字出现的概率
。
2. 模型与准则
2.1 数据 给定一些标记号的样本.
2.2 模型
图1. 模型图解
图片来自:http://licstar.net/archives/328
建模步骤
2.2.1 查表:将输入的单词,通过查表(图1中Table
look-up过程)将单词映射为m维的词向量。此处的所查的表并非给定的,是在模型学习中获得的附加产物(也就是word2vec产生的那些向量玩意)。
2.2.2 线性变换:将2.2.1中的n-1个m维度的向量通过首尾拼接的方式线性变换成为(n-1)*m维的向量。也就是在中间那个tanh层输入处(以下)全部分向量C(w)合并为一个大的维度为(n-1)*m的向量[Mikolov的RNNLM在此做出改变:不只只看n-1个单词的信息,而是看该词前面全部的单词信息]。
2.2.3 非线性变换:在中间那个tanh层处进行非线性变换。这里须要的是一个变换矩阵和偏置矩阵
。也就是对于中间那一层(tanh所在的那一层),该层的输入是(n-1)*m的向量
,输出是
。经过线性变换后,先前的(n-1)*m维的向量成为了h维的向量。
2.2.4 输出处理:在最后一层(softmax层)进行处理输出。这里须要一个变换矩阵和一个偏置矩阵
。最后输出就是
。注意到最后输出的是一个v维度的向量,和我们的第一节中词典D的维度是一致的。向量中每个维度相应的实数就是输出该单词的概率。
2.3 准则
对全部的训练样本,其准则为使取最小,此处
为正则项。能够使用梯度下降法进行求取。
模型中须要人工设定的參数是模型的元数n,词向量的维度m,隐层的输出维度h。
须要模型优化的參数:变换矩阵W和H,偏置矩阵d和b,查表所使用的词向量表都是须要优化的參数,也就是我们所求取的參数。
3.实验结果
语言模型困惑度。模型困惑度是用来评价不同的语言模型好坏的一种方法(另一种方法是Word
Error Rate,Mikolov的博士论文《Statistical Language
Models based on Neural Networks》博士论文对这两种方法有介绍和比較)。给定測试数据集合,模型在该測试集合上的困惑度越小越好。
測试集合一:
Brown Corpus,共计118w单词,当中80w训练,20w验证,其它18w作为測试集合。
在n=5,m=30,h=100时候NNLM的PPL为270。该測试集合眼下最好的n-gram模型(n=3)的PPL为312。设置权重进行模型融合后的PPL为252。
測试集合二:
AP News,共计1600w词,当中1400w训练,100w验证,其它100w作为測试集合。
在n=6,m=100,h=109时候NNLM的PPL为109。该測试集合眼下最好的n-gram模型的PPL为117。
网上学习资料:
关于神经网络语言模型的博客:点击打开链接
Mikolov的博士论文《Statistical Language
Models based on Neural Networks》 关于n-gram语言模型的评价是简单有用(N-gram models are today still considered as state of the art not because there are no better techniques, but
because those better techniques are computationally much more complex, and provide just marginal improvements, not critical for success of given application.),模型的关键就是选择n值和平滑技术。其固有缺点例如以下:
第一,n-gram模型的n值无法取大。由于模型n-gram片段的数量会随着n值的变大指数增长。这一点就决定了n-gram模型无法有效的利用更长的上下文信息。特殊的,当被提供海量训练语料时,n-gram模型也无法有效捕捉一些长距离的语言现象。
第二,即使n值能够取得比較大,n-gram无法有利用长距离的上下文信息。比如,有一个句子The sky above our heads is bleu. 这句话里面单词 bleu对单词sky有着非常强的依赖关系,无论这两个单词中间插入多少变量都不会破坏这样的关系。比如The
sky this morning was bleu. 可是对n-gram模型,即使放开n值的限制,取一个较大的n值,也无法有效地捕捉这样的长距离的语言现象。
第三,n-gram模型无法高效的对相似的词语进行辨别。比如:训练语料中存在Party will be on Monday. 和Party will be on Tuesday. 模型无法对类似Party
will be on Friday.的句子赋予较高的概率。尽管我们人可以清楚知道“Monday”,"Tuesday","Friday"这些是类似的概念,可是只对字面进行建模的n-gram无法辨别。
Deep Learning(深度学习) 学习笔记(四)的更多相关文章
- Deep learning with Python 学习笔记(1)
深度学习基础 Python 的 Keras 库来学习手写数字分类,将手写数字的灰度图像(28 像素 ×28 像素)划分到 10 个类别 中(0~9) 神经网络的核心组件是层(layer),它是一种数据 ...
- Deep learning with Python 学习笔记(11)
总结 机器学习(machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型(model)].将数据转换为程序的这个过程叫作学习(learning) 深 ...
- Deep learning with Python 学习笔记(10)
生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...
- Deep learning with Python 学习笔记(9)
神经网络模型的优化 使用 Keras 回调函数 使用 model.fit()或 model.fit_generator() 在一个大型数据集上启动数十轮的训练,有点类似于扔一架纸飞机,一开始给它一点推 ...
- Deep learning with Python 学习笔记(8)
Keras 函数式编程 利用 Keras 函数式 API,你可以构建类图(graph-like)模型.在不同的输入之间共享某一层,并且还可以像使用 Python 函数一样使用 Keras 模型.Ker ...
- Deep learning with Python 学习笔记(5)
本节讲深度学习用于文本和序列 用于处理序列的两种基本的深度学习算法分别是循环神经网络(recurrent neural network)和一维卷积神经网络(1D convnet) 与其他所有神经网络一 ...
- Deep learning with Python 学习笔记(4)
本节讲卷积神经网络的可视化 三种方法 可视化卷积神经网络的中间输出(中间激活) 有助于理解卷积神经网络连续的层如何对输入进行变换,也有助于初步了解卷积神经网络每个过滤器的含义 可视化卷积神经网络的过滤 ...
- Deep learning with Python 学习笔记(3)
本节介绍基于Keras的使用预训练模型方法 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络.预训练网络(pretrained network)是一个保存好的网络,之前已在 ...
- Deep learning with Python 学习笔记(2)
本节介绍基于Keras的CNN 卷积神经网络接收形状为 (image_height, image_width, image_channels)的输入张量(不包括批量维度),宽度和高度两个维度的尺寸通常 ...
- (转) 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
特别棒的一篇文章,仍不住转一下,留着以后需要时阅读 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
随机推荐
- JCL学习
JCL基本概念 定义:job control language 用户与操作系统的接口,用户通过JCL语句按照自己的意图来控制作业的执行. JOB的概念:把大机要实现的每一项任务,称为一个JOB或作业. ...
- C++辛格尔顿
设计模式是编程的焦点.经常在面试时进行审查,Singleton模式是最简单的.最常见的.大部分的主模式.所以大部分的采访是测试考试的Singleton设计模式. 以下我们就来看看单例模式怎样实现(C+ ...
- Thinking in UML 学习笔记(一)——建立对象模型
一.面向对象的本质 面向对象的本质是抽象,当系统达到了超越其处理能力的程度,我们能够抽象出我们能够处理的范围来提成抽象级别,这样就能够构建更大.更复杂的系统. 现实世界和对象世界之间存在着一道沟壑,这 ...
- Windows Azure 安全最佳实践 - 第 3 部分:确定安全框架
构建云应用程序时,安全始终是计划和执行Windows Azure的首要核心因素.第 1 部分提出安全是一项共同责任,Windows Azure为您的应用程序提供超出内部部署应用程序需求的强大安全功能. ...
- MFC 关于对话框的注意点
1.对于模态对话框而言,单击确定以后对话框窗口对象即被销毁了,而对于非模态对话框来说,对话框的对象并未销毁而是隐藏起来(EndDialog函数),因此对于非模态对话框,必须重写OnOK这个虚函数,并在 ...
- 【Demo 0009】Android 组件(BroadcastReceiver)
本章学习要点: 1. 了解Broadcast的作用; 2. 掌握自定义广播和系统广播的接收: 3. 掌握广播的发送:
- javascript 判断IOS版本号
先来观察 iOS 的 User-Agent 串: iPhone 4.3.2 系统: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; ...
- Design Pattern Chain of Reponsibility 责任链模式
本程序实现一个责任链模式查询人名的资料. 開始都是查询第一个人,问其是否有某人的资料,假设有就返回结果,假设没有第一个人就会询问第二个人,第二个人的行为和第一个人的行为一致的,然后一致传递下去,直到找 ...
- APNS 那些事!
之前在消息推送中间件APush里实现了对APNS的桥接.并利用业余时间阅读了官方指南Local and Push Notification Programming Guide.蛮有心得的.稍作总结.分 ...
- 14.1.1 InnoDB as the Default MySQL Storage Engine
14.1 Introduction to InnoDB 14.1.1 InnoDB as the Default MySQL Storage Engine 14.1.2 Checking InnoDB ...