码迷,mamicode.com
首页 > 其他好文 > 详细

机器学习(ML)六之RNN基础

时间:2020-02-14 18:28:44      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:bsp   review   信息   假设   icc   需要   长度   preview   static   

循环神经网络

下图展示了如何基于循环神经网络实现语言模型。目的是基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量??,用????表示??在时间步??的值。????的计算基于????????1,可以认为????记录了到当前字符为止的序列信息,利用????对序列的下一个字符进行预测。

技术图片 

循环神经网络的构造

先看循环神经网络的具体构造。假???????×??是时间步??的小批量输入,???????×?是该时间步的隐藏变量,则:

????=??(?????????+????1????+???).

技术图片

实现循环神经网络

 

one-hot向量

需要将字符表示成向量,这里采用one-hot向量。假设词典大小是??,每次字符对应一个从0??1的唯一的索引,则该字符的向量是一个长度为??的向量,若字符的索引是??,则该向量的第??个位置为1,其他位置为0。下面分别展示了索引为0和2的one-hot向量,向量长度等于词典大小。

 

裁剪梯度

循环神经网络中较容易出现梯度衰减或梯度爆炸,这会导致网络几乎无法训练。裁剪梯度(clip gradient)是一种应对梯度爆炸的方法。假设我们把所有模型参数的梯度拼接成一个向量 ??,并设裁剪的阈值是??。裁剪后的梯度

技术图片

??2范数不超过??

定义预测函数

以下函数基于前缀prefix(含有数个字符的字符串)来预测接下来的num_chars个字符。这个函数稍显复杂,其中我们将循环神经单元rnn设置成了函数参数,这样在后面小节介绍其他循环神经网络时能重复使用这个函数。

困惑度

我们通常使用困惑度(perplexity)来评价语言模型的好坏。回忆一下“softmax回归”一节中交叉熵损失函数的定义。困惑度是对交叉熵损失函数做指数运算后得到的值。特别地,

  • 最佳情况下,模型总是把标签类别的概率预测为1,此时困惑度为1;
  • 最坏情况下,模型总是把标签类别的概率预测为0,此时困惑度为正无穷;
  • 基线情况下,模型总是预测所有类别的概率都相同,此时困惑度为类别个数。

显然,任何一个有效模型的困惑度必须小于类别个数。在本例中,困惑度必须小于词典大小vocab_size

定义模型训练函数

跟之前章节的模型训练函数相比,这里的模型训练函数有以下几点不同:

  1. 使用困惑度评价模型。
  2. 在迭代模型参数前裁剪梯度。
  3. 对时序数据采用不同采样方法将导致隐藏状态初始化的不同。

 

机器学习(ML)六之RNN基础

标签:bsp   review   信息   假设   icc   需要   长度   preview   static   

原文地址:https://www.cnblogs.com/jaww/p/12308158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!