AI導論

1. 自然語言處理應用

自然語言處理(Natural Language Processing, NLP),通過理解人類語言來解決實際問題的一門學科。

自然語言處理不僅是學術界的研究熱點,在工業界也有許多成果,如谷歌的文本搜索引擎、蘋果的Siri、微軟小冰等。

對自然語言處理問題的研究可以追溯到二十世紀三十年代,早期的處理方法往往是人工設計的規則;從二十世紀八十年代開始,利用概率與統計理論並使用數據驅動的方法才逐漸興盛起來。近幾年,隨着計算機

算力的提升與深度學習技術的發展,自然語言處理相關問題也迎來許多重大的創新與突破。

自然語言處理可以分爲核心任務和應用兩部分:

  • 核心任務代表在自然語言各個應用方向上需要解決的共同問題,包括語言模型、語言形態學、語法分析、語義分析等,
  • 應用部分則更關注自然語言處理中的具體任務,如機器翻譯、信息檢索、問答系統、對話系統等。如下介紹機器翻譯、問答系統與對話系統三個應用。

機器翻譯MT

隨着雙語平行語料(即同時包含源語言和與其互爲譯文的目標語言文本的語料)的增多,通過對語料的統計學習來進行自動翻譯的統計機器翻譯(Statistical Machine Translation,SMT)成爲主流,但翻譯的

準確性和流暢性仍然和人工翻譯有巨大的差距。

直到深度學習興起,神經網絡翻譯(Neural Machine Translation,NMT)的誕生爲機器翻譯領域帶來了新的機遇,翻譯質量也有了質的飛躍。目前Google、百度等公司都已經將線上機器翻譯系統升級到神經

網絡翻譯模型,每天爲數億用戶提供服務。神經網絡翻譯模型始於Google在2014年提出的基於LSTM的編碼器-解碼器架構。相比於主流的統計機器翻譯模型,神經網絡翻譯模型則採用端到端的學習形式,這樣

可以將翻譯的質量直接作爲模型優化的最終目標,以對模型進行整體優化。

神經網絡模型同樣需要使用平行語料庫作爲訓練數據,但和統計機器翻譯模型將任務拆解成多個模塊不同,神經網絡模型通常是一個整體的序列到序列模型。以常見的循環神經網絡爲例,神經網絡對翻譯過程

進行建模,如下圖所示。通常會先使用一個循環神經網絡作爲編碼器,將輸入序列(源語言句子的詞序列)編碼成一個向量表示,然後再使用一個循環神經網絡作爲編碼器,從編碼器得到的向量表示裏解碼得

到輸出序列(目標語言句子的詞序列)。

          

 

 

雙語語料是機器翻譯模型訓練時最重要的監督信息,然而在現實應用中由於某些語言是小語種或者特定領域的語料稀缺等,經常出現雙語語料不足的情況,在訓練神經網絡翻譯模型的時候如何應對這種情況

呢?這裏列舉幾種常見的解決方案。

第一類非常直接的解決方案就是通過爬蟲自動挖掘和產生更多的雙語語料。

第二類比較直觀的解決方案是構造僞雙語平行語料。常見的構造方式有兩種:一是利用目標語言端的單語語料反向翻譯源語言,由於這樣構造的平行語料中目標語言端爲真實語料,因此有利於解碼器網絡的學習,提升模型的效果;二是利用數據增強的方式對原始語料進行改造。

問答系統QA

問答系統(Question Answering System,QA)通常是指可以根據用戶的問題(question),從一個知識庫或者非結構化的自然語言文檔集合中查詢並返回答案(answer)的計算機軟件系統。與搜索引擎系統不

同,問答系統不僅能用自然語言句子提問,還能爲用戶直接返回所需的答案,而不是相關的網頁。顯然,問答系統能更好的表達用戶的信息需求,同時也能更有效地滿足用戶的信息需求。目前已經有一些公司

將問答系統的技術應用到了自己的產品之中,Google、Bing等搜索引擎就提供了根據用戶的查詢直接從網頁結果中抽取相關答案的功能。

