allenlu2007

A great WordPress.com site

RNN 的 Keras 實現

Reference

[1] Q. Liao, “Bridging the Gaps Between Residual Learning, Recurrent Neural Networks and Visual Cortex

[2] B. Rohrer, Medium, “How Recurrent Neural Networks and Long Short Term Memory Work” (中文

[3] “LSTM和循環網絡基礎教程

 

 

RNN (Recurrent Neural Network) 對於 time sequence 是很自然的架構 [2]。

單純的 RNN 只是 NN layer 的 time sequence stacking 如下圖,稱為 SRU (Simple Recurrent Network)

NN layer 可以是 FC (fully connected layer or dense layer) layer 或是 Convolution layer (i.e. RCNN).

NewImage

[1] 說明 simple RNN (SRU) unrolling 其實和 Residue network (ResNet) 是等價。ResNet 主要的目的就是要避免 

gradient diminishing 的問題。不過對於 long time step or very deep layer neural network, SRU 還是有 gradient diminishing problem.

從上圖可以看出 loop 中包含 neural network, 也就是 feature/information 的部分。在 back prop 會一直 multiply.  需要小心控制。 

 

 

LSTM or GRU 是增加更多控制功能 (forgetting gate, ignoring/input gate, selection/output gate) [2].  同時把 recurrent loop 和 control function 分開如下圖。更好的解決 gradient diminishing 問題 [3]。

recurrent loop provide feedback path!!!  Feedback path 提供 back propagation 的 gradient highway!!

 

 

LSTM可保留誤差,用於沿時間和層進行反向傳遞。LSTM將誤差保持在更為恆定的水平,讓循環網絡能夠進行許多個時間步的學習(超過1000個時間步),從而打開了建立遠距離因果聯繫的通道。

LSTM將信息存放在循環網絡正常信息流之外的門控單元中。這些單元可以存儲、寫入或讀取信息,就像計算機內存中的數據一樣。單元通過門的開關判定存儲哪些信息,以及何時允許讀取、寫入或清除信息。但與計算機中的數字式存儲器不同的是,這些門是模擬的,包含輸出範圍全部在0~1之間的sigmoid函數的逐元素相乘操作。相比數字式存儲,模擬值的優點是可微分,因此適合反向傳播。

NewImage

 

另一個畫法:

NewImage

or

NewImage

or

NewImage



結論:SRU 有 gradient diminishing 問題。因爲反向轉播會重複經過 neural network.

LSTM 因為內部 cell feedback loop (to store state information) to provide gradient highway

可以避免這個問題。neural network (feature) 是放在 control gate (input/output/forget).

LSTM 仍然有外部的 recurrent connection (stage i output stage connect to stage i+1 input).

但主要 gradient 是走 cell (內部) path.  











Advertisements

Attention Model 的通用詮釋

Reference

[1] 过拟合 in 知乎,link

[2] Guo, et al, “Attention based CLDNNs for short-duration acoustic scene classification

 

Attention实质上是一种 content-based addressing 的机制,即从网络中某些状态集合中选取与给定状态较为相似的状态,进而做后续的信息抽取。

假设给定一个向量u ,我们希望从另一个向量集合{v_1,v_2,\dots,v_n} 中抽取代表向量,来计算向量与该集合的相似度。假设已经给定向量与向量的相似度计算函数f(u,v) (可以是一个小型神经网络)。

做法1:对每个v_i 计算相似度a_i=f(u,v_i) ,然后取最大a_i 所对应的v_i 作为代表向量,最后计算相似度。最后这一步可以使用同一f ,也可以单独再训另一个神经网络。这样做的缺点是,如果向量集合中有很多向量的相似度a_i 是近似的,那么取max 这种只能留一个向量的操作事实上会丢掉大量重要信息。 註:這是 max pooling 很大的缺點? 所以 CapsNet 使用 dynamic routing or routing by agreement 改善這個問題。

做法2:取向量集合的平均向量作为代表向量,然后计算最终的相似度。这样做的缺点是,如果只有一个向量与给定向量显著相关,其他几乎不相关,那么由于取平均操作,会导致真正具有代表性的向量被其他“噪声”向量所淹没。这点在向量集合很大的时候尤为明显。

可见,我们既想在有多个相似向量的情形下尽量在最终的代表向量中保留这些向量的信息,又想在只有一个显著相关向量的情形下直接提取该向量做代表向量,避免其被噪声淹没。那么解决方案只有:加权平均。

作法1 weighting factor = {0, 0, …, 1, 0, 0, ..}.  作法 2 weighting factor = {1/n, 1/n, … 1/n}

我们可以利用相似度作为权值对向量做加权平均,这样向量越相似,在最终的代表向量中其权重越高,保留的信息越多,反之亦然。

註:以上就是 match filter 的觀念。另外這個加權平均是 dynamic change w.r.t time, 而不是固定的。

由于相似度本身可能scale千差万别,直接加权平均会导致代表向量的scale的暴增或者暴减,我们利用softmax函数将这些相似度归一化,作为最终的权值。这样得到的代表向量就是原向量集合的 “soft” max,因为所有向量信息都有保留,但是最相关的向量又恰好保留的最多,与 “hard” max这种留一弃它有显著区别。另外,这样的结构可以加入到神经网络模型中,通过训练改变相似度函数f ,从而动态改变权值,让相似度以及权值更为贴合具体问题和数据。

參考下圖 attention block 中 softmax 的加權 (alpha_i).  

NewImage

 

NewImage

 


Attention mechanism 數學表示式 [2]

先看下圖。左邊是一般的 encoder Bi-LSTM,只在 final time step passes output summarised all previous time steps’ information to the decoder.

右邊是 attention-based BLSTM, pass each time step 的 information to form a weighted sum to the decoder.

NewImage 

Let h(t) denotes the hidden state of each Bi-LSTM time step with (window) length T. 

We design a mapping function f(.), which uses the hidden states to predict an attention score/weight Watt for each time step.

The final output Oatt is the normalised (using softmax) weighted sum of all the hidden states as shown in Figure 2 (right).

Equations.1-3 show the mathematical implementation of the attention mechanism.

The softmax function is used to normalize the score, and it also presents a probabilistic interpretation of the attention scores.

NewImage

The key of this attention mechanism is to train a proper mapping function f(.), such that we can get reasonable attention scores from the hidden states.

[2] investigate two mapping strategies with a specific mapping function.

Firstly, we use each hidden state to predict its own weight, which is a one-to-one mapping.

Secondly, all the hidden states are used together to predict all the weights for each time step, which is an all-to-all mapping.

For the choice of mapping function, a shallow neural network with a single fully connected layer (Dense layer in Fig.1 ) and a linear output layer is adopted.

Note that, in the BLSTM condition, the hidden states of the same time step from both forward and backward directions, need to be concatenated to represent h(t)











Hinton 在 CapsNet 所提出的 dynamic routing (or routing by agreement) 似乎有異曲同工之妙。

Reference:

George Wu, “Capsule Networks(CapsNets)帶給了我們什麼?

CapsNet 的 activation output 是向量而非 neural network 的純量。向量的大小代表 feature 出現機率的大小。

向量的方向代表 feature 的 pose parameter.  Sail boat 和 house 雖然都包含一個三角形 (cap1) 和長方形 (cap2)。

此時如下圖右 input a sail boat for a test.

黑色三角形在 predict output 是 sail boat 或 house 時,會有不同方向的長方形。

同樣黑色長方形在 predict output 是 sail boat 或 house 時,會有不同方向的三角形。

所謂的 routing by agreement 就是找到相似度最高的 vectors, predict sail boat.  

NewImage 

NewImage

 

Attention Model in Deep Learning

 

 

Reference

[1] Andrew Ng Machine translation

[2] Andrew Ng Homework https://github.com/enggen/Deep-Learning-Coursera/blob/master/Sequence%20Models/Week3/Machine%20Translation/Neural%20machine%20translation%20with%20attention%20-%20v2.ipynb

[3] Tristan in Medium, “Visual Attention Model in Deep Learning

[4] Tao Lei in 知乎, “Attention based model 是什麼

[5] Attention in 博客,“Attention

[6] Kong, et all, “Audio Set classification with attention model: A probabilistic perspective

[7] Qoboty, “Attention based model for 語音辨識

[8] Dzmitry Bahdanau, “END-TO-END ATTENTION-BASED LARGE VOCABULARY SPEECH RECOGNITION

[9] Jan Chorowski, et al, “Attention-Based Models for Speech Recognition”  

[10] W. Chan, et al, “Listen, attend and spell: A neural network for large vocabulary conversational speech recognition”


“Attention Model 注意力模型“ 是深度學習一個突破性的觀念。

1. 直觀上是借鏡人類認知模式。

人的視覺和聽覺不是鉅細靡遺,而是基於 attention mechanism (reference to Ted video on the pick-up),

Attention mechanism 最大的好處是節省大量的 resources (computation and storage), 聚焦在重點部份 (video, voice, translation, etc.)  Attention model 可以用在 video, audio, and natural language processing (e.g. video caption, machine translation, speech recognition).


2. 另一個切入點是 content-base weighted adaptive (match) filter.  參考 attention model 的通用詮釋。

 

Attention model 似乎和 sequence model (RNN) 有最自然的結合。可以視為 temporal content-base weighted adaptive filter?   當然如果 sequence 是 spatial sequence (如下文的 MNIST) 則可視為 spatial content-base weighted adaptive filter.  

 

Attention model in NLP (Natural Language Processing).  可以參考 [1] and [4].
NLP里面有一类典型的natural language generation问题:给定一段上下文(context), 生成一段与context相关的目标文本(target)。典型的例子包括:

  • 机器翻译:context是英文,需要生成对应的中文
  • 摘要生成:context是新闻内容, 需要生成新闻标题或者摘要。
  • 阅读理解:context是一段文章和一个选择题,需要输出答案。。

这类问题的核心是要对: conditional probability P(target|context) 进行建模。

在Deep learning火起来后,最常见的建模方式是用Recurrent Neural Networks (RNN) 将上下文”编码”,然后再”解码”成目标文本。

以机器翻译为例。Google最近的论文中,用一个 RNN encoder读入context, 得到一个context vector(RNN的最后一个hidden state);然后另一个RNN decoder以这个hidden state为起始state,依次生成target的每一个单词。如下图:

NewImage

这种做法的缺点是,无论之前的context有多长,包含多少信息量,最终都要被压缩成一个几百维的vector。这意味着context越大,最终的state vector会丢失越多的信息。正如楼主贴出blog中的Figure 1所显示,输入sentence长度增加后,最终decoder翻译的结果会显著变差。

————-

事实上,因为context在输入时已知,一个模型完全可以在decode的过程中利用context的全部信息,而不仅仅是最后一个state。

Attention based model的核心思想就是如此。如图:(Reference 4)

 NewImage

  • 首先,在生成target side的states时 (h_7 \cdots h_9),所有context vectors (h_1 \cdots h_5)都会被当做输入。
  • 其次,并不是所有context都对下一个状态的生成产生影响。例如,当翻译英文文章的时候,我们要关注的是“当前翻译的那个部分”,而不是整篇文章。“Attention”的意思就是选择恰当的context并用它生成下一个状态。

在大部分的论文中,Attention是一个权重vector(通常是softmax的输出),其维度等于context的长度。越大的权重代表对应位置的context越重要。不同论文对attention权重的计算方式不同,但其核心抛不开上述两点。

如果将生成每个target word前的attention vector拼接起来,可以观察到类似word alignment的有趣矩阵。下图来自最近的sentence summarization paper:

<span style=”font-size: 18px;”>&lt;span style=”font-size: 18px;”&gt;&amp;lt;span style=”font-size: 18px;”&amp;gt;&amp;amp;amp;amp;amp;amp;lt;img src=”https://pic4.zhimg.com/50/820a128935b6a7d5ef2d30f46096249b_hd.jpg&#8221; data-rawwidth=”300″ data-rawheight=”367″ class=”content_image” width=”300″&amp;amp;amp;amp;amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;</span>

 

以上的說明可能不夠具體。Reference 2 的例子就很清楚。


Attention Model in Natural Language Processing (Reference 1 and 2) – RNN Many to many problem

這部分參考 Andrew Ng 的 sequence model neural machine translation assignment. 

X vector 是 input language (e.g. 法文), Y vector 是 output language (e.g. 英文).

因為不是即時翻譯,X vector 是用 bi-directional LSTM.  但是 Y 只用 one direction LSTM.  如果 Y 也用 bi-directional LSTM 會更好嗎?

一般的 machine translation (many to many) 是先 encoder 所有的 input X, 再 decode output Y.   但只能用於短的句子。Attention model 則可以脫離這個限制。


NewImage

NewImage

 

Figure 1: Neural machine translation with attention

Here are some properties of the model that you may notice:

  • There are two separate LSTMs in this model (see diagram on the left). Because the one at the bottom of the picture is a Bi-directional LSTM and comes before the attention mechanism, we will call it pre-attention Bi-LSTM. The LSTM at the top of the diagram comes after the attention mechanism, so we will call it the post-attention LSTM. The pre-attention Bi-LSTM goes through TxTx time steps; the post-attention LSTM goes through TyTy time steps.

  • The post-attention LSTM passes st,cts⟨t⟩,c⟨t⟩ from one time step to the next. In the lecture videos, we were using only a basic RNN for the post-activation sequence model, so the state captured by the RNN output activations sts⟨t⟩. But since we are using an LSTM here, the LSTM has both the output activation sts⟨t⟩ and the hidden cell state ctc⟨t⟩. However, unlike previous text generation examples (such as Dinosaurus in week 1), in this model the post-activation LSTM at time tt does will not take the specific generated yt1y⟨t−1⟩ as input; it only takes sts⟨t⟩ and ctc⟨t⟩ as input. We have designed the model this way, because (unlike language generation where adjacent characters are highly correlated) there isn’t as strong a dependency between the previous character and the next character in a YYYY-MM-DD date.

  • We use at=[at;at]a⟨t⟩=[a→⟨t⟩;a←⟨t⟩] to represent the concatenation of the activations of both the forward-direction and backward-directions of the pre-attention Bi-LSTM.

  • The diagram on the right uses a RepeatVector node to copy st1s⟨t−1⟩‘s value TxTx times, and then Concatenation to concatenate st1s⟨t−1⟩ and ata⟨t⟩ to compute et,te⟨t,t′, which is then passed through a softmax to compute αt,tα⟨t,t′⟩. We’ll explain how to use RepeatVector and Concatenation in Keras below.

 

Attention Model in Visual Processing (Reference 3)

如果是 MNIST problem, 是 RNN many-to-one problem.  如果是 video caption, 則是 RNN many-to-many problem.

先看 MNIST problem.  RNN model 如下。Attention model 是判斷 sequence model next state 的 where and what, 分為兩部分。

1. Where: Location (l_t) vector as input to Glimpse network.  同時 f_l location network output next location vector.

2. What: Glimpse network f_g, take location vector as one input, and original image as another input. 決定要看的範圍 (scope). 這是由 Glimpse sensor 決定。請見下下圖。

3. g_t 就是 attention or glimpse vector, 包含 where and what information at each state/step.

4. 注意在 visual processing 的 state 不是 fixed time step!!  

而是 “# of time steps = # of glimpse per image”

想像數字 “1“ 和 “8” 需要的 glimpse 不一樣。“1” 只需要少數的 glimpse 就可決定。“8” 會需要較多的 glimpse 才能確定是 “8“ 而不是 “9”.

這正是用 RNN attention model (many-to-one) 漂亮的地方!  不是固定用 N steps (固定 N steps 必須用最 worst case steps). 也不是像 CNN 需要處理所有的 pixels.

對於簡單的 “1”,RNN attention model 可以很快 (little resource) 判定。複雜的 “8” 則需要長一點時間 (more resource) 判定。

** Reference 3 是用 fixed time step (RAM1: 4 glimpse per image; RAM2: 8 glimpse per image) 

NewImage


NewImage
 

下圖 Glimpse sensor 例子用三個 scope 做選擇。需要 scaling to fit 後面的 network.    

NewImage
 

最後 f_a 是 activation network. 經過 softmax 可以判斷是 0~9 中的數字。f_h 則是 recurrent/hidden network.

In summary 有四個 neural networks 和對應的 vectors:

(a) Recurrent network f_h:  h(t) 是 hidden vector

(b) Activation network f_a:  a(t) 是 activation vector

(c) Location network f_l:  l(t) 是 location vector

(d) Glimpse network f_g: g(t) 是 glimpse vector 


(a) and (b) 只是一般的 RNN (many-to-one).  

(c)/where and (d)/what 則是新的 attention model!!

 

Reference 3 的檢討:

(1) Glimpse Sensor is using Flatten + Dense layer. It may be sufficient for MNIST features, however, to fit for real-world image, convolution layers may be used

(2) Recurrent Network is using single layer of RNN Cell. This RNN Cell is supposed to learn both image feature (in order to predict digits label) and location feature (in order to predict next glimpse location). This mixture of responsibility may cause some issue internally.

(3) At the initial step of unrolled RNN, the Location Network randomly choose a position to focus its glimpse as a starting point. This may be improved to have a “less random” start.


** 其中 (2) 是否可用兩個 RNN?  one for location prediction; one for digit prediction?  Yes, also in reference 3 to solve SVHN from Google.

** Refinement:  是否應該有兩個 location networks?  One for global view, one for local view.  就像打賽車 game, 都會有 global map and local scene. 

** Glimpse sensor 如何 scale up and down to get the best scope, using a pyramid-scale concatenate neural network (similar to inception?) 

** Location network 並不容易。目前是用 random sampling.  有更好的方法?

Glimpse network and location network 似乎都用 reinforcement learning.

 

在引入Attention(注意力)之前,图像识别或语言翻译都是直接把完整的图像或语句直接塞到一个输入,然后给出输出。
而且图像还经常缩放成固定大小,引起信息丢失。
而人在看东西的时候,目光沿感兴趣的地方移动,甚至仔细盯着部分细节看,然后再得到结论。
Attention就是在网络中加入关注区域的移动、缩放机制,连续部分信息的序列化输入。
关注区域的移动 (location network)、缩放 (glimpse network) 采用强化学习来实现。

Attention在图像领域中,物体识别、主题生成上效果都有提高。

Attention可以分成hard与soft两种模型:

  • hard: Attention每次移动到一个固定大小的区域
  • soft: Attention每次是所有区域的一个加权和

 

Attention Model in Audio Processing (Reference 6-8)

 

Attention是一种权重向量或矩阵 (similar to CapsNet 的 dynamic routing?),其往往用在Encoder-Decoder架构中,其权重越大,表示的context对输出越重要。计算方式有很多变种,但是核心都是通过神经网络学习而得到对应的权重。通常第i步的输出 Yi 与其 Attention 权重 aij 相关,而权重 aij 与Decoder中的第 i-1 步的隐藏状态、Encoder中的第j层隐藏状态hj相关[3]。接下来通过分析四篇论文来进一步了解其Attention的用法和构成。

第一篇文章是2015年6月Jan Chorowski 的Attention-Based Models for Speech Recognition[4] 这篇文章对Attention的架构图比较清楚,其Encoder端是一个BiRNN结构,Decoder 中第i步的输出Yi与Attention的权重和hj相关,架构如下图1所示:

 NewImage

其中 encoder 是 BiRNN 架構,input vector 是 xi, feature output vector 是 hi.  上圖省略 encoder.  架構和 machine translation 基本相同。

An attention-based recurrent sequence generator (ARSG) is a recurrent neural network that stochastically generates an output sequence (y1, . . . , yT ) from an input x.  In practice, x is often processed by an encoder which outputs a sequential input representation h = (h1, . . . , hL) more suitable for the attention mechanism to work with.

In the context of this work, the output y is a sequence of phonemes, and the input x = (x1, . . . , xL’ ) is a sequence of feature vectors. Each feature vector is extracted from a small overlapping window of audio frames. The encoder is implemented as a deep bidirectional recurrent network (BiRNN), to form a sequential representation h of length L = L’.

At the i-th step an ARSG generates an output yi by focusing on the relevant elements of h:

NewImage

(1) Si 为 decoder中的 hidden state,依赖 Si-1和 gi 和 yi. 

(2) gi 表示 glimpse vector.  也就是 machine translation 的 context vector.  即 Attention 和 encoder hidden layer, H 相乘之后的结果。 aij 即为Attention的权重, hj 为Encoder中第j个 hidden state.

(3) Generate 架构为 RNN 的 Decoder 结构,Si 表示Decoder中的第 i 个状态。
 

以上为Attention的用法,解析来看一下Attention中权重aij是如何进行得到的。Softmax 是加權平均,見 Attention Model 的通用詮釋一文。

aij 是 eij 经过softmax的结果, eij 计算如下(content-based Attention ): W,V,b皆为学到的参数

即Attention的权重aij是和Decoder中第i-1步骤的隐藏状态 si-1相关,和Encoder中的第 j 步的隐藏状态 hj 相关;

eij 还有其它计算方式,就是把上一步骤中的ai-1加入到其中 ( location based Attention),下图中F为卷积操作。

aij还有其他的实现方式:sharpen方式:其中β>1

Smooth方式:

aij还有其他的实现方式:sharpen方式:其中β>1

Smooth方式:

以上就是Attention在语音识别中的初步用法,接下里介绍其在语音识别中的应用。


[8] 的 attention model 和上述架構類似。但用了 windowing approach to reduce the complexity of decoder.

把Attention模型用在了LVCSR中,Bahdanau在上面Attention的基础之上(文中),进行了改进:

1)对Attention的计算范围改变为2w的加窗,加快训练和解码

