ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用ABLSTM 实现 human activity

2019-09-04 17:40:12  阅读:457  来源: 互联网

标签:ABLSTM 7Bt% 7D% 5E% 7B% human activity LSTM 27%


论文:WiFi CSI Based Passive Human Activity Recognition Using Attention Based BLSTM

论文中使用attention based bi-direction long short-term memory(基于注意力模型的长短期记忆)网络结构实现了人类活动识别。在本篇博客中首先介绍一下RNN、LSTM、GRU和注意力模型的概念,然后再介绍论文中的网络结构。

RNN

这是一个输入与输出序列长度相等的RNN结构图,其中\left \{ x^{1},...x^{i} \right \}代表输入序列,\left \{ y^{1},...,y^{i} \right \}表示输出序列,h表示hidden state

h^{i}=f(w_{hh}h^{i-1}+w_{hx}x^{i}+b_{h})

y^{i}=g(w_{yh}h^{i}+b_{y})

f和g是激活函数,一般f是tanh或者relu,g取决于输出是什么,是sigmoid或者softmax

LSTM

preview

Long short-term memory(LSTM)是一种特殊的RNN,主要是为了解决RNN训练过程中的梯度消失问题。在反向传播时,序列后面输出层的误差很难影响到前面,也就是说传统的RNN难以捕获相距较远的序列之间的长期依赖。相比于传统的RNN,LSTM多列一个cell memory,用来存储长期依赖,让序列后面的状态可以被前面的序列影响到。例子:

The cat , already ate..., was full.

The cats, already ate ..., were full.

在机器翻译时,传统的RNN网络训练时很难记住前面主语是单数还是负数(英语句子中ate后面可以非常长)从而影响到后面的be动词,但是LSTM中的cell memory可以记住。

为了让前面的序列状态受到后面序列的影响,可以使用双向的结构,RNN、LSTM和GUR都可以使用双向的的机构。

因此LSTM有两个传输状态:c^{t}h^{t},还有3个门控信号

z=\tilde{c^{t}}=tanh(W_{c}[h^{t-1},x^{t}]+b_{c})   z不是门控信号,而是参考c^{t}值,在c^{t}更新时会用上它

z^{i}=\Gamma _{u}=\sigma (W_{u}[h^{t-1},x^{t}]+b_{u})  更新门控信号,对输入x^{t}进行选择记忆

z^{f}=\Gamma _{f}=\sigma (W_{f}[h^{t-1},x^{t}]+b_{f})  忘记门控,控制上一个状态的c^{t-1}有哪些需要忘记

z^{o}=\Gamma _{o}=\sigma (W_{o}[h^{t-1},x^{t}]+b_{o})   输出门控

\odot是Hadamard Product,也就是矩阵中对应元素相乘。

GRU

GRU(Gate Recurrent Unit)与LSTM一样也是为了解决长期记忆和反向传播中的梯度消失等问题而提出来的,但是GUR比LSTM更容易训练。

在GUR中c^{t}=h^{t},而且只有两个门控信号

{h}'=\tilde{c^{t}}=tanh(W_{c}[\Gamma _{r}\odot h^{t-1},x^{t}]+b_{c})

r=\Gamma _{r}=\sigma (W_{r}[c^{t-1},x^{t-1}]+b_{r})   相关门控

z=\Gamma _{u}=\sigma (W_{u}[c^{t-1},x^{t}]+b_{u})   更新门控

h^{t}=z\odot {h}'+(1-z)\odot h^{t-1}  z大多数都是0或者1,z=0表示cell memory不更新,反之则更新。

GUR的优点就是使用了一个门控信号就控制了记忆或者遗忘,参数比LSTM少,节约了计算成本。

Attention机制

在Endecode-Decode结构中,Encoder把所有的输入序列都编码成一个统一的语义特征c再解码,但是c必须包含原始序列中的所有信息,但是它的长度限制了模型性能。Attention机制通过在不同时间输入不同的c来解决这个问题

 

\alpha ^{<t,{t}'>}=amount of attention y_{t} should pay to a_{{t}'}(encode中的隐藏单元)     \sum _{{t}'}\alpha ^{<1,{t}'>}=1

c_{t}=\sum _{{t}'}\alpha ^{<t,{t}'>}a_{{t}'},如果是双向结构a_{{t}'}=(\overrightarrow{a}_{{t}'},\overleftarrow{a}_{{t}'} )

现在还有一个问题是\alpha ^{<t,{t}'>}是怎么来的?

实际上,\alpha ^{<t,{t}'>}是通过模型学习出来的,它与decoder的i-1阶段的隐藏状态和encoder的j阶段的隐藏状态有关

\alpha^{<t,{t}'>}=softmax(e^{<t,{t}'>})=\frac{exp(e^{<t,{t}'>})}{\sum _{{t}'=1}^{Tx}exp(e^{<t,{t}'>})}

  

论文中提出来的ABLSTM

论文中通过输入CSI信号,通过双向LSTM(BLSTM)网络结构提取特征,然后利用Attention机制为BLSTM提取出来的特征分配权重,最后通过softmax输出分类结果。

标签:ABLSTM,7Bt%,7D%,5E%,7B%,human,activity,LSTM,27%
来源: https://blog.csdn.net/weixin_42729843/article/details/100532793

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有