Day26 - 人工智慧 VII.

斜槓學習 – 零基礎成為 AI 解夢大師秘笈

本文作者:Ovien

系列文章簡介

自由團隊將從0到1 手把手教各位讀者學會(1)Python基礎語法、(2)Python Web 網頁開發框架 – Django 、(3)Python網頁爬蟲 – 周易解夢網、(4)Tensorflow AI語言模型基礎與訓練 – LSTM、(5)實際部屬AI解夢模型到Web框架上。

學習資源

AI . FREE Team 讀者專屬福利 → Python Basics 免費學習資源

NLP(Natural Language Processing)

自然語言處理是將人與人溝通間的語言轉變成電腦可處理的資料型態,再根據使用目的再以處理;其中包含兩大領域為:自然語言理解、自然語言生成,而後者即為本次專題目標的主題。

自然語言處理在人工智慧裡面算是一種序列型資料,意思是前後有相對應關係的data

上圖範例為序列型資料在 AI 領域相關的實務應用

那在把資料丟進去前,我們要如何處理資料呢?

電腦只看得懂數字

因此我們要將文字轉換成數字,這種技術和 one hot encoding 很像,不過有很多種不同的呈現方式。

如上圖,如果以英文來說,我們可以將一個word(單字)作為index(索引),其實也可以以2個單字或是3個,句子也可以,就像查表那樣,再將每個index攤平成陣列,因此如果今天資料集有10000個不同的單字,就有10000個 index,每個陣列長度為10000。

但是這樣的表示方法不是很好

  • 每個陣列只會有一個 1,其他都是 0,過於稀疏

  • 詞性、解釋、文字之間無關聯性

為了解決這個問題,近代科學家推出了一個方法 word Embedding 來解決這個問題。

word Embedding

如上圖,我們可以將 one hot 的陣列在乘上300維的向量,變成一個10000x300的矩陣,300維的每一維都有特定的意思,雖然這樣會顯得資料很大,在訓練時可能會比較久,但是事實證明,這有助於電腦讀懂每個文字之間的關係。

在認識基礎 NLP 的前處理方法後,我們先來認識 RNN(Recurrent Neural Networks)

簡單來說,RNN與一般神經元的計算是一樣的,不過RNN的每一個神經元會參考前一個神經元的輸出,因此每一個神經元除了輸出結果外,還會輸出下一個神經元的參考值(記憶資訊),請參考下圖:

上圖的 input 即為輸入,hidden 就是前一層的輸出(如果為第一層則為0),然後會combined(合併矩陣),接下來依據模型可以選擇輸出與否 (i2o),接續反覆模型的執行;可能還是有點模糊,不過沒關係,接下來我們來看 RNN 模型可應用領域的模型結構示意圖。

看完上圖可以發現,RNN 可以是多對多、多對一、一對多甚至像是機器翻譯,m個輸入,n個輸出等多種不同的應用方式。若針對演算法細節是如何運作與執行的詳解,推薦給讀者們:Deeplearning Specialization Course 5: Sequence Model 中的 RNN 課程喔!( youtube 課程影片 )

反向傳播

這裡我們就暫不詳解反向傳播,因為目的為製作出可以使用的生成模型,透過 AI 開發框架,我們可以不必擔心演算法反向傳播的使用,一樣透過 optimizer 就可以輕鬆解決囉!

本次文章先到這,下次將會大家帶來詳細的NLP實作過程

想更深入認識 AI . FREE Team ?

自由團隊 官方網站:https://aifreeblog.herokuapp.com/
自由團隊 Github:https://github.com/AI-FREE-Team/
自由團隊 粉絲專頁:https://www.facebook.com/AI.Free.Team/
自由團隊 IG:https://www.instagram.com/aifreeteam/
自由團隊 Youtube:https://www.youtube.com/channel/UCjw6Kuw3kwM_il39NTBJVTg/

文章同步發布於:第十二屆 IT 挑戰賽部落格

(繼續閱讀下一篇教學...)