2)RNN结构为GRU,对RNN增加了时序上的pool,减少RNN长度和计算量

3)加入n-gram,支持WFST解码

其Attention相关的结构如下:下图中的ct等价于 Chorowski 介绍的glimpse,即gi

NewImage

该文最低WER为9.3%,基本达到了苗2015年CTC+3-gram的水平[6]。

然而Attention模型虽然好,但是还是有自身的问题如下:

1)适合短语识别,对长句子识别比较差

2)noisy data的时候训练不稳定

 
 

[10] William Chan 等在 2015 提出的比较经典的Listen, Attend and Spell.

其中Encoder RNN 别名为 Listener,Listener具体架构为一个金字塔RNN结构,用来把低维的语音信号转成高维的特征,其中金字塔RNN加速了训练收敛的速度。

Decoder RNN别名为Speller,Speller为RNN结构,借助于Attention机制,把高维的特征转成对应的文本句子,该文结合语言模型在最好的情况下WER为10.3%。本文最后的一个图也反映了Attention的问题,如下图所示:

NewImage

 
可以看到句子太短(字数在5个字以内),或者句子太长(超过16个字),识别率错误率都非常高了,这也印证了Attention的自身局限性。
 
Suyoun Kim等人在2016年9月的文章[9]提出了Attention与CTC进行结合对语音声学模型建模,其架构如下所示:
 

