可微神经计算机(Differentiable neural computer)的介绍
- 可微神经计算机的介绍
- 一、介绍
- 二、控制器
- 三、控制信息向量
- 四、存储器读写机制
- 写操作
- 读操作
- 4.1 Content-based addressing
- 4.2 Dynamic memory allocation
- Write weight
- 4.3 Temporal memory linkage
- Read weighting
可微神经计算机的介绍
一、介绍
如今,人工神经网络已经在模式识别、序列学习和强化学习方面表现出色,但因为没有额外的存储机制,使得在表示变量和需要存储长时间数据的情况下,神经网络的能力被有所限制。本文将基于Deepmind于2016年发表在《自然》杂志上的文章,对文章中所提出的可微神经计算机(Differentiable neural computer)进行一定的介绍,并针对Deepmind开源在Github上的代码进行一定的分析。
可微神经计算机(之后简称DNC)的一个单元(cell)主要由一个控制器和一个存储器构成,如图所示:
其中,控制器可以是人工神经网络,也可以是其他的机器学习模型;存储器可以理解为由读写头、内存单元和一些保存存储状态的单元组成。下面介绍控制器、存储器和两者之间的数据交互。
在介绍DNC单元之前,本节将补充一点我在实现代码过程中的一点经验。在构造一个复杂的变量之前,我们需要考虑该变量的以下几个方面:
变量类型(e.g. float32, int64),
变量形状(e.g. [batch_size, time, length]),
变量范围(e.g. α∈[0,1]α∈[0,1]\alpha \in [0, 1]),
变量之间关系(e.g. ∑ni=0αi⩽1∑i=0nαi⩽1\sum_{i=0}^{n} \alpha_{i}\leqslant 1 ) 。
二、控制器
论文上所用的控制器结构是一个变体的LSTM,在此简称 ηη\eta 。
在某一时刻 t ,ηη\eta 获得一个输入向量 xt∈ℝXxt∈RXx_{t} \in \mathbb{R}^{X} 。另外,在t-1时刻,存储器从存储单元 Mt−1∈ℝN×WMt−1∈RN×WM_{t-1} \in \mathbb{R}^{N \times W} 中读取 RRR 个向量: rt−11,...,rt−1R" role="presentation">r1t−1,...,rRt−1rt−11,...,rt−1Rr_{t-1}^{1}, ..., r_{t-1}^{R} ,其中 rit−1∈ℝWrt−1i∈RWr_{t-1}^{i} \in \mathbb{R}^{W} 。这样将向量 xtxtx_{t} 与 RRR 个读出的向量做连接(concatenate)操作,得控制器η" role="presentation">ηη\eta在t时刻的输入为
χt=[xt;r1t−1;...;rRt−1]χt=[xt;rt−11;...;rt−1R]\chi _{t} = [x_t; r_{t-1}^{1}; ...; r_{t-1}^{R}] 。
那么,对于有1个隐藏层的lstm网络(而论文中叙述的是一个多层lstm),隐藏层的输入门为: it=σ(Wi[χt;ht−1]+bi)it=σ(Wi[χt;ht−1]+bi)i_{t} = \sigma(W_{i}[\chi_{t}; h_{t-1}] + b_{i}) ;
遗忘门为:
ft=σ(Wf[χt;ht−1]+bf)ft=σ(Wf[χt;ht−1]+bf)f_{t} = \sigma(W_{f}[\chi_{t}; h_{t-1}] + b_{f}) ;
状态更新:
st=ftst−1+ittanh(Ws[χt;ht−1]+bs)st=ftst−1+ittanh(Ws[χt;ht−1]+bs)s_{t} = f_{t}s_{t-1} + i_{t}tanh(W_{s}[\chi_{t}; h_{t-1}] + b_{s}) ;
输出门为:
ot=σ(Wo[χt;ht−1]+bo)ot=σ(Wo[χt;ht−1]+bo)o_{t} = \sigma(W_{o}[\chi_{t}; h_{t-1}] + b_{o}) ;
最后隐藏层输出:
ht=ottanh(st)ht=ottanh(st)h_{t} = o_{t}tanh(s_{t}) 。
论文要求,
在t时刻,控制网络 ηη\eta 需要产生输出向量 ϑt∈ℝYϑt∈RY\vartheta_{t} \in \mathbb{R}^{Y},并产生控制信息向量 ξt∈ℝWR+3W+5R+3ξt∈RWR+3W+5R+3\xi_{t} \in \mathbb{R}^{WR+3W+5R+3} ,定义如下:
ϑt=Wϑhtϑt=Wϑht\vartheta_{t} = W_{\vartheta}h_{t} ;
ξt=Wξhtξt=Wξht\xi_{t} = W_{\xi}h_{t} 。
最后, ηη\eta 产生一个输出向量 yt∈ℝYyt∈RYy_{t} \in \mathbb{R}^{Y} ,即目标向量 zt∈ℝYzt∈RYz_{t} \in \mathbb{R}^{Y} 的预测向量(对于监督学习),ηη\eta 的输出向量 ytyty_{t} 定义如下:
yt=ϑt+Wr[r1t;...;rRt]yt=ϑt+Wr[rt1;...;rtR]y_{t} = \vartheta_{t} + W_{r}[r_{t}^{1}; ...; r_{t}^{R}]
三、控制信息向量
对控制信息向量ξt∈ℝWR+3W+5R+3ξt∈RWR+3W+5R+3\xi_{t} \in \mathbb{R}^{WR+3W+5R+3} 进行细分(subdivid),得到如下控制信息:
ξt=[kr,1t;...;kr,Rt;βr,1t^;...;βr,Rt^;kwt;βwt^;et^;vt;f1t^;...;fRt^;gat^;gwt^;π1t^;...;πRt^]ξt=[ktr,1;...;ktr,R;βtr,1^;...;βtr,R^;ktw;βtw^;et^;vt;ft1^;...;ftR^;gta^;gtw^;πt1^;...;πtR^]\xi_{t} = [k_{t}^{r,1}; ...; k_{t}^{r,R}; \hat {\beta_{t}^{r,1}}; ...; \hat {\beta_{t}^{r,R}}; k_{t}^{w}; \hat {\beta_{t}^{w}}; \hat {e_{t}}; v_{t}; \hat {f_{t}^{1}}; ...; \hat {f_{t}^{R}}; \hat {g_{t}^{a}}; \hat {g_{t}^{w}}; \hat {\pi_{t}^{1}}; ...; \hat {\pi_{t}^{R}}]
在介绍控制信息之前,本节需要引入一个变量空间 SNSNS_{N},定义如下:
SN={α∈ℝN:α∈[0,1],∑Ni=1αi=1}SN={α∈RN:α∈[0,1],∑i=1Nαi=1}S_{N} = \left \{ \alpha \in \mathbb {R}^{N}: \alpha \in [0, 1], \sum_{i=1}^{N} \alpha_{i} = 1 \right \}
对于读写一块内存矩阵M∈ℝN×WM∈RN×W M \in \mathbb{R}^{N \times W} ,存储器需要很多控制信息,论文要求有10种控制信息,这10种信息主要分两类:控制写与控制读,定义如下:
R read keys:
{kr,it∈ℝW;1⩽i⩽R}{ktr,i∈RW;1⩽i⩽R}\left \{ k_{t}^{r, i} \in \mathbb {R}^{W}; 1 \leqslant i \leqslant R \right \}
R read strengths:
{βr,it=oneplus(βr,it^)∈[1,∞];1⩽i⩽R}{βtr,i=oneplus(βtr,i^)∈[1,∞];1⩽i⩽R}\left \{ \beta_{t}^{r, i} = oneplus(\hat {\beta_{t}^{r,i}}) \in [1, \infty]; 1 \leqslant i \leqslant R \right \}
R free gates:
{fit=σ(fit^)∈[0,1];1⩽i⩽R}{fti=σ(fti^)∈[0,1];1⩽i⩽R}\left \{ f_{t}^{i} = \sigma (\hat {f_{t}^{i}}) \in [0, 1]; 1 \leqslant i \leqslant R \right \}
R read modes:
{πit=softmax(πit^)∈S3;1⩽i⩽R}{πti=softmax(πti^)∈S3;1⩽i⩽R}\left \{ \pi_{t}^{i} = softmax (\hat {\pi_{t}^{i}}) \in S_{3} ; 1 \leqslant i \leqslant R \right \}
the write key:
kwt∈ℝWktw∈RWk_{t}^{w} \in \mathbb {R}^{W}
the write strength:
βwt=oneplus(βw^)∈[1,∞]βtw=oneplus(βw^)∈[1,∞] \beta_{t}^{w} = oneplus(\hat {\beta_{w}}) \in [1, \infty]
the erase vector:
et=σ(et^)∈[0,1]Wet=σ(et^)∈[0,1]We_{t} = \sigma (\hat {e_{t}}) \in [0, 1]^{W}
the write vector:
vt∈ℝWvt∈RWv_{t} \in \mathbb {R}^{W}
the allocation gate:
gat=σ(gat^)∈[0,1]gta=σ(gta^)∈[0,1]g_{t}^{a} = \sigma (\hat {g_{t}^{a}}) \in [0, 1]
the write gate:
gwt=σ(gwt^)∈[0,1]gtw=σ(gtw^)∈[0,1]g_{t}^{w} = \sigma (\hat {g_{t}^{w}}) \in [0, 1]
对于上述控制信息的使用,将在下面的部分介绍。
四、存储器读写机制
论文规定,DNC单元在将向量写入内存矩阵 MN×WtMtN×WM_{t}^{N \times W} 时,利用 content-base addressing 和 dynamic memory allocation 两种寻址方式的组合,以确定哪些内存空间是可以写入的。DNC单元在从内存单元 MN×WtMtN×WM_{t}^{N \times W} 读取向量时,利用 content-base addressing 和 temporal memory linkage 两种寻址方式的组合,以确定哪些内存空间是需要读出的。由此可知,共有3种寻址方式被利用进行读写,下面的部分将分别介绍这3种寻址机制,并解释如何写入和读取内存单元。
在介绍3中寻址机制之前,本节需要引入另一个变量空间ΔNΔN\Delta N,定义如下:
ΔN={α∈ℝN:αi∈[0,1],∑Ni=1αi⩽1}ΔN={α∈RN:αi∈[0,1],∑i=1Nαi⩽1}\Delta N = \left \{ \alpha \in \mathbb {R}^{N}: \alpha_{i} \in [0, 1], \sum _{i=1}^{N} \alpha_{i} \leqslant 1 \right \}
写操作
写操作,利用一个write weighting wwt∈ΔNwtw∈ΔNw_{t}^{w} \in \Delta N,并通过控制信息中的the erase vector: et=σ(et^)∈[0,1]Wet=σ(et^)∈[0,1]We_{t} = \sigma (\hat {e_{t}}) \in [0, 1]^{W} 和 the write vector: vt∈ℝWvt∈RWv_{t} \in \mathbb {R}^{W} 对内存矩阵进行操作,操作如下:
Mt=Mt−1⊙(E−wwtet)+wwtvtMt=Mt−1⊙(E−wtwet)+wtwvtM_{t} = M_{t-1} \odot (E - w_{t}^{w}e_{t}) + w_{t}^{w}v_{t}
其中,write weighting wwt∈ΔNwtw∈ΔNw_{t}^{w} \in \Delta N 将在通过下文所述的寻址机制进行获取。
读操作
论文规定,利用R个read weighting {wr,1t,...,wr,Rt},wr,it∈ΔN{wtr,1,...,wtr,R},wtr,i∈ΔN\left \{w_{t}^{r, 1}, ..., w_{t}^{r, R}\right \}, w_{t}^{r, i} \in \Delta N 从内存矩阵中读出R个read vector {r1t,...,rRt},rit∈RW{rt1,...,rtR},rti∈RW\left \{ r_{t}^{1}, ... , r_{t}^{R} \right \}, r_{t}^{i} \in R^{W},操作如下:
rit=MTtwr,itrti=MtTwtr,ir_{t}^{i} = M_{t}^{T}w_{t}^{r,i}
其中,R个read weighting {wr,1t,...,wr,Rt},wr,it∈ΔN{wtr,1,...,wtr,R},wtr,i∈ΔN\left \{w_{t}^{r, 1}, ..., w_{t}^{r, R}\right \}, w_{t}^{r, i} \in \Delta N 将在通过下文所述的寻址机制进行获取。
4.1 Content-based addressing
Content-based addressing 机制可以理解为一种attention机制。论文规定,对于内存矩阵M∈ℝN×WM∈RN×WM \in \mathbb{R}^{N \times W} 中的第i个内存单元 M[i]∈ℝ1×WM[i]∈R1×WM[i] \in \mathbb {R}^{1 \times W} 在read 或 write 时所分配的比重 C(M,k,β)[i]C(M,k,β)[i]C(M, k, \beta)[i] 定义如下:
C(M,k,β)[i]=exp{D(k,M[i,:])β}∑jexp{D(k,M[j,:])β}C(M,k,β)[i]=exp{D(k,M[i,:])β}∑jexp{D(k,M[j,:])β}C(M, k, \beta)[i] = \frac{exp \left \{ D(k, M[i, :])\beta \right \}} {\sum_{j} exp \left \{D(k, M[j, :]) \beta \right \}}
其中,函数D(u,v)D(u,v) D(u, v) 是求两个向量之间的余弦值,以余弦值来衡量两个向量之间的相关程度,定义如下:
D(u,v)=u⋅v|u||v|D(u,v)=u⋅v|u||v|D(u, v) = \frac {u \cdot v} {|u||v|}
由以上定义可知,C(M,k,β)∈SNC(M,k,β)∈SNC(M, k, \beta) \in S_{N} 确定了read head 和 write head 在内存矩阵M∈ℝN×WM∈RN×WM \in \mathbb{R}^{N \times W} 上对各个内存单元 M[i]∈ℝ1×WM[i]∈R1×WM[i] \in \mathbb {R}^{1 \times W} 的读写比重。
4.2 Dynamic memory allocation
在某些情况下,我们需要对内存矩阵 MN×WtMtN×WM_{t}^{N \times W} 中的某些内存单元进行释放并重新分配,所以论文加入Dynamic memory allocation 机制。
存储器用 ut∈[0,1]Nut∈[0,1]Nu_{t} \in [0, 1]^{N} 表示在t时刻内存单元的使用情况,并定义开始时刻u0=0u0=0u_{0} = 0。存储器在写入向量之前,需要确定哪些内存单元是可以被覆盖掉的,这就需要一个链表 free list 来表示覆写内存单元的顺序。存储器用 ψt∈[0,1]Nψt∈[0,1]N\psi_{t} \in [0, 1]^{N} 表示每个内存单元将被保留多少,定义如下:
ψt=∏Ri=1(1−fitwr,it−1)ψt=∏i=1R(1−ftiwt−1r,i)\psi_{t} = \prod_{i = 1}^{R}(1-f_{t}^{i}w_{t-1}^{r,i})
则 ututu_{t} 可以被定义如下:
ut=(ut−1+wwt−1⋅(1−ut−1))⋅ψtut=(ut−1+wt−1w⋅(1−ut−1))⋅ψtu_{t} = (u_{t-1} + w_{t-1}^{w} \cdot (1-u_{t-1})) \cdot \psi_{t}
之后,对ututu_{t} 进行升序排列,将排序后的索引所形成的排列作为 free list ϕt∈ℤNϕt∈ZN\phi_{t} \in \mathbb {Z}^{N} 。
这样,在t时刻,在Dynamic memory allocation 机制中,各个内存单元的写入权重the allocation weighting at∈ΔNat∈ΔNa_{t} \in \Delta N ,可以定义为:
at[ϕt[j]]=(1−ut[ϕt[j]])∏j−1i=1ut[ϕt[i]]at[ϕt[j]]=(1−ut[ϕt[j]])∏i=1j−1ut[ϕt[i]]a_{t} [\phi_{t}[j]] = (1 - u_{t}[\phi_{t}[j]])\prod_{i = 1}^{j-1}u_{t}[\phi_{t}[i]]
Write weight
综上所述,论文将各个内存单元在t时刻的写入权重wwt∈ΔNwtw∈ΔNw_{t}^{w} \in \Delta N定义如下:
wwt=gwt[gatat+(1−gat)cwt]wtw=gtw[gtaat+(1−gta)ctw]w_{t}^{w} = g_{t}^{w} [g_{t}^{a}a_{t} + (1 - g_{t}^{a})c_{t}^{w}]
其中,cwt=C(Mt−1,kwt,βwt)∈SNctw=C(Mt−1,ktw,βtw)∈SNc_{t}^{w} = C(M_{t-1}, k_{t}^{w}, \beta_{t}^{w}) \in S_{N} 是Content-based addressing 机制中的各个内存单元在t时刻的写入权重;at∈ΔNat∈ΔNa_{t} \in \Delta N 是Dynamic memory allocation 机制中各个内存单元在t时刻的写入权重,这两种机制的组合形成整个存储器的在t时刻对各个内存单元的写入权重wwtwtww_{t}^{w} 。
4.3 Temporal memory linkage
有时,用户希望网络能够将写入内存的内容按照一定的顺序读出来,于是论文设计了Temporal memory linkage机制。
这种机制拥有一个存储写入顺序的单元Lt∈[0,1]N×NLt∈[0,1]N×NL_{t} \in [0, 1]^{N \times N},其中 Lt[i,j]Lt[i,j]L_{t}[i, j] 表示在写入第j个内存单元之后写入第i个内存单元的权重(degree),Lt[i,:]∈ΔNLt[i,:]∈ΔNL_{t}[i, :] \in \Delta N ,Lt[:,j]∈ΔNLt[:,j]∈ΔNL{t}[:, j] \in \Delta N 。
在定义LtLtL_{t} 之前,论文定义了一个优先权重(precedence weighting) pt∈ΔNpt∈ΔNp_{t} \in \Delta N,pt[i]pt[i]p_{t}[i] 表示第i个内存单元是最后一次写入的权重(degree),定义如下:
p0=0p0=0p_{0} = 0
pt=(1−∑iwwt[i])pt−1+wwtpt=(1−∑iwtw[i])pt−1+wtwp_{t} = (1 - \sum_{i} w_{t}^{w}[i])p_{t-1} + w_{t}^{w}
然后, LtLtL_{t} 定义如下:
L0[i,j]=0;∀i,jL0[i,j]=0;∀i,jL_{0}[i, j] = 0; \forall i,j
Lt=0;∀iLt=0;∀iL_{t} = 0; \forall i
Lt=(1−wwt[i]−wwt[j])Lt−1[i,j]+wwt[i]pt−1[j]Lt=(1−wtw[i]−wtw[j])Lt−1[i,j]+wtw[i]pt−1[j]L_{t} = (1 - w_{t}^{w}[i] - w_{t}^{w}[j])L_{t-1}[i,j] + w_{t}^{w}[i]p_{t-1}[j]
The rows and columns
of LtLtL_{t} represent the weights of the temporal links going into and out from particular
memory slots, respectively.
给定LtLtL_{t},the backward weighting bit∈ΔNbti∈ΔNb_{t}^{i} \in \Delta N and forward weighting fit∈ΔNfti∈ΔNf_{t}^{i} \in \Delta N for each read head i are defined as:
bit=LTtwr,it−1bti=LtTwt−1r,ib_{t}^{i} = L_{t}^{T}w_{t-1}^{r,i}
fit=Ltwr,it−1fti=Ltwt−1r,if_{t}^{i} = L_{t}w_{t-1}^{r,i}
其中,wr,it−1wt−1r,iw_{t-1}^{r,i}表示第i个read head在t-1时刻的read weighting 。
Read weighting
综上所述, 论文定义第i个read head 在t时刻的 read weighting wr,it∈ΔNwtr,i∈ΔNw_{t}^{r, i} \in \Delta N 如下:
wr,it=πit[1]bit+πit[2]cr,it+πit[3]fitwtr,i=πti[1]bti+πti[2]ctr,i+πti[3]ftiw_{t}^{r, i} = \pi_{t}^{i}[1]b_{t}^{i} + \pi_{t}^{i}[2]c_{t}^{r,i} + \pi_{t}^{i}[3]f_{t}^{i}
其中,πit∈S3πti∈S3\pi_{t}^{i} \in S_{3} 是read mode控制信号,cr,it∈SNctr,i∈SNc_{t}^{r,i} \in S_{N} 是Content-based addressing机制中得出的权重。content-based addressing 机制与Temporal memory linkage 机制的组合共同确定了第i个read head 在t时刻的read weighting wr,itwtr,iw_{t}^{r,i} 。
time ------------------------------------------>+-------------------------------+mask: |0000000001111111111111111111111|+-------------------------------++-------------------------------+target: | 1| 'end-marker' channel.| 101100110110011011001 || 010101001010100101010 |+-------------------------------++-------------------------------+observation: | 1011001 || 0101010 ||1 | 'start-marker' channel| 3 | 'num-repeats' channel.+-------------------------------+
可微神经计算机(Differentiable neural computer)的介绍相关推荐
- 【读点论文】FBNetV2:Differentiable Neural Architecture Search for Spatial and Channel D扩大搜索空间,复用featuremap
FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions Abstract 可微分神经 ...
- 【读点论文】FBNet:Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search可微分
FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search Abstrac ...
- 开发指南专题十四:JEECG微云快速开发平台MiniDao 介绍
开发指南专题十四:JEECG微云快速开发平台MiniDao 介绍 13.MiniDao 介绍 13.1. MiniDao简介及特征 MiniDao是Jeecg自己的持久化解决方案,具备了Hibern ...
- 微服务08_RabbitMQ的SpringAMQP基本介绍
微服务08_RabbitMQ的SpringAMQP基本介绍 一.SpringAMQP 的基本介绍: AMQP Spring AMQP 二.SpringAMQP实现基础消息队列功能(rabbit中必须现 ...
- 1:微服务和Spring Cloud Alibaba介绍
Spring Cloud Alibaba系列目录 提示:这里是第一章:微服务和Spring Cloud Alibaba介绍 微服务和Spring Cloud Alibaba介绍 Alibaba微服务组 ...
- 一、微服务和Spring Cloud Alibaba介绍
微服务和Spring Cloud Alibaba介绍 1.微服务介绍 1.1 系统架构演变 随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化. 从互联网早起到现在,系 ...
- PMCAFF微分享 | 供应链金融套利套汇介绍
分享主题:供应链金融&套利套汇介绍 分享时间:7月4日(周六)21:30 分享地点:PMcaff互联网金融群|第七期 分享嘉宾:Julie Yao&Johnson 文字整理:May-天 ...
- 微服务神经元(Neural)
微服务架构中的神经组织,主要为分布式架构提供了集群容错的三大利刃:限流.降级和熔断.并同时提供了SPI.过滤器.JWT.重试机制.插件机制.此外还提供了很多小的黑科技(如:IP黑白名单.UUID加强版 ...
- HCS12X微控制器的外部总线接口介绍
翻译的资料是公开的,在这里下载https://www.nxp.com/products/microcontrollers-and-processors/additional-processors-an ...
最新文章
- 计算机网络应用基础 王建珍,计算机网络应用基础
- 机器人的兴起:洞察2020全球机器人市场【Part 1】
- 38首经典华语情歌E文版
- 浏览器对于前端的作用
- 如何在O(1)的时间里删除单链表的结点
- chrome使用技巧
- Android PreferenceActivity 使用
- 文本框输入怎么样让键盘消失
- 关于flex布局学习分享
- 机器学习常见面试题整理
- proteus数码管不亮是什么原因_数码管灌封胶有何产品性能特点?如何正确使用?...
- 蓝桥杯 ALGO-114 算法训练 黑白无常
- linux 解压缩指令
- 【jQueryWEUI】自定义对话框-带有textarea
- Win11里面【应用或关闭Windows功能】在哪
- 计算机基础知识赏花主观题,春光无限好,正是花开时 快收好这份赏花指南!...
- 单片机(中断系统-串口通信)
- mybatisPlus插入语句
- HTML的标签与选择器
- 用这几个扫一扫识别文字的软件,告别办公烦恼