簡介
機器翻譯、人機對話、聊天機器人(如小冰、小愛、小藝。。。)等等對話生成場景人物,這些都是應用在當今社會都或多或少的運用到了我們這裡所說的Seq2Seq。
Seq2Seq模型是輸出的長度不确定時采用的模型。seq2seq屬于encoder-decoder結構的一種。
本質上就是兩個RNN模型的合作,一個作為編碼器、一個作為解碼器。
這種情況一般是在機器翻譯的任務中出現,将一句中文翻譯成英文,那麼這句英文的長度有可能會比中文短,也有可能會比中文長,是以輸出的長度就不确定了。
如下圖,輸入的中文長度為4,輸出的英文長度為2。
編碼器encoder:負責将輸入序列壓縮成指定長度的向量,這個向量就可以看成是這個序列的語義,這個過程稱為編碼,如下圖。
擷取語義向量最簡單的方式就是直接将最後一個輸入的隐狀态作為語義向量C。
也可以對最後一個隐含狀态做一個變換得到語義向量,還可以将輸入序列的所有隐含狀态做一個變換得到語義變量。
解碼過程:負責根據語義向量生成指定的序列,如下圖。
将encoder得到的語義變量作為初始狀态輸入到decoder的RNN中,得到輸出序列。
上一時刻的輸出會作為目前時刻的輸入,而且其中語義向量C隻作為初始狀态參與運算,後面的運算都與語義向量C無關。
解碼方式還有另外一種,就是語義向量C參與了序列所有時刻的運算,如下圖。
上一時刻的輸出仍然作為目前時刻的輸入,但語義向量C會參與所有時刻的運算。
Softmax激活函數。字面上來說,可以分成soft和max兩個部分。
max故名思議就是最大值的意思。
Softmax的核心在于soft,而soft有軟的含義,與之相對的是hard硬。
很多場景中需要我們找出數組所有元素中值最大的元素,實質上都是求的hardmax。
hardmax有什麼缺點呢?
過于唯一啦。hard就是硬。
隻能求出唯一一個資料!
soft的概念,Softmax的含義就在于不再唯一的确定某一個最大值,而是為每個輸出分類的結果都賦予一個機率值,表示屬于每個類别的可能性。
激活函數
softmax是一種激活函數。引入激活函數是為了增加神經網絡模型的非線性。沒有激活函數的每層都相當于矩陣相乘。就算你疊加了若幹層之後,無非還是個矩陣相乘罷了。
單個輸出節點的二分類問題一般在輸出節點上使用Sigmoid函數。
擁有兩個及其以上的輸出節點的二分類或者多分類問題一般在輸出節點上使用Softmax函數。