1. 程式人生 > >迴圈神經網路應用舉例

迴圈神經網路應用舉例

RNN的應用舉例——基於RNN的語言模型

現在,我們介紹一下基於RNN語言模型。我們首先把詞依次輸入到迴圈神經網路中,每輸入一個詞,迴圈神經網路就輸出截止到目前為止,下一個最可能的詞。例如,當我們依次輸入:

我 昨天 上學 遲到 了

神經網路的輸出如下圖所示:

其中,s和e是兩個特殊的詞,分別表示一個序列的開始和結束。

向量化

我們知道,神經網路的輸入和輸出都是向量,為了讓語言模型能夠被神經網路處理,我們必須把詞表達為向量的形式,這樣神經網路才能處理它。

神經網路的輸入是,我們可以用下面的步驟對輸入進行向量化

  1. 建立一個包含所有詞的詞典,每個詞在詞典裡面有一個唯一的編號。
  2. 任意一個詞都可以用一個N維的one-hot向量來表示。其中,N是詞典中包含的詞的個數。假設一個詞在詞典中的編號是i,v是表示這個詞的向量,vj是向量的第j個元素,則:
vj={1j=i0ji(76)

上面這個公式的含義,可以用下面的圖來直觀的表示:

使用這種向量化方法,我們就得到了一個高維、稀疏的向量(稀疏是指絕大部分元素的值都是0)。處理這樣的向量會導致我們的神經網路有很多的引數,帶來龐大的計算量。因此,往往會需要使用一些降維方法,將高維的稀疏向量轉變為低維的稠密向量。不過這個話題我們就不再這篇文章中討論了。

語言模型要求的輸出是下一個最可能的詞,我們可以讓迴圈神經網路計算計算詞典中每個詞是下一個詞的概率,這樣,概率最大的詞就是下一個最可能的詞。因此,神經網路的輸出向量也是一個N維向量,向量中的每個元素對應著詞典中相應的詞是下一個詞的概率。如下圖所示:

Softmax層

前面提到,語言模型是對下一個詞出現的概率進行建模。那麼,怎樣讓神經網路輸出概率呢?方法就是用softmax層作為神經網路的輸出層。

我們先來看一下softmax函式的定義:

g(zi)=ezikezk

這個公式看起來可能很暈,我們舉一個例子。Softmax層如下圖所示:

從上圖我們可以看到,softmax layer的輸入是一個向量,輸出也是一個向量,兩個向量的維度是一樣的(在這個例子裡面是4)。輸入向量x=[1 2 3 4]經過softmax層之後,經過上面的softmax函式計算,轉變為輸出向量y=[0.03 0.09 0.24 0.64]。計算過程為:

y1y2y3y4=ex1kexk=e1e1+e2+e3+e4=0.03=e2e1+e2+e3+e4=0.09=e3

相關推薦

迴圈神經網路應用舉例

RNN的應用舉例——基於RNN的語言模型 現在,我們介紹一下基於RNN語言模型。我們首先把詞依次輸入到迴圈神經網路中,每輸入一個詞,迴圈神經網路就輸出截止到目前為止,下一個最可能的詞。例如,當我們依次輸入: 我 昨天 上學 遲到 了 神經網路的輸

03-RNN迴圈神經網路及其應用

例如: 多對多的迴圈神經網路 該網路能夠將資料輸入網路,輸入直接就是一個對應的文字的向量的對應關係。 用於機器翻譯,使用者詩詞的生成等應用, 例如: 輸入和輸出  “多對一” 用於動作的識別,識別視訊的貞, 例如:           輸入:x

深度學習(Deep Learning)讀書思考八:迴圈神經網路三(RNN應用

概述 通過前兩小節的介紹,可以清楚的瞭解RNN模型的網路結構以及LSTM。本小節主要介紹RNN其他變形以及應用,包括 1.GRU單元 2.序列到序列(Seq2Seq)模型 3.注意力(Attention)模型 4.RNN在NLP中的應

迴圈神經網路RNN在自然語言處理領域的應用

之前看的論文都是基於CNN在NLP上的應用,但其實深度學習與NLP結合的領域中應用最廣的應該是RNN,因為文字可以直觀地被表示為輸入序列,方便的被RNN處理,捕獲其Long-Term依賴等資訊,而且實際應用中也取得了很好的效果。之前雖然主要研究CNN,但同時也看

深度學習在資料中的應用---迴圈神經網路

第一次接觸迴圈神經網路。。。。。。 迴圈神經網路是針對序列資料建模的深度學習模型,在自然語言處理、語音識別等領域中應用較為廣泛。(以前接觸的基本上都是影象方面的東西) 先總結一下文章的內容,下次主要介紹一下迴圈神經網路的工作機理: 看完文章得到的結果就是:CNN

Keras學習(五)——RNN迴圈神經網路分類

本篇文章主要介紹通過RNN實現MNIST手寫資料集分類。 示例程式碼: import numpy as np from keras.datasets import mnist from keras.utils import np_utils from keras.models impor

【火爐煉AI】深度學習004-Elman迴圈神經網路

【火爐煉AI】深度學習004-Elman迴圈神經網路 (本文所使用的Python庫和版本號: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) Elman神經網路是最早的迴圈神經網路,由Elman於1990年提出,又稱為SRN(Simp

迴圈神經網路(RNN)到LSTM網路

  通常,資料的存在形式有語音、文字、影象、視訊等。因為我的研究方向主要是影象識別,所以很少用有“記憶性”的深度網路。懷著對迴圈神經網路的興趣,在看懂了有關它的理論後,我又看了Github上提供的tensorflow實現,覺得收穫很大,故在這裡把我的理解記錄下來,也希望對大家能有所幫助。

協同過濾結合迴圈神經網路的推薦系統——期末作業

Recommendation System using Collaborative Filtering and Recurrent Neural Network author:Fu-ze Zhong Email: [email protected] School of Data

DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(1)

title: ‘DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(1)’ id: dl-ai-5-1h1 tags: dl.ai homework categories: AI Deep

DeepLearning.ai筆記:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)

title: ‘DeepLearning.ai筆記:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)’ id: dl-ai-5-1 tags: dl.ai categories: AI Deep Learning date: 2

DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(2)

title: ‘DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(2)’ id: dl-ai-5-1h2 tags: dl.ai homework categories: AI Deep

DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(3)

title: ‘DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(3)’ id: dl-ai-5-1h3 tags: dl.ai homework categories: AI Deep

深度學習花書學習筆記 第十章 序列建模:迴圈神經網路

展開計算圖 就是將迴圈圖展開成展開圖而已。 迴圈神經網路   就是如上網路,將某一層不斷重複,輸出重新作為輸入的一部分。 雙向RNN 應用於上下文環境都影響結果的場景,如語音識別,文章翻譯等 基於編碼-解碼的序列到序列架構 可以將可變長度的輸入轉

TensorFlow從入門到理解(四):你的第一個迴圈神經網路RNN(分類例子)

執行程式碼: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # set random seed for comparing the two result calculations

TensorFlow從入門到理解(五):你的第一個迴圈神經網路RNN(迴歸例子)

執行程式碼: import tensorflow as tf import numpy as np import matplotlib.pyplot as plt BATCH_START = 0 TIME_STEPS = 20 BATCH_SIZE = 50 INPUT_SIZE = 1 OUTP

tensorflow基本教程10:RNN迴圈神經網路對於手寫體識別預測

import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #this is data mnist=input_data.read_data_sets("MNIST_data",one_

機器學習之迴圈神經網路(十)

摘要:        多層反饋RNN(Recurrent neural Network、迴圈神經網路)神經網路是一種節點定向連線成環的人工神經網路。這種網路的內部狀態可以展示動態時序行為。不同於前饋神經網路的是,RNN可以利用它內部的記憶來處理任意時序的輸入序列,這讓

迴圈神經網路系列(四)基於LSTM的MNIST手寫體識別

我們知道迴圈神經網路是用來處理包含序列化資料的相關問題,所有若要利用迴圈神經網路來解決某類問題,那麼首先要做的就是將原始資料集序列化,然後處理成某個深度學習框架所接受的資料輸入格式(比如Tensorflow). 1.資料預處理 我們知道MNIST資料集中的每張圖片形

迴圈神經網路系列(三)Tensorflow中MultiRNNCell

迴圈神經網路系列(一) Tensorflow中BasicRNNCell 迴圈神經網路系列(二)Tensorflow中dynamic_rnn 經過前面兩篇博文,我們介紹瞭如何定義一個RNN單元,以及用dynamic_rnn來對其在時間維度(橫軸)上展開。我們今天要介紹的就是如何疊加多層