1. 程式人生 > >TensorFlow實戰:Chapter-7上(RNN簡介和RNN在NLP應用)

TensorFlow實戰:Chapter-7上(RNN簡介和RNN在NLP應用)

RNN簡介

迴圈神經網路是一類用於處理序列資料的神經網路。就像卷積網路是專門處理網格化資料X(如一個影象)的神經網路,迴圈神經網路是專門用於處理序列x(1),...,x(τ)的神經網路。正如卷積網路可以很容易地擴充套件到具有很大寬度和高度的影象,以及處理大小可變的影象,迴圈網路可以擴充套件到更長的序列,且大多數迴圈網路可以處理可變長度的序列。

從多層網路出發到迴圈網路,我們需要利用20世紀80年代機器學習和統計模型早期思想的優點:在模型的不同部分共享引數。引數共享使得模型能夠擴充套件到不同形式的樣本(這裡指不同長度的樣本)並進行泛華。如果我們在每個時間點都有一個單獨的引數,不但不能泛化到訓練時沒有見過的序列長度,也不能在時間上共享不同序列長度和不同位置的統計強度。

為了簡單起見,我們說的RNN是指在序列上的操作,並且該序列在時刻t(1τ)x(t)。在實際情況中,迴圈網路通常在序列上的小批量上操作,並且小批量的每項具有不同序列長度τ。此外,RNN可以應用於跨越兩個維度的空間資料(如影象)。當應用於涉及時間的資料,並且將整個序列提供給網路之前就能觀察到整個序列時,網路可具有關於時間向後的連線。

序列建模方法:展開計算圖

計算圖是形式化一組計算結構的方式,如那些涉及將輸入和引數對映到輸出和損失的計算。我們對展開(unfolding)遞迴或迴圈計算得到的重複結構進行解釋,這些重複結構通常對應於一個事件鏈。展開這個計算圖將導致深度網路結構中的引數共享。

如:考慮動態系統的經典形式:

s(t)=f(st1;θ)=f(f(st2;θ);θ)=...

其中s(t)稱為系統的狀態。s在時刻t的定義需要參考時刻t1時同樣的定義,故上式是迴圈的。
以上述方式展開等式,就能得到不涉及迴圈的表達。現在我們用傳統的有無環計算圖表達。

這裡寫圖片描述

另一個例子,考慮外部訊號x(t)驅動的動態系統,

s(t)=f(s(t1),x(t);θ)
可以看到,當前狀態包含了整個過去序列的資訊

很多迴圈神經網路使用下式或類似的公式定義隱藏單元的值。為了表明狀態是網路的隱藏單元,我們使用變數h代表狀態重寫式:

h(t)=f(h(t1),x(t);θ)

如下圖所示,典型RNN會增加額外的架構(我們所說的展開

(unfolding)就是這個操作)。

這裡寫圖片描述

當訓練迴圈網路根據過去預測未來時,對映任意長度的序列(x(t),x(t1),...,x(2),x(1))到一固定長度的向量h(t).根據不同的訓練準則,摘要可能選擇性地精確保留過去序列的某些方面。例如,如果在統計語言建模中使用的RNN,通常給定前一個詞預測下一個詞,可能沒有必要儲存時刻t前輸入序列中的所有資訊;而僅僅儲存足夠預測句子其餘部分的資訊。

我們可以用一個函式g(t)代表t步展開後的迴圈:

h(t)=g(t)(x(t),x(t1),...,x(2),x(1))=f(h(t1),x(t);θ)

函式g(t)將全部的過去序列(x(t),x(t1),...,x(2),x(1))作為輸入來生成當前狀態,展開的迴圈架構允許我們將g(t)分解為函式f的重複應用。因此,展開過程引入兩個主要優點:

  • 無論序列的長度,學成的模型始終具有相同的的輸入大小,因為它指定的是從一種狀態到另一種狀態的轉移,而不是在可變長度的歷史狀態上操作。
  • 我們可以在每個時間步使用相同引數的相同轉移函式f

這兩個因素使得學習在所有時間步和所有序列長度上操作單一的模型f 是可能的,而不需要在所有可能時間步學習獨立的模型g(t)。學習單一的共享模型允許泛化到沒有見過的序列長度(沒有出現在訓練集中),並且估計模型所需的訓練樣本遠遠少於不帶引數共享的模型

