返回文章列表

AWS 機器學習與人工智慧服務應用

本章探討機器學習(ML)和人工智慧(AI)如何為企業帶來價值,並介紹 AWS 提供的相關服務。從預測、個人化服務到自然語言和影像識別,ML 和 AI 正逐漸改變商業模式。AWS 提供 SageMaker 等工具簡化 ML 模型的建立、訓練和佈署,同時 Autopilot 功能更降低了使用門檻,讓非專業人士也能運用

雲端運算 機器學習

隨著機器學習技術的成熟與雲端服務的普及,企業運用人工智慧和機器學習來提升營運效率和客戶體驗已成為趨勢。AWS 提供豐富的機器學習和人工智慧服務,涵蓋模型建立、訓練、佈署和管理等各個環節。這些服務不僅適用於資料科學家,也讓非專業開發者能輕鬆上手。從 Amazon SageMaker 到 Amazon Comprehend,AWS 提供的工具簡化了機器學習的流程,讓企業能更有效地利用資料洞察,提升預測準確性、提供個人化服務,並自動化複雜任務。

第 13 章:啟用人工智慧和機器學習

長期以來,企業一直夢想著能夠準確預測產品需求、為客戶提供個人化推薦,並自動化複雜的任務。過去十多年來,機器學習(ML)的進步使得這些事情成為可能。

機器學習的概念和應用

機器學習是一種訓練電腦模仿人類學習過程的方法。它使用各種先進的演算法和大量的資料來開發和訓練 ML 模型。這個模型可以用來檢查新的資料並自動從中提取洞察。

機器學習具有廣泛的有趣應用案例,預計將對生活的許多不同方面產生越來越大的影響。例如,科學家正在使用機器學習來分析患者的視網膜掃描,以識別阿茲海默症的早期跡象。機器學習也是自動駕駛車輛技術進步的動力,使汽車能夠在高速公路上甚至複雜的城市街道上自主行駛。

AWS 的機器學習和人工智慧服務

AWS 提供多種服務,幫助開發人員建立自己的自定義 ML 模型,以及各種預訓練模型,用於特定的應用場景。在本章中,我們將探討為什麼人工智慧(AI)和 ML 對企業很重要,並介紹一些 AWS 的 AI 和 ML 服務。

本章涵蓋的主題

  • 瞭解 ML 和 AI 對企業的價值
  • 探索 AWS 的 ML 服務
  • 探索 AWS 的 AI 服務
  • 實作練習:使用 Amazon Comprehend 分析評論

瞭解機器學習與人工智慧對組織的價值

越來越多不同規模的企業正在不同階段探索機器學習(ML)和人工智慧(AI)如何對其業務產生正面影響。過去,只有最大的組織擁有資金和專業知識來投資ML專案,但隨著時間的推移,所需的技術變得更加經濟實惠,也更容易被非專業開發者使用。

雲端服務供應商的角色

像AWS這樣的雲端供應商在使ML和AI技術更容易被廣泛使用者使用方面發揮了重要作用。今天,一個沒有先前ML教育或經驗的開發者可以使用像Amazon Lex這樣的服務來建立客戶服務聊天機器人。這個聊天機器人允許客戶使用自然語言提問,而不是必須從預設選項中選擇。過去,想要建立這樣一個聊天機器人需要擁有機器學習博士學位!

大型組織與非專業開發者

許多大型組織仍在尋求建立具有專門AI和ML教育和經驗的資料科學團隊,這些開發者通常參與尖端研究和開發。然而,幾乎任何規模的組織都可以使用非專業開發者來利用ML的力量,以改善客戶體驗、財務預測和其他業務方面。

專門的ML專案

大型組織在專門行業中使用先進的ML技術來開發尖端的ML進展。以下是幾個這樣的例子:

醫療臨床決策支援平台

Cerner是一家健康資訊科技服務公司,已經建立了一個由ML驅動的臨床決策支援系統,以幫助醫院簡化其工作流程。這個根據AWS的解決方案使用ML模型來預測某個緊急部門在任何給定日期或時間可能會有多少病人。這有助於確保正確的患者被優先考慮治療,患者在正確的時間被出院,並使用實時資料建立中央營運中心儀錶板。這個儀錶板提供了管理醫院工作流程的重要近實時資訊,以及對這些指標未來可能的發展趨勢的預測。

程式碼範例:使用Amazon SageMaker建立ML模型
import sagemaker
from sagemaker import get_execution_role

