前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >神经网络学习笔记-04-循环神经网络算法解释

神经网络学习笔记-04-循环神经网络算法解释

作者头像
绿巨人
发布2018-05-17 15:48:40
6980
发布2018-05-17 15:48:40
举报
文章被收录于专栏:绿巨人专栏

神经网络学习笔记-04-循环神经网络算法解释

本文是根据WildML的Recurrent Neural Networks Tutorial写的学习笔记。

门控循环单元 - GRUs (Gated Recurrent Units)

先看看计算公式: x_e = Ex_t \\ z = \sigma(U^zx_e + W^zs_{t-1} + b^z) \\ r = \sigma(U^rx_e + W^rs_{t-1} + b^r) \\ h = tanh(U^hx_e + W^h(s_{t-1} \circ r) + b^h) \\ s_t = (1 - z) \circ h + z \circ s_{t-1} \\ o_t = Vs_t + c

计算公式的理解

首先,我们有一个单词集合,包含了常用的单词和标点符号。 这个单词集合,在训练前就已经确定了。因此:单词量在训练和预测的过程中是固定的。比如:8000。 我们想象现在正在学习需要句子,用来自动生成有一定含义的语句。

在训练的过程中,会建立以下数据:

  • 输入数据 \(x_t\)的维度为\(8000\)。每个维度对应一个单词。是一个one-hot vector。 就是说8000个维度里,只有一维为1,其它都是0。 表示当前输入的单词。
  • 输出数据 \(o_t\)的维度为\(8000\)。含义同\(x_t\)。可以理解为,根据已输入的单词,预测下一个应该是哪个单词。
  • 内部状态 \(s_t\)的维度为\(100\)。内部状态。取值范围[-1, 1]。 \(s_t\)是算法中的关键,可以理解为语言中的上下文。或者记忆。 由算法可以看出\(s_t\)决定\(o_t\)。
  • 参数 \(E\)的维度为:\(100 \times 8000\)。为单词集合中的每个单词建立一个单词特征值。每个单词特征值的维度为100。 \(U^z, U^r, U^h\)的维度为:\(100 \times 100\) \(W^z, W^r, W^h\)的维度为:\(100 \times 100\) \(b^z, b^r, b^h\)的维度为:\(100\) \(V\)的维度为:\(8000 \times 100\) \(c\)的维度为:\(8000\)
  • 计算过程和计算变量 \(x_e = Ex_t\)的意思是从\(E\)取出单词\(x_t\)的状态。(SELECT state FROM E WHERE word_id = x_t) \(x_e\)的维度为:\(100\) \(z\)的维度是\(100\)。每个数的取值范围为[0, 1]。可以简单地理解为\(0\)或\(1\)。就像一个开关。\(0\)表示不要。\(1\)表示要。 \(z\)这个开关,控制上下文中哪些数据要保留。 \(r\)的维度是\(100\)。同\(z\)。 \(r\)这个开关,控制上下文中哪些数据需要重置。 \(h\)的维度是\(100\)。每个数的取值范围为[-1, 1]。可以简单地理解为\(-1\)或\(1\)。控制输出单词的可能性。 \(h\)这个开关,控制上下文中(由\(z\)确定的)不保留的数据的新值。 \(h\)就是\(s_t\)(的新值)。 \(h\)决定了\(s_t\)。
  • 参数的意义
    • \(E\)是单词特征值集合。 我们可以想象特征可以表示为这个单词是否是名词,是否是形容词,是否表示否定等等各种语言特征。 上面所说的是一个比喻。因为没有输入词性的信息。RNN不可能学习到名词、形容词等概念。 (为了方便理解,后面,会继续用这个比喻来说明。) 实际情况是什么呢?我还不知道。:(。 我猜测很可能是这样的特征信息: 是否容易出现在开头。 是否容易出现在结尾。 关系1 关系1,我在前面 关系1,我在后面 关系2 关系2,我在第一位 关系2,我在最后一位 ... 如果,两个单词的" 前后关系1“的值都为1。在前面的单词已经出现了,那么后面的那个单词出现的可能性就大了。
    • 上下文\(s_t\)的含义 可以很容易的注意到,上下文和单词特征有一对一的关系。 \(s_t\)是根据前一个上下文\(s_{t-1}\)和当前输入单词的特征\(x_e\)变化而来。 \(s_t\)的值是直接从\(h\)来的,取值范围是\([-1, 1]\)。有方向性的表示,比如:名词的相关程度(和不相关程度)。 因此:\(s_t\)的含义是当前语境下,各个语言特征的相关程度。 比如:有一个名字,一个动词,否定语气。 \(s_t\)最终又决定了输出单词的概率。我们仔细看看它是如何决定\(o_t\)的? 通过和\(V\)的乘积!这是什么意思呢? 我们要理解\(V\)。 \(V\)表示对每个单词,上下文(语言特征相关性)决定的下一个单词出现可能性的权值。
    • \(U^z\)是单词特征值的保留权值。 在决定上下文中哪些特征需要保留的时候,单词特征值的价值。 比如:如果这个单词是个名词的话,价值更大,需要保留。是个介词的话,价值较小。
    • \(W^z\)是前上下文的保留权值。 在决定上下文中哪些特征需要保留的时候,前上下文的价值。
    • \(b^z\)是保留偏差。
    • \(U^r\)是单词特征值的重置权值。 在决定上下文中哪些特征需要重置的时候,单词特征值的价值。 比如:如果这个单词是个名词的话,价值更大,需要重置上下文。是个介词的话,价值较小,不太需要重置上下文。
    • \(W^r\)是上下文的重置权值。 在决定上下文中哪些特征需要重置的时候,前上下文的价值。
    • \(b^r\)是重置偏差。
    • \(U^h\)是单词特征值变成上下文值的权值。
    • \(W^h\)是前上下文值变成当前上下文值的权值。
    • \(b^h\)是上下文值的偏差。
    • \(V\)是每个单词对应上下文,产生输出单词的概率权值。 \(V\)表示对每个单词,上下文(语言特征相关性)决定的下一个单词出现可能性的权值。
    • \(c\)是输出单词概率的偏差。

随想

如果你看懂了我的上面的烂文。就明白\(E, V, s_t\)是核心。它们包含的数据到底有什么意义呢? \(E\)对每个单词有一个100维的矢量。用来保存每个单词的特征值。 \(V\)对每个单词有一个100维的矢量。是计算输出单词概率的权值。 \(s_t\)是一个100维的矢量。用来保存上下文。 很容易理解,这三个100维的数据,在同一维度上是关联的。 单词的每个特征值的含义会是什么?那么,上下文和\(V\)的每维的含义呢?

我在这里猜测一下。由于训练的目的(被训练数据决定)是学习如何产生一句自然语言。 那么这些数据都是和单词前后位置有关的信息。这些信息会是什么? 比如:我会出现在首位,我会出现在末尾,我们几个会一起出现等等等等,可能性很多。 \(E\)中每个单词的特征值可能是位置信息。 \(s_t\)可能是当前已输入单词组成的句子结构。 \(V\)可能是每个单词在句子结构中的位置可能性。

一个常常想到的问题是:会不会有语法和语法结构的概念? 直观的回答是:不会。因为,训练数据中,并没有这个东西。算法也不可能知道那怕名词、动词这样的概念。 如果,我们从机器的角度看,训练结果可以理解为机器学习到的语法结构。 机器没有主谓宾的概念,所以不会说:“我学习到了主谓宾的语法结构”。 但是一个有趣的问题是:机器的语法结构和人类的语法结构是否会匹配? 我觉得是很有可能的。毕竟它学习的是人类语言。 它很可能学会了"cannot help doing"这样的关系;发现某些词容易出现在有问号结尾的句字开头; 发现有一类词很可能出现在另一类词的后面。 机器没有给这些关系起名字,描述这些关系。而这些是我们可以做的。

参照

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-02-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 神经网络学习笔记-04-循环神经网络算法解释
    • 门控循环单元 - GRUs (Gated Recurrent Units)
      • 计算公式的理解
    • 随想
      • 参照
      相关产品与服务
      NLP 服务
      NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档