迴圈神經網路

基於展開和引數共享的思想,我們可以設計各種迴圈神經網路。

1. 每個時間步都有輸出,並且隱藏單元之間有迴圈連線的迴圈網路

這裡寫圖片描述

我們看一下圖上的RNN的前向傳播公式。這個圖沒有指定隱藏單元的啟用函式。這裡假設使用雙曲正切啟用函式。此外,圖中沒有明確指定何種形式的輸出和損失函式。我們假定輸出是離散的,如用於預測詞或字元的RNN。表示離散變數的常規方式是把輸出o作為每個離散變數可能值的非標準化對數概率。然後,我們可以應用softmax 函式後續處理後,獲得標準化後概率的輸出向量y^。RNN 從特定的初始狀態h(0)開始前向傳播。從t=1t=τ的每個時間步,我們應用以下更新方程:

a(t)=b+Wh(t

相關推薦

TensorFlow實戰Chapter-7RNN簡介RNN在NLP應用)

RNN簡介 迴圈神經網路是一類用於處理序列資料的神經網路。就像卷積網路是專門處理網格化資料X(如一個影象)的神經網路,迴圈神經網路是專門用於處理序列x(1),...,x(τ)的神經網路。正如卷積網路可以很容易地擴充套件到具有很大寬度和高度的影象,以及

TensorFlow實戰Chapter-8(Mask R-CNN介紹與實現)

簡介 程式碼源於matterport的工作組,可以在github上fork它們組的工作。 軟體必備 復現的Mask R-CNN是基於Python3,Keras,TensorFlow。 Python 3.4+ TensorFlow 1.3

TensorFlow實戰Chapter-4CNN-2-經典卷積神經網路AlexNet、VGGNet))

引言 AlexNet AlexNet 簡介 AlexNet的特點 AlexNet論文分析 引言

TensorFlow實戰Chapter-3CNN-1-卷積神經網路簡介

卷積神經網路簡介 卷積神經網路(convolutional neural network,CNN)最初是用來解決影象識別等問題設計的,隨著計算機的發展,現在CNN的應用已經非常廣泛了,在自然語言處理(NLP)、醫藥發現、文字處理等等中都有應用。這裡我

TensorFlow實戰Chapter-6CNN-4-經典卷積神經網路ResNet))

ResNet ResNet簡介 ResNet(Residual Neural Network)由微軟研究院的何凱明大神等4人提出,ResNet通過使用Residual Unit成功訓練152層神經網路,在ILSCRC2015年比賽中獲得3.75%的

TensorFlow實戰Chapter-1TensorFlow介紹)

人工智慧、機器學習與深度學習 從計算機發明之初,人們就希望它能代替人們完成重複性勞動,而計算機要想像人類一樣智慧的完成許多工作,需要掌握這個世界海量的知識。 為了使計算機更多的掌握開放環境(open domain)下的知識,研究人員做了許多工作,其

TensorFlow實戰Chapter-5CNN-3-經典卷積神經網路GoogleNet))

GoogleNet GoogleNet 簡介 本節講的是GoogleNet,這裡面的Google自然代表的就是科技界的老大哥Google公司。 Googe Inceptio

TensorFlow實戰Chapter-9下(DeepLabv3+在自己的資料集訓練)

基本配置 資料集處理 我的資料集是3分類問題,但因為資料集的保密協議,在後面的demo中我沒有放出原圖片,我會盡量將訓練細節寫出來。為了方便記錄,我又使用了CamVid資料集(從這裡下載)測試了一下。 資料集處理分成三大步: 標註資料 製作

tensorflow實戰端到端簡單粗暴識別驗證碼反爬利器)

今天分享一下如何簡單粗暴的解決驗證碼的辦法 背景: 對於一個爬蟲開發者來說,反爬蟲無疑是一個又愛又恨的對手,兩者之間通過鍵盤的鬥爭更是一個沒有硝煙的戰場。 反爬蟲有很多措施,在這裡說說驗證碼這一塊 論爬蟲修養:大家都是混口飯吃,上有老下有小,碼農何苦為難碼農?爬資