目前爲止,問答系統沒有一個明確的定義,但是一般認爲問答系統的輸入應該是自然語言形式的問題,輸出應該是一個簡潔的答案或者可能的答案列表,而不是一堆相關的文檔。例如用戶向問答系統提交一個

問題,“電話是什麼時候發明的?”,系統應該返回一個精簡的答案–“1876”。

一個典型的問答系統需要完成問題分類、段落檢索以及答案抽取3個任務。

  • 問題分類主要用於決定答案的類型。比如,“珠穆朗瑪峯海拔有多高”這樣的問題,需要根據事實給出答案;而“美國知名的互聯網流媒體公司有哪些”這樣的問題,則需要根據問題中的條件,返回一個符合要求的結果列表。不同的答案類型也往往意味着在系統實現上對應着不同的處理邏輯。根據期望回答方式可以將問題分類成事實型問題、列舉型問題、帶有假設條件的問題、詢問“某某事情如何做”以及“某某東西是什麼”等問題。
  • 段落檢索是指根據用戶的問題,在知識庫以及備選段落集合中返回一個較小候選集,這是一個粗略篩選的過程。這樣做的原因是知識庫以及候選段落集合往往包含海量數據,以至於無法直接在這些數據上進行答案抽取,需要應用一些相對輕量級的算法篩選出一部分候選集,使得後續的答案抽取階段可以應用一些更爲複雜的算法。
  • 答案抽取是指根據用戶的問題,在段落候選集的文本中抽取最終答案的過程。目前很多深度學習方法可以用來解決這個問題。

 

對話系統

對話系統(Dialogue System)是指可以通過文本、語音、圖像等自然的溝通方式自動地與人類交流的計算機系統。對話系統有相對較長的發展歷史,早期的對話系統可以追溯到二十世紀六十年代麻省理工學

院人工智能實驗室設計的自然語言處理程序ELIZA。經過幾十年的研究發展以及數據量的增加,逐漸誕生了像蘋果公司的Siri、微軟的小娜(Cortana)等個人助理型的對話系統產品,以及微軟小冰這樣的非任

務型對話系統。對話系統根據信息領域的不同(開放與閉合)以及設計目標的不同(任務型與非任務型)可以劃爲不同的類型:任務型對話系統需要根據用戶的需求完成相應的任務,如發郵件、打電話、行程

預約等;非任務型對話系統大多是根據人類的日常聊天行爲而設計,對話沒有明確的任務目標,只是爲了與用戶更好地進行溝通,例如微軟小冰的設計目標之一是培養對話系統的共情能力(Empathy),更注

重與用戶建立長期的情感聯繫。

    

 

 

一個典型的任務型對話系統包含圖所示的3個部分:對話理解、策略學習和對話生成。

  • 對於用戶的輸入,先通過語義理解(Natural Language Understanding,NLU)單元進行編碼,通過對話狀態跟蹤模塊生成當前對話狀態編碼;
  • 根據當前的對話狀態,系統選擇需要執行的任務(由策略學習模塊決定);
  • 最後通過自然語言生成(Natural Language Generation,NLG)返回用戶可以理解的表達形式(如文本、語音、圖片等)。由於任務型對話系統需要完成一些特定任務,因此處理的信息領域往往是閉合的(close domain)。

對於非任務型的對話系統來說,其更注重與用戶的溝通,對話的多樣性以及用戶的參與度比較重要,因此這類對話系統更多采用一些生成式模型(如Seq2Seq模型),或者根據當前內容從語料庫中選擇合適的

問答語句。這類問答系統對應的信息領域往往是開放的(open domain)。

對於對話系統來說,用戶的輸入往往多種多樣,對於不同領域的對話內容,對話系統可以採取的行爲也多種多樣。普通的有監督學習方法(如深度神經網絡)往往無法獲得充足的訓練樣本進行學習,而強化學

習可在一定程度上解決這個問題。強化學習是深度學習領域比較熱門的研究方向之一。強化學習嘗試根據環境決策不同的行爲(action),從而實現預期利益的最大化。當對話系統與用戶的交互行爲持續地從

