在前面的 Transformer 的文章中有提到了 auto-regressive 的特質。
在 When Recurrent Models Don’t Need to be Recurrent 這篇文章以及他的論文當中又在重述了這件事。
他們探討了是不是所有 recurrent 模型都可以被換成 auto-regressive 的模型呢?
繼續閱讀在前面的 Transformer 的文章中有提到了 auto-regressive 的特質。
在 When Recurrent Models Don’t Need to be Recurrent 這篇文章以及他的論文當中又在重述了這件事。
他們探討了是不是所有 recurrent 模型都可以被換成 auto-regressive 的模型呢?
繼續閱讀繼 Attention model 之後,由於 recurrent 架構的特性一直無法善用 GPU 的資源做加速。
這時 Google Brain 團隊就看到別人在用 self-attention 機制,也是基於 recurrent 架構,解決了不少問題,用在閱讀理解、摘要、文字蘊涵(textual entailment)及語句表示的問題上。
Google Brain 團隊就提出了史上第一個不需要依賴任何 recurrent 架構的 self-attention 機制模型,Transformer。
(跟變形金剛一樣的名字耶!帥吧!)
繼續閱讀繼 Seq2seq model 之後,真正可以做到 end-to-end 翻譯的,很多都是用了 attention model。
Attention model,正確來說,不是指特定的一個模型,他是模型的一個部份或是一種設計,所以有人叫他 attention mechanism。
Attention model 被用在機器翻譯、語句的摘要、語音辨識、影像理解(image caption),算是用途非常廣泛。
繼續閱讀當大家正在開心的用著 RNN 跟 LSTM 等等模型之時,就有人跳出來了。
不要再用 RNN 為基礎的模型了!!
為什麼呢?
基本上裏面提到 vanishing gradient 的問題一直沒有解決以外,還有沒有辦法善用硬體的侷限在。
像這種循序型的模型,模型天生無法平行化運算,所以 GPU 就無用武之地,只能靠 CPU 慢慢跑。
那有什麼解決辦法呢?
Attention Is All You Need 這篇文章提出了 Transformer 這個模型,基本上這個模型使用了 self-attention 的機制。
要講這個之前我們要先聊聊 attention model。在 attention model 之前,sequence-to-sequence model 做出了重大的突破。一個具有彈性,可以任意組合的模型誕生了,管你是要生成句子還是怎麼樣。原本是只有 RNN 一個單元一個單元慢慢去對映 X 到 Y,sequence-to-sequence model 將這樣的對應關係解耦,由一個 encoder 負責將 X 的資訊萃取出來,再經由 decoder 將資訊轉換成 Y 輸出。
但是 LSTM 還是沒辦法記憶夠長的,後來 attention model 就誕生了。乾脆就將 encoder 所萃取到的資訊紀錄下來,變成一個,然後再丟到 decoder 去將資訊還原成目標語言,就可以完成機器翻譯了。
但是這種方式還是不脫 recurrent model,那就乾脆做成 self-attention 的機制,也就是這邊的 Transformer,完全摒棄了 recurrent 的限制。
接著是今年6月的文章 When Recurrent Models Don’t Need to be Recurrent,當你的 recurrent model 不必再 recurrent!
也就是將 RNN 的問題又重述了一遍,並且提出大家都漸漸以 autoregressive generative model 來解決這樣的問題。
這篇算這引言,我接下來會開始一一解釋模型。
接續上一篇。
那大家所熟知的 RNN 是怎麼回事呢?我們把假設改了一下:
首先,在這邊的狀態會以一個向量做表示,大家應該也知道 RNN 的 input 是一個向量,當中的狀態也是一個向量,最後的 output 也是一個向量。而這些向量當中的的值都是連續的 $\mathbb{R}^n$(假設向量大小為 n),不像上面的模型都是離散的 $k$(假設有 k 個狀態),所以在空間上的大小可以說是擴大非常多。
接下來我們來看看時間的狀態轉換:
在 RNN 中一樣含有內在狀態,但不同的是 RNN 可以在每個時間點上給輸入向量($\mathbf{x^{(t)}}$),所以可以根據前一個時間點的內在狀態($\mathbf{h^{(t)}}$)跟輸入向量去計算輸出,或是外在狀態($\mathbf{y^{(t)}}$)。
所以大家會在一些論文上看到模型的狀態關係式長下面這個樣子:
$$
\mathbf{h^{(t)}} = f(\mathbf{x^{(t)}}, \mathbf{h^{(t-1)}}) = \mathbf{x^{(t)}} W_x + \mathbf{h^{(t-1)}} W_h + \mathbf{b}
$$
$$
\mathbf{y^{(t)}} = g(\mathbf{h^{(t)}}) = sigm(\mathbf{h^{(t)}} W_y)
$$
這邊特別引入了非線性的轉換($sigm$)來讓模型更強大。
隨著從一開始的馬可夫模型到這邊應該對這幾個模型有點感覺,其實 RNN 可以說是很大的突破,在假設上放了很多元素讓模型變得更強大。
人們為了改進 RNN這個模型的記憶性,希望他可以記住更遠以前的東西,所以設計了 LSTM 來替換他的 hidden layer 的運作模式,後期更有 GRU,還有人說只需要 forget gate 就有很強大的效能的 MGU。這些都是對於記憶性做的改進,個人覺得這些在工程上的貢獻比較大,真正學術上的突破其實還好。
今天的整理就先到這邊啦!
上次我們講完在空間上,我們可以知道資料的區域性,並且利用 convolution 來萃取特徵。
這次我們來講時間,其實不一定要是"時間"序列資料,只要是有先後順序的資料就可以。
在時間序列分析及統計的領域中,我們有基礎的馬可夫模型(Markov chain)。
繼續閱讀標題這不是一個專有名詞。
在電腦視覺的領域中有幾個有名的問題:
今天我們來談談 activation function 吧!
談 activation function 之前先要談談線性轉換。
有上到比較後面的線性代數的同學,應該有爬過 SVD 這座高山。
推薦可以看周老師的線代啟示錄 奇異值分解 (SVD)
我們可以知道一個矩陣可以被看成線性轉換,而矩陣這個線性轉換可以被分解成 3 個矩陣:
繼續閱讀這邊我們回到我們的 convolution layer,如果把以上的一維向量拓展到二維的矩陣資料會長什麼樣子呢?
我們先來看二維的 cross-correlation 長什麼樣子。
繼續閱讀目標是計算生物學家!Systems Biology, Computational Biology, Machine LearningJulia Taiwan 發起人
研發替代役研究助理