導航:首頁 > 網路共享 > 孿生神經網路共享

孿生神經網路共享

發布時間:2023-03-26 21:39:06

⑴ Siamese Network 孿生網路簡介

「匹配」這類任務有著很廣泛的應用場景,例如NLP中的文本匹配,推薦領域的物品召回等任務。由此,學術界和工業界提出了很多不同的方法和模型來解決匹配問題,大知飢並致力於效果提升。本篇文章介紹一種經典的網路模型Siamese Network(孿生神經網路),該模型能夠處理但不局限於「匹配」問題,下面一起來看下。

個人心得:

Wikipedia:

https://en.wikipedia.org/wiki/Siamese_neural_network

Siamese Network的模型架構如圖所示。可以看出,該模型的設計思路非常符合「匹配」的直觀感受,即將輸入pair通過特徵變換後進行交叉得到分值(eg. 相似度)。

整個模型可以分為三步:

本節我們以NLP文本匹配任務為例介紹Siamese Network的設計思路。針對文本匹配的Siamese Network設計實例如下圖所示。

我們可以看滾返到,模型輸入層是待匹配的sentence pair,經過同猛答一個編碼器轉換後,得到其embedding特徵編碼向量。進一步,將兩個embedding向量進行交互組合,最後送入全連接層得到分類預測結果。其實抽象出來,在文本匹配任務中,Siamese Network可以拆解為,將輸入轉換到同一個特徵空間,然後進行向量交互匹配(類似於餘弦相似度),最後進行特徵變換使得模型能夠學習到針對不同任務的不同參數。

本文我們介紹了孿生神經網路Siamese Network的設計思路和原理,並結合文本匹配來進行闡述。Siamese Network原理簡單,適用范圍廣,可以作為很多場景的一個不錯的baseline模型。

如何理解人工智慧神經網路中的權值共享問題

權值(權重)共享這個詞是由LeNet5模型提出來的。以CNN為例,在對一張圖偏進行卷積的過程中,使用的是同一個卷積核的參數。比如一個3×3×1的卷積核,這個卷積核內9個的參數被整張圖共享,而不會因為圖像內位置的不同而改變卷積核內的權系數。說的再直白一些,就是用一個卷積核不改變其內權系數的情況下卷積處理整張圖片(當然CNN中每一層不會只有一個卷積核的,這樣說只是為了方便解釋而已)。

⑶ ENAS:首個權值共享的神經網路搜索方法,千倍加速 | ICML 2018