NewImage

其共用一个Encoder,Decoder分为2个,一个是CTC,一个是Attention,并通过权重λ来给定不同的权重比,CTC做为辅助,使得Attention尽快收敛。

其损失函数如下:

在Encoder结构为4层BLSTM,每层320个节点,Decoder为单向LSTM,节点也为320个

λ为0.2,0.5,0.8的情况下,模型收敛情况如下所示:

对比蓝色的Attention模型还有红色的CTC模型,Attention+CTC模型更快的收敛了,这得益于初始阶段CTC的阶段对齐更准确,使得Attention模型训练收敛更快。最终其CER如下所示:

λ在0.5或者0.8的情况下,字正确率超过了单纯的Attention模型和CTC模型。



** Attention model should apply to feature space instead of raw data?  
==> Ans: feature space seems to be better.


** audio 同時是很重要的 grouping locality 特性。

Video attention network combined with motion vector


MNIST use attention model (reference 3),

Attention model should be more useful for audio (trace voice).

[{"metadata":{},"cell_type":"markdown","source":"## 2 - Neural machine translation with attention\n\nIf you had to translate a book's paragraph from French to English, you would not read the whole paragraph, then close the book and translate. Even during the translation process, you would read/re-read and focus on the parts of the French paragraph corresponding to the parts of the English you are writing down. \n\nThe attention mechanism tells a Neural Machine Translation model where it should pay attention to at any step. \n\n\n### 2.1 - Attention mechanism\n\nIn this part, you will implement the attention mechanism presented in the lecture videos. Here is a figure to remind you how the model works. The diagram on the left shows the attention model. The diagram on the right shows what one \"Attention\" step does to calculate the attention variables $\\alpha^{\\langle t, t' \\rangle}$, which are used to compute the context variable $context^{\\langle t \\rangle}$ for each timestep in the output ($t=1, \\ldots, T_y$). \n\n\n \n \n
\n
\n
\n
\n
\n

**Figure 1**: Neural machine translation with attention

\n"}]

 

 

 

 

 

 

 

 

 

CapsulesNet 和 Neural Network 的差異

Reference

1. 機器學習 “浅谈 CapsulesNet 胶囊网络

2. “一起讀 DYNAMIC ROUTING BETWEEN CAPSULES

3. Nick, “Capsule Networks Are Shaking up AI — Here’s How to Use Them

4. Nick, “Understanding Capsule Networks — AI’s Alluring New Architecture

5. Max in Medium, “Understanding Hinton’s Capsule Networks. Part I: Intuition. 

 

CapulesNet 和一般的 neural network 的不同簡述如下。

NewImage

 

* 所谓 capsulesnet,就是将CNN中每个神经元的 scalar output,替换为一个 vector output.

于是原本的这个 “neuron” 现在也有了一个新名字叫做 “capsule”。

我们可以有一种新的理解方式—既然新的输出是向量,也就是多个純量的结合。

那么胶囊理所当然的可以当成若干个CNN 神经元的结合。* 类比一下CNN和CapsNet,CNN的过程是(convolution)加权求和,激活函数(relu),有用信息的获(maxpooling),CapsNet是这样的:加权求和(向量的加权和),激活函数(squashing),有用信息的获取(dynamic routing)。


下圖是 MNIST (28x28x1) 用 CapsNet 為例。

NewImage

1. Conv1 對原圖做一次 (Conv+ReLu):Input 28x28x1, kernel 9×9, output 20x20x256.

2. PrimaryCaps layer: 對 Conv1 output 再做一次卷積。kernel 9x9x256. 最後成為 32 個 (6x6x8) 膠囊 capsules.


一個膠囊包含數個高度相關的特徵 features, 不像一個神經元 neuron 只有一個特徵。這是 CapsNet 最重要的點。 

舉例而言,人臉包含兩個眼睛,一個鼻子,一個嘴巴。而且要有對的相對位置。

一個膠囊可以把這些特徵正確集合一起如下圖左。一般 neural network 則有可能對下圖左和右都有 activation.

一個膠囊可以視為結構化或模組化的神經元。

NewImage


具體如何產生膠囊 capsules 以及膠囊的數目和大小, TBD.


3. DigiCaps layer. 這層共有 10 個膠囊。每個膠囊對應 0~9 的數字。Shape 10×16.

16 維度的每一維度各代表一些特徵如下。

NewImage


4. Dynamic routing

CapsNet 和 neural network 比較,多了 dynamic routing 取代 max pooling.  

Max pooling 主要的功能是 reduce spatial size, 同時取 maximum activation 提取資訊。

問題是會 loss information,也是 non-reversiable.  在 generative model/decoder 需要重建 image 會有 loss.

* maxpooling依靠区域最大化,以此来提取到了这个区域里最有用的信息,但是却忽略了其他的信息。我们称之为信息丢失。

* routing 目的也是提取有用信息,我们考虑一个问题:我们在pooling 的过程中所丢弃的那些信息,真的没有用么?假设我们识别的一张图片里有一只猫,和一条狗,猫占图片的大部分。于是maxpooling后我们丢弃掉了较少的狗的信息,而保留了较多的猫的信息,于是这张图片被识别为猫。那么狗呢,狗怎么办?* routing的好处就是并不丢弃任何的信息,属于猫的信息那么就将其更多的输出到检测“猫”的高级胶囊中,属于狗的信息就尽可能的都输出给“狗”的高级胶囊。这样的我们最后的结果,猫和狗的得分都会很高。因此Hinton说,Caps更适合去检测那些重叠在一起的图片——overlapping.  這對 audio signal 是否更有用?* Hinton还说routing像attention机制。这个看大家的口味吧,毕竟有所不同,首先就是谁选择谁的问题——attention是高层选底层,caps是底层选高层。

NewImage




 







RBF and Neural Network

Reference: 

1. http://www.cnblogs.com/xbf9xbf/p/4730330.html

 

這節課主要講述了RBF這類的神經網絡+Kmeans聚類算法,以及二者的結合使用。

首先回歸的了Gaussian SVM這個模型:

其中的Gaussian kernel又叫做Radial Basis Function kernel

1)radial:表示輸入點與center點的距離

2)basis function:表示『combined’