# 初始化SageMaker會話
sagemaker_session = sagemaker.Session()

# 取得執行角色
role = get_execution_role()

# 定義SageMaker估算器
estimator = sagemaker.estimator.Estimator(
    image_uri='你的Docker映象URI',
    role=role,
    instance_count=1,
    instance_type='ml.m4.xlarge',
    sagemaker_session=sagemaker_session
)

# 設定超引數
estimator.set_hyperparameters(
    num_round=100,
    objective='reg:squarederror'
)

# 開始訓練作業
estimator.fit({'train': 's3://你的訓練資料桶/train.csv'})

內容解密:

  1. 初始化SageMaker會話:這是與SageMaker服務進行互動的第一步,透過sagemaker.Session()建立會話。
  2. 取得執行角色get_execution_role()用於取得當前筆記本例項的IAM角色,這個角色需要有足夠的許可權來存取SageMaker和其他AWS服務。
  3. 定義SageMaker估算器:透過sagemaker.estimator.Estimator類別定義一個估算器,指定使用的Docker映象、執行角色、例項數量和型別等。
  4. 設定超引數:使用set_hyperparameters方法為ML模型設定超引數,例如訓練輪數和目標函式。
  5. 開始訓練作業:呼叫fit方法開始訓練作業,將訓練資料從S3桶中載入。
疾病的早期檢測

機器學習和人工智慧在疾病早期檢測領域有巨大的潛力。2020年11月,《自然》雜誌的一篇文章介紹瞭如何使用AI改善肺癌的檢測。文中舉例說明,一個深度學習ML模型能夠在CT掃描中正確檢測出早期肺癌的比例達到94%,優於六位資深放射科醫生的診斷結果。

疾病早期檢測流程圖

此圖示展示了使用深度學習進行疾病早期檢測的流程,從資料收集到最終的治療決策。

日常業務中的ML和AI應用

幾乎所有規模的企業都在尋找方法,透過使用ML和AI技術來改善業務。預測是其中一個重要的應用領域,包括財務預測、人員預測和庫存預測等。傳統的預測方法往往缺乏準確性,而ML引入了新的方法和技術,能夠提高預測準確性並考慮多種變數因素。

預測中的ML應用

AWS提供了多種服務,幫助將ML的力量應用於預測問題。透過使用這些服務,企業可以提高預測的準確性,並根據預測結果做出更好的決策。

啟用人工智慧與機器學習

個人化服務

個人化服務的核心在於為特定的客戶或訂閱者量身定製溝通內容和資訊。一個典型的例子是Netflix投入大量資源,根據使用者過去觀看的節目,提供個人化的推薦內容,建議使用者可能感興趣的其他節目。

其他運用機器學習提供個人化推薦的例子還包括Amazon.com商店頁面上的產品推薦,以及booking.com上的旅遊目的地推薦。

自然語言處理

自然語言處理(NLP)是人工智慧/機器學習的一個分支,用於分析人類語言並從文字中提取自動化的洞察和上下文。

一個很好的NLP例子是亞馬遜的Alexa虛擬助手。使用者可以用自然語言與Alexa溝通,Alexa使用NLP演算法來理解使用者的問題。雖然語音識別系統已經存在很長時間,但這些系統通常需要使用者說出非常特定的短語才能被理解。現代NLP方法允許10個不同的使用者以10種稍微不同的方式詢問同一個問題,而系統仍然能夠理解所問的問題。

影像識別

機器學習在影像識別領域的應用正在對許多企業產生影響。透過影像識別模型,影像可以被分析以識別其中的物體。這可以用於許多不同的任務,例如確保員工佩戴適當的安全裝備,或作為驗證客戶身份的過程的一部分。這些模型還可以根據影像中的內容自動標記影像,例如一組狗照片中的狗的品種。

現在我們已經回顧了一些機器學習和人工智慧的典型應用案例,我們可以更深入地探討一些使這些應用案例成為可能的AWS服務。

探索AWS的機器學習服務

AWS提供了三大類別機器學習和人工智慧服務,如下圖所示(由於篇幅限制,本圖僅包含了一小部分人工智慧和機器學習服務):

圖13.1 – Amazon ML/AI 堆積疊

在上圖中,我們可以看到AWS在每個類別中提供的服務子集 – 人工智慧服務、機器學習服務和機器學習框架及基礎設施。

