PaddlePaddle提供了豐富的運算單元,幫助大家以模塊化的方式構建起千變萬化的深度學習模型來解決不同的應用問題。這里,我們針對常見的機器學習任務,提供了不同的神經網絡模型供大家學習和使用。
詞向量用一個實向量表示詞語,向量的每個維都表示文本的某種潛在語法或語義特征,是深度學習應用于自然語言處理領域最成功的概念和成果之一。廣義的,詞向量也可以應用于普通離散特征。詞向量的學習通常都是一個無監督的學習過程,因此,可以充分利用海量的無標記數據以捕獲特征之間的關系,也可以有效地解決特征稀疏、標簽數據缺失、數據噪聲等問題。然而,在常見詞向量學習方法中,模型最后一層往往會遇到一個超大規模的分類問題,是計算性能的瓶頸。
在詞向量任務中,我們向大家展示如何使用Hierarchical-Sigmoid 和噪聲對比估計(Noise Contrastive Estimation,NCE)來加速詞向量的學習。
語言模型是自然語言處理領域里一個重要的基礎模型,除了得到詞向量(語言模型訓練的副產物),還可以幫助我們生成文本。給定若干個詞,語言模型可以幫助我們預測下一個最可能出現的詞。
在利用語言模型生成文本的任務中,我們重點介紹循環神經網絡語言模型,大家可以通過文檔中的使用說明快速適配到自己的訓練語料,完成自動寫詩、自動寫散文等有趣的模型。
點擊率預估模型預判用戶對一條廣告點擊的概率,對每次廣告的點擊情況做出預測,是廣告技術的核心算法之一。邏諦斯克回歸對大規模稀疏特征有著很好的學習能力,在點擊率預估任務發展的早期一統天下。近年來,DNN 模型由于其強大的學習能力逐漸接過點擊率預估任務的大旗。
在點擊率預估任務中,我們首先給出谷歌提出的 Wide & Deep 模型。這一模型融合了適用于學習抽象特征的DNN和適用于大規模稀疏特征的邏諦斯克回歸兩者的優點,可以作為一種相對成熟的模型框架使用,在工業界也有一定的應用。同時,我們提供基于因子分解機的深度神經網絡模型,該模型融合了因子分解機和深度神經網絡,分別建模輸入屬性之間的低階交互和高階交互。
文本分類是自然語言處理領域最基礎的任務之一,深度學習方法能夠免除復雜的特征工程,直接使用原始文本作為輸入,數據驅動地最優化分類準確率。
在文本分類任務中,我們以情感分類任務為例,提供了基于DNN的非序列文本分類模型,以及基于CNN的序列模型供大家學習和使用(基于LSTM的模型見PaddleBook中情感分類一課)。
排序學習(Learning to Rank, LTR)是信息檢索和搜索引擎研究的核心問題之一,通過機器學習方法學習一個分值函數對待排序的候選進行打分,再根據分值的高低確定序關系。深度神經網絡可以用來建模分值函數,構成各類基于深度學習的LTR模型。
在排序學習任務中,我們介紹基于RankLoss損失函數Pairwise排序模型和基于LambdaRank損失函數的Listwise排序模型(Pointwise學習策略見PaddleBook中推薦系統一課)。
深度結構化語義模型是一種基于神經網絡的語義匹配模型框架,可以用于學習兩路信息實體或是文本之間的語義相似性。DSSM使用DNN、CNN或是RNN將兩路信息實體或是文本映射到同一個連續的低緯度語義空間中。在這個語義空間中,兩路實體或是文本可以同時進行表示,然后,通過定義距離度量和匹配函數來刻畫并學習不同實體或是文本在同一個語義空間內的語義相似性。
在結構化語義模型任務中,我們演示如何建模兩個字符串之間的語義相似度。模型支持DNN(全連接前饋網絡)、CNN(卷積網絡)、RNN(遞歸神經網絡)等不同的網絡結構,以及分類、回歸、排序等不同損失函數。本例采用最簡單的文本數據作為輸入,通過替換自己的訓練和預測數據,便可以在真實場景中使用。
給定輸入序列,序列標注模型為序列中每一個元素貼上一個類別標簽,是自然語言處理領域最基礎的任務之一。隨著深度學習方法的不斷發展,利用循環神經網絡學習輸入序列的特征表示,條件隨機場(Conditional Random Field, CRF)在特征基礎上完成序列標注任務,逐漸成為解決序列標注問題的標配解決方案。
在序列標注任務中,我們以命名實體識別(Named Entity Recognition,NER)任務為例,介紹如何訓練一個端到端的序列標注模型。
序列到序列學習實現兩個甚至是多個不定長模型之間的映射,有著廣泛的應用,包括:機器翻譯、智能對話與問答、廣告創意語料生成、自動編碼(如金融畫像編碼)、判斷多個文本串之間的語義相關性等。
在序列到序列學習任務中,我們首先以機器翻譯任務為例,提供了多種改進模型供大家學習和使用。包括:不帶注意力機制的序列到序列映射模型,這一模型是所有序列到序列學習模型的基礎;使用Scheduled Sampling改善RNN模型在生成任務中的錯誤累積問題;帶外部記憶機制的神經機器翻譯,通過增強神經網絡的記憶能力,來完成復雜的序列到序列學習任務。除機器翻譯任務之外,我們也提供了一個基于深層LSTM網絡生成古詩詞,實現同語言生成的模型。
當深度學習以及各類新技術不斷推動自然語言處理領域向前發展時,我們不禁會問:應該如何確認模型真正理解了人類特有的自然語言,具備一定的理解和推理能力?縱觀NLP領域的各類經典問題:詞法分析、句法分析、情感分類、寫詩等,這些問題的經典解決方案,從技術原理上距離“語言理解”仍有一定距離。為了衡量現有NLP技術到“語言理解”這一終極目標之間的差距,我們需要一個有足夠難度且可量化可復現的任務,這也是閱讀理解問題提出的初衷。盡管目前的研究現狀表明在現有閱讀理解數據集上表現良好的模型,依然沒有做到真正的語言理解,但機器閱讀理解依然被視為是檢驗模型向理解語言邁進的一個重要任務。
閱讀理解本質上也是自動問答的一種,模型“閱讀”一段文字后回答給定的問題,在這一任務中,我們介紹使用Learning to Search 方法,將閱讀理解轉化為從段落中尋找答案所在句子,答案在句子中的起始位置,以及答案在句子中的結束位置,這樣一個多步決策過程。
自動問答(Question Answering)系統利用計算機自動回答用戶提出的問題,是驗證機器是否具備自然語言理解能力的重要任務之一,其研究歷史可以追溯到人工智能的原點。與檢索系統相比,自動問答系統是信息服務的一種高級形式,系統返回給用戶的不再是排序后的基于關鍵字匹配的檢索結果,而是精準的自然語言答案。
在自動問答任務中,我們介紹基于深度學習的端到端問答系統,將自動問答轉化為一個序列標注問題。端對端問答系統試圖通過從高質量的"問題-證據(Evidence)-答案"數據中學習,建立一個聯合學習模型,同時學習語料庫、知識庫、問句語義表示之間的語義映射關系,將傳統的問句語義解析、文本檢索、答案抽取與生成的復雜步驟轉變為一個可學習過程。
圖像相比文字能夠提供更加生動、容易理解及更具藝術感的信息,是人們轉遞與交換信息的重要來源。圖像分類是根據圖像的語義信息對不同類別圖像進行區分,是計算機視覺中重要的基礎問題,也是圖像檢測、圖像分割、物體跟蹤、行為分析等其他高層視覺任務的基礎,在許多領域都有著廣泛的應用。如:安防領域的人臉識別和智能視頻分析等,交通領域的交通場景識別,互聯網領域基于內容的圖像檢索和相冊自動歸類,醫學領域的圖像識別等。
在圖像分類任務中,我們向大家介紹如何訓練AlexNet、VGG、GoogLeNet和ResNet模型。同時提供了一個夠將Caffe訓練好的模型文件轉換為PaddlePaddle模型文件的模型轉換工具。
目標檢測任務的目標是給定一張圖像或是視頻幀,讓計算機找出其中所有目標的位置,并給出每個目標的具體類別。對于人類來說,目標檢測是一個非常簡單的任務。然而,計算機能夠“看到”的僅有一些值為0 ~ 255的矩陣,很難解圖像或是視頻幀中出現了人或是物體這樣的高層語義概念,也就更加難以定位目標出現在圖像中哪個區域。與此同時,由于目標會出現在圖像或是視頻幀中的任何位置,目標的形態千變萬化,圖像或是視頻幀的背景千差萬別,諸多因素都使得目標檢測對計算機來說是一個具有挑戰性的問題。
在目標檢測任務中,我們介紹利用SSD方法完成目標檢測。SSD全稱:Single Shot MultiBox Detector,是目標檢測領域較新且效果較好的檢測算法之一,具有檢測速度快且檢測精度高的特點。
許多場景圖像中包含著豐富的文本信息,對理解圖像信息有著重要作用,能夠極大地幫助人們認知和理解場景圖像的內容。場景文字識別是在圖像背景復雜、分辨率低下、字體多樣、分布隨意等情況下,將圖像信息轉化為文字序列的過程,可認為是一種特別的翻譯過程:將圖像輸入翻譯為自然語言輸出。場景圖像文字識別技術的發展也促進了一些新型應用的產生,如通過自動識別路牌中的文字幫助街景應用獲取更加準確的地址信息等。
在場景文字識別任務中,我們介紹如何將基于CNN的圖像特征提取和基于RNN的序列翻譯技術結合,免除人工定義特征,避免字符分割,使用自動學習到的圖像特征,完成端到端地無約束字符定位和識別。
語音識別技術(Auto Speech Recognize,簡稱ASR)將人類語音中的詞匯內容轉化為計算機可讀的輸入,讓機器能夠“聽懂”人類的語音,在語音助手、語音輸入、語音交互等應用中發揮著重要作用。深度學習在語音識別領域取得了矚目的成績,端到端的深度學習方法將傳統的聲學模型、詞典、語言模型等模塊融為一個整體,不再依賴隱馬爾可夫模型中的各種條件獨立性假設,令模型變得更加簡潔,一個神經網絡模型以語音特征為輸入,直接輸出識別出的文本,目前已經成為語音識別最重要的手段。
在語音識別任務中,我們提供了基于 DeepSpeech2 模型的完整流水線,包括:特征提取、數據增強、模型訓練、語言模型、解碼模塊等,并提供一個訓練好的模型和體驗實例,大家能夠使用自己的聲音來體驗語音識別的樂趣。
本教程由PaddlePaddle創作,采用Apache-2.0 許可協議進行許可。