客戶端傳輸到服務端時,強化學習方法可以對模型進行及時的更新,在線訓練模型。

對於任務型對話系統,系統根據對用戶的理解,採取不同的行爲,這個過程可以用圖中的策略學習模塊表示。由於用戶的對話以及系統可採取行爲的組合數量一般比較龐大,這個部分比較適合使用強化學習

來解決。對於非任務型對話系統,如在微軟小冰的設計中,也有類似的對話管理模塊。強化學習除了可以用來爲策略學習模塊建模之外,還可以直接爲整個對話系統進行端到端的建模,從而簡化對話系統的設

計。

2.  機器學習導論

 人工智能是一門學科,指由人制造出來的機器所表現出來的智能。這種智能的最理想狀態是像人一樣擁有學習、推理等能力。簡單來說,是指可模仿人類智能來執行任務,並基於收集的信息對自身進行迭代改
進的系統和機器。

人工智能的五大主要分支

  • 計算機視覺 

計算機視覺是指機器感知環境的能力,這一技術類別中的經典任務有圖像分類、目標檢測、圖像分割和目標追蹤。其中目標檢測和人臉識別是比較成功的研究領域。

  • 語音識別

語音識別是指識別語音並將其轉換成對應文本的技術,文本轉語音也是這一領域內一個類似的研究主題。最近幾年,隨着大數據和深度學習技術的發展,語音識別進展迅猛,但是仍面臨聲紋識別和雞尾酒會效應等一些特殊難題。同時語音識別嚴重依賴雲,離線效果不好。

  • 文本分類

文本分類可用於理解、組織和分類結構或非結構化文本,其涵蓋的主要任務有句法分析、情緒分析和垃圾信息檢測。當前階段,文本分類的瓶頸出現在有歧義和偏差的數據上。

  • 機器翻譯

機器翻譯是利用機器自動將一種語言翻譯成另一種語言。在當前階段,受限於詞表問題,俚語和行話等內容的翻譯會比較困難,專業領域的機器翻譯通常表現不好。

  • 機器人

 

機器人研究主要是機器人的設計、製造、運作和應用,以及控制它們的計算機系統、傳感反饋和信息處理。工業機器人是發展最快的應用領域,在進入21世紀之後,機器人領域就已經進入了社會影響階段,此時各種工業機器人已經主宰了裝配生產線。此外,軟體機器人在很多領域也有廣泛的應用,比如在醫療行業協助手術。

人工智能、機器學習與深度學習三者關係

① 機器學習指計算機通過觀察環境,與環境進行交互,在吸取信息中學習、更新和進步。

簡單的說,大多數機器學習可以分成訓練和測試兩個步驟,這兩個步驟可以重疊進行。訓練,一般需要訓練數據,就是告訴機器前人的經驗,比如什麼是貓,什麼是狗,看到什麼該停車。訓練學習的結果,可

以認爲是機器寫的程序或者存儲的數據,叫模型。總體上來說,訓練包括有監督訓練和無監督訓練。有監督訓練好比有老師告訴你答案,無監督訓練僅靠觀察自學,機器自己在數據裏面找模式和特徵。

       

 

② 深度學習是機器學習的一種方法,它基於神經網絡,適用於音頻、視頻、語言理解等多方面。深度學習是現今非常流行的一種機器學習方法。它由多層神經網絡組成,淺層神經網絡識別簡單內容,深層神經

網絡得到高級語義信息,使用反向傳播優化算法來更新權重參數,不斷降低損失值,得到一個具有較好預測效果的模型。

根據上面的定義描述,不難得出結論:深度學習是機器學習的一種基於神經網絡的分支,機器學習是人工智能的一種實現方法。

          

 

 

機器學習與統計學的關係

機器學習和統計學都是數據科學的一部分。機器學習中的學習一詞表示算法依賴於一些數據,來優化權重參數。這包含了許多的技術,比如邏輯迴歸、支持向量機和集成學習。

統計學是通過搜索、整理、分析、描述數據等手段,以達到推斷對象的本質,甚至預測對象未來的一門綜合性科學。統計學用到了大量的數學及其它學科的專業知識,其應用範圍幾乎覆蓋了社會科學和自然科

