提交 61da6550 编写于 作者: W wizardforcel

2020-08-27 22:19:13

上级 a1d96314
......@@ -440,15 +440,15 @@ GRU 相对较新,其性能与 LSTM 相当,但由于结构更简单,参数
| 6 | 1 | 0 | | 0 | 1 | 0 | 0 |
| 7 | | | | | | | |
**O** 模块通过在给定问题 q 的情况下找到 k 个支持存储器来产生输出特征。 对于 k = 2,使用以下方法检索最高得分的支持内存:
`O`模块通过在给定问题 q 的情况下找到 k 个支持存储器来产生输出特征。 对于`k = 2`,使用以下方法检索最高得分的支持内存:
![](img/113b62ab-656d-4d22-9e1c-26c2855cf9e5.png)
其中 *s <sub>0</sub>* 是对输入 *q**m* <sub>*i [*</sub> o1 是具有最佳匹配的内存索引 *m* 。 现在,使用查询和第一个检索到的内存,我们可以检索下一个内存 m <sub>o2</sub> ,这两个内存都很接近:
其中`s[0]`是输入`q``m[i]`之间的评分函数,`o1`是具有最佳匹配的内存`m`的索引。 现在,使用查询和第一个检索到的内存,我们可以检索下一个内存`m[o2]`,这两个内存都很接近:
![](img/2b447e60-be65-4f11-a9e0-0b28d3c0e730.png)
合并的查询和内存结果为 o = [q,m <sub>o1</sub> ,m <sub>o2</sub> ] = [现在牛奶在哪里,乔离开了牛奶。乔去了办公室。 ]。 最后,模块 **R** 需要产生文本响应 *r**R* 模块可以输出一个单词的答案,或者可以输出一个完整句子的 RNN 模块。 对于单字响应,令 <sub>r</sub> 是对[q,m <sub>o1</sub> ,m <sub>o2</sub> ]和单词 *w* 。 因此,最后的回应 *r* 是办公室一词:
合并的查询和内存结果为`o = [q, m[o1], m[o2]] = [现在牛奶在哪里, 乔离开了牛奶, 乔去了办公室]`。 最后,模块`R`需要产生文本响应`r``R`模块可以输出一个单词的答案,或者可以输出一个完整句子的 RNN 模块。 对于单字响应,令`r`是对`[q, m[o1], m[o2]]`和单词`w`的回应。 因此,最后的回应`r`是办公室一词:
![](img/7edbfaa7-ef11-4918-b0bf-23ecb6bb5098.png)
......@@ -456,17 +456,17 @@ GRU 相对较新,其性能与 LSTM 相当,但由于结构更简单,参数
# MemN2Ns
我们从一个查询开始:牛奶现在在哪里? 使用大小为 *V* 的向量,用成袋的单词进行编码。 在最简单的情况下,我们使用嵌入 *B(d x V)*将向量转换为大小为 *d* 的词嵌入。 我们有 **u = embeddingB(q)**
我们从一个查询开始:牛奶现在在哪里? 使用大小为`V`的向量,用成袋的单词进行编码。 在最简单的情况下,我们使用嵌入`B(d x V)`将向量转换为大小为`d`的词嵌入。 我们有`u = embeddingB(q)`
![](img/d6252a46-1170-4bd3-a61c-ec067acd5310.png)
输入句子 x1,x2,...和 xi 通过使用另一个嵌入矩阵 A(dx Vd x V)存储在内存中,其大小与 B **mi = embeddingA(x <sub>i [</sub>** **)**。 每个嵌入式查询 *u* 与每个内存 *m <sub>i</sub>* 之间的相似度是通过取内积和 softmax 来计算的: **p <sub>i</sub> = softmax(u <sup><sub>T</sub></sup> m <sub>i</sub> )**
输入句子 x1,x2,...和 xi 通过使用另一个嵌入矩阵`A(d x V)`存储在内存中,其大小与`B[mi] = embeddingA(x[i])`。 每个嵌入式查询`u`与每个内存`m[i]`之间的相似度是通过取内积和 softmax 来计算的:`p[i] = softmax(u^T m[i])`
输出存储器表示如下:每个 xi 具有对应的输出向量 *c <sub>i</sub>* ,可以用另一个嵌入矩阵 *C* 表示。 然后,来自存储器的响应向量 *o**c <sub>i</sub>* 上的总和,并由来自以下输入的概率向量加权:
输出存储器表示如下:每个`x[i]`具有对应的输出向量`c[i]`,可以用另一个嵌入矩阵`C`表示。 然后,来自存储器的响应向量`o``c[i]`上的总和,并由来自以下输入的概率向量加权:
**![](img/f448c97e-6ab7-4718-90ff-cc360122bce3.png)**
![](img/f448c97e-6ab7-4718-90ff-cc360122bce3.png)
最后,将 *o**u* 之和与权重矩阵 W(V x d)相乘。 结果传递到 softmax 函数以预测最终答案:
最后,将`o``u`之和与权重矩阵`W(V x d)`相乘。 结果传递到 softmax 函数以预测最终答案:
![](img/00a99297-3d3b-4387-a888-ff58f137672d.png)
......@@ -490,31 +490,31 @@ NTM 体系结构包含两个基本组件:神经网络控制器和内存。 下
控制器输出用于确定要读取或写入的存储器位置。 这由一组分布在所有内存位置上的权重定义,这些权重之和为 1。权重由以下两种机制定义。 想法是为控制器提供几种不同的读取或写入内存的模式,分别对应于不同的数据结构:
* **基于内容的**:使用相似度度量(例如余弦相似度(S))将控制器的键 **k** 输出与所有存储位置进行比较,然后所有距离均由 softmax 归一化 得到的权重加起来为 1:
* **基于内容的**:使用相似度度量(例如余弦相似度(S))将控制器的键`k`输出与所有存储位置进行比较,然后所有距离均由 softmax 归一化 得到的权重加起来为 1:
![](img/9c2898fa-79f4-4806-a527-d2a1fbf1f977.png)
在这种情况下,β≥1 称为清晰度参数,并控制对特定位置的聚焦。 它还为网络提供了一种方法来决定其希望内存位置访问的精确度。 就像模糊 c 均值聚类中的模糊系数。
* **基于位置的**:基于位置的寻址机制旨在跨存储器位置的简单迭代。 例如,如果当前权重完全集中在单个位置上,则旋转 1 会将焦点移到下一个位置。 负移将使权重朝相反方向移动。 控制器输出一个移位内核 *s* (即[-n,n]上的 softmax),将其与先前计算的存储器权重进行卷积以产生移位的存储器位置,如下图所示。 这种转变是循环的; 也就是说,它环绕边界。 下图是内存的热图表示—较深的阴影表示更多的权重:
* **基于位置的**:基于位置的寻址机制旨在跨存储器位置的简单迭代。 例如,如果当前权重完全集中在单个位置上,则旋转 1 会将焦点移到下一个位置。 负移将使权重朝相反方向移动。 控制器输出一个移位内核`s`(即`[-n, n]`上的 softmax),将其与先前计算的存储器权重进行卷积以产生移位的存储器位置,如下图所示。 这种转变是循环的; 也就是说,它环绕边界。 下图是内存的热图表示—较深的阴影表示更多的权重:
![](img/0952f060-fd33-4b79-a530-a3ef4c96a006.png)
在应用旋转移位之前,将内容寻址所给定的权重向量与先前的权重向量 w <sub>t-1</sub> 相结合,如下所示:![](img/31390bf5-05d0-4451-926c-5146b31a240c.png)。 在此,g <sub>t</sub> 是由控制器头发出的标量*内插门*,范围为(0,1)。 如果 g <sub> t </sub> = 1,则忽略先前迭代的加权。
在应用旋转移位之前,将内容寻址所给定的权重向量与先前的权重向量`w[t-1]`相结合,如下所示:![](img/31390bf5-05d0-4451-926c-5146b31a240c.png)。 在此,`g[t]`是由控制器头发出的标量*内插门*,范围为`(0, 1)`。 如果`g[t] = 1`,则忽略先前迭代的加权。
# 读取操作
**M <sub>t</sub>** 为时间 *t* 时 N x M 存储矩阵的内容,其中 *N* 是存储位置的数量, *M* 是每个位置的向量大小。 时间 *t* 的读取头由向量 **w <sub>t</sub>**给出。
`M[t]`为时间`t``N x M`存储矩阵的内容,其中`N`是存储位置的数量,`M`是每个位置的向量大小。 时间`t`的读取头由向量`w[t]`给出。
![](img/1e4d609a-d3bb-41ee-8b63-6e137fa2eb4a.png)
*M* 读取向量 **r <sub>t</sub>** 的长度定义为行向量 **M <sub>t</sub> (i)的凸组合[** 在内存中:
`M`读取向量`r[t]`的长度定义为行向量`M[t](i)`的凸组合,在内存中:
![](img/3e35f31d-36ad-4097-aa25-7dcd5b0fe6ad.png)
# 写操作
每个写头接收一个*擦除向量***e <sub>t</sub>** 和一个*加*向量,**a <sub>t</sub>** ,以像 LSTM 单元一样重置和写入存储器,如下所示:M <sub>t</sub> (i)←M <sub>t</sub> (i) [1- e <sub>t <sup>(i)</sup></sub> w <sub>t</sub> (i)] + w <sub>t</sub> (i)a <sub>t</sub> (i)
每个写头接收一个*擦除向量*`e[t]`和一个*加*向量,`a[t]`,以像 LSTM 单元一样重置和写入存储器,如下所示:`M[t](i) ← M[t](i) [1 - e[t](i) w[t](i)] + w[t](i) a[t](i)`
这是上述操作的伪代码:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册