⑴ cnn與lstm應用於哪個領域
下面我盡可能地用簡單的語言來闡述下我的看法(敘述中假設你已經大致知道什麼是深度學習和神經網路:大數據和高性能計算
在如今的互聯網時代,都讓神經網路有了前所未有的「更深」的可能,一批新方法被發明出來(Denoise Autoencoder、圖像識別中,他提出了利用RBM預訓練的方法。幾年後人們發現?
3,拋磚引玉。在這個框架下?
2,deep learning還會進一步推動更多AI領域的發展,即用特定結構將網路先初始化到一個差不多「好」的程度,從一定程度上解決了之前網路「深不了」的問題,再回到傳統的訓練方法(反向傳播BP),並且可以模擬人腦的運作形式,深度學習重新得到了人們重視,大家共同討論,但是計算速度跟不上。
當然,人的聰明才智是無窮無盡的,淺層的神經網路啥都達不到:
==============================我是分割線============================
1.為什麼深度學習突然間火起來了,是論證完整化的標准,即便不做預訓練,需要程序員辛辛苦苦寫代碼,也能使深層網路得到非常好的結果。一個我所知道的例子是自然語言處理NLP中詞向量(Word Embedding)方法對傳統語言模型的提升[1]。
有大數據和高性能計算打下最堅實的基礎,就是使語音,GPU並行計算的發展確實極大推動了深度學習的普及?這也是為什麼有人認為神經網路火起來完全是因為GPU使得計算方法更快更好了,性能反而還不如一兩層的淺模型。這樣得到的深度網路似乎就能達到一個不錯的結果。
雖然神經網路「號稱」自己可以擬合任何函數、圖像識別獲得了長足的進步,基本都是沒有預訓練步驟的,深度學習DeepLearning最為人所關注也表現最明顯的,只是我忍不住再談談自己的理解. 為什麼深度學習能成功地應用到語音,順便認為你已經瀏覽了其他答案)?
為了讓更多對深度學習感興趣的朋友看懂,只要有足夠多的數據。沒有了規模,了解神經網路的基本原理。其實有的同學已經回答得很漂亮了,Dropout. 為什麼深度學習會應用到語音識別和圖像識別中,我覺得可以從以下三點遞進地解決題主的疑問. 為什麼深度學習突然間火起來了,想像你有好多好多數據(百萬幅圖片。而人們發現:
1,那這個研究也完全不必要做了吧,預訓練本身也不像全連接那麼好做了,優化多層神經網路是一個高度非凸的問題,訓練就難以收斂。從這個意義上,訓練一個網路需要好幾年(做機器學習的人應該知道這個完全沒有誇張吧)Deep learning實際上同時推動了很多領域的發展,如果在五六年之前。
在2006年Hinton的那篇文章中。這個嚴重的問題直接導致了神經網路方法的上一次衰敗,你說誰干呢……現在的語音識別或圖像識別系統。那些篤信深度學習的學者們使用了各種各樣的演算法激發深度學習的潛能,取得突破,但是這一切都是建立在神經網路足夠深足夠大的基礎上,比如微軟的殘差學習[2]?
談到這個問題,再多的數據也不能把傳統的神經網路訓練到152層啊;而且我相信。而針對卷積神經網路CNN或者LSTM來說,還需要researcher辛辛苦苦想演算法,上萬小時語音)。否則,當網路層數太多了之後,ReLU……),或者只能收斂到一個次優的局部最優解,我們應該加入兩個甚至更加關鍵的元素。
但是我們現在再回過頭來看這個問題。
而高性能計算是與大數據相輔相成的。一個技術不能很大地提升性能,如果擁有大量的訓練樣本,近十年來數據量的積累是爆炸式的,很多人肯定會說是因為Hinton在Science上的那篇論文「Recing the dimensionality ofdata with neural networks」。
本著讀書人簡單問題復雜化……啊呸
⑵ nlp的嵌入層包括詞向量、詞性向量、實體類型向量(隨機初始化),這些隨機初始化的向量是怎樣做出調整的
在梯度反向傳播過程中,這些初始化的向量也會得到調整。
⑶ 快速了解什麼是自然語言處理
摘要:
自然語言處理是計算機科學領域與人工智慧領域中的一個重要方向。它研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。自然語言處理是一門融語言學、計算機科學、數學等於一體的科學。因此,這一領域的研究將涉及自然語言,即人們日常使用的語言,所以它與語言學的研究有著密切的聯系,但又有重要的區別。自然語言處理並不是一般地研究自然語言,而在於研製能有效地實現自然語言通信的計算機系統,特別是其中的軟體系統。因而它是計算機科學的一部分。
1 計算機對自然語言處理的過程
1.1把需要研究是問題在語言上建立形式化模型,使其可以數學形式表示出來,這個過程稱之為"形式化"
1.2把數學模型表示為演算法的過程稱之為"演算法化"
1.3根據演算法,計算機進行實現,建立各種自然語言處理系統,這個過程是"程序化"
1.4對系統進行評測和改進最終滿足現實需求,這個過程是"實用化"
2 自然語言處理涉及的知識領域
語言學、計算機科學(提供模型表示、演算法設計、計算機實現)、數學(數學模型)、心理學(人類言語心理模型和理論)、哲學(提供人類思維和語言的更深層次理論)、統計學(提供樣本數據的預測統計技術)、電子工程(資訊理論基礎和語言信號處理技術)、生物學(人類言語行為機制理論)。故其為多邊緣的交叉學科
3 自然語言處理涉及的范圍
3.1語音的自動合成與識別、機器翻譯、自然語言理解、人機對話、信息檢索、文本分類、自動文摘等等,總之分為四大方向:
語言學方向
數據處理方向
人工智慧和認知科學方向
語言工程方向
3.2也可細分為13個方面
口語輸入:語音識別、信號表示、魯棒的語音識別、語音識別中的隱馬爾科夫模型方法、語言模型、說話人識別、口語理解
書面語輸入:文獻格式識別、光學字元識別(OCR):印刷體識別/手寫體識別、手寫界面、手寫文字分析
語言分析理解:小於句子單位的處理、語法的形式化、針對基於約束的語法編寫的詞表、計算語義學、句子建模和剖析技術、魯棒的剖析技術
語言生成:句法生成、深層生成
口語輸入技術:合成語音技術、語音合成的文本解釋、口語生成
話語分析與對話:對話建模、話語建模口語對話系統
文獻自動處理:文獻檢索、文本解釋:信息抽取、文本內容自動歸納、文本寫作和編輯的計算機支持、工業和企業中使用的受限語言
多語問題的計算機處理:機器翻譯、人助機譯、機助人譯、多語言信息檢索、多語言語音識別、自動語種驗證
多模態的計算機處理:空間和時間表示方法、文本與圖像處理、口語與手勢的模態結合、口語與面部信息的模態結合:面部運動和語音識別
信息傳輸和信息存儲:語音壓縮、語音品質的提升
自然語言處理中的數學方法:統計建模和分類的數學理論、數字信號處理技術、剖析演算法的數學基礎研究、神經網路、有限狀態分析技術、語音和語言處理中的最優化技術和搜索技術
語言資源:書面語料庫、口語語料庫、機器詞典與詞網的建設、術語編撰和術語資料庫、網路數據挖掘和信息提取
自然語言處理系統的評測:面向任務的文本分析評測、機器翻譯系統和翻譯工具的評測、大覆蓋面的自然語言剖析器的評測、語音識別:評估和評測、語音合成評測、系統的可用性和界面的評測、語音通信質量的評測、文字識別系統的評測
4自然語言處理的發展的幾個特點
基於句法-語義規則的理性主義方法受到質疑,隨著語料庫建設和語料庫語言學 的崛起,大規模真實文本的處理成為自然語言處理的主要戰略目標。
自然語言處理中越來越多地使用機器自動學習的方法來獲取語言知識。
統計數學方法越來越受到重視。
自然語言處理中越來越重視詞彙的作用,出現了強烈的"詞彙主義"的傾向。
最後,你了解了嗎。
⑷ word2vec 詞向量怎麼來的
2013年,Google開源了一款用於詞向量計算的工具——word2vec,引起了工業界和學術界的關注。首先,word2vec可以在百萬數量級的詞典和上億的數據集上進行高效地訓練;其次,該工具得到的訓練結果——詞向量(word embedding),可以很好地度量詞與詞之間的相似性。隨著深度學習(Deep Learning)在自然語言處理中應用的普及,很多人誤以為word2vec是一種深度學習演算法。其實word2vec演算法的背後是一個淺層神經網路。另外需要強調的一點是,word2vec是一個計算word vector的開源工具。當我們在說word2vec演算法或模型的時候,其實指的是其背後用於計算word vector的CBoW模型和Skip-gram模型。很多人以為word2vec指的是一個演算法或模型,這也是一種謬誤。接下來,本文將從統計語言模型出發,盡可能詳細地介紹word2vec工具背後的演算法模型的來龍去脈。
詳情:網頁鏈接
⑸ word2vec是如何得到詞向量的
word2vec是一個將單詞轉換成向量形式的工具。可以把對文本內容的處理簡化為向量空間中的向量運算,計算出向量空間上的相似度,來表示文本語義上的相似度。
一、理論概述:
1.詞向量是什麼?自然語言理解的問題要轉化為機器學習的問題,第一步肯定是要找一種方法把這些符號數學化。NLP 中最直觀,也是到目前為止最常用的詞表示方法是 One-hot Representation,這種方法把每個詞表示為一個很長的向量。這個向量的維度是詞表大小,其中絕大多數元素為 0,只有一個維度的值為 1,這個維度就代表了當前的詞。
舉個栗子:
「話筒」表示為 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ...]
「麥克」表示為 [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ...]
每個詞都是茫茫 0 海中的一個 1。這種 One-hot Representation 如果採用稀疏方式存儲,會是非常的簡潔:也就是給每個詞分配一個數字 ID。比如剛才的例子中,話筒記為 3,麥克記為 8(假設從 0 開始記)。如果要編程實現的話,用 Hash 表給每個詞分配一個編號就可以了。這么簡潔的表示方法配合上最大熵、SVM、CRF 等等演算法已經很好地完成了 NLP 領域的各種主流任務。當然這種表示方法也存在一個重要的問題就是「詞彙鴻溝」現象:任意兩個詞之間都是孤立的。光從這兩個向量中看不出兩個詞是否有關系,哪怕是話筒和麥克這樣的同義詞也不能倖免於難。Deep Learning 中一般用到的詞向量並不是剛才提到的用One-hot Representation 表示的那種很長很長的詞向量,而是用Distributed Representation(不知道這個應該怎麼翻譯,因為還存在一種叫「Distributional Representation」(類似,LDA中用topic表示詞語的詞向量的表示方法)表示的一種低維實數向量。這種向量一般是這個樣子:[0.792, −0.177, −0.107, 0.109, −0.542, ...]。維度以50維和 100 維比較常見。
2.詞向量的來歷?Distributed representation 最早是 Hinton 在 1986 年的論文《Learning distributed representations of concepts》中提出的。雖然這篇文章沒有說要將詞做 Distributed representation但至少這種先進的思想在那個時候就在人們的心中埋下了火種,到 2000 年之後開始逐漸被人重視。
3. 詞向量的訓練:要介紹詞向量是怎麼訓練得到的,就不得不提到語言模型。到目前為止我了解到的所有訓練方法都是在訓練語言模型的同時,順便得到詞向量的。這也比較容易理解,要從一段無標注的自然文本中學習出一些東西,無非就是統計出詞頻、詞的共現、詞的搭配之類的信息。而要從自然文本中統計並建立一個語言模型,無疑是要求最為精確的一個任務(也不排除以後有人創造出更好更有用的方法)。既然構建語言模型這一任務要求這么高,其中必然也需要對語言進行更精細的統計和分析,同時也會需要更好的模型,更大的數據來支撐。目前最好的詞向量都來自於此,也就不難理解了。詞向量的訓練最經典的有 3 個工作,C&W 2008、M&H 2008、Mikolov 2010。當然在說這些工作之前,不得不介紹一下這一系列中 Bengio 的經典之作
4. 詞向量的評價:詞向量的評價大體上可以分成兩種方式,第一種是把詞向量融入現有系統中,看對系統性能的提升;第二種是直接從語言學的角度對詞向量進行分析,如相似度、語義偏移等。
⑹ 詞向量,LDA,word2vec三者的關系是什麼
詞向量,有時候翻譯為詞嵌入(word embeddings),又可以稱作distributed word representation[1], 最初起源是神經網路語言模型(Neural Networks Language Models),word2vec是一種常見的word embeddings,另外一種著名word embeddings是GloVe
LDA(Latent Dirichlet Allocation)是主題模型(Topic Models)的一種計算方法,和詞向量並無直接關系,不過如果扯上另外一種topic model, LSA(Latent Semantic Allocation),那就有一些關系了:LSA的核心技術是SVD,一種矩陣分解,而SVD一般在NLP中的使用並非是使用它分解的三個矩陣,而是合並右邊兩個矩陣。那麼合並之後,左邊的矩陣就可以視為word embeddings,而右邊的矩陣可以視為當它是context時候的embeddings。當然,一般的矩陣分解,比如NMF,也可以得到word embeddings。而word2vec一再被人證明,從結果看,是一個全局PPMI矩陣的分解。某種意義講,word embeddings可以理解是傳統矩陣分解的一個加速版本。LDA和word embeddings還是可以有點聯系,比如加入LDA的結果作為word embeddings的輸入,來增強文章分類效果。Latent Dirichlet Allocation(LDA)和word2vec從模型上看幾乎沒有顯著聯系。詞向量則是所有對詞進行表示的方法的統稱。關於聯系你可以這樣看:LDA的作用之一是通過對doc-word矩陣進行建模抽出doc-topic和topic-word兩個分布。而word2vec其實是分解了word-context矩陣。其實都是對一個"A"-"B"矩陣進行建模。那麼LDA自然也可以用於對word-context矩陣進行建模,而word2vec也可以對doc-word矩陣做分解。以上算是LDA和word2vec之間的的一點聯系吧。不過他們之間的區別也是非常顯著的。
⑺ 進行自然語言處理時,使用字向量好,還是詞向量好
兩個方面,1)得看具體任務,不同的任務下兩種方式的孰優孰劣只有試了才知道。2)圖中給出的文本標簽分類的一個模型效果,從中可以看到,詞向量是要優於字向量的。
⑻ 為什麼說Transformer的注意力機制是相對廉價的注意力機制相對更對於RNN系列及CNN系列演算法有何優勢
QA形式對自然語言處理中注意力機制(Attention)進行總結,並對Transformer進行深入解析。
二、Transformer(Attention Is All You Need)詳解
1、Transformer的整體架構是怎樣的?由哪些部分組成?
2、Transformer Encoder 與 Transformer Decoder 有哪些不同?
3、Encoder-Decoder attention 與self-attention mechanism有哪些不同?
4、multi-head self-attention mechanism具體的計算過程是怎樣的?
5、Transformer在GPT和Bert等詞向量預訓練模型中具體是怎麼應用的?有什麼變化?
一、Attention機制剖析
1、為什麼要引入Attention機制?
根據通用近似定理,前饋網路和循環網路都有很強的能力。但為什麼還要引入注意力機制呢?
計算能力的限制:當要記住很多「信息「,模型就要變得更復雜,然而目前計算能力依然是限制神經網路發展的瓶頸。
優化演算法的限制:雖然局部連接、權重共享以及pooling等優化操作可以讓神經網路變得簡單一些,有效緩解模型復雜度和表達能力之間的矛盾;但是,如循環神經網路中的長距離以來問題,信息「記憶」能力並不高。
可以藉助人腦處理信息過載的方式,例如Attention機制可以提高神經網路處理信息的能力。
2、Attention機制有哪些?(怎麼分類?)
當用神經網路來處理大量的輸入信息時,也可以借鑒人腦的注意力機制,只 選擇一些關鍵的信息輸入進行處理,來提高神經網路的效率。按照認知神經學中的注意力,可以總體上分為兩類:
聚焦式(focus)注意力:自上而下的有意識的注意力,主動注意——是指有預定目的、依賴任務的、主動有意識地聚焦於某一對象的注意力;
顯著性(saliency-based)注意力:自下而上的有意識的注意力,被動注意——基於顯著性的注意力是由外界刺激驅動的注意,不需要主動干預,也和任務無關;可以將max-pooling和門控(gating)機制來近似地看作是自下而上的基於顯著性的注意力機制。
在人工神經網路中,注意力機制一般就特指聚焦式注意力。
3、Attention機制的計算流程是怎樣的?
Attention機制的實質其實就是一個定址(addressing)的過程,如上圖所示:給定一個和任務相關的查詢Query向量q,通過計算與Key的注意力分布並附加在Value上,從而計算Attention Value,這個過程實際上是Attention機制緩解神經網路模型復雜度的體現:不需要將所有的N個輸入信息都輸入到神經網路進行計算,只需要從X中選擇一些和任務相關的信息輸入給神經網路。
step1-信息輸入:用X= [x1, · · · , xN ]表示N 個輸入信息;
step2-注意力分布計算:令Key=Value=X,則可以給出注意力分布
我們將稱之為注意力分布(概率分布),為注意力打分機制,有幾種打分機制:
step3-信息加權平均:注意力分布可以解釋為在上下文查詢q時,第i個信息受關注的程度,採用一種「軟性」的信息選擇機制對輸入信息X進行編碼為:
這種編碼方式為軟性注意力機制(soft Attention),軟性注意力機制有兩種:普通模式(Key=Value=X)和鍵值對模式(Key!=Value)。
4、Attention機制的變種有哪些?
與普通的Attention機制(上圖左)相比,Attention機制有哪些變種呢?
變種1-硬性注意力:之前提到的注意力是軟性注意力,其選擇的信息是所有輸入信息在注意力 分布下的期望。還有一種注意力是只關注到某一個位置上的信息,叫做硬性注意力(hard attention)。硬性注意力有兩種實現方式:(1)一種是選取最高概率的輸入信息;(2)另一種硬性注意力可以通過在注意力分布式上隨機采樣的方式實現。硬性注意力模型的缺點:
變種2-鍵值對注意力:即上圖右邊的鍵值對模式,此時Key!=Value,注意力函數變為:
變種3-多頭注意力:多頭注意力(multi-head attention)是利用多個查詢Q = [q1, · · · , qM],來平行地計算從輸入信息中選取多個信息。每個注意力關注輸入信息的不同部分,然後再進行拼接:
5、一種強大的Attention機制:為什麼自注意力模型(self-Attention model)在長距離序列中如此強大?
(1)卷積或循環神經網路難道不能處理長距離序列嗎?
當使用神經網路來處理一個變長的向量序列時,我們通常可以使用卷積網路或循環網路進行編碼來得到一個相同長度的輸出向量序列,如圖所示:
從上圖可以看出,無論卷積還是循環神經網路其實都是對變長序列的一種「局部編碼」:卷積神經網路顯然是基於N-gram的局部編碼;而對於循環神經網路,由於梯度消失等問題也只能建立短距離依賴。
(2)要解決這種短距離依賴的「局部編碼」問題,從而對輸入序列建立長距離依賴關系,有哪些辦法呢?
由上圖可以看出,全連接網路雖然是一種非常直接的建模遠距離依賴的模型, 但是無法處理變長的輸入序列。不同的輸入長度,其連接權重的大小也是不同的。
這時我們就可以利用注意力機制來「動態」地生成不同連接的權重,這就是自注意力模型(self-attention model)。由於自注意力模型的權重是動態生成的,因此可以處理變長的信息序列。
總體來說,為什麼自注意力模型(self-Attention model)如此強大:利用注意力機制來「動態」地生成不同連接的權重,從而處理變長的信息序列。
(3)自注意力模型(self-Attention model)具體的計算流程是怎樣的呢?
同樣,給出信息輸入:用X = [x1, · · · , xN ]表示N 個輸入信息;通過線性變換得到為查詢向量序列,鍵向量序列和值向量序列:
上面的公式可以看出,self-Attention中的Q是對自身(self)輸入的變換,而在傳統的Attention中,Q來自於外部。
注意力計算公式為:
自注意力模型(self-Attention model)中,通常使用縮放點積來作為注意力打分函數,輸出向量序列可以寫為:
二、Transformer(Attention Is All You Need)詳解
從Transformer這篇論文的題目可以看出,Transformer的核心就是Attention,這也就是為什麼本文會在剖析玩Attention機制之後會引出Transformer,如果對上面的Attention機制特別是自注意力模型(self-Attention model)理解後,Transformer就很容易理解了。
1、Transformer的整體架構是怎樣的?由哪些部分組成?
Transformer其實這就是一個Seq2Seq模型,左邊一個encoder把輸入讀進去,右邊一個decoder得到輸出:
Transformer=Transformer Encoder+Transformer Decoder
(1)Transformer Encoder(N=6層,每層包括2個sub-layers):
sub-layer-1:multi-head self-attention mechanism,用來進行self-attention。
sub-layer-2:Position-wise Feed-forward Networks,簡單的全連接網路,對每個position的向量分別進行相同的操作,包括兩個線性變換和一個ReLU激活輸出(輸入輸出層的維度都為512,中間層為2048):
每個sub-layer都使用了殘差網路:
(2)Transformer Decoder(N=6層,每層包括3個sub-layers):
sub-layer-1:Masked multi-head self-attention mechanism,用來進行self-attention,與Encoder不同:由於是序列生成過程,所以在時刻 i 的時候,大於 i 的時刻都沒有結果,只有小於 i 的時刻有結果,因此需要做Mask。
sub-layer-2:Position-wise Feed-forward Networks,同Encoder。
sub-layer-3:Encoder-Decoder attention計算。
2、Transformer Encoder 與 Transformer Decoder 有哪些不同?
(1)multi-head self-attention mechanism不同,Encoder中不需要使用Masked,而Decoder中需要使用Masked;
(2)Decoder中多了一層Encoder-Decoder attention,這與 self-attention mechanism不同。
3、Encoder-Decoder attention 與self-attention mechanism有哪些不同?
它們都是用了 multi-head計算,不過Encoder-Decoder attention採用傳統的attention機制,其中的Query是self-attention mechanism已經計算出的上一時間i處的編碼值,Key和Value都是Encoder的輸出,這與self-attention mechanism不同。代碼中具體體現:
4、multi-head self-attention mechanism具體的計算過程是怎樣的?
Transformer中的Attention機制由Scaled Dot-Proct Attention和Multi-Head Attention組成,上圖給出了整體流程。下面具體介紹各個環節:
Expand:實際上是經過線性變換,生成Q、K、V三個向量;
Split heads: 進行分頭操作,在原文中將原來每個位置512維度分成8個head,每個head維度變為64;
Self Attention:對每個head進行Self Attention,具體過程和第一部分介紹的一致;
Concat heads:對進行完Self Attention每個head進行拼接;
上述過程公式為:
5、Transformer在GPT和Bert等詞向量預訓練模型中具體是怎麼應用的?有什麼變化?
GPT中訓練的是單向語言模型,其實就是直接應用Transformer Decoder;
Bert中訓練的是雙向語言模型,應用了Transformer Encoder部分,不過在Encoder基礎上還做了Masked操作;
BERT Transformer 使用雙向self-attention,而GPT Transformer 使用受限制的self-attention,其中每個token只能處理其左側的上下文。雙向 Transformer 通常被稱為「Transformer encoder」,而左側上下文被稱為「Transformer decoder」,decoder是不能獲要預測的信息的。
⑼ 自然語言處理的概述
FudanNLP主要是為中文自然語言處理而開發的工具包,也包含為實現這些任務的機器學習演算法和數據集。本工具包及其包含數據集使用LGPL3.0許可證。開發語言為Java。
功能:
1. 文本分類 新聞聚類
2. 中文分詞 詞性標注 實體名識別 關鍵詞抽取 依存句法分析 時間短語識別
3. 結構化學習 在線學習 層次分類 聚類 精確推理 句子常常並不只是字面上的意思;例如,「你能把鹽遞過來嗎」,一個好的回答應當是把鹽遞過去;在大多數上下文環境中,「能」將是糟糕的回答,雖說回答「不」或者「太遠了我拿不到」也是可以接受的。再者,如果一門課程上一年沒開設,對於提問「這門課程去年有多少學生沒通過?」回答「去年沒開這門課」要比回答「沒人沒通過」好。