學的各個領域。

細說之,數據科學包括:

  • 數據集成(data integration)
  • 分佈式架構(distributed architecture)
  • 自動機器學習(automating machine learning)
  • 數據可視化(data visualization)
  • 數據工程(data engineering)
  • 產品模式中的部署(deployment in production mode)
  • 自動的、數據驅動的決策(automated, data-driven decisions)

根據數據集有無標籤,機器學習分爲監督學習和無監督學習,那麼他們之間有什麼區別呢?

監督學習和無監督學習的區別

監督學習應用標記過的數據,輸入規定範圍內的數據,同時也規定了輸出的範圍。如果使用監督學習來訓練人工智能,你要給它一個輸入並告訴它預期的輸出。有些類似大學期間學的高等數學中的函數。
如果機器輸出的內容不在預期範圍內,它會重新調整它的計算。這個過程是通過計算完成數據集才完成的,直到機器不再犯錯。

監督學習的一個例子是天氣預報AI,它通過歷史數據來學習預測天氣,訓練數據有輸入(氣壓,溼度,風速)和相應的輸出(溫度)。

無監督學習是使用沒有固定結構或者範圍的數據集進行機器學習。如果使用無監督學習訓練機器,就是讓機器對數據按照一定的邏輯進行分類。

無監督學習的一個例子是電商網站的行爲預測,根據用戶的行爲來推薦用戶可能會購買的商品。它會自己對輸入數據創建分類,會告訴你哪種用戶最有可能購買這款產品。

深度學習工作流程

現在,你已經具備了理解深度學習工作原理的基本知識。深度學習是一種機器學習方法,可以通過一組輸入,訓練AI來預測輸出。

監督學習和無監督學習都能用來訓練AI。簡單的理解就是:機器學習包含深度學習。

建立一個假想的車票估價服務來了解深度學習是如何工作的。使用監督學習方法進行訓練。 希望估價工具能夠使用以下幾個數據指標來預測車票價格:

  • 始發車站
  • 到達車站
  • 發車日期
  • 路線

首先,來看看人工智能的內部構造。和人類一樣,深度學習也是有大腦內部的神經元的,通常用圓圈來表示。並且它們是互相連接在一起的。

這些神經元被分成三層:輸入層、隱藏層和輸出層。

  • 輸入層來接收數據。在之前的案例中,輸入層有4個神經元:始發車站、到達車站、發車日期、路線,輸入層把輸入傳遞到隱藏層的第一層。
  • 隱藏層對輸入數據進行數學計算。建立神經網絡的一個難題就是如何決定隱藏層的數量以及每一層的神經元個數。 深度學習中的“深”指的是神經網絡有超過一層的隱藏層。
  • 輸出層返回輸出數據。在前文的案例中,輸出就是價格預測。
                                      

 

 那麼它如何計算價格預測呢?這就是深度學習最具魔力的地方。 神經元之間的每個連接都有對應不同的權重。這個權重決定了輸入值的重要性。初始權重是隨機設置的。

在預測車票價格時,發車日期是較重要的因素之一,因此發車日期的神經元連接權重較高。各個因素經過隱藏層,經過因素權重的調整,最終得到輸出,也就是車票價格,完成車票價格的預測。

 3. 神經網絡

 深度學習是基於神經網絡的高級算法。

大腦神經元彼此協同工作,它們把輸入信號(比如長頸鹿的圖片)轉換成相應的輸出標籤(比如“長頸鹿”)。神經網絡技術的誕生正是受到人腦神經網絡的啓發。
神經網絡是自動圖像識別的基礎,近年來,神經網絡技術大熱,主要有以下 3 個原因:

  • 數據存儲和共享技術取得進步。這爲訓練神經網絡提供海量數據,有助於改善網絡的性能。
  • 計算能力越來越強大。GPU(graphics processing unit,圖形處理器)的運行速度最快能達到CPU(central processing unit,中央處理器)的 150 倍。之前,GPU 主要用來在遊戲中顯示高品質圖像。後來,人們發現它能爲在大數據集上訓練神經網絡提供強大的支持。
  • 算法結構的改進。雖然目前神經網絡在性能上還很難與人腦媲美,但是已經有一些能大幅改善其性能的技術。

 

 

