ud730深度学习(三)——LSTM(unfinished)

LSTM(Long Short-TermMemory)是一个RNN(循环神经网络)架构,被设计用来解决卷积RNN的梯度消失和爆炸问题。

 

传统的LSTM在循环隐藏层包含名叫memory blocks的特殊单元。

   memory blocks包含具有self-connections的memory cell,self-connections用来存储记忆网络的时间状态,以及名叫gates的特殊乘法单元以控制信息流。

   每个memory block都包含一个input gate,控制进入memorycell的输入激活流,和一个output gate,控制进入到网络其余部分的单元激活流。

   forget gate在输入之前,衡量单元的内部状态,然后适应性地忘记或者重置单元的记忆。用f表示。

   另外,还有一个peepholeconnections连接内部单元到gate以学习输出。

标准的LSTM网络包括输入层,循环LSTM层和输出层。另外,我们还加了projection和recurrent以解决计算太复杂的问题。

一个LSTM网络通过下列公式来计算从输入序列到输出序列的映射,t=1~T。


其中W表示权重矩阵(比如wix是input gate到输入的权重矩阵),b表示误差向量,σ表示logistic函数,这些都和输出层的激活向量m大小相同。⊙是向量的逐元素乘积,g和h都是激活函数,通常选择tanh。i表示input gate,f表示forget gate,o表示output gate,c表示cell激活向量。

 

任务 6: LSTMs

训练一个一个长短期记忆网络预测字符串

问题1

LSTM的cell包括4个矩阵乘积,使用单个矩阵乘法简化该表达。

源代码忽略了w*c这一项。看到LSTM的Input gate、Forget gate、Memory cell和Output gate的计算方法一样,因此设置一个gate_count,把四组参数分别合并,一次计算,再分别取出。

问题2

我们想要让LSTM学习二元词,而可能的二元词“ab”等的数量很大,直接使用1-hot向量表示他们并把他们输入LSTM可能会导致非常大的稀疏度,浪费计算量。

a)        使用词向量表示输入,把词向量输入LSTM单元。

b)       基于上述的LSTM,写一个二元词的LSTM。

c)        使用dropout,具体详见https://arxiv.org/abs/1409.2329

 

a,b 用词向量表示输入,写一个二元词的LSTM

对于单个单词,单词量是27(包括空格),二元词的单词量设为bi_voc: 27*27=729,设单个词向量大小为embeddings_size,则需要729个这样的词向量。

获取数据:BatchGenerator不再生成one-hot-encoding的向量作为输入,而是直接生成二元词对应的index列表,index列表的取值范围为[0,729)。获取的数据形状为(num_rollings+1, batch_size),int型,其中前num_unrollings个输入数据,后num_unrollings个是输出数据。

输入数据input:转化大小为(num_unrollings,batch_size, embedding_size)的矩阵,通过lstm_cell,输出一个矩阵outputs,大小为(batch_size, num_nodes),其中num_nodes是节点数。通过tf.nn.xw_plus_b(tf.concat(0,outputs),w, b)得到logits,大小为(batch_size*num_unrollings, bi_voc)。

已知的输出数据label:因为要将logits和输出数据进行交叉熵和softmax计算损失的运算,因此要将label转化为和logits大小一致的矩阵。不需要将label转化为词向量。bigramonehot是一个bi_voc*bi_voc的单位矩阵。通过tf.gather函数,将label转化为one-hot编码。

取样验证:只有一个batch,不需要unrolling。在对验证数据做转换时,主要依赖one_hot_voc函数

 

 

 

 

另外:

1.      tf.concat(concat_dim,values,name='concat')

concat_dim:值范围是[0,rank(values)-1]。等于0,表示沿着第一维连接tensor;等于1,表示沿着第二维度连接tensor,……。

values:tensor值列表

文档中写错了。

2.      tf.reduce_mean中出现loss为0的现象???????????

3.       dropout略吧

 

参考资料:

1.      LONG SHORT-TERM MEMORY BASEDRECURRENT NEURAL NETWORK

ARCHITECTURES FOR LARGE VOCABULARY SPEECHRECOGNITION http://arxiv.org/pdf/1402.1128v1.pdf

2.      http://www.jianshu.com/p/45dbfe5809d4

3.      https://github.com/rudolfix/udacity_deeplearn

 

转载于:https://www.cnblogs.com/mandalalala/p/6798257.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值