從這個角度來看,Gaussian Kernel SVM可以看成許多小的radial hypotheses的線性組合(前面的係數就是SV的alphan和yn)

這裡要介紹的RBF Network也是多個radial hypotheses的線性組合。

RBF Network的結構如下圖:

注意與Neural Network不同的是:RBF Network沒有權重的感念(即Wij)就是輸入向量直接feed進各個RBF中,出來的結果再voting

深度學習語音合成

2D pixelCNN for speech synthesis to reduce the time domain delay or computation of wavenet !!!

 

Reference:

1. Wavenet:Generative Model for Raw Audio (time domain)

2. Saito/GAN: “Statistical Parametric Speech Synthesis Incorporating GAN” (parameter domain)

3. Wei-Ning Hsu” “Learning Latent Representations for Speech Generation and Transformation” (parameter domain)

4. Concatnate

5. RT Luo, “Pixel CNN, Wavenet, GCNN 筆記”, Github

6. Zen, “STATISTICAL PARAMETRIC SPEECH SYNTHESIS USING DEEP NEURAL NETWORKS

7. Yang, “Statistical Parametric Speech Synthesis Using Generative Adversarial Networks”

8.  Illinois lecture note, “Deep Learning for Audio”   => Excellent notes.

 

 

語音合成 (speech/sound synthesis, or text to speech/TTS) 顯然是生成模型 (generative model).