tensorflow實戰端到端簡單粗暴識別驗證碼反爬利器OA信用盤平臺可殺大賠小)

今天分享一OA信用盤平臺可殺大賠小(殺豬)QQ2952777280【話仙原始碼論壇】hxforum.com下如何簡單粗暴的解決驗證碼的辦法背景:對於一個爬蟲開發者來說,反爬蟲無疑是一個又愛又恨的對手,兩者之間通過鍵盤的鬥爭更是一個沒有硝煙的戰場。反爬蟲有很多措施,在這裡說說驗證碼這一塊論爬蟲修養:大家都是混口

TensorFlow實戰經典卷積神經網路AlexNet、VGGNet)

下面表格是兩個網路的簡單比較: 特點 AlexNet VGGNet 論文貢獻 介紹完整CNN架構模型(近些年的許多CNN模型都是依據此模型變種來的)和多種訓練技巧 CNN模型復興的開山之作 使用GPU加速

Tensorflow實戰Word2Vec_Skip_Gram原理及實現多註釋)

        Word2Vec也稱Word Embeddings,中文的叫法為“詞向量”或“詞嵌入”,是一種非常高效的,可以從原始語料中學習字詞空間向量的預測模型。         在Word2Vec出現之前,通常將字詞轉為One-Hot Encoder ,一個詞對應一個

Chapter 7 Integrity完整性), Views視圖), Security安全性), and Catalogs目錄)

ctu 具體實現 grant rtu con 空值 ont tro access from Database Design to Physical Form CREATE TABLE integrity constraints (完整性約束) CREATE VIEW S

TensorFlow的序列模型程式碼解釋RNN、LSTM)

  1、學習單步的RNN:RNNCell、BasicRNNCell、BasicLSTMCell、LSTMCell、GRUCell (1)RNNCell 如果要學習TensorFlow中的RNN,第一站應該就是去了解“RNNCell”,它是TensorFlow中實現RNN的基本單元,每個RNNC

tensorflow實戰MNIST手寫數字識別的優化2-代價函式優化,準確率98%

最簡單的tensorflow的手寫識別模型,這一節我們將會介紹其簡單的優化模型。我們會從代價函式,多層感知器,防止過擬合,以及優化器的等幾個方面來介紹優化過程。    1.代價函式的優化:             我們可以這樣將代價函式理解為真實值與預測值的差距,我們神經

TensorFlow實戰TensorFlow中的CNN

這裡按照官方api介紹官方api點這裡 卷積 不同的ops下使用的卷積操作總結如下: conv2d:Arbitrary filters that can mix channels together(通道混合處理的任意濾波器) depthwise_conv2d:Filter

程式設計珠璣7初略估算)的閱讀體會

(2013.8寫在CSDN的文章) 近期在看Bentley的《程式設計珠璣》(第2版),看過一半就能斷定這是一本學演算法學程式設計必看的一本書。 書的前面幾章不需要參考很多背景資料,勤動筆演算就能有不錯的理解。但是第7章強調了不少常識和判斷方面的素質,因此需要一些背景知識作為參考。   第7

學習筆記WinEdt 7.0Latex)在pdf中顯示中文

在.tex檔案中的\documentclass[12pt]{article}這行程式碼下 呼叫\usepackage{ctex} 這個包,這個包是內建的,不需要下載其他字型包。 \documentclass[12pt]{article} \usepackage{ctex}

機器學習實戰k-臨近演算法二)

海倫一直在使用線上約會網站尋找合適自己的約會物件,經過一番總結,海倫整理了以下資料,希望我們的分類軟體可以更好地幫助她將匹配物件劃分到確切的分類中 1、收集資料 40920 8.326976 0.953952 largeDoses 14488 7.153469 1.673

Java容器七)重新認識HashMapJava1.8Java1.7中HashMap的差異)

摘要 HashMap是Java程式設計師使用頻率最高的用於對映(鍵值對)處理的資料型別。隨著JDK(Java Developmet Kit)版本的更新,JDK1.8對HashMap底層的實現進行了優化,例如引入紅黑樹的資料結構和擴容的優化等。本文結合JDK1.7和JDK1.