perplexity
代码
feed_dict = {X: X_batch, Y: Y_batch, X_len: X_len_batch, Y_len: Y_len_batch}
_, ls_ = sess.run([optimizer, loss], feed_dict=feed_dict)
total_loss += ls_ * batch_size
total_count += np.sum(Y_len_batch)
print('Epoch %d lr %.3f perplexity %.2f' % (e, lr, np.exp(total_loss / total_count)))
https://blog.csdn.net/weixin_34167819/article/details/88106896
公式定义
N-gram的等价表达
perplexity.png
https://blog.csdn.net/index20001/article/details/78884646
与交叉熵等价
https://zhuanlan.zhihu.com/p/37822033
模型
Seq2Seq
Seq2Seq模型通过深度神经网络(如,LSTM)将一个输入序列映射为一个输出序列。其中,encoder将输入序列转换为一个状态向量C,decoder将状态向量转换为输出序列,encoder和decoder都是一个RNN。
LSTM原理
一个LSTM单元的输入是上一时刻细胞状态、当前时刻的输入,输出为隐藏层状态。LSTM中设计了遗忘门和记忆门,用于丢弃上一时刻的无用信息和获取此时刻的有用新信息。
主要计算过程如下,
遗忘门
作用:将细胞状态中的信息选择性的遗忘, 即丢掉老的不用的信息
输入:上一时刻的隐层状态,此时刻的输入
函数:和连接后,经过线性单元(,),最后经过sigmoid激活函数;其中,(,)为待学习参数,对于所有LSTM单元都相同。
输出:遗忘门的值
记忆门
作用:选择要记忆的信息
输入:上一时刻的隐层状态,此时刻的输入(和遗忘门相同)
输出:记忆门的值和临时细胞状态
计算当前时刻细胞状态
输入:记忆门的值,遗忘门的值,临时细胞状态,上一时刻细胞状态
输出:当前时刻细胞状态
计算输出门和当前时刻隐层状态
输入:前一时刻的隐层状态,当前时刻的输入,当前时刻细胞状态
输出:输出门的值,隐层状态
最终,得到与句子长度相同的隐层状态序列
BiLSTM原理
前向的LSTM与后向的LSTM结合成BiLSTM。比如,我们对“我爱中国”这句话进行编码。前向的依次输入“我”,“爱”,“中国”得到三个向量。后向的依次输入“中国”,“爱”,“我”得到三个向量。最后将前向和后向的隐向进性拼接得到,即
双向LSTM编码句子
对于情感分类任务来说,我们采用的句子的表示往往是,因为其包含了前向与后向的所有信息。
拼接向量用于情感分类
来源:https://blog.csdn.net/m0_37917271/article/details/82350571 (LSTM)
https://www.jiqizhixin.com/articles/2018-10-24-13 (BiLSTM)
https://blog.csdn.net/qq_32241189/article/details/81591456
https://blog.csdn.net/xbinworld/article/details/54605408
https://www.cnblogs.com/silence-tommy/p/8058333.html
网友评论