Generative model 有兩種:

1. Sample low dimension noise (or prior information) and maps to high dimension sound/speech. 

也就是 generated PDF to approximate voice/sound PDF (PG ~ Pdata).  

有什麼用?

一是 generated various sounds/voice for data augmentation for scene detection and voice detection.  這在 Dcase challenges 已被應用。  

二是結合 high level semantics/syntax model 可以重現嬰兒學習語言的過程 (?)


2. Conditional generative model 要把 low dimension text maps to high dimension speech.  Text 就是 conditional input.   就像影像 (generate samples | condition=“train”) 就會產生多個火車影像。(見李宏毅 youtube GAN videos).

Speech 乍看之下是 1 對 1, 例如 “火車” 對應的語言是固定的。這也是 concatenate model 的做法。很容易聽起來像是機器的聲音。實際上即使同一個人說 “火車“ 都會有不同的聲調,語速,情緒。

Probabilistic generative model 的好處就是產生的 speech 是 distribution.  Hopefully 更接近人聲。

 

以深度學習而言,generative model 主要包含以下幾種: 

NewImage

基本也有 Non-probabilistic models 例如 concatenate method.  

Probabilistic generative model 又有 PixelRNN/PixelCNN, Variational autoencoder, 和 GAN 三大類。

PixelCNN: WaveNet (Reference 1).    GAN: Saito’s paper (Reference 2).    VAE: Hsu’s paper (Reference 3).  