論文: Efficient Neural Architecture Search via Parameter Sharing

  神經網路結構搜索(NAS)目前在圖像分類的模型結構設計上有很大的成果,但十分耗時,主要花在搜索到的網路(child model)的訓練。論文的主要工作是提出 Efficient Neural Architecture Search (ENAS),強制所有的child model進行權重共享,避免從零開始訓練,從而達到提高效率的目的。雖然不同的模型使用不同的權重,但從遷移學習和多任務學習的研究結果來看,將當前任務的模型A學習到的參數應用於別的任務的模型B是可行的。從實驗看來,不僅共享參數是可行的,而且能帶來很強的表現,實驗僅用單張1080Ti,相對與NAS有1000x倍加速

  NAS的搜索結果可以看作是大圖中的子圖,可以用單向無環圖(DAG)來表示搜索空間,每個搜索的結構可以認為是圖2的DAG一個子網。ENAS定義的DAG為所有子網的疊加,其中每個節點的每種計算類型都有自己的參數,當特定的計算方法激活時,參數才使用。因此,ENAS的設計允許子網進行參數共享,下面會介紹具體細節

  為了設計循環單元(recurrent cell),採用 節點的DAG,節點代表計算類型,邊代表信息流向,ENAS的controller也是RNN,主要定義:1) 激活的邊 2) 每個節點的計算類型。在NAS(Zoph 2017),循環單元的搜索空間在預先定義結構的拓撲結構(二叉樹)上,僅學習每個節點的計算類型,而NAS則同時學習拓撲結構和計算類型,更靈活

  為了創建循環單元,the controller RNN首先採樣 個block的結果,取 , 為當前單元輸入信息(例如word embedding), 為前一個time step的隱藏層輸出,具體步驟如下:

  注意到每對節點( )都有獨立的參數 ,根據選擇的索引決定使用哪個參數,因此,ENAS的所有循環單元能同一個共享參數集合。論文的搜索空間包含指數數量的配置,假設有N個節點和4種激活函數,則共有 種配置

  ENAS的controller為100個隱藏單元的LSTM,通過softmax分類器以自回歸(autoregressive fashion)的方式進行選擇的決定,上一個step的輸出作為下一個step的輸入embedding,controller的第一個step則接受空embedding輸入。學習的參數主要有controller LSTM的參數 和子網的共享權重 ,ENAS的訓練分兩個交叉的階段,第一階段在完整的訓練集上進行共享權重 學習,第二階段訓練controller LSTM的參數

  固定controller的策略 ,然後進行 進行隨機梯度下降(SGD)來最小化交叉熵損失函數的期望 , 為模型 在mini-batch上的交叉熵損失,模型 從 采樣而來

  梯度的計算如公式1, 上從 采樣來的,集合所有模型的梯度進行更新。公式1是梯度的無偏估計,但有一個很高的方差(跟NAS一樣,采樣的模型性能差異),而論文發現,當 時,訓練的效果還行

  固定 然後更新策略參數 ,目標是最大化期望獎勵 ,使用Adam優化器,梯度計算使用Williams的REINFORCE方法,加上指數滑動平均來降低方差, 的計算在獨立的驗證集上進行,整體基本跟Zoph的NAS一樣

  訓練好的ENAS進行新模型構造,首先從訓練的策略 采樣幾個新的結構,對於每個采樣的模型,計算其在驗證集的minibatch上的准確率,取准確率最高的模型進行從零開始的重新訓練,可以對所有采樣的網路進行從零訓練,但是論文的方法准確率差不多,經濟效益更大

  對於創建卷積網路,the controller每個decision block進行兩個決定,這些決定構成卷積網路的一層:

  做 次選擇產生 層的網路,共 種網路,在實驗中,L取12

  NASNet提出設計小的模塊,然後堆疊成完整的網路,主要設計convolutional cell和rection cell

  使用ENAS生成convolutional cell,構建B節點的DAG來代表單元內的計算,其中node 1和node 2代表單元輸入,為完整網路中前兩個單元的輸出,剩餘的 個節點,預測兩個選擇:1) 選擇兩個之前的節點作為當前節點輸入 2) 選擇用於兩個輸入的計算類型,共5種運算元:identity, separable convolution with kernel size 3 × 3 and 5 × 5, and average pooling and max pooling with kernel size 3×3,然後將運算元結果相加。對於 ,搜索過程如下:

  對於rection cell,可以同樣地使用上面的搜索空間生成: 1) 如圖5采樣一個計算圖 2) 將所有計算的stride改為2。這樣rection cell就能將輸入縮小為1/2,controller共預測 blocks
  最後計算下搜索空間的復雜度,對於node i ,troller選擇前 個節點中的兩個,然後選擇五種運算元的兩種,共 種坑的單元。因為兩種單元是獨立的,所以搜索空間的大小最終為 ,對於 ,大約 種網路

  節點的計算做了一點修改,增加highway connections,例如 修改為 ,其中 , 為elementwise乘法。搜索到的結果如圖6所示,有意思的是:1) 激活方法全部為tanh或ReLU 2) 結構可能為局部最優,隨機替換節點的激活函數都會造成大幅的性能下降 3) 搜索的輸出是6個node的平均,與mixture of contexts(MoC)類似

  單1080Ti訓練了10小時,Penn Treebank上的結果如表1所示,PPL越低則性能越好,可以看到ENAS不準復雜度低,參數量也很少

  表2的第一塊為最好的分類網路DenseNet的結構,第二塊為ENAS設計整個卷積網路的結果(感覺這里不應有micro search space),第三塊為設計單元的結果

  全網路搜索的最優結構如圖7所示,達到4.23%錯誤率,比NAS的效果要好,大概單卡搜索7小時,相對NAS有50000x倍加速

  單元搜索的結構如圖8所示,單卡搜索11.5小時, ,錯誤率為3.54%,加上CutOut增強後比NASNet要好。論文發現ENAS搜索的結構都是局部最優的,修改都會帶來性能的降低,而ENAS不採樣多個網路進行訓練,這個給NAS帶來很大性能的提升

  NAS是自動設計網路結構的重要方法,但需要耗費巨大的資源,導致不能廣泛地應用,而論文提出的 Efficient Neural Architecture Search (ENAS),在搜索時對子網的參數進行共享,相對於NAS有超過1000x倍加速,單卡搜索不到半天,而且性能並沒有降低,十分值得參考



