摘要:Google 的 TensorFlow 開源函式庫協助開發工程師建立計算圖(Computational Graph),內含免費的附加模組讓開發與消費品和移動應用程式(mobile apps)相關的人工智慧 / 機器學習軟體變得更容易。開發者需要具備 Python 或 C++ 程式語言基礎。本文將探討三個常用模組和延伸的商業發展潛力:
- 卷積神經網路(Convolutional Neural Networks, CNN),適用於辨識圖像
- 序列到序列(Sequence-to-Sequence, Seq2Seq) 模型,適用於自然語言處理
- 大型線性模型 (Linear Models),適用於數據分析
解構 TensorFlow
自 2015 年 Google 開放原始碼,TensorFlow 即成為創建深度學習模型時使用的框架(Framework)。深度學習 (Deep Learning)是機器學習(Machine Learning, ML) 模型中會使用多層神經網路的其中之一。TensorFlow 函式庫讓使用者建立 computational graph 來套用不同功能。
TensorFlow 之所以席捲全球,除了因為是免費以外,主要因為它(相對)容易使用,即使 ML 初學者也可以接觸強大的函式庫,免於從零開始建立自己的 AI 模型。換句話說,TensorFlow 和附帶模組便利了 mobile apps 和後端服務的 ML / AI 軟體開發。
TensorFlow 如何融入 AI 與 Machine Learning
TensorFlow 是眾多 ML 函式庫裡之一(其他例子包括 CNTK 和 Theano)。Machine Learning 屬於計算機科學的其中一個領域,在毋須直接編程的情況下讓計算機擁有學習能力(註1)。比方說,AlphaGo Zero 的 AI 透過「自學」下圍棋,在對戰中完勝了曾擊敗人類世界冠軍的舊版 AlphaGo。Machine Learning 針對無法透過顯性演算法獲得最優解的任務尤其有用,比如用戶篩檢、有關高語境資料的排序、或用於預測和剖析的聚類分析 (Clustering)。
實際應用例子包括偵測舞弊或資料外洩、電郵過濾、光學字元辨識 (Optical Character Recognition, OCR) 和排序等等。
下一節,我們將揭開 Computational Graph 的神秘面紗,幫助大家了解 TensorFlow 的關鍵和操作原理。
Computational Graph 和概略理論
想使用 TensorFlow,開發者需要做什麼?
TensorFlow 為發揮最佳效能,在特定的平台剔走了部分功能(可以參考 TensorFlow Lite 和 TensorFlow Mobile), mobile 和 web 開發者可以利用函件庫為消費品打造 AI 支援的功能。對神經網路具備基本知識的工程師可以利用 framework 作資料集 (Data Set)、模擬器 (Estimator)、訓練 (Training) 和推論 (Inference) 等用途。
即使對神經網路沒有認識的開發者可能也會想要從高階神經網路 API 開始(譬如 Keras.io)。而以 Python 寫成的 Keras 可以在 TensorFlow、CNTK 和 Theano 上運行,有利於簡單快速地製作原型 (Prototyping)。
要開始使用 TensorFlow ,開發工程師需要先具備以下的知識:
- Python 或 C++
- 懂得如何使用 Numpy的 array(它是一個 Python 擴充的數值運算函式庫,TensorFlow 以此來處理陣列(Array)和矩陣(Matrix))
TensorFlow 常見的三個應用方式
TensorFlow 函式庫裡包含的眾多模組可以套用一系列 AI / ML 功能。以下三個是最廣泛被使用的模組:
- 卷積神經網路( Convolutional Neural Networks, CNN),適用於辨認和處理圖像
- 序列到序列(Sequence-to-Sequence, Seq2Seq)模型,適用於處理自然語言相關的功能
- 大型線性模型 (Linear Model),適用於資料分析和簡單的行為預測
以下我們會列出一些應用在消費者或商業上的例子:
卷積神經網路(CNN)和圖像辨識
CNN 的眾多應用方式裡,其中一種是輔助機器辨識圖像並將之轉化和應用在某程度上對人們具有意義的事物之上。比方說,電腦透過辨識圖像裡的特徵,認知到它很可能是一個蛋糕。如果要檢驗準確度,我們可以把已知正確答案的資料集分成訓練資料和檢驗資料兩部份:先用訓練資料訓練 AI 模型,再對比檢驗資料和 AI 模型的判斷結果看看是有多準確。CNN 能學習辨認圖像,檢查判斷結果是否正確,再逐步改善認知能力和準確度。
遷移學習(Transfer Learning)作為一種技術捷徑,可以利用一個已完成訓練的 AI 模型並重新訓練最後的 Fully-connected Layer, 以作新的圖像辨識用途,這樣比從零開始訓練一個 AI 模型快捷多了。想要尋找適用於圖像訓練的資料集,ImageNet 提供了很好的資源。
CNN 可以應用在一系列的範疇,例如:
- 應用在商業上的圖像辨識,比如我們為客戶進行有關配對和歸類庫存的開發專案
- 醫學診斷,用作配對病人的醫學圖像資料與已知疾病的能見病癥
- 適用於各種運動的邊界感應器,使用高解析度的影像資料判定球是否在界內或界外
- 審批申請時作風險評估(譬如申請信用卡或投保保險)
越早開始踏足 AI / ML 領域的好處是,早期使用者能收集更大量的資料,從而比後來引入的競爭對手訓練出更精準的模型。
Sequence to Sequence 模型和自然語言
Sequence-to-Sequence(Seq2Seq)模型使用遞歸神經網路( recurrent neural networks, RNN)為基礎,在訓練過程中輸入大量成對的句子,我們就可以透過輸入一句句子,來產生一句回應的句子。這些對句可以是任何的內容。舉例來說,當字串包含兩種不同的語言時,這個模型可以用作翻譯用途。或者如果輸入的是對話式訊息,就可以用來製作對話機器人(chatbot)。
有趣的是,我們即使輸入未經加工的字串(word sequence),就已經可以獲得文法幾乎正確的回應(並非完美,但最起碼是可以理解的程度)。這意味著 seq2seq 模型有能力藉由訓練範例去學習語言模型、並在訓練時進一步隱性學習,比需要準確「教授」語言的傳統 NLP 更為優勝。
建立語言模型(簡單來說就是在提供首個字串後,另一個字串出現的機率)可以成為以下問題的關鍵:
- 辨識對白或講稿(用作提供實時字幕)
- AI chatbot,像我們應用在 Telegram 上的廣東話 chatbot
- 虛擬助手,像 Apple 的 Siri、Amazon 的 Alexa 和 Google 助手
- 機器翻譯 (實際上,Google已經把ML用於 Google Translate上)
- 自動替文件做摘要
- 批量產生圖像描述
大型線性模型(Large-Scale Linear Model)
與複雜的多層次神經網路相比,大型線性模型相對比較簡單。但抱持著「為不同的工作挑選最合適工具」的原則,線性模型如果適當地運用,還是可以發揮強大的效能。對比深層神經網路,線性模型的訓練時間較快,可以在大型功能集上良好地運行,而且演繹和除錯也更為容易。因此,線性模型能有效為擁有大型資料庫的企業進行資料重整和簡單的預測。
線性模型可以用作二元分類(Binary Classification;預測 A 或 B 結果)、多元分類(Multiclass Classification;預測眾多結果中的其中一個)或迴歸(Regression;預測一個數值)。這些模型可以利用來評估大數據,像是人口普查資料或財務資料。
舉例來說,Amazon ML 在電子商業應用線性模型來為賣家提供具建設性的建議:
- 客戶會購買這個產品嗎?(二元分類)
- 這個產品屬於電腦、智能手機還是配件?(多元分類)
- 這個價格與這台古董車型號匹配嗎?(迴歸)
當然, AI / ML 的用途無遠弗屆,我們現在討論的還只是皮毛。如果想了解更多有關如何把 AI 功能與你的產品結合,歡迎聯繫我們。
Oursky 致力幫助品牌與企業家實現他們的點子。如果你正在尋找合作夥伴一起建立下一個自家數碼產品,來跟我們聊聊吧!
原文:What can TensorFlow really do? Some business applications
作者:Athena Lam
翻譯者:Queenie So