PixelCNN and Wavenet

Wavenet 的特點就是 time domain waveform generation.  

In summary: Good quality, but slow in training and generation (pixel-by-pixel)!!

 

Pixel CNN是基于之前 Deepmind Pixel RNN的文章。Pixel RNN基本上就是直接套用Language modeling的方法运用到图像上,只是因为图像是二维的,他们用了grid LSTM。(其实他们在pixelRNN那篇论文中也提到了pixelCNN,但是那篇文章中的pixelCNN有盲点的问题,所以表现不如pixelRNN好,是以baseline的形态出现的。(盲点的意思是,预测下一个像素时没有用到所有之前的像素信息))

Conditional Pixel CNN就是他们在nips发表的新模型。这个模型在pixelRNN里面提出的那个有盲点模型上进行了改进,使得不再拥有盲点。他们提出了两个方向上的卷积网络,垂直的和水平的。垂直的网络可以看到所有需预测像素上方的像素 (在下图中微蓝色区域),而水平的网络可以看到所有该像素左边的像素(图中对应左边区域)



注意的是,垂直网络中的特征会被fuse到水平网络中,所以实际上水平网络也能看到上方的像素。(下图有网络的示意图,其实就是一个箭头。)。 

他们在水平的网络中使用的residual,垂直的没有使用。

为了避免看到将来的像素,他们使用了带掩膜的卷积。另外他们使用了门结构。

y=tanh (Wf∗x)⊙σ(Wg∗x)

这个结构借鉴自LSTM, highway network和neural GPU。并且这个结构能提高结果。下图是gated pixel cnn的一层的结构。

(卷积层为绿色, element-wise multiplications和加法层为红色。 W_f和W_g的卷积结果,2p长度的特征,在经过蓝色小菱形后分开成两组长度为p的特征。)

 

通过增加门单元的输入,可以获得条件pixelCNN(额外的输入可以是跟位置有关,也可以无关)。实验显示它们的模型在多个数据集上能够获得最好的平均负log似然。

 

Wavenet

Wavenet和pixelCNN基本上属于孪生兄弟,结构非常类似。但是从生成的音频质量来看要比pixel CNN生成图片成功的多。这个模型是直接用声音的原始波形来进行训练的,非常了得。

由于声波采样非常密集,所以为了提高receptive field,文章使用了dilated convolution,可以在保持和原本卷积层相同数量的参数情况下,几倍地增加receptive field。

(dilated convolution就是跳着卷)

他们最后的模型,就是多个上图的结构进行多层叠加。

虽然音频的输出是连续的,但是他们这里将输出进行了量化,变成了256个离散值,转化成了分类问题。他们也用了residual,和与pixelcnn一样的门结构,另外,还用了skip connection。最终结构如下图所示。

和pixelcnn类似,通过添加输入,可以将这个模型转化成条件生成模型。条件输入可以是一个表示说话者身份的one-hot的向量;或者是输入文本的linguistic features来进行TTS(text to speech).

虽然他们用dilated卷积增加了receptive field,但是receptive field最终也只有300毫秒。所以他们又另外添加了一个模块叫context stacks。这个模型在更小的分辨率上工作,所以能看到更之前的信号。

==> How about using frequency domain feature to extend the time domain information???

他们的结果非常酷炫,见这里.

之前的wavenet以慢著称,说生成一秒要90分钟,但是最近的一篇文章提出了一个加速方法。其实算法的想法很简单,就是移除一些重复计算(其实跟动态规划的想法很像)。与pixelcnn一样,训练也很慢。

Question:  How about use 2D PixelCNN with MFCC/Spectrogram?  好處是什麼? Shorten the time domain receptive field by adding the frequency domain features.


In summary: Good quality, but slow in training and generation (pixel-by-pixel)!!

 


(Conditional) GAN

Reference 2,6,7 都是 statistical parametric speech synthesis (SPSS) using generative model.

Reference 2, 6, 7 都是 conditional GAN.  和一般的 GAN 有一些不同。    

Parametric synthesis 不是 time domain waveform generation, 而是 parameter (~frequency) domain generation 如下圖。Statistics of speech parameter vector sequences —> (pass) parameter generation —> (pass) waveform synthesis. 這和 time domain 的 wavenet 剛好是 dual aspect. 

NewImage


DNN-Based TTS

GAN 包含 discriminator and generator.  詳細原理見前文。

Discriminator training takes generated speech params and natural speech params,

做 forward and backward prop and gradient descent on discriminator parameters.

NewImage

 下一步是 Acoustic models training (generator training). 同樣做 forward and backward prop and gradient ascent on acoustic model parameters.

NewImage


