何謂機器學習?

機器學習 (ML) 是人工智慧 (AI) 的一種,讓系統從資料當中反複學習,其方法是透過各種演算法來識別資料中的模式,然後使用可產生精確模型的資料來加以訓練,進而預測結果。

機器學習簡介

長久以來,人類一直幻想著有朝一日,電腦可以自己思考要做些什麼,而不需被明確告知該怎麼做。

想像一下,您只需坐進一輛汽車的駕駛座,車子就會開始自動駕駛,自動偵測行人及路面坑洞,並根據環境的變化做出迅速反應,將您安全地送達目的地。這就是機器學習的具體實踐。

它是如何運作? 讓我們先從單純的企業資料分析開始。

機器學習 (ML) 是人工智慧 (AI) 的一種,可讓企業從大量資料當中理出頭緒並學會某些事情。舉 Twitter 為例,根據 Internet Live Stats 網際網路即時數據網站的資料顯示,Twitter 用戶每天大約發送 5 億則訊息,換算下來大約每年將近 2,000 億則訊息。這麼龐大的資料量,根本不可能靠人類來加以分析、分類、排序、學習,並預測任何事情。

機器學習需要花費相當的功夫,才能讓企業獲得寶貴資訊。要讓 ML 徹底發揮實力,您必須要有正確的資料,並知道您想問什麼問題。接著,您要選定一個對您企業最適合、最有幫助的模型與演算法。建置 ML 既不簡單、也不容易,而且需要努力不懈才能成功。

建置 ML 的生命週期大致如下:

  • 了解:為何您會想用 ML,以及您想要達成或學習什麼。
  • 蒐集與清理資料:首先您要有足夠的資料量,然後資料要盡可能抽取乾淨,好讓您可以得出想要的洞見。
  • 特徵選擇:決定您需要提供什麼樣的資料給 ML 建立模型。視您使用的演算法而定,您在挑選特徵時會有不同的方法。例如,假設您打算使用決策樹 (decision tree) 演算法,接下來,分析師或模型建立工具就可以對資料庫的欄位套用一個「感性趣分數」(interestingness score) 來決定是否要用這一欄資料來建立模型。
  • 模型挑選:選擇已經訓練好的檔案 (模型) 來處理資料並尋找資料中的某些東西。模型當中包含了所要用的演算法,然後測試資料再將兩者結合,進而得出結論。
  • 訓練與調校:檢查模型所得出的結論,以確保您得到的是您想要的答案。
  • 評估模型與演算法:決定它是否已經成熟可用,或者是否需要再回頭修正模型、特徵、演算法或資料,來達成您的目標。
  • 將訓練好的模型部署到營運環境。
  • 檢討營運環境現有模型的輸出結果。 

機器學習的用途為何? 機器學習的應用

機器學習是企業了解其資料並從中學習的一種方法,機器學習有許許多多的子領域可供企業運用,企業可用它來提升銷售量、提供搜尋功能、在產品內加入語音指令,或是開發一款自駕車。

機器學習的子領域

ML 在今日企業內的應用包羅萬象,而且未來只會越來越多、越來越強。ML 的子領域包括:社群媒體與產品推薦、影像辨識、醫療診斷、語言翻譯、語音辨識、資料採礦等等。

一些社群媒體平台,如 Facebook、Instagram、LinkedIn 都運用 ML 來根據您過去按讚的貼文,推薦您可能有興趣的內容或是想要加入的社團。它會從歷史資料當中,找出別人按讚的內容或與您按讚內容相似的貼文來提供建議,或是將這些內容加到您的動態消息。  

此外,也可將 ML 應用到電子商務網站,根據您過去購買、搜尋過的商品,或其他像您這樣的使用者所瀏覽過的商品,來提供產品推薦。

ML 今日很重要的一項應用就是影像辨識。社群媒體平台利用 ML 來推薦您照片中可標記的人像。警察利用 ML 在照片或影片中尋找嫌疑犯。透過機場、商店、大樓所安裝的大量監視攝影機,警方就有機會找出犯案的兇手,或是掌握歹徒的去向。

