推广 热搜: page  音视频  使用  个数  搜索引擎  选择  企业  父亲  百度  可以 

Deep Learning for Nature Language Processing --- 第六讲

   日期:2024-12-31     作者:3w6dw    caijiyuan   评论:0    移动:http://ww.kub2b.com/mobile/news/16726.html
核心提示:一些有用的策略和技巧: 1.多任务学习(multi-task learning) 2.非线性函数(Nonlinearities)

一些有用的策略和技巧

1.多任务学习(multi-task learning
2.非线性函数(Nonlinearities
3.检查求导是否正确(gradient check
4.Momentum,AdaGrad

语言模型(Language Model

RNN

和上一章节提到的NN类似,不过在Multi-­task learning中,最后一层由一个scalar变成了softmax 分类器(训练时利用反向传播,获取错误流error

其实和训练softmax(前面讲过)差不多,只不过对于deep learning的模型来讲,输入x也经过了训练,转换成activation。

Main Idea:可以共享两个模型中,hidden layer对应的权重,和word vectors(即输入)。而只训练顶层的softmax分类器(总的cost function就是两个模型的交叉熵之和):

下图说明在NLP中,word vector的pre-training是一个很重要的因素

1.选择合适的模型结构

1)结构:单个词(single word,加窗(fixed window,bag of bags, recursive VS recurrent,CNN,基于句子还是基于文档(sentence based VS document
2)非线性函数的选择

2.使用gradient check的方法检查是否存在bug

3.参数的初始化

4.优化的策略

5.检查模型对数据集是否过拟合(overfit

1)如果没有,改变模型结构,让模型更“大”
2)如果有,进行regularization。

对于深度学习模型,tanh函数通常比sigmoid函数表现的要更好

1)使用tanh函数时,模型参数的初始化值更趋向于0
2)更快达到收敛
3)求导方便:f’(z)=1-tanh2(z)

还有其他的非线性函数可供选择

对于非线性函数的选择,还有一种maxout network

步骤

1)完成求导
2)完成下面这个函数,通常 为10e-4
3)比较求导函数和上图函数的结果,看结果是否相近。

如果求导出错,又不知道该如何解决。那么试着先简化你的模型。可以按照以下步骤一步步的构建你的模型

1)只有固定的输入和softmax(单个unit)分类器
2)对word vector和softmax进行反向传播求导
3)增加一个hidden层,只包括一个hidden unit
4)一个hidden layer中包括多个hidden unit
5)增加偏置bias
6)再增加一个hidden layer
7)增加两个softmax层的unit

将hidden layer的bias初始化为0.

权重W的初始化(对于非线性函数tanh:将W的参数大小限制在(-r,r)之间。其中r的大小由下面的公式决定(fan-in为上一个hidden layer的大小,fan-out为下一hidden layer的大小

SGD每一层更新权值时,只取一个或一部分的training set

对于大的数据集,SGD通常表现的比所有的batch method要好。而对于更小一点的数据集,像 L-BFGS和CG的一些batch methods表现的要比SGD好。

最简单的用法:对于所有的参数,一直都保持固定不变。

让学习率(learning rates)递减会有更好的效果

可以使用一些不用设置学习率的算法包:如L-FBGS,AdaGrad。

AdaGrad(Adaptive learning rates:学习率(learning rates)会根据不同参数发生改变。就word vector而言,使用AdaGrad的时候,对于少出现的词的word vector,其学习率会比频繁出现词的word vector更大。也就是说少出现的词的word vector会得到更大的更新率

对于RNN这种结构很深的网络模型,每一次的梯度计算都会联系到之前的计算(连锁效应,所以梯度最后会变得非常大或者非常小,从而导致梯度下降崩溃。Mikolov提出了一个clip gradients to a maximum value的思想(直接对梯度进行修改,但是这相当于修改了目标函数,是否还能收敛到原来的极值还是一个问题,所以结果可能会有偏差。而类似dropout那些则没有对梯度进行修改,这对RNN模型有很大的影响。

简化模型,比如减少hidden layer层数或曾每层的的unit数

使用L1或者L2范式对权值W进行regularization

Early Stopping:选择使cv set错误率小的模型参数

对hidden layer层的activation进行稀疏性限制

Dropout

1)训练时:使用SGD时,对于每一个训练样本,随机的将输入层的50ㅗ置为0
2)测试时(test time:将权重W的值减半
3)naive bayes里每个参数都是独立的,naive假设。但是logistic回归,其实也应该包括神经网络一大类,参数之间是交错融合的。dropout是想在两者之间用随机硬切断的方式,取一个平衡点。
4)比如输入x1,x2,x3。参数w1,w2,w3。当随机x2为0时,就成了w1x1+w3x3。在这一次输入中,w1,w3就和w2没有交叉了
5)可以作为regularization工具来使用

无监督的pre-training

SGD和learning rate

各类主要参数的设定

1)学习率&early stopping
2)小批度minibatch
3)参数的初始化
4)hidden units的数量
5)L1和L2范数的weight decay
6)稀疏性限制和regularization

如何有效率的设置模型的各个主要参数?随机设置

参考:Y.Bengio(2012),“Practical Recommendations for Gradient-­‐based Training of Deep Architectures”

语言模型中计算一系列单词相关的概率:P(w1,…,wT

传统的针对语言模型的神经网络

训练时,在每个时间点 (time step)上将word vector与对应的weight一起放进模型训练

h0是第0个hidden layer的初始化向量

x【t】是在time step为t时,word vector矩阵L中对应的一个项向量(即其中的一个word vector

对于顶层的y

本文地址:http://ww.kub2b.com/news/16726.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新文章
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新文章
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号