⑷ 文稿匹配是什麼意思

文本匹配:
1. 概述
文本匹配,旨在研究兩段文本之間的關系。常用於文本語義相似度(Semantic Textual Similarity & Paraphrase Identification)、問答匹配、自然語言推理(Natural Language Inference/ Recognizing Textual Entailment)、信息檢索(Information Retrieval)等領域。

常見的文本匹配策略分為兩種:表示式(Representation-Based)和互動式(Interaction-Based)。

表示式策略基於孿生神經網路(Siamese Network)架構,兩個主幹網路共享權重,在起始階段,即對兩段文本進行獨立處理。首先,在統一的語義空間中,基於神經網路對兩段文本各自計算其表徵(語義向量);而後,基於得到的文本表徵,來計算兩段文本的相似度。
這樣得到的單句文本表徵,不會隨著句子對(sentence pair)的變陪散化而變化,因此只需一次計算,即可離線判棗存儲文本的表徵。兩個極蘆沖氏具代表性的工作為DSSM、Sentence-BERT。

⑸ 人工智慧CNN卷積神經網路如何共享權值

首先權值共享就是濾波器共享,濾波器的參數是固定的,即是用相同的濾波器去掃一遍圖像,提取一次特徵特徵,得到feature map。在卷積網路中,學好了一個濾波器,就相當於掌握了一種特徵,這個濾波器在圖像中滑動,進行特徵提取,然後所有進行這樣操作的區域都會被採集到這種特徵,就好比上面的水平線。

⑹ JUST技術:基於時空孿生神經網路的軌跡識別

JUST團隊-任慧敏  JUST時空數據

        軌跡識別問題旨在驗證傳入的軌跡是否是由所要求的人員產生, 即給定一組單獨的人員歷史軌跡(例如行人,計程車司機)以及由特定人員生成 的一組新軌跡,判定兩組軌跡是否由同一個人員生成。這個問題在許多實際應用中都很重要,例如計程車駕駛人員身份認證、汽車保險公司風險分析以及危險駕駛識別等。軌跡識別的現有工作除了需要軌跡數據之外,還需要其他來源的數據,如感測器、攝像頭等,但這些數據無法普遍獲得且成本較高。此外,目前的工作只能局限於已有的人員身份識別,無法擴展至未經訓練的人員。為了應對這些挑戰,在這項工作中,我們首次嘗試通過提出一種新穎而有效的框架時空孿生網路(ST-SiameseNet),僅從觀察到的軌跡數據匹配人員身份。對於每個人員,我們從他們的軌跡中提取特徵,來預測每個人軌跡的羨老帆相似性。

一、問題背景

線上打車在現代社會越來越多地被應用,甚至說成為主流。根據紐約計程車協會數據顯示(圖1),截止2020年6月,紐約市每天有超過10萬人次使用打車服務,線上打車服務佔比超過70%。然而,隨著行業從業人員的增加,從業人員就顯得魚龍混雜,經常會有安全事故被報道(圖2)。盡管現在的平台會對司機進行實名認證,但仍會發生李代桃僵的事情。