Original GAN (by Ian Goodfellow)

Discriminator loss:

NewImage

Adversarial loss:

NewImage

Conditional GAN

GAN by itself is unsupervised learning generative model.  不過用在 TTS (text to speech) 是 supervised learning.

也就是 conditional generative model.   如何做?

SPSS: statistics parametric speech synthesis.  

定義 Lg(y, y_hat) 包含 Lmge.

NewImage

NewImage 

NewImage

以上 minimize Lg(y, y_hat) 同時 minimize L_MGE and L_ADV. 

Expectation L_MGE and L_ADV is controlled by ratio factor ω.

如果 Lg 只有 L_ADV, 就變成普通 GAN.   


NewImage 

似乎是 supervised learning?  和 GAN unsupervised learning 不一樣? YES!


Answer: 

NewImage

 

KL-GAN and RKL-GAN

NewImage 

NewImage

JS-GAN

NewImage

W-GAN

NewImage

NewImage

 

Least Squares GAN (LS-GAN)

NewImage

Training 出來的結果如下。

NewImage

NewImage

 

Conditional GAN 不同架構

李宏毅 youtube 的 conditional GAN 例子:Text to image structure 如下。

Generator 雖然看來多了 input c:train.  其實和一般 GAN generator 一樣。只是多了 label.

重點是改變了 discriminator 的架構,加了 input C.

Discriminator 的 training: positive example 加上 label; negative label 有兩種, label match with fake image and mismatch label with real image.

NewImage

 

Saith’s paper 卻不同:

Discriminator 和一般 GAN D 完全相同。只判斷 real or fake images.

Generator 則和一般 GAN G 不同。Training 包含 condition C!!  Condition C 就是 (x, y) pair.

如下圖 G back-prop 包含一般 GAN 的 L_ADV 和額外的 L_MGE path!

NewImage


Reference 7: Conditional GAN 理論

Saito paper 的根據來自 reference 7.  見以下說明。其實就是多了 Lmse term.

NewImage

NewImage

NewImage

 

NewImage

 

 NewImage

 

Discriminator Training:

NewImage

 

 

Lmse 和 variational autoencoder 很類似如下:

NewImage

第一項假設 P(X|z) 是 Gaussian, Ez~Q maximization 變為 Lmse minimization.

NewImage

 


 

 

 

 

 

Divergence, Optimal Transport, PDF Similarity Measure

 

 

NewImage

 

Divergence family 包含 GAN and VAE

Optimal transport 包含 WGAN and ?? VAE??

 

Divergence 似乎只重結果。OT 過程很重要。

 

F-divergence 是把 divergence 變成 max {xt – f*(t)}  optimization problem.  因此 min div = min max {} 變成 GAN.

同樣 Optimal transport 本身就是 optimization problem.   Min Optimal Transport 也變成 GAN (OT-GAN).

Integral Probability Metric 也是 optimization problem.  也會變成 GAN

 

F-divergence 是非對稱。另外最大的問題是 P and Q disjoint 會有 gradient vanity. 

P=Q  f-divergence = 0;  但 P and Q disjoint.  Divergence = infinite (KL) or log2 (JS)

在 high dimension P and Q disjoint 的機率為 1!!!

 

Optimal transport 是對稱。 即使 P and Q disjoint, 仍可以有很好的 metric 讓 P and Q 接近。

 

 

 

 

WGAN 原理

Reference:

1. 令人拍案叫絕的Wasserstein GAN

2. 李宏毅: Improved GAN


GAN 最大的問題是難收斂。min max V(G, D) 是在找 saddle point. 

Original GAN and f-GAN 最大的問題是 D 太強。以致 D 的 gradient 大多是 0.  而無法訓練出好的 G.


WGAN 是用 optimal earth mover distance (i.e. W-distance) 取代 f-divergence.

NewImage

1. 結果是讓 D 變弱!


NewImage

 

NewImage

NewImage

 太強的 discriminator 會讓 D(x) 的 gradient vanish at both places.

NewImage 

 

NewImage

 

2. 另一個最大的好處是可以直接觀察或測量收斂的結果。

 NewImage

 

Gain Clipping WGAN

  • 判別器最後一層去掉sigmoid
  • 生成器和判別器的loss不取log
  • 每次更新判別器的參數之後把它們的絕對值截斷到不超過一個固定常數c
  • 不要用基於動量的優化算法(包括momentum和Adam),推薦RMSProp,SGD也行
NewImage

 

Wasserstein GAN(下面簡稱WGAN)成功地做到了以下爆炸性的幾點:

  • 徹底解決GAN訓練不穩定的問題,不再需要小心平衡生成器和判別器的訓練程度
  • 基本解決了collapse mode的問題,確保了生成樣本的多樣性 
  • 訓練過程中終於有一個像交叉熵、準確率這樣的數值來指示訓練的進程,這個數值越小代表GAN訓練得越好,代表生成器產生的圖像質量越高(如題圖所示)
  • 以上一切好處不需要精心設計的網絡架構,最簡單的多層全連接網絡就可以做到

 

 

 

 

 


Unify Framework for VAE and GAN

 

 

 

Reference:

1. Implicit generative models: dual vs. primal approaches

2. The Information-Autoencoding Family: A Lagrangian Perspective on Latent Variable Generative Modeling

3. Training Generative Adversarial Network Via Primal-Dual Subgradient Method

 

太陽底下無新鮮事。Lagrangian Primal-Dual 在 optimisation 的各個領域一再出現。


VAE and GAN 在 Ian Goodfellow 的分類是:

VAE: Maximum Likelihood -> Explicit density -> Approximate density

GAN: Maximum Likelihood -> Implicit density -> Direct

乍看之下除了都是 Maximum Likelihood, 兩者的 approaches 完全不同。這兩個說法都有問題。

1. GAN 並非都是 Likelihood-base, 也能有 Likehood-free (reference 2).

2. VAE and GAN 可視為 Lagrangian primal-dual 的不同面向。

 

NewImage


Reference 1 的 outline:

NewImage

 

VAE: Lagrangian primal formulation to minimize KL-divergence.

GAN and f-GAN: Lagrangian dual formulation to minimize f-divergence (including KL-divergence)

