在之前的一些年裡,深度學習已經占領了模式識別領域,之後又橫掃了計算機數視覺,之後自然語言處理也慢慢的朝著這個方向開始了它的發展。
但是雖然有這樣的結果,我們還是想知道為什麼深度學習效果是如此的好呢?
這裡講一些目前我們經常應用的前人在自然語言處理上研究的成果,來說說深層神經網路!在下面,會明確告訴大家深度神經網路如何工作的這麼好,為什麼會有如此美好的前景!
乙個只有一層隱層的神經網路是很普通的:
給定足夠多的隱層單元,該單層神經網路就可以擬合幾乎所有的函式。
上面這個解釋是幾乎人人都知道的理論,但也會經常被誤解的理論。神經網路也可以被看做是乙個查表(lookup table,表這裡可以理解為公式總表)的過程。
舉乙個最簡單的例子:感知機(感覺這個要被說爛了o.o),如果輸入超過該閾值輸出1,否則輸出0。
但是要注意的是,輸入的值是有限的可能的輸入,對於每乙個可能的輸入,我們可以構造乙個隱層的神經元,然後使用隱層神經元和輸出神經元的控制連線來控制輸出。
所以,單層神經網路很普遍。但是這裡關於神經網路的介紹沒有什麼給人留下對於這個有特別的印象或讓人感到激動的情況。其實,神經網路有更加微妙的,很難用言語表達的東西。不僅僅是簡單的查表操作。下面進行例項介紹。
有乙個特別有趣的深度學習研究:word embedding(詞嵌入)。在我看來,word embedding是乙個特別有趣和有意義的研究,雖然它被bengio,et al提出來已經是10多年前了。雖然時光已逝,但是word embedding向我們展示了為什麼深度學習如此的有效!
比如乙個word embedding:
表示將一些語言的詞對映到n維度上,維度的可能範圍100-500,但不限於此。比如:
(注:詞轉向量的函式為:
舉例:判斷乙個5-grams(長度為5的序列)的詞序列是否為有效的。比如我們選擇的是:
cat sat on the mat (很明顯為有效的)
隨機替換換乙個詞,一般都為無效的,例如:
cat sat sang the mat (很明顯為無效的,句子讀不通)
模型會對該資料進行訓練w,得到乙個向量表示,之後將結果送給r來進行**是否有效。如下:
模型流程圖為:
為了**準確,模型需要對w和r學到好的引數。
但是現在這個任務似乎沒那麼有興趣了。因為你或許對這個例項好枯燥,不就是可以檢測語法錯誤或者別的什麼。但是有趣的不是它的應用,而是它的w!
事實上,這個任務的重點就是學習w。我們也可以做一些別的任務,比如常見的對乙個句子序列**下乙個詞。但是這些我們不care。下面會對word embedding的結果。
乙個word embedding空間視覺化結果:
上述的視覺化效果給了我們很直接的感覺:相似的詞靠的很近!
另一種方式檢視相近詞的embedding是給定乙個詞,得到和它距離很近的詞,比如:
這樣很能看出,意思相近的詞的詞向量也是很相似的。即使替換,一般也沒有什麼問題:
「a few people sing well」 → 「a couple people sing well」
確實沒什麼問題吧。
再比如:
「the wall is blue」 →「the wall is red」
「the wall is blue」 →「the ceilingis red」
這就很清楚w的用途了。還比如:
這個或許更加的surprising吧。向這種關係,也有人總結了:
這裡你看到了w的很直觀的學習結果了吧。word embedding只是乙個深度學習的例項而已。向這樣的例項很多很多。
參考白話word2vec
nlp基礎|中英文詞向量評測理論與實踐
什麼是深度學習?為何需要深度學習?
深度學習有如下一些眾所周知且被廣泛接受的定義。1 深度學習是機器學習的子集。2 深度學習使用級聯的多層 非線性 處理單元,稱為人工神經網路 ann 以及受大腦結構和功能 神經元 啟發的演算法。每個連續層使用前一層的輸出作為輸入。3 深度學習使用ann進行特徵提取和轉換,處理資料,查詢模式和開發抽象。...
為何現在深度學習這麼流行?
為何現在深度學習這麼流行?一些關鍵原因如下 深度學習要在數百萬甚至數十億的引數上進行複雜的數 算。儘管過去這些年有所提高,但僅依靠現在的cpu執行這些運算極其耗時。一種叫作圖形處理單元 graphics processing unit,gpu 的新型硬體在完成這些大規模的數 算 如矩陣乘法 時可以高...
Scrapy簡單入門及例項講解
scrapy是乙個為了爬取 資料,提取結構性資料而編寫的應用框架。其可以應用在資料探勘,資訊處理或儲存歷史資料等一系列的程式中。其最初是為了頁面抓取 更確切來說,網路抓取 所設計的,也可以應用在獲取api所返回的資料 例如 amazon associates web services 或者通用的網路...