<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>RNNs on loveLZZ的个人博客</title>
    <link>https://leviathanion.github.io/categories/rnns/</link>
    <description>Recent content in RNNs on loveLZZ的个人博客</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Sat, 19 Feb 2022 10:09:43 +0800</lastBuildDate>
    <atom:link href="https://leviathanion.github.io/categories/rnns/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>QRNN</title>
      <link>https://leviathanion.github.io/qrnn/</link>
      <pubDate>Sat, 19 Feb 2022 10:09:43 +0800</pubDate>
      <guid>https://leviathanion.github.io/qrnn/</guid>
      <description>&lt;h1 id=&#34;qrnn&#34;&gt;QRNN&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;novelty&#34;&gt;Novelty&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;将RNN与CNN结合&#xA;&lt;ul&gt;&#xA;&lt;li&gt;卷积层用一种不使用未来数据的masked卷积来代替LSTM中参数矩阵与上一时刻隐藏层相乘的操作。捕获过去时刻信息的同时简化了LSTM中的的操作，因为在计算过程中删除了隐藏层，仅仅使用输入数据来捕获依赖&lt;/li&gt;&#xA;&lt;li&gt;池化层使用各种门结构，例如LSTM的门结构和GRU的门结构使得梯度流稳定&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;通过上述操作简化了LSTM的计算，使其可以并行&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;问题和动机&#34;&gt;问题和动机&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;标准的RNN包括门变种LSTM&lt;/strong&gt;等因为&lt;strong&gt;无法并行计算&lt;/strong&gt;，因此在&lt;strong&gt;长序列&lt;/strong&gt;的任务中性能受到了限制。&lt;/li&gt;&#xA;&lt;li&gt;将&lt;strong&gt;CNN&lt;/strong&gt;用于序列模型时&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;并行性更好&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;可以&lt;strong&gt;更好地扩展到长序列&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;但因为&lt;strong&gt;最大和平均池化时假设了时间不变性&lt;/strong&gt;，（在一次卷积池化过程中，时间步的顺序会被忽略，移动卷积核的过程中，进行相同的池化操作，不同时间步的重要性不同同样也会被忽略）因此无法充分利用&lt;strong&gt;大规模序列的顺序信息&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;因此作者提出了一种将&lt;strong&gt;CNN和RNN混合&lt;/strong&gt;的模型QRNN，既能&lt;strong&gt;跨时间步和小批量维度进行并行计算&lt;/strong&gt;，又使得&lt;strong&gt;输出取决于总体顺序&lt;/strong&gt;。&lt;strong&gt;性能更优秀且更节省时间&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;过去的解决方法&#34;&gt;过去的解决方法&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;将CNN应用到序列模型&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;character-level CNN(NIPS2015)假设了时间不变性，无法利用顺序信息&#xA;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://leviathanion.github.io/QRNN/character-levelCNN.png&#34; title=&#34;character-levelCNN模型&#34; data-thumbnail=&#34;/QRNN/character-levelCNN.png&#34; data-sub-html=&#34;&lt;h2&gt;该模型主要通过多个卷积层和池化层堆叠，沿时间步对序列进行卷积和池化来实现序列信息的捕获&lt;/h2&gt;&lt;p&gt;character-levelCNN模型&lt;/p&gt;</description>
    </item>
    <item>
      <title>SCRN</title>
      <link>https://leviathanion.github.io/scrn/</link>
      <pubDate>Thu, 17 Feb 2022 15:42:05 +0800</pubDate>
      <guid>https://leviathanion.github.io/scrn/</guid>
      <description>&lt;h1 id=&#34;scrn模型&#34;&gt;SCRN模型&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;novelty&#34;&gt;Novelty&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;通过为RNN添加一个参数缓慢变化的隐藏层来捕获长距离依赖，公式如下所示&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;\begin{align*}&#xA;s_t &amp;amp;= (1-\alpha)Bx_t + \alpha s_{t-1}&#xA;\\&#xA;h_t &amp;amp;= \sigma(Ps_t+Ax_t+Rh_{t-1})&#xA;\\&#xA;y_t &amp;amp;= f(Uh_t+Vs_t)&#xA;\end{align*}&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;约束该隐藏层中的B为对角矩阵，由于B为对角矩阵，且没有使用激活函数，所以该隐藏层的梯度流稳定&#xA;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://leviathanion.github.io/SCRN/RNN%E5%92%8CSCRN%E6%9E%B6%E6%9E%84%E5%9B%BE.png&#34; title=&#34;RNN和SCRN的架构图&#34; data-thumbnail=&#34;/SCRN/RNN%E5%92%8CSCRN%E6%9E%B6%E6%9E%84%E5%9B%BE.png&#34; data-sub-html=&#34;&lt;h2&gt;RNN和SCRN的架构图&lt;/h2&gt;&lt;p&gt;RNN和SCRN的架构图&lt;/p&gt;</description>
    </item>
    <item>
      <title>IRNN</title>
      <link>https://leviathanion.github.io/irnn/</link>
      <pubDate>Thu, 23 Dec 2021 10:27:32 +0800</pubDate>
      <guid>https://leviathanion.github.io/irnn/</guid>
      <description>&lt;h1 id=&#34;irnn模型&#34;&gt;IRNN模型&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;novelty&#34;&gt;Novelty&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;专注于解决RNN模型中的梯度消失问题&lt;/li&gt;&#xA;&lt;li&gt;使用单位矩阵来初始化RNN从而部分解决梯度消失和梯度爆炸问题&lt;/li&gt;&#xA;&lt;li&gt;使用ReLU激活函数代替Sigmoid激活函数也用于解决梯度消失问题（要配合第二点，否则很有可能梯度爆炸）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;问题和动机&#34;&gt;问题和动机&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;梯度消失&lt;/strong&gt;和&lt;strong&gt;梯度爆炸&lt;/strong&gt;的问题导致RNN模型难以学习到&lt;strong&gt;远距离依赖&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;过去的解决方法依赖于复杂的&lt;strong&gt;优化技术&lt;/strong&gt;和&lt;strong&gt;网络架构&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;提出一种较为&lt;strong&gt;简单&lt;/strong&gt;的方式进行优化&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;过去的解决方法&#34;&gt;过去的解决方法&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;用&lt;strong&gt;Hessian-Free&lt;/strong&gt;来代替&lt;strong&gt;SGD&lt;/strong&gt;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;（Hessian-Free可以关注到曲率）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;虽然效果上有改进，但并不常用，原因可能如下&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
