- 深度學習進階:自然語言處理
- (日)齋藤康毅
- 3183字
- 2021-02-07 09:25:55
前言
凡我不能創造的,我就不能理解。
——理查德·費曼
深度學習正在深刻地改變這個世界。沒有深度學習,智能手機的語音識別、Web的實時翻譯、匯率的預測都無從談起。得益于深度學習,新藥的研發、患者的診斷、汽車的自動駕駛都在漸漸成為現實。除此以外,幾乎所有的高新技術背后都有深度學習的身影。今后,世界將因深度學習而前進得更遠。
本書是《深度學習入門:基于Python的理論與實現》的續作,我們將在前作的基礎上討論深度學習的相關技術。特別是,本書將專注于自然語言處理和時序數據處理,使用深度學習挑戰各種各樣的任務。另外,本書繼承了前作“從零開始創建”的理念,讓讀者充分體驗深度學習相關的高新技術。
本書的理念
筆者認為,要深入理解深度學習(或者某個高新技術),“從零開始創建”的經驗非常重要。從零開始創建,是指從自己可以理解的地方出發,在盡量不使用外部現成品的情況下,實現目標技術。本書的目標就是通過這樣的過程來切實掌握深度學習(而不是僅停留在表面)。
說到底,要深入理解某項技術,至少應掌握創建它所需的知識和技能。因為本書要從零開始創建深度學習,所以我們會編寫很多程序,進行很多實驗。這個過程相當費時,有時還很費腦。不過,在這些費時的工作(甚至這樣的工作本身)中包含許多對深入理解技術非常重要的精髓。如此獲得的知識,對于使用既有庫、閱讀最前沿的論文、開發原創系統都非常有幫助。此外,最重要的是,一步一步地理解深度學習的結構和原理這件事本身就很有趣。
進入自然語言處理的世界
本書的主題是基于深度學習的自然語言處理。簡言之,自然語言處理是讓計算機理解我們日常所說的語言的技術。讓計算機理解我們所說的語言是一件非常難的事情,同時也非常重要。實際上,自然語言處理技術已經極大地改變了我們的生活。Web檢索、機器翻譯、語音助理,這些對世界產生了重大影響的技術在底層都用到了自然語言處理技術。
如上所述,我們的生活已經離不開自然語言處理技術。在這個領域中,深度學習也占有非常重要的地位。實際上,深度學習極大地改善了傳統自然語言處理的性能。比如,谷歌的機器翻譯性能就基于深度學習獲得了顯著提升。
本書將圍繞自然語言處理和時序數據處理,來介紹深度學習的重要技巧,具體包括word2vec、RNN、LSTM、GRU、seq2seq和Attention等。本書將盡可能地用簡潔的語言來解釋這些技術,并通過實際創建它們來幫助讀者加深理解。另外,通過實驗,我們將實際感受到它們的潛力。
本書從深度學習的視角探索自然語言處理。全書一共8章,建議讀者像讀連載故事一樣,從頭開始順序閱讀。在遇到問題時,我們會先想辦法解決問題,然后再改進解決辦法。按照這種流程,我們以深度學習為武器,解決關于自然語言處理的各種問題。通過這次探險,希望讀者能深入理解深度學習中的重要技巧,并體會到它們的有趣之處。
本書面向的讀者
本書是《深度學習入門:基于Python的理論與實現》的續作,因此假定讀者已經學習了前作的內容。但是,作為回顧,本書第1章會復習一下神經網絡。因此,即便沒有讀過前作,只要具有神經網絡和Python相關的知識,就也可以閱讀本書。
為了讓讀者深入理解深度學習,本書將繼承前作的理念,以“創建”“運行”為中心展開話題。不使用自己不理解的東西,只使用自己理解的東西,我們將堅定這樣的立場,去探索深度學習和自然語言處理的世界。
為了明確本書的讀者對象,這里將本書的內容和特征列舉如下。
·不依賴外部庫,從零開始實現深度學習的程序
·作為《深度學習入門:基于Python的理論與實現》的續作,圍繞自然語言處理和時序數據處理中用到的深度學習技術進行講解
·提供可以運行的Python源代碼,讓讀者能夠方便地進行實驗
·盡可能地用簡潔的語言和清晰的圖示進行說明
·雖然也會使用數學式,但更注重基于源代碼進行解釋
·重視原理,比如“為什么這個方法更好?”“為什么這樣有效?”“為什么這樣有問題?”等
另外,這里將從本書中可以學到的技術列舉如下。
·基于Python的文本處理
·深度學習之前的“單詞”表示方法
·用于獲取單詞向量的word2vec(CBOW模型和skip-gram模型)
·加快大規模數據的訓練速度的Negative Sampling
·處理時序數據的RNN、LSTM和GRU
·處理時序數據的誤差反向傳播法(Backpropagation Through Time)
·進行文本生成的神經網絡
·將一個時序數據轉化為另一個時序數據的seq2seq
·關注重要信息的Attention
本書將以通俗易懂的方式詳細解釋這些技術,以便讀者能在實現層面掌握它們。在講解這些技術時,本書不會單單列舉事實,而是會像故事連載一樣展開敘述。
本書不面向的讀者
明確本書不適合什么樣的讀者也很重要,為此,這里將本書不會涉及的內容列舉如下。
·不介紹深度學習相關的最新研究進展
·不討論Caffe、TensorFlow和Chainer等深度學習框架的使用方法
·不提供深度學習理論層面的詳細解釋
·不涉及圖像識別、語音識別和強化學習等主題(本書主要關注自然語言處理)
如上所述,本書不涉及最新研究和理論細節。但是,讀完本書之后,讀者應該有能力去研究那些最新的論文或者自然語言處理相關的最前沿技術。
運行環境
本書提供了Python 3的源代碼,讀者可以自己動手實際運行這些源代碼。通過邊讀代碼邊思考,并嘗試自己想到的新思路,可以幫助自己鞏固所學知識。本書中用到的源代碼可以從以下網址下載:
https://www.ituring.com.cn/book/2678
本書的目標是從零開始實現深度學習。因此,我們的方針是盡量不使用外部庫,但是NumPy和Matplotlib這兩個庫例外。借助這兩個庫,我們可以高效地實現深度學習。
NumPy是用于數值計算的庫。該庫提供了許多用于處理高級數學算法和數組(矩陣)的便捷方法。在本書的深度學習實現中,我們將使用這些便捷方法進行高效的實現。
Matplotlib是用于繪圖的庫。使用Matplotlib,可以將實驗結果可視化,以直觀地確認深度學習的學習過程。本書將使用這些庫,來實現深度學習的算法。
另外,本書中的大部分源代碼可以在普通計算機上運行,而且不會花費太多時間。但是,也是有一部分代碼(特別是大型神經網絡的學習)需要花費大量時間。為了加快這部分耗時代碼的處理速度,本書還提供了能在GPU上運行的代碼(機制)。這是通過一個名為CuPy的庫實現的(CuPy會在第1章介紹)。如果你有一臺裝有NVIDIA GPU的機器,通過安裝CuPy,可以在GPU上高速處理本書的部分代碼。
本書使用如下編程語言和庫。
·Python 3
·NumPy
·Matplotlib
·CuPy(可選)
再次出發
技術已經進步到了可以輕松進行復制的時代。當下是一個可以輕松復制照片、視頻、源代碼和庫的便捷世界。但是,無論技術多么發達,生活多么便利,經驗都是無法輕松復制的。自己動手的經驗、花時間思考的經驗,都是無法復制的。而那些永恒的價值,正存在于這些無法復制的事物中。
前言到此結束,讓我們再次踏上學習深度學習的旅途吧!
表述規則
本書在表述上采用如下規則。
粗體字(Bold)
用來表示新引入的術語、強調的要點以及關鍵短語。
等寬字(Constant Width)
用來表示下面這些信息:程序代碼、命令、序列、組成元素、語句選項、分支、變量、屬性、鍵值、函數、類型、類、命名空間、方法、模塊、屬性、參數、值、對象、事件、事件處理器、XML標簽、HTML標簽、宏、文件的內容、來自命令行的輸出等。若在其他地方引用了以上這些內容(如變量、函數、關鍵字等),也會使用該格式標記。
等寬粗體字(Constant Width Bold)
用來表示用戶輸入的命令或文本信息。在強調代碼的作用時也會使用該格式標記。
等寬斜體字(Constant Width Italic)
用來表示必須根據用戶環境替換的字符串。
表示源代碼的文件位置。

用來表示提示、啟示以及某些值得深入研究的內容的補充信息。

表示程序庫中存在的bug或經常會發生的問題等警告信息,引起讀者對該處內容的注意。
讀者意見與咨詢
雖然筆者已經盡最大努力對本書的內容進行了檢查與確認,但是仍不免在某些地方出現錯誤或者容易引起誤解的表達及排版問題等。如果讀者遇到這些問題,請及時告知,我們在本書重印時會將其改正。與此同時,也歡迎讀者為本書將來的修訂提出建議。本書編輯部的聯系方式如下。
株式會社O'Reilly Japan
電子郵件japan@oreilly.co.jp
本書的主頁地址如下。
https://www.ituring.com.cn/book/2678
https://www.oreilly.co.jp/books/9784873118369(日語)
https://github.com/oreilly-japan/deep-learning-from-scratch-2
關于O'Reilly的其他信息,可以訪問下面的O'Reilly主頁查看。
電子書
掃描如下二維碼,即可購買本書電子版。