醫療診斷也是 ML 一個不錯的應用領域。在心臟病爆發之後,醫師可回頭看看病患有沒有什麼被忽略的警訊。此時可將病患過去的醫療記錄輸入醫生或醫院使用的系統,看看輸入 (行為、檢驗結果或症狀) 與輸出 (心臟病發) 之間是否有所關聯。未來,當醫生將他們的註記和檢驗結果輸入系統時,系統就能比人類更準確地發現心臟病可能爆發的症狀,如此一來,病患和醫生就能做一些改變來加以預防。

翻譯網站或手機翻譯應用程式也是 ML 應用的另一個例子。有些應用程式做得比其他程式來得好,這就牽涉到它們所用的 ML 模型、技巧與演算法。

今日我們每天都會用到 ML 的地方是銀行和信用卡。ML 可以很快發現某些詐騙的跡象,這些跡象人類可能要很久才能發現,甚至不會發現。透過大量已完成檢查並標記 (詐騙或非詐騙) 的交易,ML 就能學習如何在未來看到一筆交易時判斷是否為詐騙,而最適合擔任這類工作的 ML 就是資料採礦。

資料探勘

資料探勘是 ML 的一種,透過資料分析來提供預測,或從大數據當中發掘規律。資料探勘一詞算是有一點點誤導,因為它並不需要任何人 (不論是歹徒或您的員工) 在您的資料當中翻找來尋找有用的資訊。而是發掘資料當中可幫助未來決策的規律。

舉信用卡公司為例,若您擁有信用卡,那麼您或許也曾經收到銀行的通知,說您的信用卡出現可疑活動。銀行怎麼有辦法這麼快就發現這類活動,且幾乎瞬間就發出警報通知? 這就是因為它會持續不斷進行資料採礦,才能做到這樣的詐騙防護。截至 2020 年,光美國就有 1.1 兆張信用卡。這麼多信用卡所產生的交易,提供了相當豐富的資料可供採礦、尋找規律、並學習未來如何發現可疑的交易。

深度學習

深度學習是一種以神經網路為基礎的機器學習技術。神經網路在運作上是模擬人腦神經元在決策與認知過中的運作方式。例如,一個六歲的小孩看到一張臉就能分辨這是他的母親還是路過的警衛,因為腦袋會快速分析許多細節,包括:頭髮顏色、臉部特徵、有沒有疤痕等等,這一切都在一眨眼之間完成。深度學習就是模擬這樣的方式。

神經網路通常包含 3 至 5 層的架構:1 個輸入層、1 至 3 個隱藏層,以及 1 個輸出層。隱藏層負責決策運算並連結至輸出層或產生一對一結論。頭髮是什麼顏色? 眼睛是什麼顏色? 有沒有疤痕? 隨著層數增加到上百層之後,就變成了所謂的深度學習。

機器學習的類型

機器學習演算法基本上分成 4 類:監督式學習、半監督式學習、非監督式學習、強化式學習。ML 專家認為,今日所使用的 ML 演算法當中大約 70% 都是監督式學習。它們都使用已知或已標記的資料集,例如:貓狗的照片。這兩種動物都是我們熟悉的動物,因此系統管理員會先將照片做標記,然後才輸入到演算法。

非監督式學習演算法則是從未知的資料集當中進行學習,例如 TikTok (抖音) 影片。由於這些影片的數量跟題材都非常多,因此不可能採用監督式學習,將這些影片拿來訓練演算法,而且資料也未經標記。

半監督式機器學習演算法一開始會先用已知、已標記的小型資料集來進行訓練。然後再套用到較大的未標記資料集來繼續訓練。

強化式機器學習演算法一開始先不接受訓練,它們會從嘗試錯誤的過程中學習,想像一下一個正在學習繞過一堆石頭的機器人。機器人每次跌倒時,都能學到一種失敗經驗,然後就會調整自己的行為,直到成功為止。回想一下,犬隻訓練師都會使用小點心來作為獎勵,好讓狗狗更快學會各種指令。透過正向經驗的強化來讓狗狗不斷重複同一指令,並且修正沒有收到正向回饋的行為。  

