检查点
Create machine learning models
/ 50
Use the model
/ 50
TensorFlow:Qwik Start
GSP637
總覽
本實驗室將說明機器學習的基礎模型「Hello World」。您將建構的系統是根據資料訓練,來推論並決定數字間關係的規則,不是用 Java 或 C++ 等語言編寫精確的規則。
目標
本實驗室的學習內容包括:
- 在 Jupyter 筆記本設定開發環境
- 設計機器學習模型
- 訓練類神經網路
- 測試模型
設定和需求
點選「Start Lab」按鈕前的須知事項
請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。
您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。
如要完成這個研究室活動,請先確認:
- 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
- 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
簡介
請思考下列問題:您正在建構健身狀況追蹤系統,要執行動作辨識功能。您可能有某人的移動速度,並想根據這個速度,使用條件式推論出此人的活動:
- 您可以延伸以上條件式,加入另一項條件「跑步」:
- 使用相同方式加入另一項條件,即可偵測「騎自行車」:
- 現在請思考,如果想加入「打高爾夫球」這類活動,會發生什麼事?若要建立判斷活動的規則,就沒那麼清楚了。
如要以程式碼編寫偵測打高爾夫球活動的程式,會極為困難。
所以要怎麼做?機器學習可以解決這個問題!
什麼是機器學習?
上一節中有個問題,要您嘗試判斷使用者的健身活動。如要偵測打高爾夫球這類活動,程式碼的條件必定更加複雜,因此您遇上了程式碼的限制。
以傳統方式建構應用程式的過程如下:
您使用程式設計語言表達規則,這些規則以資料為依據,您的程式會提供答案。在活動偵測的範例中,規則 (為定義活動類型而編寫的程式碼) 會依據資料 (某人的移動速度) 來找出答案,也就是判斷使用者活動狀態 (走路、跑步、騎自行車等) 函式傳回的值。
運用機器學習偵測這些活動的過程與此十分類似,只有軸不同:
您會同時提供答案 (通常稱為標籤) 和資料,不必嘗試定義規則並以程式設計語言表達,機器就會判斷答案與資料間的關係,並推論出規則。舉例來說,在機器學習的脈絡中,活動偵測情境應該像這樣:
只要收集大量資料並加上標籤,有效說明「這是走路的狀態」、「這是跑步的狀態」等,電腦就能依資料判斷特定活動的獨特模式,推論出規則。
機器學習不僅是為此情境編寫程式的替代方法,還能應用於打高爾夫球等新情境,解決傳統規則型程式設計方法難以處理的問題。
在傳統程式設計中,程式碼會編譯成二進位檔,通常稱為程式。在機器學習中,從資料和標籤建立的項目稱為模型。
所以,如果回到這個圖表:
將上圖的結果視為模型,在執行階段的運用方式如下:
模型取得一些資料,使用訓練時推論出的規則來生成預測,即「這筆資料像是在走路」、「這筆資料像是在騎自行車」等。
在本實驗室中,您將使用構成元素,建構非常簡單的「Hello World」模型,且能用於任何機器學習情境!
工作 1:開啟 Vertex AI Workbench 中的筆記本
-
前往 Google Cloud 控制台,依序點選「導覽選單」>「Vertex AI」>「Workbench」。
-
找出
執行個體,點選「Open JupyterLab」按鈕。
Workbench 執行個體的 JupyterLab 介面會在新瀏覽器分頁中開啟。
安裝 TensorFlow 和其他套件
-
在「Launcher」選單中的「Other」底下,選取「Terminal」。
-
檢查 Python 環境是否已設定完成,然後複製下列指令,貼到終端機。
輸出內容範例:
- 執行下列指令,安裝 TensorFlow 套件。
- 在終端機執行下列指令,更新
pip3
。
Pylint 是檢查 Python 程式碼錯誤的工具,可以標出 Python 原始碼中的語法和樣式問題。
- 執行下列指令,安裝
pylint
套件。
- 在
requirements.txt
檔案中,安裝實驗室所需的套件:
現在環境已設定完畢!
工作 2:建立第一個機器學習模型
請查看下列數字組。您是否能看出數字間的關係?
X: |
-1 |
0 |
1 |
2 |
3 |
4 |
Y: |
-2 |
1 |
4 |
7 |
10 |
13 |
若從左讀到右,您會注意到 X 值是公差為 1 的數列,Y 值則是公差為 3 的數列,所以關係應該是 Y=3X 加上或減去某數值。
接下來看看 X 值 0,對應的 Y 值是 1。
從以上兩項觀察結果,可以判斷出關係是 Y=3X+1。
上述推論過程很接近使用程式碼訓練模型,找出資料規律的方法,這類模型又稱為類神經網路。
您將使用資料訓練類神經網路。類神經網路收到一組 X 值和 Y 值後,應該要能辨識數值間的關係。
建立新筆記本和匯入程式庫
-
點選 Workbench 左側的 + 圖示,開啟新的啟動器。
-
在「Launcher」選單中的「Notebook」底下,選取「Python3」。
畫面將顯示新的 Jupyter 筆記本。如要進一步瞭解如何使用 Jupyter 筆記本,請參閱 Jupyter Notebook 說明文件。
- 匯入並設定 Cloud Logging 的
logging
和google-cloud-logging
。在第一個儲存格中新增下列程式碼:
- 匯入
tensorflow
來訓練和評估模型,並命名為tf
以方便使用,然後在第一個儲存格中新增下列程式碼。
- 匯入
numpy
來剖析資料,達到偵錯目的,並命名為np
以方便使用,然後在第一個儲存格中新增下列程式碼。
-
如要執行儲存格,請點選「Run」按鈕或按下 Shift + Enter。
-
儲存筆記本,然後依序點選「Files」>「Save」。將檔案命名為
model.ipynb
,然後點選「OK」。
準備資料
接下來,您將準備訓練模型的資料。在本實驗室中,您會使用先前用過的 6 個 X 值和 Y 值:
X: |
-1 |
0 |
1 |
2 |
3 |
4 |
Y: |
-2 |
1 |
4 |
7 |
10 |
13 |
如您所見,X 值與 Y 值的關係為 Y=3x+1,所以當 X = 1,會得出 Y = 4,以此類推。
Python 程式庫 numpy
會提供大量陣列型資料架構,是標準的資料輸入方式。如要運用這些資料,請使用 np.array([])
,將數值指定為 numpy
中的陣列
- 在第二個儲存格中新增下列程式碼:
設計模型
在本節中,您將運用 TensorFlow 設計模型。
您將使用名為「類神經網路」的機器學習演算法,來訓練模型。您會建立最簡易的類神經網路,具備 1 層,其中含有 1 個神經元。該類神經網路的輸入內容一次只會有一個值,因此輸入內容的格式必須為 [1]。
- 在第二個儲存格中新增下列程式碼:
編譯模型
接下來,您將編寫程式碼來編譯類神經網路。這個步驟必須指定 2 個函式:loss
和 optimizer
。
若您已看過許多機器學習的數學原理,通常會在此處用到,不過 tf.keras
貼心地將這些原理都封裝在函式中。
-
根據先前檢視的結果,已知數字間的關係為
y=3x+1
。 -
當電腦試圖「學習」這個關係,會先猜測可能是
y=10x+10
。loss
函式則會依據已知的正確解答,測量電腦猜測的答案和準確度。
tf.keras
中不同類型的損失函式,請參閱 Module: tf.keras.losses 說明文件。- 接下來模型使用最佳化器函式,再次猜測。模型會根據損失函式的結果,嘗試將損失降至最低。此時,模型或許會得出下列答案:
y=5x+5
。雖然仍不正確,但有比較接近正確結果,也就是損失減少了。
tf.keras
中不同類型的最佳化器函式,請參閱 Module: tf.keras.optimizers 說明文件。- 模型會依照您指定的訓練週期數,重複執行上述流程。
- 在第二個儲存格中新增下列程式碼:
在以上程式碼片段中,您告訴模型要對損失使用 mean_squared_error
,對最佳化器則使用 stochastic gradient descent (sgd)
。您目前不需要理解這些程式碼的數學原理,但程式碼會順利運作!
訓練類神經網路
為了訓練類神經網路「學習」X 值和 Y 值間的關係,您會使用 model.fit
。
這個函式會以迴圈形式訓練模型,也就是模型會猜測、測量準確度 (即損失),使用最佳化器再猜一次。模型會按照指定的訓練週期數,重複執行上述流程 (本實驗室的設定是 500)。
- 在第二個儲存格中新增下列程式碼:
在以上程式碼中,model.fit
會按照固定的訓練週期數來訓練模型。
model.fit
,請參閱 tf.keras.Model 說明文件中的「fit」一節。現在檔案應該像這樣 (請注意,程式碼會位於兩個不同儲存格):
執行程式碼
指令碼已準備就緒!執行指令碼,看看會發生什麼事。
-
點選「Run」按鈕或按下 Shift + Enter,即可執行筆記本中的第二個儲存格。
-
查看輸出內容。請注意,指令碼會顯示每次訓練週期的損失。您的輸出內容可能會與此處稍有不同。
e-
的數字是科學記號的負指數。捲動瀏覽訓練週期時,您會看到前幾個訓練週期的損失很多,但之後逐漸減少。例如:
隨著訓練進行,損失會變得非常少:
在訓練結束前,損失會變得極少,表示模型可以很準確地推論數字間的關係:
您可能不需要 500 個這麼多的訓練週期,可試試不同數值。以這個範例來說,僅 50 個訓練週期後,損失就已經非常少,所以可能這樣就夠了!
點選「Check my progress」,確認目標已達成。
使用模型
現在您已訓練模型學習 X 值和 Y 值間的關係。
使用 model.predict
方法,可以為之前模型訓練時沒有出現的 X 值,找出對應的 Y 值。例如 X = 10,那 Y 值會是多少?
- 在第三個儲存格中新增下列程式碼,做出預測:
cloud_logger
。-
按下 Ctrl+s 或依序點選「File」->「Save」,儲存筆記本。
-
如要執行第三個儲存格,請點選「Run」按鈕或按下 Shift + Enter。
Y 值會列於訓練記錄之後 (訓練週期)。
輸出內容範例:
您可能會以為 Y=31,但結果超出了一點 (31.005917)。為什麼會這樣呢?
答案:類神經網路與「機率」有關。類神經網路計算出 X 和 Y 之間的關係很有可能是 Y=3X+1,但只有 6 個資料點,無法確定這個關係是否正確。因此,10 的結果會很接近 31,但不一定是 31。
運用類神經網路的過程中,這個模式會重複出現。您將處理的幾乎都是機率而非確切數值,因此要寫些程式,依據機率找出結果,執行分類工作時更是如此。
點選「Check my progress」,確認目標已達成。
恭喜!
恭喜!在本實驗室中,您已使用 TensorFlow 建立、訓練並測試自己的機器學習模型。
後續步驟/瞭解詳情
- 查看所有 Vertex AI 必要知識
- 探索 AI 樂趣!查看 Experiments with Google
- 進一步瞭解 TensorFlow
- 使用 Google 機器學習技術預測賽事結果
- 開始使用 BQML
- 使用 BigQuery ML 預測模型來預測計程車車資
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 9 月 16 日
實驗室上次測試日期:2024 年 9 月 16 日
Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。