圖像識別是神經網絡技術的有力例證,它被應用於許多領域,包括視覺監控、汽車自主導航,還出現在智能手機中,來識別手寫文字。下面來看看如何訓練能識別手寫數字的神經網絡。

神經網絡示例:識別手寫數字

下面示例中使用的手寫數字來自於 MNIST 數據庫

       

 

 

爲了讓計算機讀取圖像,黑色像素用 0 表示,白色像素用 1 表示,如下圖所示。如果圖像是彩色的,則可以使用三原色的色相值來表示。

     

 

   一旦圖像完成像素化,就可以把得到的值交給神經網絡。在本例中,神經網絡總共得到 10000 個手寫數字以及它們實際所表示的數字。在神經網絡學過手寫數字及其對應標籤的聯繫之後,我們拿 1000 個新的手寫數字(不帶標籤)來測試它,看看它是否能夠全部識別出來。

測試發現,神經網絡從 1000 個新的手寫數字中正確識別出了 922 個,即正確率達到了 92.2%。下圖是一張列聯表,可以用它來檢查神經網絡的識別情況。

   

 

   上圖列聯表總結了神經網絡的表現:第一行指出,共有 85 個“0”,神經網絡正確識別出 84 個,最後一個“0”被錯誤地識別爲“6”。最後一列是識別準確率。

從上圖可以看到,“0”和“1”的手寫圖像幾乎全部被正確識別出來了,而“5”的手寫圖像最難識別。接下來詳細看看那些被識別錯的數字。

“2”被錯誤識別成“7”或“8”的情況大約佔8%。雖然人能夠輕鬆識別出圖中這些數字,神經網絡卻可能被某些特徵給難住,比如“2”的小尾巴。有趣的是,神經網絡對“3”和“5”也比較困惑,識別錯誤的情況約佔10%。

儘管出現了這些錯誤,但是神經網絡的識別速度遠快於人類,並且從總體上看,神經網絡的識別準確率很高。

  

 

   

 

 

神經網絡的構成

爲了識別手寫數字,神經網絡使用多層神經元來處理輸入圖像,以便進行預測。下圖爲雙層神經網絡示意圖。

    

 

   

輸入不同,但是輸出相同,其中紅色表示被激活的神經元。

在上圖雙層神經網絡中,雖然輸入是“6”的兩幅不同形態的圖像,但輸出是一樣的,並且該神經網絡使用不同的神經元激活路徑。儘管每一個神經元組合產生的預測是唯一的,但是每一個預測結果都可以由多個神經元組合實現。

神經網絡通常由如下幾部分組成:

  • 輸入層,該層接收輸入圖像的每個像素。
  • 隱藏層,在像素進入神經網絡之後,它們經過層層轉換,不斷提高和那些標籤已知的圖像的整體相似度。標籤已知是指神經網絡以前見過這些圖像。雖然轉換得越多,預測準確度就會越高,但是處理時間會明顯增加。一般來說,幾個隱藏層就足夠了。
  • 輸出層,該層產生最終預測結果。
  • 損失層,雖然上圖並未顯示損失層,但是在神經網絡的訓練過程中,損失層是存在的。該層通常位於最後,並提供有關輸入是否識別正確的反饋;如果不正確,則給出誤差量。
 

在訓練神經網絡的過程中,損失層至關重要。若預測正確,來自於損失層的反饋會強化產生該預測結果的激活路徑;若預測錯誤,則錯誤會沿着路徑逆向返回,這條路徑上的神經元的激活條件就會被重新調整,以減少錯誤。這個過程稱爲反向傳播。

通過不斷重複這個訓練過程,神經網絡會學習輸入信號和正確輸出標籤之間的聯繫,並且把這些聯繫作爲激活規則編入每個神經元。因此,爲了提高神經網絡的預測準確度,需要調整管理激活規則的部件。

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章