監督式與非監督式機器學習比較

監督式機器學習

監督式 ML 演算法採用已知、現成、已分類的資料集來讓系統從中尋找規律。延續前面貓狗照片的概念,您手上或許有數百萬張含有各種動物的照片,形成一個龐大的資料集。由於我們已經知道動物的種類,我們就能對這些照片加以分類並標記好之後再輸入到監督式 ML 演算法來進行學習。

如此,監督式學習演算法就可比對輸入和輸出,也就是照片和被標記的動物種類。最後,演算法就能在看到新的照片時,分辨照片中的動物。

非監督式機器學習

非監督式 ML 演算法就像是今日的垃圾郵件 (SPAM) 過濾器。以前,系統管理員可以設定讓垃圾郵件過濾器尋找郵件中的某些特定單字,就能偵測垃圾郵件。但這在今日已經不可能,所以非監督式學習在這裡就很好發揮。在訓練時,我們將未標記的電子郵件輸入到非監督式 ML 演算法,讓它自己尋找這些郵件中的規律。在發現規律的過程中,它就會慢慢學到垃圾郵件長什麼樣子,最後就能夠偵測真實環境中的垃圾郵件。

機器學習的技巧

ML 技巧負責解決問題,您需根據您所面對的問題來選擇一個適合的 ML 技巧,以下是目前常見的 6 種技巧。

回歸 (regression)

回歸技巧可用於預測房價,或是決定明尼蘇達州 12 月份除雪鏟的最佳售價。根據回歸理論,即使價格會不斷波動,但最終仍會回到平均價格,即使住宅的長期趨勢看漲,但總會重新出現一個平均值。您可以將價格和時間的關係畫在一張圖上,然後沿著時間軸畫出一條紅色的平均值線。沿著這條直線向上延伸,您就可以預測未來的價格。

分類 (classification)

分類用於將資料整理到已知的類別中。您或許希望找出那些潛在的優質顧客 (經常回流且花費較高) 或是那些可能轉往其他地方消費的顧客。如果您可以回顧歷史資料並找出每一種顧客的預測因素,那麼您就可以將它套用到當前的顧客,然後預測哪些人屬於哪一群。接下來,您就可以改善行銷成效,甚至讓原本打算離開的顧客變成持續回流的優質顧客。這就是監督式機器學習應用的絕佳範例。

集群 (clustering)

集群跟分類不同的是,集群屬於非監督式 ML。在集群技巧中,系統會自己找出如何將您不曉得如何分類的資料分成不同群組。這類 ML 非常適合用於分析醫療影像和社群網路,或者用來尋找異常情況。

Google 將集群用於產品的通則化、資料壓縮以及隱私權保障,如 YouTube 影片、Play 應用程式及音樂歌曲等產品。

異常偵測 (anomaly detection)

異常偵測用於尋找異常值,例如一大群綿羊中的一隻黑綿羊。當面對資料量龐大的情況,這樣的異常狀況很難靠人來尋找。但是,如果資料科學家將很多醫院的醫療費用資料 (舉例來說) 輸入到系統,那麼異常偵測演算法就會從中找出一種分類方式,那麼它就有可能找到一些很可能是詐騙的異常情況。

購物籃分析 (market basket analysis)

購物籃分析的邏輯可用於預測未來,一個簡單的例子,假使客戶將牛絞肉、番茄、墨西哥塔可餅放入購物籃內,那您可以預測他接下來會再添購起司和酸奶油。像這樣的預測可用來增加業績,在適當時機提供實用的建議給線上購物客戶,提醒他們可能忘記買的東西,或提供店內產品分類上的輔助。

兩名 MIT 的教授利用這項技巧來發現所謂的「harbinger of failure」(失敗商品預測機)。事實證明,有些客戶就是愛買那些會失敗的商品。如果您可以找出這群客戶,那麼您就可以用來決定要不要繼續銷售某項商品,以及要如何行銷才能增加正確客戶的購買量。