如圖3所示,除了計程車安全認證之外,這項技術在汽車的保險行業也有著發展前景,比如投保人與肇事者是否是同一人,或者該駕駛員是否有危險駕駛行為,例如酒駕,等等。於是我們提出了「Human Mobility Signature Identification」,即通過軌跡信息的挖掘,進而分析駕駛人的駕駛行為,最終判斷駕駛人是否是同一人。

駕駛人員身份識別問題有很多相關工作,然而前期工作仍存在諸多問題,1)很多工作在識別司機的身份時,除GPS軌跡之外還需要額外的數據,例如車載的攝像機,方向盤和剎車的感測器等,這類數據成本高昂,很難普遍獲取。2)一些工作利用傳統的聚類或者多分類模型去識別司機身份,但這類方法識別數量有限,無法滿足現實中識別百萬級司機身份的需要。3)含友就我們所知,前期工作普遍存在泛化性不足的問題,模型面對訓練集外的司機往往束手無策。

基於以上問題,我們提出了基於時空孿生神經網路的軌跡識別模型。該模型只依賴於GPS軌跡信息,可處理大規模駕駛員的識別問題,兄雹並且有較強的泛化能力,可識別未在訓練集出現的駕駛員身份。

二、背景知識

首先,我們介紹一些相關的背景知識。我們提出了基於時空孿生神經網路的軌跡識別模型(ST-SiameseNet),那麼什麼是Siamese Network呢?Siamese是「孿生,連體」的意思,SiameseNetwork就如同字面的意思,是孿生神經網路,這一過程是通過共享權重實現的。將兩個實體輸入到同一個神經網路中,隨後映射到新的空間,從而計算兩個輸入的相似度,從而判斷二者是否屬於同一個實體。基本模型框架如圖4所示:

之所以將孿生神經網路引用至我們的模型,是因為其適合用於大規模實體的相似度判斷。其學習的內容是實體間的相似度,因此未被訓練過的數據仍然可以被拿來判斷是否相似。

孿生神經網路已經解決了上述的後兩個問題,即分類數量和泛化性。那麼接下來就要解決第一個問題,數據成本。我們採用了易於獲得的GPS行駛軌跡作為數據源。每個GPS點由經緯度和時間構成,一條軌跡則由一組GPS點構成。軌跡數據具有很強的時序性,因此我們引入LSTM來學習軌跡特徵。為進一步挖掘軌跡數據的特徵,我們從GPS數據中提取出司機的個人偏好,如最經常出現的位置、出發及結束時間、平均路程長度等等。與此同時,我們根據駕駛軌跡的狀態,將軌跡分為了兩類,例如計程車軌跡可分為載客軌跡與空車軌跡,私家車軌跡可分為上下班通勤以及日常生活軌跡等。

三、解決方案

在模型實現中,我們將計程車司機身份識別作為應用。GPS數據采自於2016年7月深圳計程車行駛記錄,我們共篩選出2197位司機在10個工作日的GPS數據。

圖5展示了我們模型的基本流程。首先,我們將獲得的GPS數據轉化為一個個對應的格子,使得經緯度信息轉化為更適合計算機處理的x,y坐標及對應的時間ID。而後,我們根據計程車是否載客將計程車軌跡分為載客軌跡與空車軌跡,並且從軌跡中提取了司機的個人偏好,如經常出現的位置、出車收車時間、平均尋客路程及時間、平均載客路程及時間、每日接單數量等。

為識別計程車司機身份,需要對一名司機兩天的軌跡或者兩名司機一天的軌跡進行比較,用以判斷這些軌跡是否產生於同一個人。為此,我們選取了一個工作日內的5條空車軌跡和5條載客軌跡,這個數據的選擇覆蓋了所收集的司機的情況。圖6顯示了ST-SiameseNet模型具體框架:

從整體來看,模型目的在於判斷兩天的軌跡是否屬於同一個司機,所以在模型輸入中等概率的選擇同一個司機不同天,或者不同司機不同天的數據,即輸入數據的正負樣本概率相同。

區別於傳統孿生神經網路只共享一個神經網路,我們將其擴展至共享三個神經網路,即LSTMD,LSTMs和FCN。前兩個模塊分別學習載客軌跡和空車軌跡特徵,FCN模塊學習司機行為偏好。由此,我們得到6個embedding對應模型的6個輸入。最後,通過embeddings後經由全卷積網路獲得非相似度。其中數值越接近1,不是同一人的可能性越大。

四、實驗結果

我們在2197名司機10天的軌跡數據上驗證了方法的有效性。表1在對比不同模型中,我們採用了500位司機的前5天作為訓練數據,另外的197位司機的後5天作為測試數據,保證了數據的充足性和獨立性。

對於SVM,由於無法輸入軌跡信息,所以輸入數據為司機個人偏好特徵信息,經過絕對值相減後輸入SVM,獲得非相似度。對於FNN,區別在於是否包含個人偏好特徵,兩個輸入GPS數據連接成一個大的數據輸入FCN中,獲得非相似度。這個對比旨在獲取神經網路在提取特徵方面的能力。對於Naïve Siamese,與我們提出的模型相比,只有一個FCN網路,而輸入的GPS數據首尾相連組成一個長數據,通過FCN和embeddings後得到非相似度。

最後對比結果可以看到,我們提出的模型結構在各個指標上都有著優異的表現。而在同類模型的對比中,加入個人偏好的模型要比不加入偏好的模型性能表現要好,這也證明了除去軌跡特徵外,司機的個人偏好對於相似度識別也有貢獻。

此外,我們對模型泛化能力,也進行了軌跡天數與司機數量兩方面的測試。圖7是固定了500位司機,以工作日為變數的結果;圖8是固定為5天的工作量,以司機數量為變數的結果。以圖7為例,所有的數據集總共包含697位司機10個工作日的軌跡數據,其中500名司機作為訓練集,197名司機為驗證和測試集,假設訓練集採用了頭3天的數據做訓練,那麼驗證集和測試集則使用剩餘的後7天作為測試,以此類推。圖8邏輯同理。

從上面的兩幅圖可以看出,隨著訓練天數和訓練人數的增加,模型的泛化能力得到了提升,有效的避免了過擬合的問題。而且模型性能的拐點分別出現在5天的訓練天數和500位司機的訓練數量,之後的測試集結果增長不明顯。說明500位司機和5個工作日的訓練數量就能夠獲得較好性能的模型。

我們還進一步對比了軌跡運行模式與司機偏好特徵對模型的影響。首先對比了運行模式對模型的影響,圖9展示了不同運行模式下的測試准確率,粉色線包含了空車模式和載客模式,灰線僅包含了空車模式,黃線僅包含了載客模式。可以看出即使只包含有單一的運行模式,在一定程度上能夠判斷軌跡是否屬於同一位司機。空車模式軌跡的准確率普遍高於載客模式軌跡的准確率,這與人的直覺是一致的,因為載客時司機無法選擇目的地,而空車時不同司機會有不同的策略尋找乘客,因此可以更好的體現司機的特徵。當兩種運行模型同時作用於模型時,我們得到了最好的結果(粉色線)。與圖7圖8趨勢一致,隨著司機數量及訓練天數的增加,模型的測試准確率有了提高。

