線性代數在數據科學中的十大強大應用(二)

2019-08-14     人工智慧遇見磐創

本篇為機器學習與數據科學背後的線性代數知識系列的第二篇,本篇主要介紹自然語言處理(NLP)中的線性代數與計算機視覺(CV)中的線性代數。涵蓋主成分分析(PCA)與奇異值分解(SVD)背後的線性代數知識。相信這也是各位數據科學愛好者常用的各項技術,希望可以幫大家理清思路和對這些算法有更進一步的認識。

系列目錄:

  • 為什麼學習線性代數
  • 機器學習中的線性代數
  • 損失函數
  • 正則化
  • 協方差矩陣
  • 支持向量機分類器
  • 降維中的線性代數
  • 主成分分析(PCA)
  • 奇異值分解(SVD)
  • 自然語言處理中的線性代數
  • 詞嵌入(Word Embeddings)
  • 潛在語義分析
  • 計算機視覺中的線性代數
  • 圖像用張量表示
  • 卷積與圖像處理

自然語言處理(NLP)

由於過去18個月自然語言處理(NLP)取得的各項重大突破,NLP是目前數據科學領域最熱門的領域。

讓我們看一下NLP中線性代數的幾個有趣的應用。這應該有助於引起你的思考!

7. 圖嵌入

機器學習算法不適用於原始文本數據,因此我們需要將文本轉換為一些數字和統計特徵來創建模型輸入。文本數據有著很多工程性特徵可以利用,例如

  1. 文本的元屬性,如:「字數」,「特殊字符數」等。
  2. 使用「詞性標籤」和「語法關係」(如專有名詞的數量)等文本數據NLP屬性
  3. 詞向量符號或詞嵌入(Word Embeddings)

詞嵌入(Word Embeddings)是自然語言處理(NLP)中語言模型與表征學習技術的統稱。概念上而言,它是指把一個維數為所有詞的數量的高維空間嵌入到一個維數低得多的連續向量空間中,每個單詞或詞組被映射為實數域上的向量。這些表示是通過在大量文本上訓練不同的神經網絡而獲得的,這些文本被稱為語料庫。它們還有助於分析單詞之間的句法相似性:

Word2VecGloVe是兩種流行詞嵌入工具。

在使用Word2Vec進行一些輕度預處理後,我在莎士比亞語料庫(https://norvig.com/ngrams/shakespeare.txt) 上訓練了我的模型,並獲得了「世界」這個詞的詞嵌入(word embedding):

太酷了!但更令人驚喜的是我從中為「詞彙」繪製下圖,可以觀察到語法相似的單詞更加接近了。我在圖中圈出了一些這樣的詞彙。雖然結果並不完美,但它們仍然非常驚人:

8. 潛在語義分析(LSA)

當你聽到這組詞語時- 「王子,王室,國王,貴族」,你首先想到的是什麼?這些不同的詞幾乎都是同義詞。

現在,考慮以下句子:

  • The pitcher of the Home team seemed out of form (主隊的「投手」似乎不合格)
  • There is a pitcher of juice on the table for you to enjoy(桌子上有一「罐」果汁供您享用)

「pitcher」這個詞基於兩個句子語境分別有不同的含義。 這意味著第一句中的「棒球運動員」和第二句中的「一罐果汁」。

這些單詞對於我們人類來說很容易通過多年的語言經驗來理解。但是對於機器呢?在這裡,NLP概念--主題模型將發揮作用:

主題模型是一種實現在各種文本文檔中查找主題的無監督技術。這些主題只不過是相關單詞的集群,每個文檔可以有多個主題。主題模型輸出多種主題,以及它們在每個文檔中的分布與它包含的各種單詞的頻率。

潛在語義分析(LSA)或潛在語義索引是主題建模的技術之一。它也是奇異值分解(SVD)的另一種應用。

潛在意味著'隱藏'。正如其名稱一樣,LSA試圖通過利用單詞周圍的上下文從文檔中捕獲隱藏的主題。

LSA的實現步驟簡要介紹如下:

  • 首先,為您的數據生成Document-Term矩陣
  • 使用SVD將矩陣分解為3個矩陣:
  • 文檔主題矩陣
  • 主題重要性對角矩陣
  • 主題詞矩陣
  • 根據主題的重要性截斷矩陣

計算機視覺(CV)

深度學習的另一個領域--計算機視覺正在蓬勃發展。如果您希望將技能組擴展到表格數據之外,那麼請學習如何處理圖像。

接著梳理下邊幾個概念將有助於拓寬目前對機器學習的理解,對cv相關崗位的面試也有一定的幫助。

9. 圖像表示為張量 您如何理解Computer Vision(計算機視覺)中的「vision」這個詞?顯然,計算機不能夠像人類那樣處理圖像。就像我之前提到的,機器學習算法需要使用數字特徵進行學習。

數字圖像由被稱為「像素」的小不可分割單元組成。如下圖:

這個數字零的灰度圖像由8×8=64個像素組成。每個像素的值在0到255的範圍內。值0表示黑色像素,255表示白色像素。

進一步來看,mxn灰度圖像可以由具有m行和n列的2D矩陣表示,其中每個單元格包含相應的像素值:

那麼彩色圖像呢?彩色圖像通常存儲在RGB通道中。每個圖像可以被認為是由三個2D矩陣表示,相對應每個R,G和B通道各一個。R通道中的像素值0表示紅色的零強度,255表示紅色的全強度。

然後,對應到圖像中,則每個像素值是三個通道中相應值的組合:

實際上,不是使用3個矩陣而是使用張量來表示圖像,張量是廣義的n維矩陣。對於RGB圖像,使用三階張量來表示。想像一下,正如三個二維矩陣一個接一個堆疊:

10. 卷積與圖像處理

2D卷積是圖像處理中非常重要的操作。實現步驟如下:

  1. 從一個小的權重矩陣開始,稱為內核(kernel)或濾波器(filter)
  2. 在2D輸入數據上滑動此內核,執行逐元素乘法
  3. 添加獲得的值並將總和放在單個輸出像素中

該功能雖然看起來有點複雜,但它廣泛應用於各種圖像處理操作中。如:銳化、圖像模糊(blurring)和邊緣檢測。我們只需要知道完成任務所需使用的內核(kernel)是哪一個,下面列舉了一些常用的內核(kernel):

大家可以通過此連結(https://drive.google.com/file/d/1aM4otWKSsDz1Rof3LZkY055YkYXeO-vf/view) 下載文章中使用的示例圖像, 並使用上面的代碼和內核(kernel)自己嘗試上述圖像處理操作。

這是迄今為止最炫酷的線性代數在數據科學中的應用之一。

結束語

線性代數在數據科學中無處不在,希望本系列文章列舉的這些應用可以激勵大家進一步學習了解技術背後的數學知識。同時也希望可以幫大家理清思路和對上述算法有更進一步的認識。

文章來源: https://twgreatdaily.com/zh-tw/BV9ikWwBvvf6VcSZRdvc.html