所以 VAE and GAN 是同一 Lagrangian 的兩面 (primal and dual).


Review of Lagrangian Primal and Dual

完整的 Lagrangian primal and dual 可以參考 Stanford Boyd 的 “Convex Optimisation”.

也可以參考前文。


NewImage

Px 可以是 image dataset, for example.

如何讓 PG 趨近 Px?  乍看之下應該 min Df(PG || Px)   Df 是 divergence, 類似距離。

問題是 (1) 我們沒有 Px distribution; (2) 另外要用 NN, 需要引入 latent variable z.


NewImage

PG(x|z) 在 variational autoencoder 其實是 generative model 的 decoder,一般用 NN 來實現。 


先看

NewImage

NewImage

 

 

 NewImage

 Where G is generator.  T is discriminator.

Define V = Ex(T(X)) – Ez [ f*( T(G(Z)) ) ]  =>   min max V(G, D)

 

 

 

NewImage 


KL(Px||PG) = int Px log (Px / PG) dx = int Px log Px – int Px log PG = C – EPx { log PG  }}

VAE 等價 maximise expectation of log likelihood.


NewImage

 

NewImage

 

Mutual information and KL divergence relationship:

NewImage

NewImage

 










 

 

 

 

 

 

 

Lagrangian Primal and Dual

 

Reference:

1. Stanford EE364A lecture note.

2. University of Alberta, “Convex Analysis, Duality and Optimization

 

Lagrange Primal and Dual Theorem 貫穿所有 optimization problem.

幾個問題:

1. 數學的原理

2. 幾何的直覺

3. Lagrangian and Hamiltonian mechanics 的關係


Lagrange primal and dual theorem 基本是 convex optimization + minimax 

 

Convex optimization 標準式是 (EE364A of Stanford):


NewImage

NewImage

NewImage

注意 fo(x) 和不等式 (inequality) constraints 都是 convex functions.

但等式 constraints (equality) 部分是 Affine function (linear function)! 

這在 Lagrangian dual form 非常重要!  才可以保證 dual form 的 objective function (𝜈 function) 是 convex!

 

 

Lagrange Primal Form:

NewImage

解 Lagrangian primal form 是用 Lagrange multiplier method, 就是微分法。一般使用數值方法如 CVX.

 

Lagrange Dual Form:

Dual form 最重要的精神是把 convex optimization 轉換到另一個 domain (ν, λ) 的 convex optimization 問題。

主要是 convex function over ν, λ > 0 是 constraints.  

NewImage



乍看很神奇,如何做到?現成的例子就是 Legendre transform or (Fenchel) conjugate.  

****************************************************************************

f(x) 是 convex function.    F*(ν) = max( νx – f(x) ) or sup( νx – f(x) ).  

F*(v) 也是 convex function. (F*(v))* = f(x), i.e. 

f(x) = max( vx – F*(v) )  or sup( vx – F*(v) )


 f(x) 是 convex function, 可以定義 min f(x)

解 min f(x) 有兩種作法:

1. 微分法:f’(x) = 0  ==> 反推 F*(v=0) = max ( -f(x) ) = -1 * min f(x)

min f(x) = -F*(v=0)


2. minimax method:

min_x f(x) = min_x max_v ( vx – F*(v) )

假設可以交換 min_x and max_v (TBD later)

≈ max_v min_x ( vx – F*(v) ) = max_v { -F*(v) + min_x (vx) }

因為 min_x (vx) = -∞  除了 v = 0!!

所以 max_v { -F*(v) + min_x (vx) } = -F*(v=0) 

****************************************************************************


比較 Legendre conjugate 和 Lagrangian dual function, 差異如下:
1. Legendre conjugate 是 max( vx – f(x) );  和 Lagrangian dual function 的 f(x) 差個負號。
2. Legendre conjugate 的 linear term: vx; 和 Lagrangian dual function 的 linear term: vi hi(x) ~ vi ai’ x 差個 scaling factor.
    還有 hi(x)=0 是 equality constraint; 但在 Legendre transform vx 是 open term.
3. Legendre transform 把 convex function 轉為 convex function (v domain).  Lagrangian dual function 則轉為 concave function!!!!

結論:如果不論 λi, Lagrangian dual function 和 Legendre transform 基本是類似的轉換。但 Legrangian dual function 變為 concave function (due to the negative sign); Legendre transform 仍然是 convex function!
 
因此找 convex optimization in:
Legendre conjugate:   min_x f(x) = -F*(v=0).  推導如上。
Lagrangian dual form: min f(x) = fo(x) =
NewImage

因為 g(λ, ν) 是 concave function.  目標是找 d* = max( g(λ, ν) ), 也是 primal 問題的 lower bound.   p* – d* 稱為 duality gap.
在特定條件下 (i.e. KKT condition), d* = p*  也就是 duality gap = 0
注意 min f(x) ≠ g(ν=0) even when no inequality !!


NewImage

p* ≽ d*

 

Combine Lagrange dual function and Legendre conjugate

雖然 Legendre conjugate 和 Lagrange dual function 不同。可以結合一起如下。
Legendre conjugate 可以簡化 Lagrange dual function.
NewImage
 
 
 

NewImage 

Minimax 就是如何交換 min max f(x,y) —> max min f(x, y)

 

幾何詮釋

切線配 convex function; TBA


Minimax Theorem

Weak Duality (p* ≽ d*)

NewImage

 

Strong Duality (p* = d*)

NewImage

 

Let’s Prove Weak Duality  (p* ≽ d*)

NewImage

p* = min f(x) given constraints = min_x max_uv L(x, u, v) ≽ max_uv min_x L(x, u, v) = max_uv g(u, v) = d*

 

NewImage

NewImage 

重點是 min max L 是解 saddle-point problem!! 

 

 

Saddle Point Problem 


考慮 Lagrangian Mechanics  

L(q, q_dot, t)  and  S = int { L(q, q_dot, t) }  =>  min S = min int L

H(p, q, t) = max (p q_dot – L)  where p = dL/dq_dot

min int L = min int max_p (p q – H) = min_q max_p int (p q – H) ~ max min int (p q – H)   ??   fighting between p and q??


GAN

fighting between G and D