圖10對比了司機個人偏好在模型訓練中的作用。紅色線展示了軌跡數據及個人偏好作為輸入時的測試集准確率,棕色線展示了只有軌跡數據的測試准確率,紫色線代表只有個人偏好特徵作為輸入的測試准確率。同圖7圖8趨勢一致,隨著司機數量及訓練天數的增加,模型的測試准確率有了提高。在對比三種輸入中,我們發現如果只使用司機的個人偏好特徵作為輸入,模型得到了較差的結果,這說明高度抽象的特徵雖然在一定程度上可以識別司機,但也損失了很多其他有效信息。而單純使用軌跡數據作為輸入(棕色線),其准確率仍低於我們的模型(紅色線),很可能是因為模型在處理軌跡數據時,很難獲取全局的統計信息,比如平均尋客路程與時間,平均載客路程及時間等。當軌跡信息與個人偏好特徵結合起來時,我們的模型得到了最優結果。

論文原文鏈接:https://www.aminer.cn/pub/5f03f3b611dc830562232050?conf=kdd2020

論文源碼:https://github.com/huiminren/ST-SiameseNet

參考文獻:

[1] Taxi, Uber, andLyft Usage in New York City. http://toddwschneider.com/posts/taxi-uber-lyft-usage-new-york-city/.

[2] A. MARSHALL. Uber』s New Features Put aFocus on Rider Safety . https://www.wired.com/story/ubers-new-features-focus-rider-safety/, 09 2019 .

鳴謝:

AITIME論道 對論文解析的初次整理

⑺ 一文看懂四種基本的神經網路架構

原文鏈接:
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)進行講解。

⑻ 從Siamse孿生網路到Sentence-BERT綜述

文兄空本匹配一直是自然語言處理(NLP)領域一個基礎且重要的方向,一般研究兩段文本之間的關系。文本相似度計算、自然語言推理、問答系統、信息檢索等,都可以看作針對不同數據和場景的文本匹配應用。

最近,我和小夥伴們參與了阿里天池「「新冠疫情相似句對判定大賽」,比賽任務:根據真實場景下疫情相關的肺炎、支原體肺炎等患者提問句對,識別相似的患者問題,就是典型的文本相似匹配應用。 截止3月18日,我們團隊在942支參賽隊伍中排名第四。

藉助比賽的機會,我重新系統梳理、總結了文本匹配的經驗方法。本文將著重介紹文本匹配任務中的經典網路Siamse Network,它和近期預訓練語言模型的組合使用,一些論文提及的調優技巧以及在此次比賽數據集上的效果檢驗等。

在正式開始介紹之前,我們先來看一個有趣的故事: 孿生網路的由來!

「Siamse」中的「Siam」襲塵森是古時泰國的稱呼,中文譯作暹羅,所以「Siamese」就是指「暹羅」人或「泰國」人。而「Siamese」在英語中是「孿生」的意思,這又是為什麼呢?請看下圖

十九世紀,泰國出生了一對連體嬰兒「恩」和「昌」,當時的醫學技術無法使兩人分離出來,於是兩人頑強地生活了一生。1829年他們被英國商人發現,進入馬戲團,在全世界各地演出,1839年他們訪問美國北卡羅萊那州成為「玲玲馬戲團」 的台柱,最後成為美國公民。1843年4月13日跟英國一對姐妹結婚,恩生了10個小孩,昌生了12個。1874年,兩人因病均於63歲離開了人間。他們的肝至今仍保存在費城的馬特博物館內。從此之後「暹羅雙胞胎」(Siamese twins)就成了連體人的代名詞,也因為這對雙胞胎全世界開始重視這項特殊疾病。

由於結構具有鮮明的對稱性,就像兩個孿生兄弟,所以下圖這種神經網路結構被研究人員稱作「Siamese Network」,即孿生網路。

其中最能體現「孿生」的地方,在於網路具有相同的編碼器(sentence encoder),即將文本轉換為高維向量的部分(詞嵌入)。網路隨後對兩段文本的特徵進行交互,最後完成分類/相似預測。「孿生網路」結構簡單,訓練穩定,是很多文本任務不錯的baseline模型。

孿生網路的具體用途是衡量兩個輸入文本的相似程度。例如,現在我們有兩個文本 text1 和 text2,首先將文本分別輸入 sentence encoder 進行特徵提取和編碼,將輸入映射到新的空間得到特徵向量 u和v;最終通過u、v的拼接組合,經過下游網路(比如全連接網路mlp)和激活函數來計算文本1和2的相似性。

