① 一文看懂四種基本的神經網路架構
原文鏈接:
http://blackblog.tech/2018/02/23/Eight-Neural-Network/
更多干貨就在我的個人博客 http://blackblog.tech 歡迎關注
剛剛入門神經網路,往往會對眾多的神經網路架構感到困惑,神經網路看起來復雜多樣,但是這么多架構無非也就是三類,前饋神經網路,循環網路,對稱連接網路,本文將介紹四種常見的神經網路,分別是CNN,RNN,DBN,GAN。通過這四種基本的神經網路架構,我們來對神經網路進行一定的了解。
神經網路是機器學習中的一種模型,是一種模仿動物神經網路行為特徵,進行分布式並行信息處理的演算法數學模型。這種網路依靠系統的復雜程度,通過調整內部大量節點之間相互連接的關系,從而達到處理信息的目的。
一般來說,神經網路的架構可以分為三類:
前饋神經網路:
這是實際應用中最常見的神經網路類型。第一層是輸入,最後一層是輸出。如果有多個隱藏層,我們稱之為「深度」神經網路。他們計算出一系列改變樣本相似性的變換。各層神經元的活動是前一層活動的非線性函數。
循環網路:
循環網路在他們的連接圖中定向了循環,這意味著你可以按照箭頭回到你開始的地方。他們可以有復雜的動態,使其很難訓練。他們更具有生物真實性。
循環網路的目的使用來處理序列數據。在傳統的神經網路模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連接的,每層之間的節點是無連接的。但是這種普通的神經網路對於很多問題卻無能無力。例如,你要預測句子的下一個單詞是什麼,一般需要用到前面的單詞,因為一個句子中前後單詞並不是獨立的。
循環神經網路,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式為網路會對前面的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點不再無連接而是有連接的,並且隱藏層的輸入不僅包括輸入層的輸出還包括上一時刻隱藏層的輸出。
對稱連接網路:
對稱連接網路有點像循環網路,但是單元之間的連接是對稱的(它們在兩個方向上權重相同)。比起循環網路,對稱連接網路更容易分析。這個網路中有更多的限制,因為它們遵守能量函數定律。沒有隱藏單元的對稱連接網路被稱為「Hopfield 網路」。有隱藏單元的對稱連接的網路被稱為玻爾茲曼機。
其實之前的帖子講過一些關於感知機的內容,這里再復述一下。
首先還是這張圖
這是一個M-P神經元
一個神經元有n個輸入,每一個輸入對應一個權值w,神經元內會對輸入與權重做乘法後求和,求和的結果與偏置做差,最終將結果放入激活函數中,由激活函數給出最後的輸出,輸出往往是二進制的,0 狀態代表抑制,1 狀態代表激活。
可以把感知機看作是 n 維實例空間中的超平面決策面,對於超平面一側的樣本,感知器輸出 1,對於另一側的實例輸出 0,這個決策超平面方程是 w⋅x=0。 那些可以被某一個超平面分割的正反樣例集合稱為線性可分(linearly separable)樣例集合,它們就可以使用圖中的感知機表示。
與、或、非問題都是線性可分的問題,使用一個有兩輸入的感知機能容易地表示,而異或並不是一個線性可分的問題,所以使用單層感知機是不行的,這時候就要使用多層感知機來解決疑惑問題了。
如果我們要訓練一個感知機,應該怎麼辦呢?
我們會從隨機的權值開始,反復地應用這個感知機到每個訓練樣例,只要它誤分類樣例就修改感知機的權值。重復這個過程,直到感知機正確分類所有的樣例。每一步根據感知機訓練法則來修改權值,也就是修改與輸入 xi 對應的權 wi,法則如下:
這里 t 是當前訓練樣例的目標輸出,o 是感知機的輸出,η 是一個正的常數稱為學習速率。學習速率的作用是緩和每一步調整權的程度,它通常被設為一個小的數值(例如 0.1),而且有時會使其隨著權調整次數的增加而衰減。
多層感知機,或者說是多層神經網路無非就是在輸入層與輸出層之間加了多個隱藏層而已,後續的CNN,DBN等神經網路只不過是將重新設計了每一層的類型。感知機可以說是神經網路的基礎,後續更為復雜的神經網路都離不開最簡單的感知機的模型,
談到機器學習,我們往往還會跟上一個詞語,叫做模式識別,但是真實環境中的模式識別往往會出現各種問題。比如:
圖像分割:真實場景中總是摻雜著其它物體。很難判斷哪些部分屬於同一個對象。對象的某些部分可以隱藏在其他對象的後面。
物體光照:像素的強度被光照強烈影響。
圖像變形:物體可以以各種非仿射方式變形。例如,手寫也可以有一個大的圓圈或只是一個尖頭。
情景支持:物體所屬類別通常由它們的使用方式來定義。例如,椅子是為了讓人們坐在上面而設計的,因此它們具有各種各樣的物理形狀。
卷積神經網路與普通神經網路的區別在於,卷積神經網路包含了一個由卷積層和子采樣層構成的特徵抽取器。在卷積神經網路的卷積層中,一個神經元只與部分鄰層神經元連接。在CNN的一個卷積層中,通常包含若干個特徵平面(featureMap),每個特徵平面由一些矩形排列的的神經元組成,同一特徵平面的神經元共享權值,這里共享的權值就是卷積核。卷積核一般以隨機小數矩陣的形式初始化,在網路的訓練過程中卷積核將學習得到合理的權值。共享權值(卷積核)帶來的直接好處是減少網路各層之間的連接,同時又降低了過擬合的風險。子采樣也叫做池化(pooling),通常有均值子采樣(mean pooling)和最大值子采樣(max pooling)兩種形式。子采樣可以看作一種特殊的卷積過程。卷積和子采樣大大簡化了模型復雜度,減少了模型的參數。
卷積神經網路由三部分構成。第一部分是輸入層。第二部分由n個卷積層和池化層的組合組成。第三部分由一個全連結的多層感知機分類器構成。
這里舉AlexNet為例:
·輸入:224×224大小的圖片,3通道
·第一層卷積:11×11大小的卷積核96個,每個GPU上48個。
·第一層max-pooling:2×2的核。
·第二層卷積:5×5卷積核256個,每個GPU上128個。
·第二層max-pooling:2×2的核。
·第三層卷積:與上一層是全連接,3*3的卷積核384個。分到兩個GPU上個192個。
·第四層卷積:3×3的卷積核384個,兩個GPU各192個。該層與上一層連接沒有經過pooling層。
·第五層卷積:3×3的卷積核256個,兩個GPU上個128個。
·第五層max-pooling:2×2的核。
·第一層全連接:4096維,將第五層max-pooling的輸出連接成為一個一維向量,作為該層的輸入。
·第二層全連接:4096維
·Softmax層:輸出為1000,輸出的每一維都是圖片屬於該類別的概率。
卷積神經網路在模式識別領域有著重要應用,當然這里只是對卷積神經網路做了最簡單的講解,卷積神經網路中仍然有很多知識,比如局部感受野,權值共享,多卷積核等內容,後續有機會再進行講解。
傳統的神經網路對於很多問題難以處理,比如你要預測句子的下一個單詞是什麼,一般需要用到前面的單詞,因為一個句子中前後單詞並不是獨立的。RNN之所以稱為循環神經網路,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式為網路會對前面的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點不再無連接而是有連接的,並且隱藏層的輸入不僅包括輸入層的輸出還包括上一時刻隱藏層的輸出。理論上,RNN能夠對任何長度的序列數據進行處理。
這是一個簡單的RNN的結構,可以看到隱藏層自己是可以跟自己進行連接的。
那麼RNN為什麼隱藏層能夠看到上一刻的隱藏層的輸出呢,其實我們把這個網路展開來開就很清晰了。
從上面的公式我們可以看出,循環層和全連接層的區別就是循環層多了一個權重矩陣 W。
如果反復把式2帶入到式1,我們將得到:
在講DBN之前,我們需要對DBN的基本組成單位有一定的了解,那就是RBM,受限玻爾茲曼機。
首先什麼是玻爾茲曼機?
[圖片上傳失敗...(image-d36b31-1519636788074)]
如圖所示為一個玻爾茲曼機,其藍色節點為隱層,白色節點為輸入層。
玻爾茲曼機和遞歸神經網路相比,區別體現在以下幾點:
1、遞歸神經網路本質是學習一個函數,因此有輸入和輸出層的概念,而玻爾茲曼機的用處在於學習一組數據的「內在表示」,因此其沒有輸出層的概念。
2、遞歸神經網路各節點鏈接為有向環,而玻爾茲曼機各節點連接成無向完全圖。
而受限玻爾茲曼機是什麼呢?
最簡單的來說就是加入了限制,這個限制就是將完全圖變成了二分圖。即由一個顯層和一個隱層構成,顯層與隱層的神經元之間為雙向全連接。
h表示隱藏層,v表示顯層
在RBM中,任意兩個相連的神經元之間有一個權值w表示其連接強度,每個神經元自身有一個偏置系數b(對顯層神經元)和c(對隱層神經元)來表示其自身權重。
具體的公式推導在這里就不展示了
DBN是一個概率生成模型,與傳統的判別模型的神經網路相對,生成模型是建立一個觀察數據和標簽之間的聯合分布,對P(Observation|Label)和 P(Label|Observation)都做了評估,而判別模型僅僅而已評估了後者,也就是P(Label|Observation)。
DBN由多個限制玻爾茲曼機(Restricted Boltzmann Machines)層組成,一個典型的神經網路類型如圖所示。這些網路被「限制」為一個可視層和一個隱層,層間存在連接,但層內的單元間不存在連接。隱層單元被訓練去捕捉在可視層表現出來的高階數據的相關性。
生成對抗網路其實在之前的帖子中做過講解,這里在說明一下。
生成對抗網路的目標在於生成,我們傳統的網路結構往往都是判別模型,即判斷一個樣本的真實性。而生成模型能夠根據所提供的樣本生成類似的新樣本,注意這些樣本是由計算機學習而來的。
GAN一般由兩個網路組成,生成模型網路,判別模型網路。
生成模型 G 捕捉樣本數據的分布,用服從某一分布(均勻分布,高斯分布等)的雜訊 z 生成一個類似真實訓練數據的樣本,追求效果是越像真實樣本越好;判別模型 D 是一個二分類器,估計一個樣本來自於訓練數據(而非生成數據)的概率,如果樣本來自於真實的訓練數據,D 輸出大概率,否則,D 輸出小概率。
舉個例子:生成網路 G 好比假幣製造團伙,專門製造假幣,判別網路 D 好比警察,專門檢測使用的貨幣是真幣還是假幣,G 的目標是想方設法生成和真幣一樣的貨幣,使得 D 判別不出來,D 的目標是想方設法檢測出來 G 生成的假幣。
傳統的判別網路:
生成對抗網路:
下面展示一個cDCGAN的例子(前面帖子中寫過的)
生成網路
判別網路
最終結果,使用MNIST作為初始樣本,通過學習後生成的數字,可以看到學習的效果還是不錯的。
本文非常簡單的介紹了四種神經網路的架構,CNN,RNN,DBN,GAN。當然也僅僅是簡單的介紹,並沒有深層次講解其內涵。這四種神經網路的架構十分常見,應用也十分廣泛。當然關於神經網路的知識,不可能幾篇帖子就講解完,這里知識講解一些基礎知識,幫助大家快速入(zhuang)門(bi)。後面的帖子將對深度自動編碼器,Hopfield 網路長短期記憶網路(LSTM)進行講解。
② 入門 | 一文簡述循環神經網路
入門 | 一文簡述循環神經網路
本文簡要介紹了什麼是循環神經網路及其運行原理,並給出了一個 RNN 實現示例。
什麼是循環神經網路(RNN)?它們如何運行?可以用在哪裡呢?本文試圖回答上述這些問題,還展示了一個 RNN 實現 demo,你可以根據自己的需要進行擴展。
循環神經網路架構
基礎知識。Python、CNN 知識是必備的。了解 CNN 的相關知識,是為了與 RNN 進行對比:RNN 為什麼以及在哪些地方比 CNN 更好。
我們首先從「循環」(Recurrent)這個詞說起。為什麼將其稱為循環?循環的意思是:
經常或重復出現
將這類神經網路稱為循環神經網路是因為它對一組序列輸入重復進行同樣的操作。本文後續部分將討論這種操作的意義。
我們為什麼需要 RNN?
也許你現在想的是,已經有像卷積網路這樣表現非常出色的網路了,為什麼還需要其他類型的網路呢?有一個需要用到 RNN 的特殊例子。為了解釋 RNN,你首先需要了解序列的相關知識,我們先來講一下序列。
序列是相互依賴的(有限或無限)數據流,比如時間序列數據、信息性的字元串、對話等。在對話中,一個句子可能有一個意思,但是整體的對話可能又是完全不同的意思。股市數據這樣的時間序列數據也是,單個數據表示當前價格,但是全天的數據會有不一樣的變化,促使我們作出買進或賣出的決定。
當輸入數據具有依賴性且是序列模式時,CNN 的結果一般都不太好。CNN 的前一個輸入和下一個輸入之間沒有任何關聯。所以所有的輸出都是獨立的。CNN 接受輸入,然後基於訓練好的模型輸出。如果你運行了 100 個不同的輸入,它們中的任何一個輸出都不會受之前輸出的影響。但想一下如果是文本生成或文本翻譯呢?所有生成的單詞與之前生成的單詞都是獨立的(有些情況下與之後的單詞也是獨立的,這里暫不討論)。所以你需要有一些基於之前輸出的偏向。這就是需要 RNN 的地方。RNN 對之前發生在數據序列中的事是有一定記憶的。這有助於系統獲取上下文。理論上講,RNN 有無限的記憶,這意味著它們有無限回顧的能力。通過回顧可以了解所有之前的輸入。但從實際操作中看,它只能回顧最後幾步。
本文僅為了與人類大體相關聯,而不會做任何決定。本文只是基於之前關於該項目的知識做出了自己的判斷(我甚至尚未理解人類大腦的 0.1%)。
何時使用 RNN?
RNN 可用於許多不同的地方。下面是 RNN 應用最多的領域。
1. 語言建模和文本生成
給出一個詞語序列,試著預測下一個詞語的可能性。這在翻譯任務中是很有用的,因為最有可能的句子將是可能性最高的單片語成的句子。
2. 機器翻譯
將文本內容從一種語言翻譯成其他語言使用了一種或幾種形式的 RNN。所有日常使用的實用系統都用了某種高級版本的 RNN。
3. 語音識別
基於輸入的聲波預測語音片段,從而確定詞語。
4. 生成圖像描述
RNN 一個非常廣泛的應用是理解圖像中發生了什麼,從而做出合理的描述。這是 CNN 和 RNN 相結合的作用。CNN 做圖像分割,RNN 用分割後的數據重建描述。這種應用雖然基本,但可能性是無窮的。
5. 視頻標記
可以通過一幀一幀地標記視頻進行視頻搜索。
深入挖掘
本文按照以下主題進行。每一部分都是基於之前的部分進行的,所以不要跳著讀。
前饋網路循環網路循環神經元基於時間的反向傳播(BPTT)RNN 實現
前饋網路入門
前饋網路通過在網路的每個節點上做出的一系列操作傳遞信息。前饋網路每次通過每個層直接向後傳遞信息。這與其他循環神經網路不同。一般而言,前饋網路接受一個輸入並據此產生輸出,這也是大多數監督學習的步驟,輸出結果可能是一個分類結果。它的行為與 CNN 類似。輸出可以是以貓狗等作為標簽的類別。
前饋網路是基於一系列預先標注過的數據訓練的。訓練階段的目的是減少前饋網路猜類別時的誤差。一旦訓練完成,我們就可以用訓練後的權重對新批次的數據進行分類。
一個典型的前饋網路架構
還有一件事要注意。在前饋網路中,無論在測試階段展示給分類器的圖像是什麼,都不會改變權重,所以也不會影響第二個決策。這是前饋網路和循環網路之間一個非常大的不同。
與循環網路不同,前饋網路在測試時不會記得之前的輸入數據。它們始終是取決於時間點的。它們只會在訓練階段記得歷史輸入數據。
循環網路
也就是說,循環網路不僅將當前的輸入樣例作為網路輸入,還將它們之前感知到的一並作為輸入。
我們試著建立了一個多層感知器。從簡單的角度講,它有一個輸入層、一個具備特定激活函數的隱藏層,最終可以得到輸出。
多層感知器架構示例
如果在上述示例中的層數增加了,輸入層也接收輸入。那麼第一個隱藏層將激活傳遞到下一個隱藏層上,依此類推。最後到達輸出層。每一個隱藏層都有自己的權重和偏置項。現在問題變成了我們可以輸入到隱藏層嗎?
每一層都有自己的權重(W)、偏置項(B)和激活函數(F)。這些層的行為不同,合並它們從技術層面上講也極具挑戰性。為了合並它們,我們將所有層的權重和偏置項替換成相同的值。如下圖所示:
現在我們就可以將所有層合並在一起了。所有的隱藏層都可以結合在一個循環層中。所以看起來就像下圖:
我們在每一步都會向隱藏層提供輸入。現在一個循環神經元存儲了所有之前步的輸入,並將這些信息和當前步的輸入合並。因此,它還捕獲到一些當前數據步和之前步的相關性信息。t-1 步的決策影響到第 t 步做的決策。這很像人類在生活中做決策的方式。我們將當前數據和近期數據結合起來,幫助解決手頭的特定問題。這個例子很簡單,但從原則上講這與人類的決策能力是一致的。這讓我非常想知道我們作為人類是否真的很智能,或者說我們是否有非常高級的神經網路模型。我們做出的決策只是對生活中收集到的數據進行訓練。那麼一旦有了能夠在合理時間段內存儲和計算數據的先進模型和系統時,是否可以數字化大腦呢?所以當我們有了比大腦更好更快的模型(基於數百萬人的數據訓練出的)時,會發生什麼?
另一篇文章(https://deeplearning4j.org/lstm.html)的有趣觀點:人總是被自己的行為所困擾。
我們用一個例子來闡述上面的解釋,這個例子是預測一系列字母後的下一個字母。想像一個有 8 個字母的單詞 namaskar。
namaskar(合十禮):印度表示尊重的傳統問候或姿勢,將手掌合起置於面前或胸前鞠躬。
如果我們在向網路輸入 7 個字母後試著找出第 8 個字母,會發生什麼呢?隱藏層會經歷 8 次迭代。如果展開網路的話就是一個 8 層的網路,每一層對應一個字母。所以你可以想像一個普通的神經網路被重復了多次。展開的次數與它記得多久之前的數據是直接相關的。
循環神經網路的運作原理
循環神經元
這里我們將更深入地了解負責決策的實際神經元。以之前提到的 namaskar 為例,在給出前 7 個字母後,試著找出第 8 個字母。輸入數據的完整詞彙表是 {n,a,m,s,k,r}。在真實世界中單詞或句子都會更復雜。為了簡化問題,我們用的是下面這個簡單的詞彙表。
在上圖中,隱藏層或 RNN 塊在當前輸入和之前的狀態中應用了公式。在本例中,namaste 的字母 n 前面什麼都沒有。所以我們直接使用當前信息推斷,並移動到下一個字母 a。在推斷字母 a 的過程中,隱藏層應用了上述公式結合當前推斷 a 的信息與前面推斷 n 的信息。輸入在網路中傳遞的每一個狀態都是一個時間步或一步,所以時間步 t 的輸入是 a,時間步 t-1 的輸入就是 n。將公式同時應用於 n 和 a 後,就得到了一個新狀態。
用於當前狀態的公式如下所示:
h_t 是新狀態,h_t-1 是前一個狀態。x_t 是時間 t 時的輸入。在對之前的時間步應用了相同的公式後,我們已經能感知到之前的輸入了。我們將檢查 7 個這樣的輸入,它們在每一步的權重和函數都是相同的。
現在試著以簡單的方式定義 f()。我們使用 tanh 激活函數。通過矩陣 W_hh 定義權重,通過矩陣 W_xh 定義輸入。公式如下所示:
上例只將最後一步作為記憶,因此只與最後一步的數據合並。為了提升網路的記憶能力,並在記憶中保留較長的序列,我們必須在方程中添加更多的狀態,如 h_t-2、h_t-3 等。最後輸出可以按測試階段的計算方式進行計算:
其中,y_t 是輸出。對輸出與實際輸出進行對比,然後計算出誤差值。網路通過反向傳播誤差來更新權重,進行學習。本文後續部分會對反向傳播進行討論。
基於時間的反向傳播演算法(BPTT)
本節默認你已經了解了反向傳播概念。如果需要對反向傳播進行深入了解,請參閱鏈接:?http://cs231n.github.io/optimization-2/?。
現在我們了解了 RNN 是如何實際運作的,但是在實際工作中如何訓練 RNN 呢?該如何決定每個連接的權重呢?如何初始化這些隱藏單元的權重呢?循環網路的目的是要准確地對序列輸入進行分類。這要靠誤差值的反向傳播和梯度下降來實現。但是前饋網路中使用的標准反向傳播無法在此應用。
與有向無環的前饋網路不同,RNN 是循環圖,這也是問題所在。在前饋網路中可以計算出之前層的誤差導數。但 RNN 的層級排列與前饋網路並不相同。
答案就在之前討論過的內容中。我們需要展開網路。展開網路使其看起來像前饋網路就可以了。
展開 RNN
在每個時間步取出 RNN 的隱藏單元並復制。時間步中的每一次復制就像前饋網路中的一層。在時間步 t+1 中每個時間步 t 層與所有可能的層連接。因此我們對權重進行隨機初始化,展開網路,然後在隱藏層中通過反向傳播優化權重。通過向最低層傳遞參數完成初始化。這些參數作為反向傳播的一部分也得到了優化。
展開網路的結果是,現在每一層的權重都不同,因此最終會得到不同程度的優化。無法保證基於權重計算出的誤差是相等的。所以每一次運行結束時每一層的權重都不同。這是我們絕對不希望看到的。最簡單的解決辦法是以某種方式將所有層的誤差合並到一起。可以對誤差值取平均或者求和。通過這種方式,我們可以在所有時間步中使用一層來保持相同的權重。
RNN 實現
本文試著用 Keras 模型實現 RNN。我們試著根據給定的文本預測下一個序列。
代碼地址:?https://gist.github.com/.git?
該模型是 Yash Katariya 建的。我對該模型做了一些細微的改動以適合本文的要求。
③ 利用神經網路進行文本分類演算法綜述(持續更新中)
傳統的文本分類一般都是使用詞袋模型/Tf-idf作為特徵+機器學習分類器來進行分類的。隨著深度學習的發展,越來越多的神經網路模型被用來進行文本分類。本文將對這些神經網路模型做一個簡單的介紹。
本文介紹了一種詞向量模型,雖然算不得文本分類模型,但由於其可以說是fasttext的基礎。因此也簡單提一下。
作者認為cbow和skipgram及大部分詞向量模型都沒有考慮到單詞的多態性,而簡單的將一個單詞的多種形態視為獨立的單詞。例如like的不同形式有likes,liking,liked,likes,這些單詞的意思其實是相同的,但cbow/skipgram模型卻認為這些單詞是各自獨立的,沒有考慮到其形態多樣性。
因此作者提出了一個可以有效利用單詞字元級別信息的n-gram詞向量模型,該模型是以skipgram模式實現的。例如單詞 where,其n-gram表示為<wh, whe, her, ere, re>, where。其中<>分別表示前後綴。在原始的skipgram模型中,輸入僅僅只是where的onehot向量,而在此模型中輸入則變成了<wh, whe, her, ere, re>, where的onehot編碼的加和,有效的利用了字元級別的信息,因此效果更加好。
而在loss方面,文中採用了負采樣+binary LogisticRegression的策略。即對每一個目標單詞都預測為正負中的一種。
在本文中作者提供了一個基於神經網路的文本分類模型,這個模型是基於cbow的,與cbow非常類似。
和CBOW一樣,fastText模型也只有三層:輸入層、隱含層、輸出層(Hierarchical Softmax),輸入都是多個經向量表示的單詞,輸出都是一個特定的target,隱含層都是對多個詞向量的疊加平均。不同的是,CBOW的輸入是目標單詞的上下文,fastText的輸入是多個單詞及其n-gram特徵的embeding表示方式,這些特徵用來表示單個文檔;CBOW的輸入單詞被onehot編碼過,fastText的輸入特徵是被embedding過;CBOW的輸出是目標詞彙,fastText的輸出是文檔對應的類標。輸出層的實現同樣使用了層次softmax,當然如果自己實現的話,對於類別數不是很多的任務,個人認為是可以直接使用softmax的。
最後,貼一個Keras的模型fasttext簡化版。
基於詞向量表示,本文提出利用卷積神經網路來進行文本分類。其演算法如上圖所示:
在本文中,作者嘗試了多種不同的詞向量模式:
在上一篇文章中CNN網路的輸入一般是預訓練好的詞向量,而在本文中作者提出一種直接將embedding訓練與分類任務結合在一起,且能有效提取/保留詞序信息,也即有效訓練出n-gram的模型方法,其實也可以理解為一種利用CNN來進行embedding的方法。
此外,另一個問題是輸入序列長度變化問題(在上一篇文章textCNN中通過padding解決的?),在本文作者提出使用一個動態可變的pooling層來解決這個問題,使得卷積層輸出的大小是相同的。關於可變pooling其實與圖像識別中的 空間金字塔池化 (Spatial Pyramid Pooling) 是類似的。
這篇文章有點將fastText與TextCNN結合在一起的感覺,將n-gram embedding與分類任務結合在了一起進行訓練,通過CNN來進行Embedding。
Text Categorization via Region Embedding》
在本篇文章中作者提出了一個tv-embedding(即two-view embedding),它也屬於region embedding(也可以理解為ngram embedding)。這種方法與上面的bow-CNN表示相似,使用bow(bag of words)的方式來表示一個區域的詞句,然後通過某個區域(region,左右鄰域的單詞或詞句)來預測其前後的區域(單詞或詞句),即輸入區域是view1,target區域是view2。tv-embedding是單獨訓練的,在使用的時候與CNN中的embedding組合在一起(形成多個channel?)。作者認為,word2vec方法預訓練得到的embedding向量是普適性的,而通過特定任務的數據集的訓練得到tv-embedding具有任務相關的一些信息,更有利於提升我們的模型效果。
吐槽一下,這篇文章沒太看懂,也可能是英語太差,作者文章中沒有那種一眼就能讓人理解的網路圖,像textCNN的圖就非常一目瞭然,看圖就知道是怎麼做的了。
本文提出了一個使用監督學習加半監督預訓練的基於LSTM的文本分類模型。文章作者與上面相同,所以用到的很多技術可以說與上面也是同出一轍。因此簡單說下本文的一些思路。
作者認為已有的直接使用LSTM作為文本分類模型並直接將LSTM的最後一個輸出作為後續全連接分類器的方法面臨兩個問題:(1)這種方式一般都是與word embedding整合在一起(即輸入onehot經過一個embedding層再進入LSTM),但是embedding訓練不穩定,不好訓練;(2)直接使用LSTM最後一個輸出來表示整個文檔不準確,一般來說LSTM輸入中後面的單詞會在最後輸出中佔有較重的權重,但是這對於文章表示來說並不總是對的。因此作者對這兩點進行了改進:
本文其實可以看作是作者將自己前面的tv-embedding半監督訓練與RCNN的一個融合吧,大有一種一頓操作猛如虎,一看人頭0-5的感覺(因為作者的實驗結果跟一般的CNN相比其實也搶不了多少)。
本文的作者也是前面兩篇使用CNN來進行文本分類處理的文章的作者。因此在本文中,結合了前面兩篇文章提出的一些方法,並使用了一個深層的卷積神經網路。具體的細節包括:
更多詳細的關於DPCNN的細節可以查看 從DPCNN出發,撩一下深層word-level文本分類模型 。
本文提出了一種基於CNN+Attention的文本分類模型。作者認為已有的基於CNN的文本分類模型大都使用的是固定大小的卷積核,因此其學習到的表示也是固定的n-gram表示,這個n與CNN filter大小相關。但是在進行句子的語義表示時,不同句子發揮重要作用的ngram詞語常常是不同的,也即是變化的。因此,模型能根據句子來自適應的選擇每個句子最佳的n-gram對於提升模型的語義表示能力是非常關鍵的。本文便是由此思路提出了一種自適應的來選擇不同n-gram表示的模型。
本文模型在主題結構上參照了CV中的DenseNet,藉由DenseNet中的稠密連接來提取到豐富的n-gram特徵表示。舉例來說,在layer3的特徵不僅能學習到f(x1, x2, x3),還能學習到f(x1(x2,x3))這種更多層次,更加豐富的特徵。網路的結構主要包括三部分:DenseCNN主網路,Attention mole和最後的全連接層分類網路。下面對這三部分進行簡單的說明:
本文通過Dense connection + Attention來自動獲取對於文本語義最重要的n-gram特徵,結果很好。但是缺點是,這個網路比較適合較短的文本,文中對輸入文本進行了padding補齊,對於不同數據集最大長度分別為50,100等,但這對於較長的文本明顯是不足的。因此對於較長的文本或許HAN這種借用RNN來不限制輸入長短的網路會更好。
本文提出了一種結合循環神經網路(RNN)和卷積神經網路來進行文本分類的方法,其結構如上圖所示,該網路可以分為三部分:
雖然說是RNN與CNN的結合,但是其實只用到了CNN中的pooling,多少有一點噱頭的意思。文中還提到了RCNN為什麼比CNN效果好的原因,即為什麼RCNN能比CNN更好的捕捉到上下文信息:CNN使用了固定大小window(也即kernel size)來提取上下文信息,其實就是一個n-gram。因此CNN的表現很大程度上受window大小的影響,太小了會丟失一些長距離信息,太大了又會導致稀疏性問題,而且會增加計算量。
在眾多自然語言處理任務中,一個非常突出的問題就是訓練數據不足,且標注難度大。因此文本提出了一種多任務共享的RNN模型框架,其使用多個不同任務數據集來訓練同一個模型共享參數,已達到擴充數據集的作用。
文中作者提出了三個模型,如上圖所示:
三個模型的訓練方式相同:
本文提出了一個層次LSTM+Attention模型。作者認為,雖然一篇文章有多個句子組成但真正其關鍵作用的可能是其中的某幾個,因此對各個句子施加了注意力機制,以使得對文章語義貢獻較多的句子佔有更多的權重。同樣的,組成一個句子的單詞有多個,但是發揮重要作用的可能就那麼幾個,因此使用注意力機制以使得重要單詞發揮更大的作用,這些便是本文的核心思想。整個網路可分為三層,兩個LSTM層分別用來進行word encode和sentence encode,最頂上為一個全連接分類層。若加上兩層注意力層,則可認為網路為5層。下面簡單聊聊這五層網路的結構:
總體來說,本文看起來還是比較有意思的,符合人閱讀文章的習慣,我們寫文章的時候也是有中心詞和中心句的。但是由於這個層級結構是否會導致訓練慢或者不好訓練還不得而知。最後,文中還提出對文章按長短先進行排序,長度相似的進入一個batch,這將訓練速度加快了3倍。
本文提出了一個基於圖神經網路的文本分類方法。該方法的主要思想是將所有文章及其包含的詞彙都放到一個圖網路裡面去,圖網路中的節點分為兩種類型:單詞節點和文章節點。其中連接單詞節點和文章節點的邊的權重使用TF-IDF來表示,而單詞與單詞之間邊的權重則是使用點互信息(PMI)來表示。點互信息與傳統語言模型中的條件概率計算方式非常相似。只不過PMI採用的是滑窗方式而條件概率是直接在所有語料中進行統計,可以認為是將所有語料當做一個大窗口,這時就又與PMI相同了。
A表示圖網路的鄰接矩陣,表示如下:
GCN同樣也是可以含有多層隱藏層的,其各個層的計算方式如下:
其中A'為歸一化對稱鄰接矩陣, W0 ∈ R^(m×k) 為權重矩陣,ρ是激活函數,例如 ReLU ρ(x) = max(0,x) 如前所述,可以通過疊加多個GCN層來合並更高階的鄰域信息:
其中j表示層數。
損失函數定義為所有已標記文檔的交叉熵誤差:
文中提到Text GCN運行良好的原因有兩個方面:
但是其也有一些缺:
總的來說,文章的idea還是挺有意思的,效果也還不錯。初識GCN可能還是有一點難以理解,可以參考如下資料進行進一步學習:
基於圖卷積網路的文本分類演算法
如何理解 Graph Convolutional Network(GCN)?
④ 自編碼器和分類器python
你好,下面是一個keras的softmax分類器+自編碼器的python代碼。你需要安裝最新的theano1.0.4才可以跑。
importos;
os.environ['KERAS_BACKEND']='theano'
importkeras
fromkeras.datasetsimportmnist
fromkeras.modelsimportModel
fromkeras.layersimportInput,Conv2D,MaxPooling2D,Flatten,Dense,UpSampling2D
batch_size=128
num_classes=10
epochs=12
#inputimagedimensions
img_rows,img_cols=28,28
#Data
(x_train,y_train),(x_test,y_test)=mnist.load_data()
x_train=x_train.reshape(x_train.shape[0],img_rows,img_cols,1).astype('float32')/255
x_test=x_test.reshape(x_test.shape[0],img_rows,img_cols,1).astype('float32')/255
y_train=keras.utils.to_categorical(y_train,num_classes)
y_test=keras.utils.to_categorical(y_test,num_classes)
#ConvolutionalEncoder
input_img=Input(shape=(img_rows,img_cols,1))
conv_1=Conv2D(16,(3,3),activation='relu',padding='same')(input_img)
pool_1=MaxPooling2D((2,2),padding='same')(conv_1)
conv_2=Conv2D(8,(3,3),activation='relu',padding='same')(pool_1)
pool_2=MaxPooling2D((2,2),padding='same')(conv_2)
conv_3=Conv2D(8,(3,3),activation='relu',padding='same')(pool_2)
encoded=MaxPooling2D((2,2),padding='same')(conv_3)
#Classification
flatten=Flatten()(encoded)
fc=Dense(128,activation='relu')(flatten)
softmax=Dense(num_classes,activation='softmax',name='classification')(fc)
#Decoder
conv_4=Conv2D(8,(3,3),activation='relu',padding='same')(encoded)
up_1=UpSampling2D((2,2))(conv_4)
conv_5=Conv2D(8,(3,3),activation='relu',padding='same')(up_1)
up_2=UpSampling2D((2,2))(conv_5)
conv_6=Conv2D(16,(3,3),activation='relu')(up_2)
up_3=UpSampling2D((2,2))(conv_6)
decoded=Conv2D(1,(3,3),activation='sigmoid',padding='same',name='autoencoder')(up_3)
model=Model(inputs=input_img,outputs=[softmax,decoded])
model.compile(loss={'classification':'categorical_crossentropy',
'autoencoder':'binary_crossentropy'},
optimizer='adam',
metrics={'classification':'accuracy'})
model.fit(x_train,
{'classification':y_train,'autoencoder':x_train},
batch_size=batch_size,
epochs=epochs,
validation_data=(x_test,{'classification':y_test,'autoencoder':x_test}),
verbose=1)
⑤ 【山外筆記-計算機網路·第7版】第02章:物理層
[學習筆記]第02章_物理層-列印版.pdf
本章最重要的內容是:
(1)物理層的任務。
(2)幾種常用的信道復用技術。
(3)幾種常用的寬頻接入技術,主要是ADSL和FTTx。
1、物理層簡介
(1)物理層在連接各種計算機的傳輸媒體上傳輸數據比特流,而不是指具體的傳輸媒體。
(2)物理層的作用是盡可能地屏蔽掉傳輸媒體和通信手段的差異。
(3)用於物理層的協議常稱為物理層規程(procere),其實物理層規程就是物理層協議。
2、物理層的主要任務 :確定與傳輸媒體的介面有關的一些特性。
(1)機械特性:指明介面所用接線器的形狀和尺寸、引腳數目和排列、固定和鎖定裝置等。
(2)電氣特性:指明在介面電纜的各條線上出現的電壓的范圍。
(3)功能特性:指明某條線上出現的某一電平的電壓的意義。
(4)過程特性:指明對於不同功能的各種可能事件的出現順序。
3、物理層要完成傳輸方式的轉換。
(1)數據在計算機內部多採用並行傳輸方式。
(2)數據在通信線路(傳輸媒體)上的傳輸方式一般都是串列傳輸,即逐個比特按照時間順序傳輸。
(3)物理連接的方式:點對點、多點連接或廣播連接。
(4)傳輸媒體的種類:架空明線、雙絞線、對稱電纜、同軸電纜、光纜,以及各種波段的無線信道等。
1、數據通信系統的組成
一個數據通信系統可劃分為源系統(或發送端、發送方)、傳輸系統(或傳輸網路)和目的系統(或接收端、接收方)三大部分。
(1)源系統:一般包括以下兩個部分:
(2)目的系統:一般也包括以下兩個部分:
(3)傳輸系統:可以是簡單的傳輸線,也可以是連接在源系統和目的系統之間的復雜網路系統。
2、通信常用術語
(1)通信的目的是傳送消息(message),數據(data)是運送消息的實體。
(2)數據是使用特定方式表示的信息,通常是有意義的符號序列。
(3)信息的表示可用計算機或其他機器(或人)處理或產生。
(4)信號(signal)則是數據的電氣或電磁的表現。
3、信號的分類 :根據信號中代表消息的參數的取值方式不同
(1)模擬信號/連續信號:代表消息的參數的取值是連續的。
(2)數字信號/離散信號:代表消息的參數的取值是離散的。
1、信道
(1)信道一般都是用來表示向某一個方向傳送信息的媒體。
(2)一條通信電路往往包含一條發送信道和一條接收信道。
(3)單向通信只需要一條信道,而雙向交替通信或雙向同時通信則都需要兩條信道(每個方向各一條)。
2、通信的基本方式 :
(1)單向通信又稱為單工通信,只能有一個方向的通信而沒有反方向的交互。如無線電廣播、有線電廣播、電視廣播。
(2)雙向交替通信又稱為半雙工通信,即通信的雙方都可以發送信息,但不能雙方同時發送/接收。
(3)雙向同時通信又稱為全雙工通信,即通信的雙方可以同時發送和接收信息。
3、調制 (molation)
(1)基帶信號:來自信源的信號,即基本頻帶信號。許多信道不能傳輸基帶信號,必須對其進行調制。
(2)調制的分類
4、基帶調制常用的編碼方式 (如圖2-2)
(1)不歸零制:正電平代表1,負電平代表0。
(2)歸零制:正脈沖代表1,負脈沖代表0。
(3)曼徹斯特:編碼位周期中心的向上跳變代表0,位周期中心的向下跳變代表1。也可反過來定義。
(4)差分曼徹斯特:編碼在每一位的中心處始終都有跳變。位開始邊界有跳變代表0,而位開始邊界沒有跳變代表1。
5、帶通調制的基本方法
(1)調幅(AM)即載波的振幅隨基帶數字信號而變化。例如,0或1分別對應於無載波或有載波輸出。
(2)調頻(FM)即載波的頻率隨基帶數字信號而變化。例如,0或1分別對應於頻率f1或f2。
(3)調相(PM)即載波的初始相位隨基帶數字信號而變化。例如,0或1分別對應於相位0度或180度。
(4)多元制的振幅相位混合調制方法:正交振幅調制QAM(Quadrature Amplitude Molation)。
1、信號失真
(1)信號在信道上傳輸時會不可避免地產生失真,但在接收端只要從失真的波形中能夠識別並恢復出原來的碼元信號,那麼這種失真對通信質量就沒有影響。
(2)碼元傳輸的速率越高,或信號傳輸的距離越遠,或雜訊干擾越大,或傳輸媒體質量越差,在接收端的波形的失真就越嚴重。
2、限制碼元在信道上的傳輸速率的因素
(1)信道能夠通過的頻率范圍
(2)信噪比
3、香農公式 (Shannon)
(1)香農公式(Shannon):C = W*log2(1+S/N) (bit/s)
(2)香農公式表明:信道的帶寬或信道中的信噪比越大,信息的極限傳輸速率就越高。
(3)香農公式指出了信息傳輸速率的上限。
(4)香農公式的意義:只要信息傳輸速率低於信道的極限信息傳輸速率,就一定存在某種辦法來實現無差錯的傳輸。
(5)在實際信道上能夠達到的信息傳輸速率要比香農的極限傳輸速率低不少,是因為香農公式的推導過程中並未考慮如各種脈沖干擾和在傳輸中產生的失真等信號損傷。
1、傳輸媒體
傳輸媒體也稱為傳輸介質或傳輸媒介,是數據傳輸系統中在發送器和接收器之間的物理通路。
2、傳輸媒體的分類
(1)導引型傳輸媒體:電磁波被導引沿著固體媒體(雙絞線、同軸電纜或光纖)傳播。
(2)非導引型傳輸媒體:是指自由空間,電磁波的傳輸常稱為無線傳輸。
1、雙絞線
(1)雙絞線也稱為雙扭線, 即把兩根互相絕緣的銅導線並排放在一起,然後用規則的方法絞合(twist)起來。絞合可減少對相鄰導線的電磁干擾。
(2)電纜:通常由一定數量的雙絞線捆成,在其外麵包上護套。
(3)屏蔽雙絞線STP(Shielded Twisted Pair):在雙絞線的外面再加上一層用金屬絲編織成的屏蔽層,提高了雙絞線抗電磁干擾的能力。價格比無屏蔽雙絞線UTP(Unshielded Twisted Pair)要貴一些。
(4)模擬傳輸和數字傳輸都可以使用雙絞線,其通信距離一般為幾到十幾公里。
(5)雙絞線布線標准
(6)雙絞線的使用
2、同軸電纜
(1)同軸電纜由內導體銅質芯線(單股實心線或多股絞合線)、絕緣層、網狀編織的外導體屏蔽層(也可以是單股的)以及保護塑料外層所組成。
(2)由於外導體屏蔽層的作用,同軸電纜具有很好的抗干擾特性,被廣泛用於傳輸較高速率的數據。
(3)同軸電纜主要用在有線電視網的居民小區中。
(4)同軸電纜的帶寬取決於電纜的質量。目前高質量的同軸電纜的帶寬已接近1GHz。
3、光纜
(1)光纖通信就是利用光導纖維(簡稱光纖)傳遞光脈沖來進行通信。有光脈沖為1,沒有光脈沖為0。
(2)光纖是光纖通信的傳輸媒體。
(3)多模光纖:可以存在多條不同角度入射的光線在一條光纖中傳輸。光脈沖在多模光纖中傳輸時會逐漸展寬,造成失真,多模光纖只適合於近距離傳輸。
(4)單模光纖:若光纖的直徑減小到只有一個光的波長,則光纖就像一根波導那樣,可使光線一直向前傳播,而不會產生多次反射。單模光纖的纖芯很細,其直徑只有幾個微米,製造起來成本較高。
(5)光纖通信中常用的三個波段中心:850nm,1300nm和1550nm。
(6)光纜:一根光纜少則只有一根光纖,多則可包括數十至數百根光纖,再加上加強芯和填充物,必要時還可放入遠供電源線,最後加上包帶層和外護套。
(7)光纖的優點
1、無線傳輸
(1)無線傳輸是利用無線信道進行信息的傳輸,可使用的頻段很廣。
(2)LF,MF和HF分別是低頻(30kHz-300kHz)、中頻(300kHz-3MH z)和高頻(3MHz-30MHz)。
(3)V,U,S和E分別是甚高頻(30MHz-300MHz)、特高頻(300MHz-3GHz)、超高頻(3GHz-30GHz)和極高頻(30GHz-300GHz),最高的一個頻段中的T是Tremendously。
2、短波通信: 即高頻通信,主要是靠電離層的反射傳播到地面上很遠的地方,通信質量較差。
3、無線電微波通信
(1)微波的頻率范圍為300M Hz-300GHz(波長1m-1mm),但主要使用2~40GHz的頻率范圍。
(2)微波在空間中直線傳播,會穿透電離層而進入宇宙空間,傳播距離受到限制,一般只有50km左右。
(3)傳統的微波通信主要有兩種方式,即地面微波接力通信和衛星通信。
(4)微波接力通信:在一條微波通信信道的兩個終端之間建立若干個中繼站,中繼站把前一站送來的信號經過放大後再發送到下一站,故稱為「接力」,可傳輸電話、電報、圖像、數據等信息。
(5)衛星通信:利用高空的人造同步地球衛星作為中繼器的一種微波接力通信。
(6)無線區域網使用ISM無線電頻段中的2.4GHz和5.8GHz頻段。
(7)紅外通信、激光通信也使用非導引型媒體,可用於近距離的筆記本電腦相互傳送數據。
1、復用(multiplexing)技術原理
(1)在發送端使用一個復用器,就可以使用一個共享信道進行通信。
(2)在接收端再使用分用器,把合起來傳輸的信息分別送到相應的終點。
(3)復用器和分用器總是成對使用,在復用器和分用器之間是用戶共享的高速信道。
(4)分用器(demultiplexer)的作用:把高速信道傳送過來的數據進行分用,分別送交到相應的用戶。
2、最基本的復用
(1)頻分復用FDM(Frequency Division Multiplexing)
(2)時分復用TDM(Time Division Multiplexing):
3、統計時分復用STDM (Statistic TDM)
(1)統計時分復用STDM是一種改進的時分復用,能明顯地提高信道的利用率。
(2)集中器(concentrator):將多個用戶的數據集中起來通過高速線路發送到一個遠地計算機。
(3)統計時分復用使用STDM幀來傳送數據,每一個STDM幀中的時隙數小於連接在集中器上的用戶數。
(4)STDM幀不是固定分配時隙,而是按需動態地分配時隙,提高了線路的利用率。
(5)統計復用又稱為非同步時分復用,而普通的時分復用稱為同步時分復用。
(6)STDM幀中每個時隙必須有用戶的地址信息,這是統計時分復用必須要有的和不可避免的一些開銷。
(7)TDM幀和STDM幀都是在物理層傳送的比特流中所劃分的幀。和數據鏈路層的幀是完全不同的概念。
(8)使用統計時分復用的集中器也叫做智能復用器,能提供對整個報文的存儲轉發能力,通過排隊方式使各用戶更合理地共享信道。此外,許多集中器還可能具有路由選擇、數據壓縮、前向糾錯等功能。
1、波分復用WDM (Wavelength Division Multiplexing)
波分復用WDM是光的頻分復用,在一根光纖上用波長來復用兩路光載波信號。
2、密集波分復用DWDM (Dense Wavelength Division Multiplexing)
密集波分復用DWDM是在一根光纖上復用幾十路或更多路數的光載波信號。
1、碼分復用CDM (Code Division Multiplexing)
(1)每一個用戶可以在同樣的時間使用同樣的頻帶進行通信。
(2)各用戶使用經過特殊挑選的不同碼型,因此各用戶之間不會造成干擾。
(3)碼分復用最初用於軍事通信,現已廣泛用於民用的移動通信中,特別是在無線區域網中。
2、碼分多址CDMA (Code Division Multiple Access)。
(1)在CDMA中,每一個比特時間再劃分為m個短的間隔,稱為碼片(chip)。通常m的值是64或128。
(2)使用CDMA的每一個站被指派一個唯一的m bit碼片序列(chip sequence)。
(3)一個站如果發送比特1,則發送m bit碼片序列。如果發送比特0,則發送該碼片序列的二進制反碼。
(4)發送信息的每一個比特要轉換成m個比特的碼片,這種通信方式是擴頻通信中的直接序列擴頻DSSS。
(5)CDMA系統給每一個站分配的碼片序列必須各不相同,並且還互相正交(orthogonal)。
(6)CDMA的工作原理:現假定有一個X站要接收S站發送的數據。
(7)擴頻通信(spread spectrum)分為直接序列擴頻DSSS(Direct Sequence Spread Spectrum)和跳頻擴頻FHSS(Frequency Hopping Spread Spectrum)兩大類。
早起電話機用戶使用雙絞線電纜。長途干線採用的是頻分復用FDM的模擬傳輸方式,現在大都採用時分復用PCM的數字傳輸方式。現代電信網,在數字化的同時,光纖開始成為長途干線最主要的傳輸媒體。
1、早期的數字傳輸系統最主要的缺點:
(1)速率標准不統一。互不兼容的國際標准使國際范圍的基於光纖的高速數據傳輸就很難實現。
(2)不是同步傳輸。為了節約經費,各國的數字網主要採用准同步方式。
2、數字傳輸標准
(1)同步光纖網SONET(Synchronous Optical Network)
(2)同步數字系列SDH(Synchronous Digital Hierarchy)
(3)SDH/SONET定義了標准光信號,規定了波長為1310nm和1550nm的激光源。在物理層定義了幀結構。
(4)SDH/SONET標準的制定,使北美、日本和歐洲三種不同的數字傳輸體制在STM-1等級上獲得了統一,第一次真正實現了數字傳輸體制上的世界性標准。
互聯網的發展初期,用戶利用電話的用戶線通過數據機連接到ISP,速率最高只能達到56kbit/s。
從寬頻接入的媒體來看,寬頻接入技術可以分為有線寬頻接入和無線寬頻接入兩大類。
1、非對稱數字用戶線ADSL (Asymmetric Digital Subscriber Line)
(1)ADSL技術是用數字技術對現有的模擬電話用戶線進行改造,使它能夠承載寬頻數字業務。
(2)ADSL技術把0-4kHz低端頻譜留給傳統電話使用,把原來沒有被利用的高端頻譜留給用戶上網使用。
(3)ADSL的ITU的標準是G.992.1(或稱G.dmt,表示它使用DMT技術)。
(4)「非對稱」是指ADSL的下行(從ISP到用戶)帶寬都遠遠大於上行(從用戶到ISP)帶寬。
(5)ADSL的傳輸距離取決於數據率和用戶線的線徑(用戶線越細,信號傳輸時的衰減就越大)。
(6)ADSL所能得到的最高數據傳輸速率還與實際的用戶線上的信噪比密切相關。
2、ADSL數據機的實現方案 :離散多音調DMT(Discrete Multi-Tone)調制技術
(1)ADSL在用戶線(銅線)的兩端各安裝一個ADSL數據機。
(2)「多音調」就是「多載波」或「多子信道」的意思。
(3)DMT調制技術採用頻分復用的方法,把40kHz-1.1MHz的高端頻譜劃分為許多子信道。
(4)當ADSL啟動時,用戶線兩端的ADSL數據機就測試可用的頻率、各子信道受到的干擾情況,以及在每一個頻率上測試信號的傳輸質量。
(5)ADSL能夠選擇合適的調制方案以獲得盡可能高的數據率,但不能保證固定的數據率。
3、數字用戶線接入復用器DSLAM (DSL Access Multiplexer)
(1)數字用戶線接入復用器包括許多ADSL數據機。
(2)ADSL數據機又稱為接入端接單元ATU(Access Termination Unit)。
(3)ADSL數據機必須成對使用,因此把在電話端局記為ATU-C,用戶家中記為ATU-R。
(4)ADSL最大的好處就是可以利用現有電話網中的用戶線(銅線),而不需要重新布線。
(5)ADSL數據機有兩個插口:
(6)一個DSLAM可支持多達500-1000個用戶。
4、第二代ADSL
(1)ITU-T已頒布了G系列標准,被稱為第二代ADSL,ADSL2。
(1)第二代ADSL通過提高調制效率得到了更高的數據率。
(2)第二代ADSL採用了無縫速率自適應技術SRA(Seamless Rate Adaptation),可在運營中不中斷通信和不產生誤碼的情況下,根據線路的實時狀況,自適應地調整數據率。
(3)第二代ADSL改善了線路質量評測和故障定位功能。
5、ADSL技術的變型 :xDSL
ADSL並不適合於企業,為了滿足企業的需要,產生了ADSL技術的變型:xDSL。
(1)對稱DSL(Symmetric DSL,SDSL):把帶寬平均分配到下行和上行兩個方向,每個方向的速度分別為384kbit/s或1.5Mbit/s,距離分別為5.5km或3km。
(2)HDSL(High speed DSL):使用一對線或兩對線的對稱DSL,是用來取代T1線路的高速數字用戶線,數據速率可達768KBit/s或1.5Mbit/s,距離為2.7-3.6km。
(3)VDSL(Very high speed DSL):比ADSL更快的、用於短距離傳送(300-1800m),即甚高速數字用戶線,是ADSL的快速版本。
1、光纖同軸混合網HFC (Hybrid Fiber Coax)
(1)光纖同軸混合網HFC是在有線電視網的基礎上改造開發的一種居民寬頻接入網。
(2)光纖同軸混合網HFC可傳送電視節目,能提供電話、數據和其他寬頻交互型業務。
(3)有線電視網最早是樹形拓撲結構的同軸電纜網路,採用模擬技術的頻分復用進行單向廣播傳輸。
2、光纖同軸混合網HFC的主要特點:
(1)HFC網把原有線電視網中的同軸電纜主幹部分改換為光纖,光纖從頭端連接到光纖結點(fiber node)。
(2)在光纖結點光信號被轉換為電信號,然後通過同軸電纜傳送到每個用戶家庭。
(3)HFC網具有雙向傳輸功能,而且擴展了傳輸頻帶。
(4)連接到一個光纖結點的典型用戶數是500左右,但不超過2000。
3、電纜數據機 (cable modem)
(1)模擬電視機接收數字電視信號需要把機頂盒(set-top box)的設備連接在同軸電纜和電視機之間。
(2)電纜數據機:用於用戶接入互聯網,以及在上行信道中傳送交互數字電視所需的一些信息。
(3)電纜數據機可以做成一個單獨的設備,也可以做成內置式的,安裝在電視機的機頂盒裡面。
(4)電纜數據機不需要成對使用,而只需安裝在用戶端。
(5)電纜數據機必須解決共享信道中可能出現的沖突問題,比ADSL數據機復雜得多。
信號在陸地上長距離的傳輸,已經基本實現了光纖化。遠距離的傳輸媒體使用光纜。只是到了臨近用戶家庭的地方,才轉為銅纜(電話的用戶線和同軸電纜)。
1、多種寬頻光纖接入方式FTTx
(1)多種寬頻光纖接入方式FTTx,x可代表不同的光纖接入地點,即光電轉換的地方。
(2)光纖到戶FTTH(Fiber To The Home):把光纖一直鋪設到用戶家庭,在光纖進入用戶後,把光信號轉換為電信號,可以使用戶獲得最高的上網速率。
(3)光纖到路邊FTTC(C表示Curb)
(4)光纖到小區FTTZ(Z表示Zone)
(5)光纖到大樓FTTB(B表示Building)
(6)光纖到樓層FTTF(F表示Floor)
(7)光纖到辦公室FTTO(O表示Office)
(8)光纖到桌面FTTD(D表示Desk)
2、無源光網路PON (Passive Optical Network)
(1)光配線網ODN(Optical Distribution Network):在光纖干線和廣大用戶之間,鋪設的轉換裝置,使得數十個家庭用戶能夠共享一根光纖干線。
(2)無源光網路PON(Passive Optical Network),即無源的光配線網。
(3) 無源:表明在光配線網中無須配備電源,因此基本上不用維護,其長期運營成本和管理成本都很低。
(4)光配線網採用波分復用,上行和下行分別使用不同的波長。
(5)光線路終端OLT( Optical Line Terminal)是連接到光纖干線的終端設備。
(6)無源光網路PON下行數據傳輸
(7)無源光網路PON上行數據傳輸
當ONU發送上行數據時,先把電信號轉換為光信號,光分路器把各ONU發來的上行數據匯總後,以TDMA方式發往OLT,而發送時間和長度都由OLT集中控制,以便有序地共享光纖主幹。
(8)從ONU到用戶的個人電腦一般使用乙太網連接,使用5類線作為傳輸媒體。
(9)從總的趨勢來看,光網路單元ONU越來越靠近用戶的家庭,即「光進銅退」。
3、無源光網路PON的種類
(1)乙太網無源光網路EPON(Ethernet PON)
(2)吉比特無源光網路GPON(Gigabit PON)