時間序列資料 (time series data)

有在配戴健康手環的人,大多累積了不少時間序列資料。這類裝置會蒐集每分鐘心跳數、每分鐘或每小時行走步數,有些現在甚至會定期監測血氧濃度。有了這些資料,就可以預測使用者何時會去跑步。此外,企業也可以蒐集機器運作的資料,根據震動大小、噪音 dB 值、壓力等等來預測故障的發生。

機器學習演算法

假使 ML 需要透過資料來學習,那麼您如何設計一套演算法來學習並發掘統計上有意義的資訊? ML 演算法是監督式、非監督及強化式 ML 的基礎。

資料工程師則是負責將演算法變成程式碼來讓機器可以學習或找出資料中的意義。

接下來,我們來看看幾個最常見的演算法,以下就是今日最常用的 5 種演算法:

  • 線性回歸 (linear regression) 演算法是將自變量 (independent variable) 與因變量 (dependent variable) 畫在一張圖上,然後找出一條直線來代表其平均值或走勢。Merriam-Webster 字典將回歸 (regression) 定義為「一個用來產生某隨機變量在一或多個自變量特定值之下的平均值的函數」。同樣定義也適用於羅吉斯回歸 (logistic regression)。
機器學習演算法
  • 羅吉斯回歸 (logistic regression) 同樣也是將變量畫在圖上,與線性回歸不同的是,它畫出來的線不是直線,而是一條 Sigmoid 函數曲線。
羅吉斯回歸
  • 決策樹 (decision tree) 是監督式 ML 相當常用的一種演算法,用於根據分類變量或連續變量來將資料分類。
決策樹示意圖
  • 支援向量機 (Support Vector Machine) 會根據兩個最接近的資料點來畫出一個超平面 (hyperplane)。如此就可以找出類別的邊界,進而將資料分開。它可在一個 N 維空間上將資料分類。N 代表您所指定的不同特徵數量。
超平面示意圖
  • 單純貝氏 (Naïve Bayes) 模型計算的是某種特定結果的機率。它的效果很好,而且勝過一些更複雜的分類模型。根據單純貝氏分類器 (Naïve Bayesian classifier) 模型的認知,任何特徵都與其他特徵的存在與否無關。
單純貝氏模型

機器學習模型

將機器學習的類型 (監督式、非監督式等等)、技巧與演算法結合起來,其結果就是一個訓練好的模型 (檔案)。接著,當這個模型接收到新的資料時,就可以從中找出規律,為企業、主管或客戶提供商業上的預測或決策。

最適合機器學習使用的程式語言

機器學習的程式語言就是讓人類撰寫指令好讓系統學習的語言。每一種語言都有對應的支援社群可提供學習上的參考和指引。此外,機器學習所用的每一種語言也都有自己的程式庫。

根據 GitHub 2019 年 10 大排行榜,以下是 10 大最受歡迎的語言:

  • Python
  • C++
  • JavaScript
  • Java
  • C#
  • Julia
  • Shell
  • R
  • TypeScript
  • Scala - 用來與大數據互動的一種語言


Python 機器學習

由於 Python 是目前最常用的機器學習語言,因此我們在這裡額外提供一些相關的資訊。

Python 是一種直譯式 (interpreted)、開放原始碼、物件導向的語言,以英國超現實幽默劇團「Monty Python」為名。由於它是一種直譯式語言,因此它的程式碼在由 Python 虛擬機器執行之前,會先轉換成位元碼 (bytecode)。

Python 有幾項特點讓它成為 ML 的首選:

  • 大量現成可用的強大套件。有些是專為 ML 開發的套件,例如:numpy、scipy 和 panda。
  • 可以很容易地快速建立原型 (prototyping)。
  • 有各式各樣的協作工具可用。
  • 從特徵截取、建立模型,一路到更新 ML 解決方案,資料科學家都能使用 Python 來作業,不必在不同階段變換不同的語言。

參考資源