整個過程有2個值得關注的點:
(1)在訓練和測試過程中, 模型的編碼器(sentence encoder)部分是權重共拍畝享的 ,這也是「孿生」一詞的體現之處。編碼器的選擇非常廣泛,傳統的CNN、RNN和Attention、Transformer都可以。
(2)得到特徵u、v後,可以直接使用距離公式,如cosine距離、歐式距離等得到兩個文本的相似度。不過更通用的做法是,基於u和v構建用於建模兩者匹配關系的特徵向量,然後用額外的模型(mlp等)來學習通用的文本關系函數映射;畢竟我們的場景不一定只是衡量相似性,可能還有問答、蘊含等復雜任務。

基於孿生網路,還有人提出了 Triplet network 三連體網路。顧名思義,輸入由三部分組成,文本1,和1相似的文本2,和1不相似的文本3。訓練的目標非常樸素,期望讓相同類別間的距離盡可能的小,讓不同類別間的距離盡可能的大,即減小類內距,增大類間距。

自從2018年底Bert等預訓練語言模型橫空出世,NLP屆的游戲規則某種程度上已經被大大更改了。在計算資源允許的條件下,Bert成為很多問題的優先選擇;甚至有的時候,拿Bert跑一跑baseline,發現問題已經被解決了十之八九。

但是Bert的缺點也很明顯,1.1億參數量(base版本)使得預測、推理速度明顯比CNN等傳統網路慢了不止一個量級,對資源要求更高,也不適合處理某些任務。例如,從10000條句子中找到最相似的一對句子,由於可能的組合眾多,需要完成49,995,000次推理計算;在一塊現代V00GPU上使用Bert計算,將消耗65小時。

考慮到孿生網路的簡潔有效,有沒有可能將它和Bert強強聯合取其精華呢?

當然可以,這正是論文 《Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks》 的工作,首次提出了 Sentence-Bert模型(以下簡稱SBert) 。SBert在眾多文本匹配工作中(包括語義相似性、推理等)都取得了最優結果。更讓人驚訝的是,前文所述的從10000條句子找最相似pair的任務,SBert僅需5秒就能完成!

讓我們簡短回顧此前Bert是怎麼處理文本匹配任務的。

常規做法是將匹配任務轉換成二分類任務(相似/不相似)。輸入的兩個文本拼接成一個序列(中間用一個特殊的符號「SEP」分割),經過12層(base-model)或24層(large-model)的multi-head Transformer模塊編碼後,將輸出層的字向量取平均或者取第一個token位置「CLS」的特徵作為句向量,經softmax完成最終分類。

但是論文作者 Nils Reimers 在實驗中指出,這樣的做法產生的結果並不理想(至少在處理語義檢索和聚類問題時是如此),甚至往往比Glove詞向量取平均的效果還差。

為了讓Bert更好地利用文本信息,作者們在論文中提出了如下的SBert模型結構。是不是非常眼熟?對,這不就是之前見過的孿生網路嘛!

SBert沿用了孿生網路的結構,文本的encoder部分用同一個Bert來處理。之後,作者分別實驗了CLS-token和2種池化策略(Avg-Pooling、Mean-Pooling),對Bert輸出的字向量進行進一步特徵提取、壓縮,得到u、v。最後的u、v整合,作者提供了3種策略:
(1)針對分類任務,對u、v拼接組合,最後接入一個mlp網路,使用softmax進行分類輸出,損失函數使用交叉熵;
(2)直接計算、輸出餘弦相似度;訓練損失函數採取了均方根誤差;
(3)如果輸入的是三元組,論文種也給出了相應的損失函數。