在機器學習框架層級,AWS提供了Amazon Machine Images(AMIs)和預先構建的Docker容器,這些容器中預先安裝了流行的深度學習機器學習框架,並針對AWS環境進行了最佳化。雖然這些對於需要自定義機器學習環境的高階應用案例非常有用,但這些應用案例超出了本文的範圍。

有關這些機器學習框架的更多資訊,請參閱AWS關於AWS Deep Learning AMIs(https://aws.amazon.com/machine-learning/amis/)和AWS Deep Learning Containers(https://aws.amazon.com/machine-learning/containers/)的檔案。

在本章的其餘部分,我們將探討AWS ML服務和AWS AI服務類別中的一些服務。

AWS ML 服務

雖然在機器學習框架和基礎設施層工作需要先進的機器學習技能和經驗,但AWS在機器學習服務層使開發機器學習模型變得更加容易。

在此層中,Amazon SageMaker讓使用者能夠準備、構建、訓練、調優、佈署和管理機器學習模型,而無需管理底層基礎設施。SageMaker旨在簡化構建機器學習模型的每個步驟,無論是對資料科學家還是日常開發人員。

SageMaker包含了多個底層工具,以幫助完成構建機器學習模型的各個階段。

SageMaker 在 ML 準備階段的作用

SageMaker中的多項功能簡化並加速了準備構建機器學習模型的任務。我們在第8章“識別和啟用資料消費者”中介紹了這些服務,請複習該章以取得更多資訊,以下是這些服務的簡要回顧。

Amazon SageMaker Ground Truth

大多數機器學習模型透過在標記資料上進行訓練來學習。也就是說,模型實際上是使用包含模型設計用於預測的屬性的資料進行訓練。一旦經過訓練,模型就可以預測屬性缺失的資料。例如,要訓練一個能夠識別照片中不同犬種的模型,您需要使用標記有犬種的狗照片來訓練模型。一旦經過訓練,您就可以提供一張狗的照片,模型就可以預測犬種。

SageMaker Ground Truth是一項服務,它使用機器學習和/或人工策展人來標記資料;例如,標記照片中的狗的品種。這顯著加快了準備用於訓練新機器學習模型的資料的過程。

Amazon SageMaker Data Wrangler

SageMaker Data Wrangler服務是一種視覺化資料準備工具,資料科學家可以使用它來準備原始資料以供機器學習使用。該服務使資料科學家能夠選擇相關的資料集、探索資料,然後從超過300種內建轉換中選擇,並輕鬆地將其應用於資料集,而無需編寫任何程式碼。

SageMaker Data Wrangler還包括視覺化範本,使您能夠在SageMaker Studio(一個完整的整合開發環境(IDE)用於機器學習)中預覽轉換結果。

Amazon SageMaker Clarify

使用訓練資料集訓練機器學習模型時,資料集可能會因為特定資料的集中或因為缺少特定資料而產生偏差。

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title AWS 機器學習與人工智慧服務應用

package "機器學習流程" {
    package "資料處理" {
        component [資料收集] as collect
        component [資料清洗] as clean
        component [特徵工程] as feature
    }

    package "模型訓練" {
        component [模型選擇] as select
        component [超參數調優] as tune
        component [交叉驗證] as cv
    }

    package "評估部署" {
        component [模型評估] as eval
        component [模型部署] as deploy
        component [監控維護] as monitor
    }
}

collect --> clean : 原始資料
clean --> feature : 乾淨資料
feature --> select : 特徵向量
select --> tune : 基礎模型
tune --> cv : 最佳參數
cv --> eval : 訓練模型
eval --> deploy : 驗證模型
deploy --> monitor : 生產模型

note right of feature
  特徵工程包含:
  - 特徵選擇
  - 特徵轉換
  - 降維處理
end note

note right of eval
  評估指標:
  - 準確率/召回率
  - F1 Score
  - AUC-ROC
end note

@enduml

此圖示展示了建立機器學習模型的一般流程,從資料收集到模型佈署。

內容解密:

  1. 資料收集:收集相關資料以供模型訓練。
  2. 資料標註:使用SageMaker Ground Truth等工具標註資料。
  3. 模型訓練:使用標註好的資料訓練模型。
  4. 模型評估:評估模型的效能和偏差。
  5. 模型佈署:將訓練好的模型佈署到生產環境中。

SageMaker Clarify能夠幫助檢測和減少模型中的偏差,提高模型的公平性和準確性。

探索AWS機器學習服務的深度應用

在機器學習(ML)專案中,資料的品質和代表性對於模型的準確性和可靠性至關重要。當資料集偏向某一特定群體或屬性時,可能會導致模型在其他群體上的預測不準確。例如,如果一個用於預測人們反應的資料集主要包含35至55歲的人的資料,那麼對於年輕人(35歲以下)和老年人(55歲以上)的預測可能會不準確。同樣的問題也可能出現在性別、性取向、婚姻狀況等其他屬性上。為了避免這種潛在的偏差,Amazon SageMaker Clarify可以檢查資料集中的特定屬性,並使用先進的演算法來突顯潛在的偏差。

SageMaker在機器學習建置階段的應用

一旦資料被標註和準備好,資料科學家就可以開始建立機器學習模型。SageMaker提供了多種功能來支援模型的建立。

SageMaker Studio筆記本

資料科學家通常使用筆記本來開發機器學習模型的程式碼。筆記本是一種互動式的網頁環境,開發者可以在其中執行程式碼並立即看到執行結果。SageMaker Studio筆記本允許使用者快速啟動新的筆記本,並由使用者選擇的EC2例項型別支援。筆記本環境使用Amazon Elastic File System(EFS),這是一種根據網路的儲存,能夠在筆記本例項的生命週期之外持久儲存資料。這使得使用者可以輕鬆地啟動和停止不同的筆記本例項,並在每個例項中存取筆記本專案檔案。

import sagemaker
from sagemaker import get_execution_role

# 初始化SageMaker會話
sagemaker_session = sagemaker.Session()

# 取得執行角色
role = get_execution_role()

# 建立SageMaker Studio筆記本例項
notebook_instance = sagemaker_session.create_notebook_instance(
    NotebookInstanceName='MyNotebookInstance',
    InstanceType='ml.t2.medium',
    RoleArn=role
)

內容解密:

上述程式碼展示瞭如何使用SageMaker Python SDK初始化一個SageMaker會話,並建立一個SageMaker Studio筆記本例項。首先,我們匯入必要的模組並初始化SageMaker會話。然後,我們取得執行角色,這是SageMaker用來存取其他AWS服務的IAM角色。最後,我們建立一個筆記本例項,指定例項名稱、型別和執行角色。

SageMaker Autopilot

對於沒有豐富機器學習經驗的開發者,SageMaker Autopilot可以自動建立、訓練和調校多個不同的機器學習模型。開發者需要提供一個表格資料集(行和列),並指出他們想要預測的列值。這可以是預測一個數字(二元類別或多標籤類別)。

from sagemaker.autopilot import AutoML

# 初始化AutoML物件
automl = AutoML(
    role=role,
    target_attribute_name='target_column',
    output_path='s3://my-bucket/output',
    max_candidates=10
)

# 開始AutoML作業
automl.fit('s3://my-bucket/input-data', job_name='MyAutoMLJob')

內容解密:

這段程式碼展示瞭如何使用SageMaker Autopilot自動建立、訓練和調校機器學習模型。首先,我們匯入AutoML類別並初始化一個AutoML物件,指定執行角色、目標屬性名稱、輸出路徑和最大候選模型數量。然後,我們呼叫fit方法開始AutoML作業,傳入輸入資料的S3路徑和作業名稱。

SageMaker在機器學習訓練和調校階段的應用

一旦建立了機器學習模型,就需要對模型進行訓練和調校,直到獲得符合要求的結果。

SageMaker Experiments

SageMaker Experiments可以自動跟蹤不同實驗的輸入、引數和組態,並儲存每個實驗的結果。這有助於減少識別最佳表現組合所需的開銷和時間。

from sagemaker.experiments import Experiment, Trial, TrialComponent

# 建立實驗
experiment = Experiment.create(experiment_name='MyExperiment')

# 建立試驗
trial = Trial.create(trial_name='MyTrial', experiment_name=experiment.experiment_name)

# 建立試驗元件
trial_component = TrialComponent.create(trial_component_name='MyTrialComponent')

# 將試驗元件與試驗關聯
trial.add_trial_component(trial_component)

內容解密:

上述程式碼展示瞭如何使用SageMaker Experiments跟蹤機器學習實驗。首先,我們匯入必要的類別並建立一個實驗。然後,我們建立一個試驗和試驗元件,並將試驗元件與試驗關聯起來。這使得我們可以跟蹤不同實驗的組態和結果。