總的來說,SBert直接使用Bert的原始權重進行初始化,在具體數據集上微調,訓練過程和傳統Siamse Network差異不大。但是這種訓練方式能讓Bert更好的捕捉句子之間的關系,生成更優質的句向量。在評估測試階段,SBert直接使用餘弦相似度來比較兩個句向量之間的相似度,極大提升了推理速度。

有實驗為證!作者在7個文本匹配相關的任務上做了對比實驗,結果在其中的5個任務上,SBert都有更優表現。

此外,作者還做了一些有趣的消融實驗。使用NLI和STS為代表的匹配數據集,在進行分類目標函數訓練時,作者們測試了不同的整合策略,結果顯示「(u, v, |u-v|)」的組合效果最好,這裡面最重要的組成部分是元素差: (|u - v|) 。句向量之間的差異度量了兩個句子嵌入的維度間的距離,確保相似的對更近,而不同的對更遠。

此外,在Pool方法中,平均池化的效果要比另兩種方法更好。

完善的實驗過程幫助我們避免了不少坑。文章最後,作者對SBert和傳統的一些句嵌入方法做了對比,SBert的計算效率要更高一些。其中的smart-batching是論文中的一個小trick,先將輸入的文本按長度排序,這樣同一個mini-batch的文本長度更加統一,padding填充處理時能顯著減少填充的token。

我們將SBert模型在本次比賽的數據集上做了測試。使用數據增強後,線下的訓練集和驗證集數量分別是13,500和1000條句子組合。預訓練模型權重選擇的是roberta_wwm_large,訓練過程中加入了對抗訓練,通過在embedding層額外增加一些雜訊點提升模型的泛化能力。

最終SBert單模型在線下驗證集上的准確率是95.7%。直接使用Bert微調的方式,准確率為95.3%。

總的來說,我們做這次比賽的目的是為了積累更多的經驗,盡可能將學術界的前沿演算法和工業界結合,從而更好的將相關技術在實際項目中落地。

本文總體介紹了文本匹配任務中常用的網路結構Siamse Network,以及在此基礎上改進而來的Sentence-BERT模型。

Siamse Network 簡潔的設計和平穩高效訓練非常適合作為文本匹配任務的baseline模型,包括不限於問答對話、文本蘊含、文本相似等任務;如果孿生網路不能有效解決,可以再嘗試其他更復雜的模型。SBert則充分利用了孿生網路的優點和預訓練語言模型強大的特徵抽取優勢,在眾多匹配任務上取得了最優實驗結果。

拋開具體任務不談,SBert 可以幫助我們生成更好的句向量,在一些任務上可能產生更優結果。在推理階段,SBert直接計算餘弦相似度的方式,大大縮短了預測時間;在語義檢索、信息搜索等任務中預計會有不錯表現。同時, 得益於生成的高質量句嵌入特徵,SBert也非常適合做文本聚類、新FAQ發現等工作。

閱讀全文

與孿生神經網路共享相關的資料

熱點內容
網路自考專科費用大概多少 瀏覽:366
網路許可權在哪裡設置蘋果 瀏覽:245
如何中國移動網路設置路由器控制孩子上網 瀏覽:577
網路電話搭建平台多少錢 瀏覽:64
網路適配器wifi不能正常運行 瀏覽:236
怎樣將網路連接電腦上 瀏覽:488
中國電信網路電視機頂盒如何調 瀏覽:255
網上國網用移動網路登錄不上了 瀏覽:389
樂享wifi真的不需要網路密碼嗎 瀏覽:654
網路小說質量和數量哪個重要 瀏覽:721
華為手機出現網路信號不好 瀏覽:862
游戲網路推廣有哪些平台 瀏覽:233
紅米切換移動網路 瀏覽:724
網路設備cr是什麼意思 瀏覽:646
網路推廣用什麼交友軟體 瀏覽:407
蘋果12快捷網路切換 瀏覽:590
頭條網路連接設置 瀏覽:932
三星電視沒網路設置 瀏覽:269
打造中國網路營銷 瀏覽:961
用別人的無線網路會被盜嗎 瀏覽:433

友情鏈接