<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>035 - 11th 鐵人賽 - 《Google Machine Learning 學習筆記》 on 嗡嗡的隨手筆記</title>
        <link>https://wongwongnotes.com/categories/035---11th-%E9%90%B5%E4%BA%BA%E8%B3%BD---google-machine-learning-%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98/</link>
        <description>Recent content in 035 - 11th 鐵人賽 - 《Google Machine Learning 學習筆記》 on 嗡嗡的隨手筆記</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <copyright>嗡嗡</copyright>
        <lastBuildDate>Tue, 01 Oct 2019 01:42:15 +0800</lastBuildDate><atom:link href="https://wongwongnotes.com/categories/035---11th-%E9%90%B5%E4%BA%BA%E8%B3%BD---google-machine-learning-%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>【Google ML】30 - 30天內容回顧與課程索引, 參賽心得, 未來計畫與感謝</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/all/</link>
        <pubDate>Tue, 01 Oct 2019 01:42:15 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/all/</guid>
        <description>&lt;p&gt;今天是最後一天了，我們就來稍微回顧一下這30天走過的路，&lt;br&gt;
以及這30天過程中的心得，最後我想說文章的未來計劃與表達感謝。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;30天內容回顧與課程索引&#34;&gt;30天內容回顧與課程索引&lt;/h2&gt;
&lt;p&gt;在這30天的課程中，我們完成了兩個google所提供的課程，以下有學習內容的整理。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;訂閱課程&#34;&gt;訂閱課程&lt;/h2&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】 Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;在第一個課程中，主要了解一些基礎知識，&lt;br&gt;
以及看google在GCP上分享一些已經有的專案。&lt;br&gt;
這部分的內容多與將ML的結果實際運用至商業化有關。&lt;/p&gt;
&lt;h2 id=&#34;基礎知識&#34;&gt;基礎知識&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;學習目標&lt;/th&gt;
  &lt;th&gt;介紹內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;基礎ML知識&lt;/td&gt;
  &lt;td&gt;什麼是ML? 為什麼ML最近才紅起來? 可參考：[【Day 3】](https://ithelp.ithome.com.tw/articles/10213576)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;設計ML問題&lt;/td&gt;
  &lt;td&gt;如何設計一個ML問題？可參考：[【Day 4】](https://ithelp.ithome.com.tw/articles/10213578)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;ML與一般算法比較&lt;/td&gt;
  &lt;td&gt;比較一般算法與ML算法，看出ML的優勢。可參考：[【Day 11】](https://ithelp.ithome.com.tw/articles/10214863)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;ml的應用策略&#34;&gt;ML的應用策略&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;學習目標&lt;/th&gt;
  &lt;th&gt;介紹內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;ML的成功策略&lt;/td&gt;
  &lt;td&gt;使用ML要成功，常需要的關鍵策略。可參考：[【Day 5】](https://ithelp.ithome.com.tw/articles/10213900)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;ML各階段與比重分配&lt;/td&gt;
  &lt;td&gt;企業運行ML時，在ML的各階段應該放的比重與心力。可參考：[【Day 6】](https://ithelp.ithome.com.tw/articles/10213904)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;ML失敗的常見原因&lt;/td&gt;
  &lt;td&gt;大部分企業使用ML卻失敗的前十大主因。可參考：[【Day 6】](https://ithelp.ithome.com.tw/articles/10213904)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;企業如何引入ML&lt;/td&gt;
  &lt;td&gt;ML在企業運行的五大階段與注意事項。 可參考：[【Day 7】](https://ithelp.ithome.com.tw/articles/10214219)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;gcp認識篇&#34;&gt;GCP認識篇&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;學習目標&lt;/th&gt;
  &lt;th&gt;介紹內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;在GCP上運行ML的階段&lt;/td&gt;
  &lt;td&gt;在GCP上運行ML大概有哪五大階段? 可參考：[【Day 2】](https://ithelp.ithome.com.tw/articles/10213204)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;GCP上ML的介紹&lt;/td&gt;
  &lt;td&gt;GCP上ML的介紹。可參考：[【Day 8】](https://ithelp.ithome.com.tw/articles/10214362)、[【Day 11】](https://ithelp.ithome.com.tw/articles/10214863)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;已訓練好的ML模型&lt;/td&gt;
  &lt;td&gt;已訓練好的ML模型。建議可直接使用，不需要再自己訓練。如：「Vision API(圖片辨識)」,「Video intelligence API(影片辨識)」,「Speech API(語音辨識)」,「Translation API(語言翻譯)」,「Natural Language API(自然語言處理)」。介紹：[【Day 4】](https://ithelp.ithome.com.tw/articles/10213578)，詳細整理與比較：[【Day 12】](https://ithelp.ithome.com.tw/articles/10214867)、lab實作：[【Day 14】](https://ithelp.ithome.com.tw/articles/10215285)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;gcp上的-lab-實作&#34;&gt;GCP上的 lab 實作&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;Lab&lt;/th&gt;
  &lt;th&gt;介紹內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;Lab事前準備&lt;/td&gt;
  &lt;td&gt;Lab 0 - 在GCP上開始lab前的事前準備與注意事項。可參考：[【Day 9】](https://ithelp.ithome.com.tw/articles/10214523)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;GCP上使用VM&lt;/td&gt;
  &lt;td&gt;Lab 1 - 在GCP上分析地震資料與製圖，並儲存在雲端。可參考： [【Day 10】 ](https://ithelp.ithome.com.tw/articles/10214718)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;BigQuery與Datalab&lt;/td&gt;
  &lt;td&gt;Lab 2 - 使用 BigQuery 與 Datalab 視覺化分析資料。可參考：[【Day 13】 ](https://ithelp.ithome.com.tw/articles/10215097)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;google ML APIs&lt;/td&gt;
  &lt;td&gt;Lab 3 - 使用google已訓練好的ML模型實作。如：「Vision API(圖片辨識)」,「Video intelligence API(影片辨識)」,「Speech API(語音辨識)」,「Translation API(語言翻譯)」,「Natural Language API(自然語言處理)」。可參考：[【Day 14】](https://ithelp.ithome.com.tw/articles/10215285)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;p&gt;在第二個課程中，我們深入去介紹如何訓練出一個好的ML模型，&lt;br&gt;
包含ML模型的演算法、架構與一些模型好壞的評估方法。&lt;/p&gt;
&lt;h2 id=&#34;ml中的不同學習種類&#34;&gt;ML中的不同學習種類&lt;/h2&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 15】 監督式學習(Supervised Learning) 與 非監督式學習(Unsupervised Learning) 的介紹和比較&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;訓練一個ml模型&#34;&gt;訓練「一個」ML模型&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;從所有ml模型的訓練結果中找到最好的ml模型day-27&#34;&gt;從所有ML模型的訓練結果中，找到「最好的」ML模型：&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10222043&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 27】&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;原因：「訓練好一個模型」不等於「找到最好的模型」&lt;/p&gt;&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;(「訓練模型」)&lt;/td&gt;
  &lt;td&gt;使用「訓練資料集(Training)」訓練模型(調整參數)，也就是「「上方表格」」在做的內容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「結束訓練」)&lt;/td&gt;
  &lt;td&gt;訓練到通過「驗證資料集(Validation)」結束訓練(未達到「overfitting」的狀態前)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「模型再調整」)&lt;/td&gt;
  &lt;td&gt;「超參數(hyperparameters)」調整或神經網路的「layer數」或「使用的node數」(一些「訓練前」就會先決定的東西)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(loop)&lt;/td&gt;
  &lt;td&gt;(「模型再調整」)後，重複上述(「訓練模型」)、(「結束訓練」)，完成訓練新的模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「找到最佳模型」)&lt;/td&gt;
  &lt;td&gt;從「所有訓練的模型」中，找到能使「驗證用資料集(Validation)」最小的loss，完成(「找到最佳模型」)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「決定是否生產」)&lt;/td&gt;
  &lt;td&gt;可以開始決定要不要將此ML模型投入生產。此時我們可以使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;訓練ml模型的小實驗&#34;&gt;訓練ML模型的小實驗&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;文章&lt;/th&gt;
  &lt;th&gt;實驗內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;TensorFlow Playground 的簡介與介面介紹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;「learning rate」 的改變對訓練過程的影響&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;使用「神經網路(neural network)」分類資料&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;觀察「batch size」如何影響「gradient descent」&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參賽心得&#34;&gt;參賽心得&lt;/h2&gt;
&lt;p&gt;這次是我第一次參加鐵人賽，&lt;br&gt;
原先預定的目標是希望能完成將google的五門課完成並做些Side Project，&lt;br&gt;
但後來開始上課後，發現五門課的份量真的滿多的，&lt;br&gt;
再加上一天能用的時間有限，而30天的時間就像是馬拉松一樣，&lt;br&gt;
應該照自己最合適的步調來跑，否則很怕跑到一半心有餘而力不足，&lt;br&gt;
於是就照著自己一天能看的量，並加上重新整理內容的時間分配進度。&lt;/p&gt;
&lt;p&gt;每日更新確實是一個非常大的挑戰，生活中也還有其他事情需要忙碌，&lt;br&gt;
每篇文章大約都花我五~九小時不等才完成，&lt;br&gt;
說實在真的有占用到一些自己處理其他事情的時間，&lt;br&gt;
參與鐵人賽的期間，就像將自己每日的時間濃縮，但時間長了也會開始疲憊，&lt;br&gt;
但這時一看到有其他鐵人也跟著自己一起賽跑著，似乎又有某種新的動力燃了起來。&lt;br&gt;
最後終於度過了鐵人賽這個艱難的考驗，真的有種說不出的成就感。&lt;/p&gt;
&lt;p&gt;自己本來就有在做AI相關的研究，然後自己的個性也很喜歡整理東西，&lt;br&gt;
也趁著這次機會的好好地把自己的觀念整理一次，&lt;br&gt;
並且一有機會就加上「自己的註」，與自己先前就會的知識作連結。&lt;br&gt;
在這過程中，也讓自己的觀念更加有脈絡與條理。&lt;/p&gt;
&lt;p&gt;另一方面，我文章寫到途中後就有個打算，&lt;br&gt;
未來我希望能把我的文章當成字典，當自己有遺忘的觀念的時候，&lt;br&gt;
隨手打開文章稍微搜尋一下，就能找到自己想要複習的觀念。&lt;/p&gt;
&lt;p&gt;最後，第一次寫鐵人賽的文筆不敢說很好，&lt;br&gt;
而且又是這種專業度很高的文，&lt;br&gt;
自己也很怕自己的專業度不夠能與iT邦上眾多大神相比。&lt;br&gt;
真的很感謝大家願意讀完我的文章。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;未來計畫&#34;&gt;未來計畫&lt;/h2&gt;
&lt;p&gt;「學習是沒有止境的。」&lt;/p&gt;
&lt;p&gt;不論寫到哪，終究會有新的知識需要學習，&lt;br&gt;
未來這個系列我也還會繼續寫文章，文章會不定期的再更新。&lt;br&gt;
更新內容會與原先我希望能夠完成的其他課程有關。&lt;/p&gt;
&lt;p&gt;也希望能藉此讓自己走過的路，能夠留下一些紀錄與整理。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;感謝&#34;&gt;感謝&lt;/h2&gt;
&lt;p&gt;感謝所有訂閱的讀者、讀過我文章的讀者們，希望我的文章能讓你們有所收穫。&lt;br&gt;
感謝所有一起奮鬥的鐵人們，你們的堅持也是我持續寫文章的動力。&lt;br&gt;
感謝朋友們的支持，沒有抱怨我每天在fb發文很吵。&lt;br&gt;
(但如果沒這樣的話，似乎少了點那種莫名的壓力去堅持完成鐵人賽)&lt;br&gt;
感謝google提供這樣免費的學習課程。&lt;br&gt;
感謝iT邦幫忙舉辦鐵人賽這樣的活動。&lt;/p&gt;
&lt;p&gt;最後，也感謝正在讀這篇文章的你！&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10223223&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 30】 Google ML - 30天內容回顧與課程索引, 參賽心得, 未來計畫與感謝&lt;/a&gt;&lt;/p&gt;
&lt;!--
Post ID: 1099
Post Date: 2019-10-01 01:42:15
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/confusion-matrix/</link>
        <pubDate>Mon, 30 Sep 2019 01:38:59 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/confusion-matrix/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/migrated/Fw0UbNz.png" alt="Featured image of post 【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ 「訓練一個ML模型」的整個過程：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★ 從上面的訓練中，找到「最好的」ML模型：&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10222043&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 27】&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;原因：「訓練好一個模型」不等於「找到最好的模型」&lt;/p&gt;&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;(「訓練模型」)&lt;/td&gt;
  &lt;td&gt;使用「訓練資料集(Training)」訓練模型(調整參數)，也就是「「上方表格」」在做的內容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「結束訓練」)&lt;/td&gt;
  &lt;td&gt;訓練到通過「驗證資料集(Validation)」結束訓練(未達到「overfitting」的狀態前)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「模型再調整」)&lt;/td&gt;
  &lt;td&gt;「超參數(hyperparameters)」調整或神經網路的「layer數」或「使用的node數」(一些「訓練前」就會先決定的東西)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(loop)&lt;/td&gt;
  &lt;td&gt;(「模型再調整」)後，重複上述(「訓練模型」)、(「結束訓練」)，完成訓練新的模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「找到最佳模型」)&lt;/td&gt;
  &lt;td&gt;從「所有訓練的模型」中，找到能使「驗證用資料集(Validation)」最小的loss，完成(「找到最佳模型」)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「決定是否生產」)&lt;/td&gt;
  &lt;td&gt;可以開始決定要不要將此ML模型投入生產。此時我們可以使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★小實驗系列：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;文章&lt;/th&gt;
  &lt;th&gt;實驗內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;TensorFlow Playground 的簡介與介面介紹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;「learning rate」 的改變對訓練過程的影響&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;使用「神經網路(neural network)」分類資料&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;觀察「batch size」如何影響「gradient descent」&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Defining ML Models
&lt;ul&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;li&gt;Introducing the Natality Dataset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;li&gt;Gradient Descent
&lt;ul&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;li&gt;Troubleshooting a Loss Curve&lt;/li&gt;
&lt;li&gt;ML Model Pitfalls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TensorFlow Playground
&lt;ul&gt;
&lt;li&gt;Lab: Introducing the TensorFlow Playground&lt;/li&gt;
&lt;li&gt;Lab: TensorFlow Playground - Advanced&lt;/li&gt;
&lt;li&gt;Lab: Practicing with Neural Networks&lt;/li&gt;
&lt;li&gt;Loss Curve Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Performance Metrics」
&lt;ul&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;li&gt;「Confusion Matrix」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;0-先整理今天重點&#34;&gt;0. 先整理今天重點&lt;/h3&gt;
&lt;p&gt;★ 「混淆矩陣(confusion matrix)」：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;&lt;/th&gt;
  &lt;th&gt;「模型預測」為真 「(positive)」&lt;/th&gt;
  &lt;th&gt;「模型預測」為非 「(negative)」&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;「真實情況」為真&lt;/td&gt;
  &lt;td&gt;true positive (TP)&lt;/td&gt;
  &lt;td&gt;false negative (FN)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「真實情況」為非&lt;/td&gt;
  &lt;td&gt;false positive (FP)&lt;/td&gt;
  &lt;td&gt;true negative (TN)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;簡單來說，我們「模型預測」只要是正面肯定的，就是「positive」，否定則是「negative」，&lt;br&gt;
再來判定結果正不正確，只要「實際答案(label)」與「模型預測」不同就是「false」，相同就是「true」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;★ 比較三種指標「Accuracy」、「Precision」、「Recall」：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;指標種類&lt;/th&gt;
  &lt;th&gt;「Accuracy」&lt;/th&gt;
  &lt;th&gt;「Precision」&lt;/th&gt;
  &lt;th&gt;「Recall」&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;計算方法&lt;/td&gt;
  &lt;td&gt;[(TP)+(TN)]/全部資料總數&lt;/td&gt;
  &lt;td&gt;(TP)/「模型預測」為 positive 的總數&lt;/td&gt;
  &lt;td&gt;(TP)/「真實資料」為 positive 的總數&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;公式變形&lt;/td&gt;
  &lt;td&gt;-&lt;/td&gt;
  &lt;td&gt;(TP)/[(TP)+「false positive(FP)」]&lt;/td&gt;
  &lt;td&gt;(TP)/[(TP)+「false negative(FN)」]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;中文解釋&lt;/td&gt;
  &lt;td&gt;「預測」與「判斷」皆完全正確的    (包含「真預測為真(TP)」與「非預測為非(TN)」)&lt;/td&gt;
  &lt;td&gt;「模型預測」為真「(TP+FP)」，而「真實資料」為真的比率&lt;/td&gt;
  &lt;td&gt;「真實資料」為真「(TP+FN)」，而「模型預測」為真的比率&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;重視的點&lt;/td&gt;
  &lt;td&gt;最經典的顯示模型的正確度&lt;/td&gt;
  &lt;td&gt;我們比較重視「模型預測為真」的結果，是否能符合現實。&lt;/td&gt;
  &lt;td&gt;我們比較重視「真實為真」的結果，模型能不能預測到。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;影響&lt;/td&gt;
  &lt;td&gt;-&lt;/td&gt;
  &lt;td&gt;「真實為非「(FN)」」的影響相對比較還好。&lt;/td&gt;
  &lt;td&gt;「模型預測為非「(FP)」」的影響相對比較還好。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;例子&lt;/td&gt;
  &lt;td&gt;都是例子&lt;/td&gt;
  &lt;td&gt;下雨：預測為非(預測雨天，但實際晴天)，我們帶傘出門相對還好。&lt;/td&gt;
  &lt;td&gt;成績預警：預測為非(預測成績不好，但實際還ok)，我們告知要注意成績相對還好。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;例子造成影響&lt;/td&gt;
  &lt;td&gt;-&lt;/td&gt;
  &lt;td&gt;「真實為非「(FN)」」還好 = 實際晴天的影響還好。&lt;/td&gt;
  &lt;td&gt;「模型預測為非「(FP)」」還好 = 誤發的成績預警影響還好。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;對應的反例&lt;/td&gt;
  &lt;td&gt;-&lt;/td&gt;
  &lt;td&gt;(這裡如果重視「Recall」：則變成「預測晴天，但實際雨天，卻沒帶傘。」)&lt;/td&gt;
  &lt;td&gt;(這裡如果重視「Precision」：則變成「預測成績還好，但實際不ok，卻沒有通知學生注意成績。」)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-confusion-matrix&#34;&gt;1. Confusion Matrix&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Performance Metrics
&lt;ul&gt;
&lt;li&gt;Confusion Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;11-混淆矩陣confusion-matrix&#34;&gt;1.1. 「混淆矩陣(confusion matrix)」&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/migrated/gIvVNGK.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/migrated/gIvVNGK.webp 1600w, https://wongwongnotes.com/images/restored/migrated/gIvVNGK_800w.webp 800w, https://wongwongnotes.com/images/restored/migrated/gIvVNGK_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這是一個使用ML模型作臉部辨識的例子，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以看到我們的模型不正確的將「雕像的臉」辨識為「真實人臉」，&lt;br&gt;
這種情況我們稱為「false positive」。&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;另外可以看到我們的模型錯誤的將被冬天衣服遮住的「真實人臉」辨識為「非人臉」，
這種情況我們稱為「false negative」。&lt;/li&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;簡單來說，我們「模型預測」只要是正面肯定的，就是「positive」，否定則是「negative」，&lt;br&gt;
再來判定結果正不正確，只要「實際答案(label)」與「模型預測」不同就是「false」，相同就是「true」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;「混淆矩陣(confusion matrix)」能夠使用我們量化的評估模型的性能，&lt;br&gt;
我們現在有四個數字，各個象限各一個。&lt;/p&gt;
&lt;p&gt;然而我們通常只會用一個數字告訴別人我們的模型有多好，我們應該介紹哪一個?&lt;br&gt;
我們再來用下一個分類的例子來作更細的講解。&lt;/p&gt;
&lt;h4 id=&#34;12-precision&#34;&gt;1.2. Precision&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/migrated/EbJYoaj.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/migrated/EbJYoaj.webp 1600w, https://wongwongnotes.com/images/restored/migrated/EbJYoaj_800w.webp 800w, https://wongwongnotes.com/images/restored/migrated/EbJYoaj_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果我們知道一個停車位是可以用的，則他的 「label」 為「positive」，&lt;/li&gt;
&lt;li&gt;如果我們的模型也預測這個停車位可以用，則我們稱為「true positive」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/migrated/aqhoEuC.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/migrated/aqhoEuC.webp 1600w, https://wongwongnotes.com/images/restored/migrated/aqhoEuC_800w.webp 800w, https://wongwongnotes.com/images/restored/migrated/aqhoEuC_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal&#34;  &gt;&lt;/p&gt;
&lt;li&gt;如果我們知道「沒有可以用的」停車位，
但我們的模型仍然「預測有」可以停的車位，
我們稱這種情況為「false positive」或「type I error」，
為了比較我們模型做的「positive」預測有多好，我們稱這個指標為「precision」&lt;/li&gt;
&lt;p&gt;如果「precision」很高，當我們說有可用的停車位，我們可以非常確定真的有車位。&lt;br&gt;
「precision」如果是 1.0，表示「我們預測可用」的停車位中，這些車位實際上都真的是可用的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;但缺點是，我們可能會遺失一些「我們預測不可用」的停車位，但實際上是可用的。&lt;br&gt;
這種情況我們稱為「false negatives」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;再來我們用數學方式來講「Precision」的正式定義，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Precision」 = 「true positives」/ 「所有被模型預測positive的結果」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然後我們再看回這個「混淆矩陣(confusion matrix)」，&lt;br&gt;
增加什麼因素會造成我們的精度下降呢?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;答：增加「false positives」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在停車場的例子中，模型預測「有空位的」，但實際上「並沒有空位」，&lt;br&gt;
就會造成「false positives」增加，使「Precision」下降。&lt;/p&gt;
&lt;p&gt;★ 自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「Precision」 = 「true positives」/ 「模型預測的所有positive」，&lt;br&gt;
也可以說 = 「true positives」/ 「false positives + true positives」&lt;br&gt;
如果看「Precision」=「true positives」/ 「false positives + true positives」&lt;br&gt;
我們應該能更容易理解為何「false positives」的增加，會使「Precision」下降。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;13-recall&#34;&gt;1.3. Recall&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/migrated/3ocJS7a.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/migrated/3ocJS7a.webp 1600w, https://wongwongnotes.com/images/restored/migrated/3ocJS7a_800w.webp 800w, https://wongwongnotes.com/images/restored/migrated/3ocJS7a_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Recall 與 precision 通常有著相反的關係，代表著不同的指標。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我們「預測不可用」的停車位，但實際上是「可用」的，這種情況稱為「false negatives」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一個模型有很高的「Recall」，&lt;br&gt;
我們會因為發現實際上很多可以停的位置感到開心。&lt;br&gt;
「Recall」如果是 1.0，表示我們預測可用的車位有10個，就真的有10個。&lt;br&gt;
但實際上有些可能實際上是「可用」的車位，但我們卻說是「不可用」的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Recall」 = 「true positives」/ 「所有被真實中是positive的結果」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;★ 自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「Recall」 = 「true positives」/ 「所有被真實中是positive的結果」&lt;br&gt;
也可以說 = 「true positives」/ 「false negatives + true positives」&lt;br&gt;
而「false negatives」指的是「真實中是，我們卻預測不是的」。&lt;br&gt;
當「false negatives」的增加，會使「Recall」下降。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;-precision-與-recall-自己的小總結&#34;&gt;★ Precision 與 Recall 自己的小總結&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;這其實有點像心理學，當我告訴你東西很少，但實際發現很多，你會很開心。&lt;br&gt;
這就是「Recall」指標，東西可能會比實際預估的還要多。&lt;br&gt;
另外「Precision」則是比較像寧願誤判也不可以有漏網之魚，&lt;br&gt;
我們告訴你的東西很多，但實際有可能會比較少一點，這就是「Precision」指標。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;實際運用的話，像是判斷疾病，&lt;br&gt;
應該要用「Precision」指標(有疾病為positives)，寧願誤判也不可以漏掉。&lt;br&gt;
或者舉另外一個例子，如果用來判斷下雨的話(有下雨為positives)，&lt;br&gt;
寧願預測說有下雨，實際卻沒下(比起預測沒下雨，實際卻下雨了好很多。)&lt;br&gt;
(不過以結果來說，當然還是預測越準越好)&lt;/p&gt;
&lt;p&gt;適合用「Recall」指標的情況，例如以期中預警為例(成績還行為positives)，&lt;br&gt;
正確預測是好事，但如果錯誤預測，&lt;br&gt;
寧願「成績還行」卻「告知學生要注意成績(成績不行)」，&lt;br&gt;
總會比「成績不行」卻「沒告知學生注意成績(成績還行)」的好。&lt;br&gt;
(一樣的以結果來說，當然還是預測越準越好)&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;14-來看另外一個例子比較accuracyprecisionrecall&#34;&gt;1.4. 來看另外一個例子：比較「accuracy」、「precision」、「Recall」&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/migrated/09x7LPh.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/migrated/09x7LPh.webp 1600w, https://wongwongnotes.com/images/restored/migrated/09x7LPh_800w.webp 800w, https://wongwongnotes.com/images/restored/migrated/09x7LPh_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這裡我們將會看到很多圖片，這些圖片裡面有些是貓，有些不是，&lt;br&gt;
我們可以先自己試著判斷看看，然後我們再來看模型預測的結果。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/migrated/I8fxFxx.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/migrated/I8fxFxx.webp 1600w, https://wongwongnotes.com/images/restored/migrated/I8fxFxx_800w.webp 800w, https://wongwongnotes.com/images/restored/migrated/I8fxFxx_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal&#34;  &gt;&lt;/p&gt;
&lt;p&gt;希望你有正確判斷出含有貓圖片的圖，特別注意紅框處有一隻隱藏的貓。&lt;br&gt;
而出於我們預測的目的，老虎我們在這例子並不被歸類為貓。&lt;/p&gt;
&lt;p&gt;而我們也看我們的模型預測的結果，我們將這結果與我們的已知「(label)」比較，&lt;br&gt;
我們來衡量一下模型判斷的結果。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/migrated/aWkGzls.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/migrated/aWkGzls.webp 1600w, https://wongwongnotes.com/images/restored/migrated/aWkGzls_800w.webp 800w, https://wongwongnotes.com/images/restored/migrated/aWkGzls_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal&#34;  &gt;&lt;/p&gt;
&lt;p&gt;整體看起來，我們的模型的準確率是3/8 = 0.375，&lt;br&gt;
也就是說我們模型的「accuracy」= 0.375，&lt;br&gt;
但「accuracy」指標不一定就是描述模型的最好的指標。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/migrated/RMoO38L.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/migrated/RMoO38L.webp 1600w, https://wongwongnotes.com/images/restored/migrated/RMoO38L_800w.webp 800w, https://wongwongnotes.com/images/restored/migrated/RMoO38L_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們現在來看我們的這些貓與非貓的資料，我們模型的「precision」是多少?&lt;br&gt;
我們的模型總共預測了五張屬於「positive」的分類，&lt;br&gt;
但實際上真實是貓的只有兩張，所以「precision」= 2/5 = 0.4&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/migrated/XaC6Vaa.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/migrated/XaC6Vaa.webp 1600w, https://wongwongnotes.com/images/restored/migrated/XaC6Vaa_800w.webp 800w, https://wongwongnotes.com/images/restored/migrated/XaC6Vaa_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal&#34;  &gt;&lt;/p&gt;
&lt;p&gt;「Recall」像是一個不喜歡作出「positive」決定的人，&lt;br&gt;
這裡我們看到所有「代表貓」的「真實例子(label)」，&lt;br&gt;
我們拿我們模型的預測只與這些「代表貓」的結果比較。&lt;/p&gt;
&lt;p&gt;我們得到的「Recall」為 2/4 = 0.5，&lt;br&gt;
換句話說這個是從所有真實應該為貓的圖片，&lt;br&gt;
看我們的模型有預測有多準確(true positives)，&lt;br&gt;
這個就是「Recall」指標。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;15-段落小整理&#34;&gt;1.5. 段落小整理&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/migrated/Fw0UbNz.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/migrated/Fw0UbNz.webp 1600w, https://wongwongnotes.com/images/restored/migrated/Fw0UbNz_800w.webp 800w, https://wongwongnotes.com/images/restored/migrated/Fw0UbNz_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】29 - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recal&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;這邊我們把最佳化這個章節的全部內容在做個小整理。&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;首先，我們先定義ML模型為一組參數與超參數的組合，
我們所嘗試的優化，就是指在參數空間(parameter space)中搜索最佳參數。
&lt;/li&gt;
&lt;li&gt;接下來，我們介紹了「損失函數(loss function)」，
這也是我們在訓練階段中，評估與量化模型現在性能的方式。
&lt;/li&gt;
&lt;blockquote&gt;
&lt;p&gt;我們針對「損失函數(loss function)」討論了兩種方法，&lt;br&gt;
用於「線性回歸(linear regression)」的RMSE、&lt;br&gt;
用於分類任務的「交叉熵(cross-entropy)」，&lt;br&gt;
透過分析「梯度下降(gradient descent)」，&lt;br&gt;
我們能夠決定前進的方向與步長，&lt;br&gt;
這使我們知道如何在loss表面進行搜索，以尋找最佳參數。&lt;/p&gt;&lt;/blockquote&gt;
&lt;li&gt;我們在「TensorFlow playground」對於不同的ML模型實驗，
並觀察「線性模型」是如何在給定「非線性特徵時」學習非線性關係，
以及神經網路(neural networks)是如何學習層次來分析特徵。
我們也看見「超參數(hyperparameters)」，
例如「學習速率(learning rate)」與「batch size」，
是如何影響「梯度下降(gradient descent)」的結果。
&lt;/li&gt;
&lt;li&gt;我們最後在決定accuracy, precision, recall之間進行選擇，
依據想解決的問題種類進行選擇，以提高模型的性能，
正如同我們在這個單元中看到的結果一樣，
我們所標記的訓練資料集會成為模型學習的動力。
&lt;/li&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10222697&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 29】 Google ML - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞，可評估的三種指標Accuracy, Precision, Recall&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1096
Post Date: 2019-09-30 01:38:59
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】28 - Lesson 12 - 不適當的最小loss, 完美損失函數(loss function)存在嗎?ML模型的性能指標(performance metrics)</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/performance-metrics/</link>
        <pubDate>Sun, 29 Sep 2019 01:35:57 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/performance-metrics/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424bKh5dNvFxQ.png" alt="Featured image of post 【Google ML】28 - Lesson 12 - 不適當的最小loss, 完美損失函數(loss function)存在嗎?ML模型的性能指標(performance metrics)" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ 「訓練一個ML模型」的整個過程：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★ 從上面的訓練中，找到「最好的」ML模型：&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10222043&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 27】&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;原因：「訓練好一個模型」不等於「找到最好的模型」&lt;/p&gt;&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;(「訓練模型」)&lt;/td&gt;
  &lt;td&gt;使用「訓練資料集(Training)」訓練模型(調整參數)，也就是「「上方表格」」在做的內容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「結束訓練」)&lt;/td&gt;
  &lt;td&gt;訓練到通過「驗證資料集(Validation)」結束訓練(未達到「overfitting」的狀態前)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「模型再調整」)&lt;/td&gt;
  &lt;td&gt;「超參數(hyperparameters)」調整或神經網路的「layer數」或「使用的node數」(一些「訓練前」就會先決定的東西)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(loop)&lt;/td&gt;
  &lt;td&gt;(「模型再調整」)後，重複上述(「訓練模型」)、(「結束訓練」)，完成訓練新的模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「找到最佳模型」)&lt;/td&gt;
  &lt;td&gt;從「所有訓練的模型」中，找到能使「驗證用資料集(Validation)」最小的loss，完成(「找到最佳模型」)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「決定是否生產」)&lt;/td&gt;
  &lt;td&gt;可以開始決定要不要將此ML模型投入生產。此時我們可以使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★小實驗系列：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;文章&lt;/th&gt;
  &lt;th&gt;實驗內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;TensorFlow Playground 的簡介與介面介紹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;「learning rate」 的改變對訓練過程的影響&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;使用「神經網路(neural network)」分類資料&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;觀察「batch size」如何影響「gradient descent」&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Defining ML Models
&lt;ul&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;li&gt;Introducing the Natality Dataset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;li&gt;Gradient Descent
&lt;ul&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;li&gt;Troubleshooting a Loss Curve&lt;/li&gt;
&lt;li&gt;ML Model Pitfalls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TensorFlow Playground
&lt;ul&gt;
&lt;li&gt;Lab: Introducing the TensorFlow Playground&lt;/li&gt;
&lt;li&gt;Lab: TensorFlow Playground - Advanced&lt;/li&gt;
&lt;li&gt;Lab: Practicing with Neural Networks&lt;/li&gt;
&lt;li&gt;Loss Curve Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Performance Metrics」
&lt;ul&gt;
&lt;li&gt;「Performance Metrics」&lt;/li&gt;
&lt;li&gt;Confusion Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;0-先整理今天重點&#34;&gt;0. 先整理今天重點&lt;/h3&gt;
&lt;p&gt;★ 比較「損失函數(loss function)」與「性能指標(performance metrics)」：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;比較&lt;/th&gt;
  &lt;th&gt;「損失函數(loss function)」&lt;/th&gt;
  &lt;th&gt;「性能指標(performance metrics)」&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;使用時機&lt;/td&gt;
  &lt;td&gt;訓練中&lt;/td&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;理解容易度&lt;/td&gt;
  &lt;td&gt;很難理解(較抽象)&lt;/td&gt;
  &lt;td&gt;很容易理解(較不抽象、很直接)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;與商業目標&lt;/td&gt;
  &lt;td&gt;不是直接相關&lt;/td&gt;
  &lt;td&gt;此指標能直接反應於商業目標&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;共通點&lt;/td&gt;
  &lt;td&gt;衡量ML模型的指標&lt;/td&gt;
  &lt;td&gt;衡量ML模型的指標&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-performance-metrics&#34;&gt;1. Performance Metrics&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Performance Metrics
&lt;ul&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在前面的章節中，我們曾在視覺化的網頁中訓練我們的模型，&lt;br&gt;
並使用「梯度下降法(gradient descent)」優化了我們模型的參數，&lt;br&gt;
我們最後所創造出的模型，透過許多層次的特徵結構，學習到了複雜的非線性關係。&lt;/p&gt;
&lt;p&gt;然而，我們在這章節的最後發現這樣的方法可能有問題，&lt;br&gt;
他的後果包含著「訓練時間長」、「最小值為次佳值」、以及「不適當的最小值」。&lt;/p&gt;
&lt;p&gt;在這個章節，我們會仔細來討論什麼是「不適當的最小值」，為什麼他會存在，&lt;br&gt;
以及透過「「性能指標(performance metrics)」」，我們如何能夠得到更好的結果。&lt;/p&gt;
&lt;h4 id=&#34;11-不適當的最小值-最小loss&#34;&gt;1.1. 不適當的最小值 (最小loss)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;所以，什麼是不適當的最小值呢?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424RGQBx1QSb3.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424RGQBx1QSb3.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424RGQBx1QSb3_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424RGQBx1QSb3_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】28 - Lesson 12 - 不適當的最小loss, 完美損失函數(loss function)存在嗎?ML模型的性能指標(performance metrics)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們可以想像所有在「參數空間(parameter space)」的點都代表一種策略，&lt;br&gt;
有些點可能不能很好的「泛化(generalize)」，&lt;br&gt;
或者是不能透過模型反應出資料集的正確關係。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Hu90ERtlca.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Hu90ERtlca.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Hu90ERtlca_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Hu90ERtlca_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】28 - Lesson 12 - 不適當的最小loss, 完美損失函數(loss function)存在嗎?ML模型的性能指標(performance metrics)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;舉個例子，當我們正在訓練一個模型，我們想預測停車場的圖片是否有空位，&lt;br&gt;
有一種策略是這樣的：我們不管怎麼樣就預測「所有的車位都是被佔滿的」。&lt;/p&gt;
&lt;li&gt;採取這樣的策略，當我們的資料集正值與負值的例子差不多相等時，
這個策略似乎不可能會成功。
&lt;/li&gt;
&lt;li&gt;但是，如果我們的資料集是傾斜(skewed)的，
也就是某一類的資料集明顯比另外一類多的時候，
例如，我們拿到的圖幾乎車位都是滿的，
預測「所有的車位都是佔滿的」似乎就是個不錯的策略，
而且我們的模型也不需要多花費心力去理解「特徵(features)」與「label」的正確關係。
&lt;/li&gt;
&lt;p&gt;我們期待的結果應該是，我們的模型能夠真正理解「空著的車位」這個概念的意思，&lt;br&gt;
預測「車位皆被佔滿」的模型，自然很難「泛化(generalize)」到其他的停車場也適用。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;為什麼會有這樣的事情發生?&lt;br&gt;
我們可以想像每次選擇題的考卷，如果每次我「全選C」就能得到不錯的分數，&lt;br&gt;
那我還花心力去讀書並理解知識幹嘛? 寫C就能夠得到高分了啊！&lt;br&gt;
模型這邊在做的事情，就與上面的例子一樣。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;12-完美的損失函數loss-function存在嗎&#34;&gt;1.2. 完美的「損失函數(loss function)」存在嗎?&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424vZnywhAorn.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424vZnywhAorn.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424vZnywhAorn_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424vZnywhAorn_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】28 - Lesson 12 - 不適當的最小loss, 完美損失函數(loss function)存在嗎?ML模型的性能指標(performance metrics)&#34;  &gt;&lt;br&gt;
(如果我們的loss值是整數?)&lt;/p&gt;
&lt;p&gt;我們很容易將不適當的最小值的存在視為是「損失函數(loss function)」的問題，&lt;br&gt;
如果我們能有一個完美的「損失函數(loss function)」，&lt;br&gt;
就能夠獎勵真正的最佳策略，只處罰不好的策略。&lt;/p&gt;
&lt;p&gt;但這是不可能的，我們「想關注的指標」與「梯度下降相符合的指標」始終會存在差距。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;上面已經舉例過學生寫考卷的例子了，&lt;br&gt;
這邊也能以類似的例子來比喻，&lt;br&gt;
老師認為的好是「90分」，你認為的好是「60分」，&lt;br&gt;
我們每次都作答到「60分」使自己滿意了，但並不滿足「老師的滿意」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;所以我們一樣回到剛剛討論的停車位的問題。&lt;br&gt;
假設我們依然在對停車位進行分類，&lt;br&gt;
一個完美的「損失函數(loss function)」應該會幫我們「最小化錯誤預測」的數量。&lt;br&gt;
然而，以這題而言，這樣的「損失函數(loss function)」應該會是分段的，&lt;br&gt;
他可以取的值的範圍將是整數，而不是實數。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;因為車子的數量只能是整數。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;但這會是有問題的，問題出在「微分」。&lt;br&gt;
「梯度下降(Gradient descent)」使得我們的「權重(weights)」有所變化，&lt;br&gt;
反過來說，這也表示我們要能夠對「權重(weights)」微分，以取得我們的loss，&lt;/p&gt;
&lt;p&gt;分段的函數在每個範圍內有差距，雖然TensorFlow依然可以對他們微分，&lt;br&gt;
但loss的表面將不具有連續性，這使得我們在尋找下個參數時更具有挑戰性。&lt;/p&gt;
&lt;p&gt;所以我們必須重新定義問題的框架，&lt;br&gt;
與其尋找一個完美的「損失函數(loss function)」，&lt;br&gt;
不如我們應該使用一個新的指標來解決這個問題。&lt;/p&gt;
&lt;h4 id=&#34;13-新的指標性能指標performance-metrics&#34;&gt;1.3. 新的指標：「性能指標(performance metrics)」&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424bKh5dNvFxQ.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424bKh5dNvFxQ.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424bKh5dNvFxQ_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424bKh5dNvFxQ_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】28 - Lesson 12 - 不適當的最小loss, 完美損失函數(loss function)存在嗎?ML模型的性能指標(performance metrics)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;而這種新的度量標準使我們能夠拒絕那些被認定為「不合適最小值」的模型，&lt;br&gt;
我們稱這個度量標準為「「性能指標(performance metrics)」」，&lt;br&gt;
「性能指標(performance metrics)」與損失函數(loss function)相比有兩個好處。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;他能夠更容易地被理解。因為它們通常是可以統計的簡單組合。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;「性能指標(performance metrics)」通常直接與「商業目標」相關。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二點比較微妙，但我們可得出的結論是：&lt;br&gt;
通常loss會與「商業目標」有共同目標，但不一定每次都對目標有一樣的影響，&lt;br&gt;
有時候，雖然我們的loss很小，但我們在「商業目標」的進展也同樣的很小。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;也就是說，「最小化loss」通常是我們的訓練目標沒錯，&lt;br&gt;
但「最小化loss」的情況不代表這樣的模型拿來生產，結果也一定是最好的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;再換句話說，兩個模型訓練的能力一個「+1」、一個「+10」，&lt;br&gt;
這個都叫做「好」，只是「+1」實際能造成的正面影響較小。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;而下一章，我們會複習三個「性能指標(performance metrics)」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;混淆矩陣(confusion matrices)&lt;/li&gt;
&lt;li&gt;precision&lt;/li&gt;
&lt;li&gt;recall&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;並且知道何時該使用這些指標。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10222317&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 28】 Google ML - Lesson 12 - 不適當的最小loss, 完美損失函數(loss function)存在嗎?ML模型的性能指標(performance metrics)&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1092
Post Date: 2019-09-29 01:35:57
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】27 - Lesson 11 - 我們應該何時停止ML模型的訓練? 利用驗證資料集, 測試資料集, 交叉驗證(cross-validation) 評估模型訓練結果的好壞</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/cross-validation/</link>
        <pubDate>Sat, 28 Sep 2019 01:31:23 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/cross-validation/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/2012042455VUa5dqzA.png" alt="Featured image of post 【Google ML】27 - Lesson 11 - 我們應該何時停止ML模型的訓練? 利用驗證資料集, 測試資料集, 交叉驗證(cross-validation) 評估模型訓練結果的好壞" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ 「訓練一個ML模型」的整個過程：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★ 從上面的訓練中，找到「最好的」ML模型：&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10222043&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 27】&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;原因：「訓練好一個模型」不等於「找到最好的模型」&lt;/p&gt;&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;(「訓練模型」)&lt;/td&gt;
  &lt;td&gt;使用「訓練資料集(Training)」訓練模型(調整參數)，也就是「「上方表格」」在做的內容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「結束訓練」)&lt;/td&gt;
  &lt;td&gt;訓練到通過「驗證資料集(Validation)」結束訓練(未達到「overfitting」的狀態前)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「模型再調整」)&lt;/td&gt;
  &lt;td&gt;「超參數(hyperparameters)」調整或神經網路的「layer數」或「使用的node數」(一些「訓練前」就會先決定的東西)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(loop)&lt;/td&gt;
  &lt;td&gt;(「模型再調整」)後，重複上述(「訓練模型」)、(「結束訓練」)，完成訓練新的模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「找到最佳模型」)&lt;/td&gt;
  &lt;td&gt;從「所有訓練的模型」中，找到能使「驗證用資料集(Validation)」最小的loss，完成(「找到最佳模型」)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「決定是否生產」)&lt;/td&gt;
  &lt;td&gt;可以開始決定要不要將此ML模型投入生產。此時我們可以使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★小實驗系列：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;文章&lt;/th&gt;
  &lt;th&gt;實驗內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;TensorFlow Playground 的簡介與介面介紹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;「learning rate」 的改變對訓練過程的影響&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;使用「神經網路(neural network)」分類資料&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;觀察「batch size」如何影響「gradient descent」&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第四章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generalization and Sampling
&lt;ul&gt;
&lt;li&gt;Introduction to Generalization and Sampling
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Generalization」
&lt;ul&gt;
&lt;li&gt;Generalization and ML Models&lt;/li&gt;
&lt;li&gt;「When to Stop Model Training」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sampling
&lt;ul&gt;
&lt;li&gt;Creating Repeatable Samples in BigQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Demo of Splitting Datasets in BigQuery&lt;/li&gt;
&lt;li&gt;Lab: Creating Repeatable Dataset Splits
&lt;ul&gt;
&lt;li&gt;Lab Introduction&lt;/li&gt;
&lt;li&gt;Lab: Creating Repeatable Dataset Splits in BigQuery&lt;/li&gt;
&lt;li&gt;Lab Solution Walkthrough&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lab: Exploring and Creating ML Datasets
&lt;ul&gt;
&lt;li&gt;Lab Introduction&lt;/li&gt;
&lt;li&gt;Lab: Exploring and Creating ML Datasets&lt;/li&gt;
&lt;li&gt;Lab Solution Walkthrough&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;0-先整理今天重點&#34;&gt;0. 先整理今天重點&lt;/h3&gt;
&lt;p&gt;★ 何時停止訓練，加上「驗證用資料集」的整個ML模型訓練過程：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;(「訓練模型」)&lt;/td&gt;
  &lt;td&gt;使用「訓練用資料集」訓練模型(調整參數)，也就是我們訓練在做的內容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「結束訓練」)&lt;/td&gt;
  &lt;td&gt;訓練到通過「驗證用資料集」結束訓練(未達到「overfitting」的狀態前)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「模型再調整」)&lt;/td&gt;
  &lt;td&gt;調整「超參數(hyperparameters)」或神經網路的「layer數」或「使用的node數」(一些「訓練前」就會先決定的東西)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(loop)&lt;/td&gt;
  &lt;td&gt;(「模型再調整」)後，重複上述(「訓練模型」)、(「結束訓練」)，完成訓練新的模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「找到最佳模型」)&lt;/td&gt;
  &lt;td&gt;從「所有新訓練的模型」中，找到能使「驗證用資料集」最小的loss，完成(「找到最佳模型」)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;(「決定是否生產」)&lt;/td&gt;
  &lt;td&gt;可以開始決定要不要將此ML模型投入生產。此時我們可以使用獨立「測試資料集」測試? 或使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★ 評估模型好壞的方法：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;比較&lt;/th&gt;
  &lt;th&gt;獨立的「測試資料集」測試&lt;/th&gt;
  &lt;th&gt;「交叉驗證(cross-validation)」   (或稱為「bootstrapping」)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;總資料多寡&lt;/td&gt;
  &lt;td&gt;適合「總資料量較多」的&lt;/td&gt;
  &lt;td&gt;適合「總資料量較少」的&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;資料分組方式&lt;/td&gt;
  &lt;td&gt;分成三組：training(訓練用), validation(驗證用), test(測試用)&lt;/td&gt;
  &lt;td&gt;分成兩大組：training(訓練用), validation(驗證用)，然後各大組再細分成很多小組。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-when-to-stop-model-training&#34;&gt;1. When to Stop Model Training&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generalization and Sampling
&lt;ul&gt;
&lt;li&gt;Generalization
&lt;ul&gt;
&lt;li&gt;When to Stop Model Training&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;為了幫助我們能建立適合的ML模型，&lt;br&gt;
(例如線性回歸(linear regression)或神經網路(neural network))&lt;br&gt;
我們可以使用驗證資料集(validation dataset)來幫助調整適合模型的「超參數(hyperparameters)」&lt;/p&gt;
&lt;p&gt;複習：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「超參數(hyperparameters)」指的是在訓練前就設定好的參數。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;11-驗證用資料集validation-dataset&#34;&gt;1.1. 「驗證用」資料集(validation dataset)&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424JE2U3JVnTz.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424JE2U3JVnTz.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424JE2U3JVnTz_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424JE2U3JVnTz_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】27 - Lesson 11 - 我們應該何時停止ML模型的訓練? 利用驗證資料集, 測試資料集, 交叉驗證(cross-validation) 評估模型訓練結果的好壞&#34;  &gt;&lt;/p&gt;
&lt;p&gt;調整「超參數(hyperparameters)」的過程是透過連續進行訓練完成的，&lt;br&gt;
然後我們再將這些訓練與對應獨立的「驗證用資料集(validation dataset)」進行驗證，&lt;br&gt;
確認沒有「過度擬合(overfitting)」的現象。&lt;/p&gt;
&lt;p&gt;這裡顯示出我們的「驗證用資料集(validation dataset)」在訓練期間是如何被使用的。&lt;/p&gt;
&lt;p&gt;在最佳化的過程中，訓練模型的過程：&lt;br&gt;
(一開始參數皆為隨機生成)&lt;/p&gt;
&lt;ol&gt;
- 從目前「模型參數的權重(weight)」計算「導數(derivative)」
- 觀察「梯度下降(gradient descent)」的loss曲線方向
- 嘗試透過修改「模型參數(parameters)」最小化loss指標
- 然後重複
&lt;/ol&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這邊稍微補點數學說明，為什麼第一點的參數只看「權重(weight)」?&lt;br&gt;
因為bias是常數項，微分會消失。&lt;br&gt;
例如：y=ax+b，微分我們只需在意a，就不用在意b了。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;現在，我們還需要定期的使用「訓練未看過」的數據，&lt;br&gt;
我們稱為「驗證用資料集(validation dataset)」，來評估模型目前的性能，&lt;/p&gt;
&lt;p&gt;在完成一次完整的訓練後，我們依照「驗證用資料集」驗證模型的結果，&lt;br&gt;
看目前的「超參數(hyperparameters)」是否有用，是否可以進行更多的調整。&lt;br&gt;
如果「訓練用資料集」與「驗證用資料集」計算的loss差不多，&lt;br&gt;
那我們可以考慮先停下來，並重新優化「超參數(hyperparameters)」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424lMpv4PqBJI.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424lMpv4PqBJI.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424lMpv4PqBJI_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424lMpv4PqBJI_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】27 - Lesson 11 - 我們應該何時停止ML模型的訓練? 利用驗證資料集, 測試資料集, 交叉驗證(cross-validation) 評估模型訓練結果的好壞&#34;  &gt;&lt;/p&gt;
&lt;p&gt;而只要對損失指標進行了充分優化，並通過了「驗證用資料集」的驗證，&lt;br&gt;
(記得時間點是：在兩個資料集loss開始出現一些差異，但未達到「overfitting」的狀態時)&lt;br&gt;
這時我們就應該先停止訓練，然後決定這個模型是否可以投入生產。&lt;/p&gt;
&lt;p&gt;現在我們也可以用類似的循環去調整各個ML模型的參數，&lt;br&gt;
就像我們在訓練前對「超參數(hyperparameters)」所進行的操作一樣。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;例如：如果神經網路的層數或應該使用的節點數。&lt;br&gt;
類似「超參數(hyperparameters)」一樣，會在「訓練前」就先設定好的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;你將會使用其中一種配置(例如一個只有六個節點的神經網路)，&lt;br&gt;
然後再訓練另外一種，最後都用「驗證用資料集」來看哪一種配置表現得更好。&lt;br&gt;
最後，我們會選擇一種模型配置，這個配置能夠使「驗證用資料集」產生出最少的loss。&lt;br&gt;
(記得：上章我們提過，如果只是讓「訓練用資料集」loss最小是不夠的。)&lt;/p&gt;
&lt;p&gt;★ 自己做個小結論，加上「驗證用資料集」的整個ML模型訓練過程：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
  - 使用「訓練用資料集」訓練模型(調整參數)
  - 重複1.，直到通過「驗證用資料集」結束訓練(未達到「overfitting」的狀態前)
  - 調整「超參數(hyperparameters)」或神經網路的「layer數」或「使用的node數」
  - 重新1.2.3.，直到找到能使「驗證用資料集」最小的loss，完成全部訓練
  - 並可以開始決定要不要將此ML模型投入生產。
  &lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;(google提供的輔助工具：)&lt;br&gt;
在之後的課程中，我們也會用Cloud ML Engine示範在「超參數空間(hyperparameter space)」做bayesian short search，&lt;br&gt;
也就是說我們不需要一次對一個「超參數(hyperparameter)」進行此實驗。&lt;br&gt;
Cloud ML的引擎能幫忙我們使用不同的最佳化策略，&lt;br&gt;
並且以平行處理的方式進行實驗。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;12-獨立的測試用資料集test-dataset-評估法&#34;&gt;1.2. 獨立的「測試用」資料集(test dataset) 評估法&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204245CZ717zvEV.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204245CZ717zvEV.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204245CZ717zvEV_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204245CZ717zvEV_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】27 - Lesson 11 - 我們應該何時停止ML模型的訓練? 利用驗證資料集, 測試資料集, 交叉驗證(cross-validation) 評估模型訓練結果的好壞&#34;  &gt;&lt;/p&gt;
&lt;p&gt;當我們完成訓練之後，我們必須還要能告訴別人這模型有多好。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;那麼，你打算將哪個資料集作為最終通過與不通過的評估?&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;我們可以簡單的說，對於「驗證資料集」我們的模型最後有多少的loss嗎?
(在我們的「訓練資料集」結果差不多的情況下。)&lt;/li&gt;
&lt;p&gt;這樣想是不行的，因為我們已經用了「驗證資料集」作為停止我們訓練的依據，&lt;br&gt;
這樣表示「驗證資料集」已經不是獨立的了(模型已經看過了)。&lt;br&gt;
我們可以先想想該怎麼辦?&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果又拿這組「驗證資料集」，我們的模型是在確定「驗證資料集沒問題」的情況下才停止訓練，&lt;br&gt;
也就是說模型一定已經對於「訓練資料集」、「驗證資料集」都很清楚且能夠得到高分。&lt;br&gt;
所以我們還必須使用「其他的資料集」來證明這模型的預測是好的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424MEJMFnKsOH.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424MEJMFnKsOH.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424MEJMFnKsOH_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424MEJMFnKsOH_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】27 - Lesson 11 - 我們應該何時停止ML模型的訓練? 利用驗證資料集, 測試資料集, 交叉驗證(cross-validation) 評估模型訓練結果的好壞&#34;  &gt;&lt;/p&gt;
&lt;p&gt;所以，我們必須在一開始就將資料集分成三等份：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;training：訓練用資料集&lt;/li&gt;
&lt;li&gt;validation：驗證用資料集&lt;/li&gt;
&lt;li&gt;test：測試用資料集&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要我們的模型開始被訓練或驗證，我們就可以做「一次」分類，&lt;br&gt;
而且要注意的是，這分類從頭到尾只能夠使用「一次」。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這邊指的意思應該是，「訓練用資料集」、「驗證用資料集」、「測試用資料集」，&lt;br&gt;
一旦被決定了，就不能任意再重分，&lt;br&gt;
因為一組資料集只要被模型看過一次，如果再被看過第二次，這樣的測試就是不獨立的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;而這組「測試用資料集」的結果正是我們可以告訴別人我們的模型有多好的依據，&lt;br&gt;
我們可以拿這組「測試用資料集」的loss作為指標，決定要不要拿來生產用。&lt;/p&gt;
&lt;p&gt;那至於如果我們在「測試用資料集」中預測的很差呢?&lt;br&gt;
甚至是我們好不容易都通過了「驗證用資料集」的檢查。&lt;/p&gt;
&lt;p&gt;那就表示我們不可以重新測試同樣的ML模型，我們應該要重新訓練全新的ML模型。&lt;br&gt;
或者是收集更多的資料，去提供更多的新資料給你的ML模型。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;所以「測試用資料集」失敗就可以開始思考直接砍掉重練的意思嗎QQ&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h4 id=&#34;13-交叉驗證cross-validation與bootstrapping-評估法&#34;&gt;1.3. 「交叉驗證(cross-validation)」與「bootstrapping」 評估法&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ckCKtaGa5V.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ckCKtaGa5V.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424ckCKtaGa5V_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424ckCKtaGa5V_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】27 - Lesson 11 - 我們應該何時停止ML模型的訓練? 利用驗證資料集, 測試資料集, 交叉驗證(cross-validation) 評估模型訓練結果的好壞&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們再來思考一個很小很小問題，雖然目前這方法已經很好了。&lt;br&gt;
沒有人喜歡浪費資料，但「測試用資料集」只使用了一次，&lt;br&gt;
似乎很浪費，但他有被保留下來。&lt;/p&gt;
&lt;p&gt;我們難道不能在訓練時使用所有的資料，然後依然能合理的告訴別人模型的表現嗎?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;答案是可以的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這方法就是我們將「訓練用資料集」、「驗證用資料集」拆分成好幾等分，並且在不同的時間使用。&lt;/p&gt;
&lt;p&gt;訓練後並使用「驗證用資料集」計算Loss，這個「驗證用資料集」可能包含「第一次訓練」中未使用的資料，&lt;br&gt;
然後我們再重新拆分資料，現在我們的「訓練用資料集」可能包含著「第一次驗證」時所使用的資料，&lt;br&gt;
然後我們可能需要進行多次的「迭代(iteration)」。&lt;/p&gt;
&lt;p&gt;最後在多輪的「迭代(iteration)」之後，我們可以對於整個「驗證用資料集」進行loss的平均，&lt;br&gt;
我們就會得到整個「驗證用資料集(validation)」的loss標準差，&lt;br&gt;
這個值能夠幫助我們分析最終loss與它們的散佈情形。&lt;/p&gt;
&lt;p&gt;這樣的方法我們稱為「交叉驗證(cross-validation)」或「bootstrapping」，&lt;br&gt;
他的好處是，我們可以使用到所有的數據，但由於要將模型拆分成很多等份，&lt;br&gt;
因此我們也必須要訓練很多次。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;14-評估方法小結論&#34;&gt;1.4. 評估方法小結論&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/2012042455VUa5dqzA.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/2012042455VUa5dqzA.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/2012042455VUa5dqzA_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/2012042455VUa5dqzA_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】27 - Lesson 11 - 我們應該何時停止ML模型的訓練? 利用驗證資料集, 測試資料集, 交叉驗證(cross-validation) 評估模型訓練結果的好壞&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你有大量的資料集，你應該使用獨立的「測試資料集」測試，並判斷這個模型訓練有沒有通過。&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;如果你沒有那麼多資料，你應該使用交叉驗證(cross-validation)的方法。
&lt;li&gt;至於，如何實際將大數據集拆分成這一份一分的資料? 
這個就是在下一章「取樣(sampling)」我們要來詳細討論的事情。&lt;/li&gt;
&lt;/li&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10222043&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 27】 Google ML - Lesson 11 - 我們應該何時停止ML模型的訓練? 利用驗證資料集, 測試資料集, 交叉驗證(cross-validation) 評估模型訓練結果的好壞&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1089
Post Date: 2019-09-28 01:31:23
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/generalization/</link>
        <pubDate>Fri, 27 Sep 2019 01:29:04 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/generalization/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424QUkLu0z2es.png" alt="Featured image of post 【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;(我們今天要先進第四章節囉~)&lt;br&gt;
這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★小實驗系列：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;文章&lt;/th&gt;
  &lt;th&gt;實驗內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;TensorFlow Playground 的簡介與介面介紹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;「learning rate」 的改變對訓練過程的影響&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;使用「神經網路(neural network)」分類資料&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;觀察「batch size」如何影響「gradient descent」&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第四章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generalization and Sampling
&lt;ul&gt;
&lt;li&gt;「Introduction to Generalization and Sampling」
&lt;ul&gt;
&lt;li&gt;「Introduction」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Generalization」
&lt;ul&gt;
&lt;li&gt;「Generalization and ML Models」&lt;/li&gt;
&lt;li&gt;When to Stop Model Training&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sampling
&lt;ul&gt;
&lt;li&gt;Creating Repeatable Samples in BigQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Demo of Splitting Datasets in BigQuery&lt;/li&gt;
&lt;li&gt;Lab: Creating Repeatable Dataset Splits
&lt;ul&gt;
&lt;li&gt;Lab Introduction&lt;/li&gt;
&lt;li&gt;Lab: Creating Repeatable Dataset Splits in BigQuery&lt;/li&gt;
&lt;li&gt;Lab Solution Walkthrough&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lab: Exploring and Creating ML Datasets
&lt;ul&gt;
&lt;li&gt;Lab Introduction&lt;/li&gt;
&lt;li&gt;Lab: Exploring and Creating ML Datasets&lt;/li&gt;
&lt;li&gt;Lab Solution Walkthrough&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;0-一樣先來整理今天重點&#34;&gt;0. 一樣先來整理今天重點&lt;/h3&gt;
&lt;p&gt;★ 名詞解釋：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「泛化(generalize)」：指ML模型「對未知資料集」的預測能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;「泛化(generalize)」能力差：等於預測對未知資料集的預測能力差。但如果對「對自己的資料」的預測能力很好，有可能是發生了「過度擬合(overfitting)」的現象。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;★ 「欠擬合(underfitting)」 與 「過度擬合(overfitting)」&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;比較&lt;/th&gt;
  &lt;th&gt;「欠擬合(underfitting)」&lt;/th&gt;
  &lt;th&gt;「過度擬合(overfitting)」&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;(可能)決定了太簡單的模型&lt;/td&gt;
  &lt;td&gt;(可能)決定了太複雜的模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中&lt;/td&gt;
  &lt;td&gt;(可能)訓練太早結束&lt;/td&gt;
  &lt;td&gt;(可能)訓練過頭，也就是太晚結束&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後 - 對自已的資料&lt;/td&gt;
  &lt;td&gt;訓練後發現模型「對自已的資料」預測能力太差&lt;/td&gt;
  &lt;td&gt;訓練後發現模型「對自已的資料」預測能力非常好(可能好到沒有誤差)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後 - 對新的資料&lt;/td&gt;
  &lt;td&gt;(對自己的資料都不行了還要試新資料嗎XD)&lt;/td&gt;
  &lt;td&gt;訓練後發現模型「對新的資料」預測能力非常差&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;代表的意義&lt;/td&gt;
  &lt;td&gt;我們的模型「對自已的資料」沒辦法達到理想的預測能力。&lt;/td&gt;
  &lt;td&gt;我們的模型「對新的資料」沒辦法達到理想的預測能力，然而對「對自已的資料」預測能力非常好。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;自己的記法(不完全正確)&lt;/td&gt;
  &lt;td&gt;連自己的資料預測都不行，根本還不能預測東西。&lt;/td&gt;
  &lt;td&gt;訓練到根本把「自己的資料」都「背下來」了，難怪新資料完全不能預測。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「最佳的ML模型訓練結果」應該介於「欠擬合(underfitting)」 與 「過度擬合(overfitting)」之間。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;★ 用圖簡單解釋 「欠擬合(underfitting)」 與 「過度擬合(overfitting)」：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QUkLu0z2es.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QUkLu0z2es.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424QUkLu0z2es_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424QUkLu0z2es_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-introduction-to-generalization-and-sampling&#34;&gt;1. Introduction to Generalization and Sampling&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generalization and Sampling
&lt;ul&gt;
&lt;li&gt;Introduction to Generalization and Sampling
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我們在這章節要討論的是「泛化(generalization)」 與 「取樣(sampling)」&lt;/p&gt;
&lt;p&gt;在討論之前，我們一樣來複習前面所學過的內容，&lt;br&gt;
我們已經討論過ML model是如何訓練的，&lt;br&gt;
並且在TensorFlow playground中做了實驗，看到了視覺化的結果。&lt;/p&gt;
&lt;p&gt;現在我們就可以思考一個有趣的問題，&lt;br&gt;
什麼時候一個被訓練很精確的ML模型，實際上卻不是正確的結果，&lt;/p&gt;
&lt;p&gt;事實上這個問題的關鍵就是在：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「對我們的模型而言的loss為0，實際上在現實生活中並不一定是真的好的。」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;對一個資料集的分析，loss為0僅代表「這個誤差對資料集的預測沒有影響」，不等於預測是對的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;★ 「好的ML模型」不是指對「我們的資料集」預測結果好，而是對於「未看過的資料」表現的也好。&lt;/p&gt;
&lt;p&gt;我們的ML模型如果將來想要產品化，這表示會有更多我們的ML模型沒看過的資料，&lt;br&gt;
這就是我們必須仔細評估的問題。&lt;/p&gt;
&lt;p&gt;所以我們要來討論怎麼去「評估我們沒看過的資料」?&lt;/p&gt;
&lt;p&gt;首先，我們必須要得到一些我們沒有在訓練中使用的資料，&lt;br&gt;
在我們的訓練完成後，我們就可以用這些資料來評估，&lt;/p&gt;
&lt;p&gt;我們也可以藉由這樣的評估來判斷我們的模型是否有「過度擬合(overfitting)」的現象，&lt;br&gt;
以及確定什麼時候應該模型要停止訓練。&lt;/p&gt;
&lt;p&gt;第二部分就是我們可以如何在一開始就創造一些未知的資料集，&lt;br&gt;
正常情況下，我們可能很難取得未看過的資料。&lt;/p&gt;
&lt;p&gt;但因為我們有訓練資料集，&lt;br&gt;
所以我們可以將訓練資料集拆成「訓練用」與「評估用」，&lt;br&gt;
我們可以使用其中一組資料集訓練我們的模型，&lt;br&gt;
而當模型訓練完成時，我們就可以使用另外的資料來測試與評估模型的表現。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;所以我們也會學到如何去建 training, evaluation, test 的資料集，&lt;br&gt;
並透過這樣的方式實際建立測試模型的指標。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-generalization-and-ml-models&#34;&gt;2. Generalization and ML Models&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generalization and Sampling
&lt;ul&gt;
&lt;li&gt;Generalization
&lt;ul&gt;
&lt;li&gt;Generalization and ML Models&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我們先來解決「泛化(generalization)」的問題，這可以幫助我們理解&lt;br&gt;
「為什麼我們訓練一個預測準確的模型，並不一定是最好的模型。」&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;21-觀察過度擬合overfitting的現象&#34;&gt;2.1. 觀察「過度擬合(overfitting)」的現象&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pNRVPNIqbx.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pNRVPNIqbx.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424pNRVPNIqbx_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424pNRVPNIqbx_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們再來看一下我們所熟悉的出生率資料集，&lt;br&gt;
不過這次我們使用「母親的體重增加」在X軸上，&lt;br&gt;
來預測在Y軸上的「預測懷孕的時間」，&lt;/p&gt;
&lt;p&gt;首先我們可以直覺的感覺到，這兩組資料看起來有很強的相關性，&lt;br&gt;
也就是說，體重增加的越多，懷孕的時間就越長，&lt;br&gt;
這件事情似乎在嬰兒的成長過程中是很直觀的。&lt;/p&gt;
&lt;p&gt;我們也來複習前面一點的內容，當我們說到要對這樣的關係建立模型，&lt;br&gt;
證明這兩個數據具有相關性，我們需要使用「線性回歸模型(linear regression model)」&lt;br&gt;
而當我們討論「回歸問題(regression problems)」時，&lt;br&gt;
我們通常用來計算的loss的方式都是「MSE(mean squared error)」或「RMSE(root mean squared error)」&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424xcx7ZLg3II.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424xcx7ZLg3II.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424xcx7ZLg3II_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424xcx7ZLg3II_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MSE&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「MSE(mean squared error)」可以告訴我們我們預測的回歸線與實際結果有多接近，&lt;br&gt;
我們實際上在計算就是「每個資料點」與「回歸線(我們的預測)」的距離，&lt;br&gt;
這段距離我們又可以稱為error(誤差)，&lt;br&gt;
在「MSE(mean squared error)」的計算之下，我們會將誤差平方，&lt;br&gt;
所以我們會移除負號而只觀測其值。&lt;br&gt;
此外，因為MSE的關係，我們可以加重「預測」與「實際值」差異的處罰。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RMSE&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用MSE取平方根即可得到RMSE，RMSE有點像所有數據與預測的平均距離。&lt;br&gt;
而因為RMSE能夠修正單位的問題，我們能直接解釋為Y軸上的測量單位。&lt;br&gt;
所以以相關係數來說，RMSE會是個更好的測量單位。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不論是這兩種誤差的測量，越小的值都表示模型的性能更好，&lt;br&gt;
我們期望這樣的模型訓練最後能越接近零(表示預測沒有誤差)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這裡我們使用線性回歸模型(linear regression model)，&lt;br&gt;
我們透過這模型簡單的繪製了一條最佳回歸線，最大程度的減少了誤差，&lt;br&gt;
我們最終的RMSE值為2.224，似乎還不夠小，那我們來看看另外一個例子。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424KpA88z5BE5.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424KpA88z5BE5.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424KpA88z5BE5_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424KpA88z5BE5_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們現在來看上面這個有趣的圖形，&lt;br&gt;
我們現在使用更複雜的模型來預測，更複雜的模型會有更多的「參數(parameters)」&lt;/p&gt;
&lt;p&gt;在這個例子中，這些「參數(parameters)」替我們捕獲到了資料集的每個資料的細節，&lt;br&gt;
然後我們的RMSE值就降到0了，現在這結果「對於我們的資料集」非常的精確。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;然而這樣的結果真的是最好的嗎? 我們能使用這模型來生產嗎?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;其實這結果非常的有問題，我們舉個例子，&lt;br&gt;
如果今天來了一個我們沒看過的資料，我們訓練出的模型就沒有這樣的直覺，&lt;/p&gt;
&lt;p&gt;所以如果問我們，具有8個node的比12個node的好嗎?&lt;br&gt;
我們有個16個node的神經網路，他有最低的RMSE，我們應該使用這個嗎?&lt;br&gt;
我們在這裡所看到的例子，可能是有數百次方的多項式，然後具有數百個node的神經網路。&lt;/p&gt;
&lt;p&gt;雖然更多的node(也代表更複雜的模型)能夠幫助我們優化更多的參數，&lt;br&gt;
也能幫助我們找到最適合「複雜數據的分類」結果，&lt;br&gt;
(例如像上一張分類螺旋資料集的例子)&lt;br&gt;
但同時，這樣子做也會讓模型去記住更簡單的、更小的數據集。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;就是把整個數據集都「背下來」了，但「不是這個數據集」的反而不會了。&lt;br&gt;
這就是「過度擬合(overfitting)」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h4 id=&#34;22-泛化generalization&#34;&gt;2.2. 泛化(Generalization)&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424wEdKsuQVjl.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424wEdKsuQVjl.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424wEdKsuQVjl_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424wEdKsuQVjl_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&#34;  &gt;&lt;/p&gt;
&lt;p&gt;所以，我們應該要在什麼時候停止訓練模型?&lt;br&gt;
並且我們要避免模型「背下資料集」導致「過度擬合(overfitting)」?&lt;/p&gt;
&lt;p&gt;現在我們有個驗證模型的方法，就是拿我們的模型給沒看過的新資料集看性能如何，&lt;br&gt;
然後我們就可以決定現在的模型對新資料集的「泛化(generalize)」程度如何，&lt;br&gt;
這也會是未來我們在生產ML模型的重要指標。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「泛化(generalize)」：基本上就是指ML模型對未知資料集的預測能力。&lt;br&gt;
如果沒有良好的「泛化(generalize)」，表示我們的模型只對我們的資料集預測好而已。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們現在再回到「線性回歸模型(linear regression model)」與「神經網路模型(neural network model)」，然後看它們表現的怎麼樣。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204242owSjU5vau.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204242owSjU5vau.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204242owSjU5vau_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204242owSjU5vau_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們的「線性回歸模型(linear regression model)」對於新資料集的「「泛化(generalize)」能力非常好」&lt;/p&gt;
&lt;p&gt;從我們「新資料集計算出」的RMSE與我們「訓練所計算出」的RMSE差不多可以判斷。&lt;br&gt;
在這樣的情況下，對於我們的ML模型是一件好事。&lt;br&gt;
我們就是希望再預測(training)與驗證(validation)過程中，&lt;br&gt;
我們的模型能有差不多的表現。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424qfHmOrkXUN.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424qfHmOrkXUN.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424qfHmOrkXUN_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424qfHmOrkXUN_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們現在看到第二個模型，我們可以發現他對於新資料集的「「泛化(generalize)」能力非常差」&lt;/p&gt;
&lt;p&gt;就算對於我們「訓練所計算出」的RMSE為0，&lt;br&gt;
對於「新資料集計算出」的RMSE從0跑到3.2，&lt;br&gt;
這代表一個非常嚴重的問題，也指示出我們的模型有著「過度擬合(overfitting)」的現象，&lt;br&gt;
也證明了這模型對於新資料的預測能力非常的弱。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;23-泛化generalization問題的解法&#34;&gt;2.3. 泛化(Generalization)問題的解法&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424rlVMIaQBWD.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424rlVMIaQBWD.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424rlVMIaQBWD_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424rlVMIaQBWD_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&#34;  &gt;&lt;/p&gt;
&lt;p&gt;現在我們可能會想問，怎麼確定我們的模型訓練有沒有「過度擬合(overfitting)」?&lt;br&gt;
所以我們該如何決定我們訓練停止的時間? 這個問題的答案十分的簡單。&lt;/p&gt;
&lt;p&gt;我們先將我們的資料集分成兩部分。&lt;br&gt;
現在我們將我們的原始資料分成完全兩個獨立的組別，&lt;br&gt;
一個為「訓練用資料集(training)」、另一個為「驗證用資料集(validation)」&lt;/p&gt;
&lt;p&gt;我們可以拿我們的「訓練用資料集」來不斷的反覆訓練我們的模型，&lt;br&gt;
當我們完成訓練之後，拿訓練好的模型使用「驗證用資料集」來看模型的表現。&lt;/p&gt;
&lt;p&gt;如果模型泛化(generalize)的很好，它應該也會在「驗證用資料集」有差不多的loss值&lt;br&gt;
(也就是「訓練用資料集(training)」、「驗證用資料集(validation)」的loss差不多。)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204245uFiiDjPHV.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204245uFiiDjPHV.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204245uFiiDjPHV_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204245uFiiDjPHV_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&#34;  &gt;&lt;/p&gt;
&lt;p&gt;當我們看見我們的模型對於「驗證資料集(validation)」預測結果開始不好的時候，&lt;br&gt;
也就是像上圖，當我們計算出的loss開始增加，我們的模型訓練就該停止了。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;正常來說「驗證資料集(validation)」的RMSE應該也要差不多2.2左右&lt;br&gt;
誤差太大也表示我們的ML模型有可能在「背資料」了。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;同時訓練和驗證ML模型，能夠幫我們找到正確的泛化結果與最合適訓練資料集的模型參數，而不是將模型整個背下來。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;24-欠擬合underfitting-與-過度擬合overfitting&#34;&gt;2.4. 欠擬合(underfitting) 與 過度擬合(overfitting)&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QUkLu0z2es.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QUkLu0z2es.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424QUkLu0z2es_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424QUkLu0z2es_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】26 - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&#34;  &gt;&lt;/p&gt;
&lt;h4 id=&#34;欠擬合underfitting&#34;&gt;欠擬合(underfitting)&lt;/h4&gt;
&lt;p&gt;我們先看上圖中最上面的圖形，&lt;br&gt;
我們有一個過於簡單的線性模型，它並不太適合預測我們這組資料，&lt;br&gt;
上圖中，我們可以視覺上的發現很多點都是在這條預測之外，&lt;br&gt;
這樣的情形我們就稱為「欠擬合(underfitting)」&lt;/p&gt;
&lt;h4 id=&#34;過度擬合overfitting&#34;&gt;過度擬合(overfitting)&lt;/h4&gt;
&lt;p&gt;而與上述相反的情況，如果結果太過符合所有的資料點，&lt;br&gt;
我們就稱之為「過度擬合(overfitting)」&lt;/p&gt;
&lt;p&gt;我們適當增加線性模型(linear model)的複雜度，使它成為n階多項式，&lt;br&gt;
讓結果能符合我們資料的預測，&lt;/p&gt;
&lt;p&gt;因此，這就是為什麼我們需要驗證的資料集，&lt;br&gt;
我們就是要決定是否模型的參數是否已經過度訓練導致「過度擬合(overfitting)」的發生。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;「過度擬合(overfitting)」或模型「只知道」我們訓練資料集的如何預測，&lt;br&gt;
很多時候都會到生產階段才知道，這也就是為什麼我們還需要驗證的資料集。&lt;/p&gt;
&lt;p&gt;一個正確的結果，也就是在「欠擬合(underfitting)」與「過度擬合(overfitting)」之間找到適當的模型複雜度，&lt;/p&gt;
&lt;p&gt;接下來我們就要來看如何使用驗證資料集(validation dataset)，幫助我們決定模型停止訓練的時間，與他是如何幫助我們避免「過度擬合(overfitting)」。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10221245&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 26】 Google ML - Lesson 10 - 泛化(Generalization)-檢查ML模型對於未知資料集的預測能力, underfitting與overfitting的問題&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1086
Post Date: 2019-09-27 01:29:04
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】25 - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/gradient-descent-2/</link>
        <pubDate>Thu, 26 Sep 2019 01:26:37 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/gradient-descent-2/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/201204249HkMOiKZOf.png" alt="Featured image of post 【Google ML】25 - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★小實驗系列：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;文章&lt;/th&gt;
  &lt;th&gt;實驗內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;TensorFlow Playground 的簡介與介面介紹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;「learning rate」 的改變對訓練過程的影響&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;使用「神經網路(neural network)」分類資料&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
  &lt;td&gt;觀察「batch size」如何影響「gradient descent」&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Defining ML Models
&lt;ul&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;li&gt;Introducing the Natality Dataset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;li&gt;Gradient Descent
&lt;ul&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;li&gt;Troubleshooting a Loss Curve&lt;/li&gt;
&lt;li&gt;ML Model Pitfalls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「TensorFlow Playground」
&lt;ul&gt;
&lt;li&gt;Lab: Introducing the TensorFlow Playground&lt;/li&gt;
&lt;li&gt;Lab: TensorFlow Playground - Advanced&lt;/li&gt;
&lt;li&gt;「Lab: Practicing with Neural Networks」&lt;/li&gt;
&lt;li&gt;Loss Curve Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Performance Metrics
&lt;ul&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;li&gt;Confusion Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1-lab-practicing-with-neural-networks&#34;&gt;1. Lab: Practicing with Neural Networks&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;TensorFlow Playground
&lt;ul&gt;
&lt;li&gt;Lab: Practicing with Neural Networks&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我們已經知道了「linear model」是如何幫我們分類資料集的，&lt;br&gt;
再來我們來看看「neural network」是怎麼做的。&lt;/p&gt;
&lt;p&gt;不過在那之前，我們需要理解一些新的功能，&lt;br&gt;
我們已經先實作好在 TenserFlow playground 裡面了。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;11-實驗介面介紹&#34;&gt;1.1. 實驗介面介紹&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204242dtC8jzEFy.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204242dtC8jzEFy.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204242dtC8jzEFy_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204242dtC8jzEFy_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】25 - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;首先我們要知道「activation」功能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「Activation」是由「激活函數(activation function)」產生的，&lt;br&gt;
在第五課(The Art and Science of ML)時我們會有更詳細的介紹&lt;br&gt;
(不過可能來不及寫到那? 有時間再補一下了~)&lt;/p&gt;
&lt;p&gt;現在我們能夠改變的關鍵是「激活函數(activation function)」的選擇，&lt;br&gt;
這也是我們該如何從「neural networks」區分出「linear models」，&lt;br&gt;
而我們以前就是設置線性的「激活函數(activation function)」。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;前面有提過，「linear models」是一種簡化版的「neural networks」&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;第二個我們要知道的是「隱藏層(hidden layers)」功能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「hidden layers」的功能允許我們去更改「hidden layers」的數量，&lt;br&gt;
同時我們也能更改每一層hidden layers的「神經元(neurons)」數量&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們可以先簡單把這段想成「更改資料進入神經網路後的轉換次數」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在每層hidden layer的「神經元(neurons)」，會接收所有來自「上一層的結果」，&lt;br&gt;
而「上一層的結果」就會變成「這一層的輸入」，&lt;br&gt;
並且傳遞給所有在這「隱藏層(hidden layers)」的神經元，&lt;br&gt;
而我們的整個神經網路就是進行這樣的動作，讓每個神經元都能接收到訊息，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們可以用簡單的網路(network)架構來比喻用神經元的數量以及他們如何傳遞資訊&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;第三個我們要知道的是「batch size」功能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前面&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10219945/draft&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 23】&lt;/a&gt;有介紹過他的意義了，我們會在這個實驗使用他。&lt;/p&gt;
&lt;p&gt;再來我們可以使用以下的連結，嘗試去訓練一個能分辨資料集的模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;參考範例連結：https://goo.gl/VyoRWX&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然而，這邊與其使用非線性函數的功能來實現，&lt;br&gt;
但我們會建議嘗試只靠修改「神經網路(neural network)」架構去改善表現的結果，&lt;br&gt;
(雖然我們目前「neural networks」還沒有細講理論，但我們可以先觀察變化)&lt;/p&gt;
&lt;p&gt;現在開始，我們可以在這個介面簡單操作，直到你可以訓練出一個良好的網路。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;12-小實驗---使用神經網路neural-network分類資料&#34;&gt;1.2. 小實驗 - 使用「神經網路(neural network)」分類資料&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424TKlnw1t1J0.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424TKlnw1t1J0.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424TKlnw1t1J0_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424TKlnw1t1J0_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】25 - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent&#34;  &gt;&lt;br&gt;
(訓練後)&lt;/p&gt;
&lt;p&gt;我們再稍微操作一下之後，應該就能訓練&lt;br&gt;
出一個良好的模型，並且輸出結果可能中間會有包含藍色的多邊形區域，&lt;/p&gt;
&lt;p&gt;我們現在要一一的觀察「隱藏層(hidden layers)」裡面的內容，&lt;br&gt;
使我們對模型有更直覺的概念，&lt;br&gt;
我們先仔細看第一個hidden layer的「神經元(neurons)」(紅色框框的部分第一個)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424UrcfjSGKIc.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424UrcfjSGKIc.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424UrcfjSGKIc_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424UrcfjSGKIc_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】25 - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent&#34;  &gt;&lt;/p&gt;
&lt;p&gt;當我們將滑鼠移到每一個「神經元(neurons)」的上方，右側的output也會改為顯示我們的結果。&lt;/p&gt;
&lt;p&gt;我們可以觀察每一個「神經元(neurons)」，用我們理解最終結果的方式，&lt;br&gt;
特徵(features)X1與X2的值皆已經被編碼在正方形裡面，&lt;br&gt;
顏色表示「在這個神經元」中「X1與X2組合輸出的結果」，&lt;/p&gt;
&lt;p&gt;我們依序看過每一格「神經元(neurons)」，我們就可以試想一個問題，&lt;/p&gt;
&lt;li&gt;如果這些紅色格子內的「神經元(neurons)」疊加會是怎麼樣子的呢?
&lt;ul&gt;
&lt;li&gt;藍+藍 = 更藍&lt;/li&gt;
&lt;li&gt;藍+白 = 淺藍&lt;/li&gt;
&lt;li&gt;藍+橘 = 白&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;這時我們就可以開始去想，每一個「神經元(neurons)」是怎麼樣去參與共同決定最後的決策邊界?
(也就是說，最後輸出的形狀與「隱藏層(hidden layers)」有什麼關聯?)
&lt;ul&gt;
&lt;li&gt;我們可以明顯看出，每個「神經元(neurons)」似乎都有對最後的決策邊界貢獻出了幾個邊。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;現在我們可以用幾何的概念去想，如果「靠我們自己」製造出這個網路並獲得合理的結果的可能性有多小?
&lt;ul&gt;
&lt;li&gt;就好比，如果從藍點的周圍，我們能夠簡單劃出一個合理計算結果的形狀嗎?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;hr&gt;
&lt;h4 id=&#34;13-小實驗---觀察batch-size如何影響gradient-descent&#34;&gt;1.3. 小實驗 - 觀察「batch size」如何影響「gradient descent」&lt;/h4&gt;
&lt;p&gt;在TenserFlow playground實驗，我們能直接看出我們的直覺是否準確。&lt;br&gt;
我們已經看過神經網路「hidden layer的結果」能用來決定最後的決策邊界(decision boundary)&lt;/p&gt;
&lt;p&gt;那只有一層hidden layer的神經網路與很多層hidden layer的差別呢?&lt;br&gt;
我們現在來分類一個螺旋狀的資料集試試看。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424qWViS3PCbH.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424qWViS3PCbH.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424qWViS3PCbH_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424qWViS3PCbH_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】25 - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;參考範例連結：http://goo.gl/hrXd9T&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我們也可以趁這個機會來了解「batch size」是怎麼影響「gradient descent」的，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我們設定「batch size」為1，並以「neural network」的架構實驗。&lt;br&gt;
訓練大約經過300 epochs的時候我們先暫停一下，「注意loss曲線的變化」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424btX4e6VNQg.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424btX4e6VNQg.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424btX4e6VNQg_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424btX4e6VNQg_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】25 - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent&#34;  &gt;&lt;/p&gt;
&lt;li&gt;再來，我們把「batch size」分別設定為10，我們再做一次，
一樣經過300 epochs的時候我們先暫停一下。
&lt;/li&gt;
&lt;li&gt;最後，我們把「batch size」分別設定為30，我們再做一次，
一樣我們也是訓練300個epochs
&lt;/li&gt;
&lt;p&gt;我們看得出loss曲線的平滑度有明顯的差異，&lt;br&gt;
而且是隨著「batch size」增加，平滑度也會增加。&lt;br&gt;
我們能用什麼我們已經知道的知識解釋觀察到的變化呢?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424VV3hFr519x.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424VV3hFr519x.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424VV3hFr519x_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424VV3hFr519x_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】25 - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們就從「batch size」會影響「gradient descent」的角度下去想，&lt;/p&gt;
&lt;li&gt;當「batch size」小的時候，
我們的模型「更新參數」的基礎只基於一種「example」所計算出的loss。
但是每個「example」皆不相同，這就是問題所在。
&lt;/li&gt;
&lt;li&gt;當「batch size」增加的時候，
各個資料集所產生出來的「noise(雜訊)」會比較穩定，
漸漸的我們能夠看出比較清楚的特徵。
&lt;/li&gt;
&lt;p&gt;但是我們不能輕易的依據觀察結果下結論：「「batch size」能夠直接對收斂速度產生影響。」&lt;br&gt;
「batch size」與「learning rate」皆為「超參數(hyperparameter)」，&lt;br&gt;
所以「batch size」會因要訓練的題目不同而有不同，&lt;br&gt;
我們應該使用 hyperparameter tuning 來調整它。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424giUQZ2cmxP.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424giUQZ2cmxP.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424giUQZ2cmxP_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424giUQZ2cmxP_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】25 - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們的模型完成訓練後，應該會長得像右邊這樣的圖，&lt;br&gt;
第一件事情我們先注意「第一層「隱藏層(hidden layer)」」與之後的層之間的關係。&lt;br&gt;
我們應該可以很明顯發現，在第一層「隱藏層(hidden layer)」的輸出，基本上都是線。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我稍微想了一下他的意思，應該是指我們可以看到在第一層 hidden layer 中內部的分區圖，基本上都是以「一條線」來區分「白色」與「藍色」區塊的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204249HkMOiKZOf.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204249HkMOiKZOf.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204249HkMOiKZOf_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204249HkMOiKZOf_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】25 - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent&#34;  &gt;&lt;/p&gt;
&lt;p&gt;在第一層之後的隱藏層輸出複雜很多，這些後續的層是基於前面層的結果堆疊而成，&lt;br&gt;
(與我們上面所說的堆疊方式相同。)&lt;/p&gt;
&lt;p&gt;因此，我們可以將「neural network」視為特徵的層次架構，&lt;br&gt;
它們從前一層拿取自己的inputs，並以複雜的方式轉換成最終能分類資料的方法。&lt;br&gt;
這個就是最經典的「神經網路(neural network)」代表。&lt;br&gt;
這種方法與傳統的「機器學習(machine learning)」方法是很不相同的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在「神經網路(neural network)」之前，&lt;br&gt;
資料科學家花了很多時間做「特徵工程(feature engineering)」，&lt;br&gt;
現在我們有ML模型可以幫忙負擔一些工程，&lt;br&gt;
而我們可以將思考layers的意義作為一種「特徵工程(feature engineering)」的形式。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h4 id=&#34;14-過度擬合over-fitting&#34;&gt;1.4. 「過度擬合(over-fitting)」&lt;/h4&gt;
&lt;p&gt;接下來要講到的是模型學到的一些奇怪的東西，&lt;br&gt;
我們的模型似乎將兩個區域中沒有橙色的點，解釋為它是支持藍色的證據。&lt;/p&gt;
&lt;p&gt;我們稱模型將資料集中的雜訊(noise)也解釋了，這稱為為「過度擬合(over-fitting)」&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;也就是白色也等於橘色了，但原本應該只有橘色等於橘色的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;當「模型的決定權」超出了「問題的嚴格必要限制」時，就會發生這樣的情況。&lt;br&gt;
當一個模型是 over-fit 的，它們通常「泛化(generalization)」的效果很差，&lt;br&gt;
(也就是對未看過的資料處理能力很差)&lt;br&gt;
比較好的結果應該是保留應該保留的內容，&lt;br&gt;
「雜訊(noise)」與我們想分析的pattern不應該會有一樣的分類結果&lt;/p&gt;
&lt;p&gt;這件事，我們會在往後「泛化(generalization)」與「取樣(sampling)」的內容仔細討論。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10221227&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 25】 Google ML - Lab 5 - 在視覺化的網頁中觀察神經網路(neural network)如何分類資料, 並比較batch size如何影響gradient descent&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1083
Post Date: 2019-09-26 01:26:37
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/tensorflow-playground/</link>
        <pubDate>Wed, 25 Sep 2019 01:22:15 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/tensorflow-playground/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424EoNUdkWTBV.png" alt="Featured image of post 【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★小實驗系列：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;文章&lt;/th&gt;
  &lt;th&gt;實驗內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;TensorFlow Playground 的簡介與介面介紹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;[【Day 24】](https://ithelp.ithome.com.tw/articles/10220441)&lt;/td&gt;
  &lt;td&gt;「learning rate」 的改變對訓練過程的影響&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;而今天的文章我們先不討論新東西，我們來做點小實驗。&lt;/p&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Defining ML Models
&lt;ul&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;li&gt;Introducing the Natality Dataset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;li&gt;Gradient Descent
&lt;ul&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;li&gt;Troubleshooting a Loss Curve&lt;/li&gt;
&lt;li&gt;ML Model Pitfalls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「TensorFlow Playground」
&lt;ul&gt;
&lt;li&gt;「Lab: Introducing the TensorFlow Playground」&lt;/li&gt;
&lt;li&gt;Lab: TensorFlow Playground - Advanced&lt;/li&gt;
&lt;li&gt;Lab: Practicing with Neural Networks&lt;/li&gt;
&lt;li&gt;Loss Curve Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Performance Metrics
&lt;ul&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;li&gt;Confusion Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1-lab-introducing-the-tensorflow-playground&#34;&gt;1. Lab: Introducing the TensorFlow Playground&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;TensorFlow Playground
&lt;ul&gt;
&lt;li&gt;Lab: Introducing the TensorFlow Playground&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，我們現在知道「gradient descent」是如何運作的，&lt;br&gt;
我們現在先使用一些工具來看看這方法實際上運作會是怎麼樣。&lt;br&gt;
你應該會看到很多我們之前有提到的現象。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204247mp61cewk1.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204247mp61cewk1.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204247mp61cewk1_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204247mp61cewk1_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;/p&gt;
&lt;p&gt;「TensorFlow Playground」是一個非常強大的工具，&lt;br&gt;
他能幫助我們視覺化「neural networks」是如何運作的。&lt;br&gt;
(「neural networks」稍後章節我們就會介紹了)&lt;br&gt;
事實上，我們現在所介紹的「linear models」就是一種簡化的「neural networks」&lt;br&gt;
所以這個工具也很適合做「linear models」的視覺化呈現。&lt;/p&gt;
&lt;p&gt;我們會用這個工具來證明我們前面所說的理論知識，可以使我們對ML更有直覺，&lt;br&gt;
我們也會直接了解「設定「learning rate」」與ML模型是如何降低梯度的。&lt;/p&gt;
&lt;p&gt;我也會指出這些內容與之後主題的關係，這些都會在之後的課程有更深入的探討。&lt;br&gt;
首先，我們先看一下介面，&lt;br&gt;
我們先刪除了某些工具的功能，因為他與我稍後將介紹的內容才有關係，&lt;br&gt;
但依然有許多有趣的功能是我們可以使用的。&lt;/p&gt;
&lt;h4 id=&#34;11-介面介紹&#34;&gt;1.1. 介面介紹&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Ys74e4qyqt.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Ys74e4qyqt.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Ys74e4qyqt_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Ys74e4qyqt_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;/p&gt;
&lt;li&gt;首先，我們畫面框起來的指的是「features」，這些要給model看的inputs
&gt;  在每一個box裡面的顏色代表的是feature的值，其中橘色代表負值、藍色代表正值，&lt;/li&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424bylMafNynC.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424bylMafNynC.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424bylMafNynC_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424bylMafNynC_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;/p&gt;
&lt;li&gt;然後這裡有個hidden layers的欄位，我們可以先當作這部分是代表「權重(weights)」，
我們可以透過「滑鼠靠近」來看這個些值是多少&lt;/li&gt;
&lt;blockquote&gt;
&lt;p&gt;隨著模型的訓練，這條線的寬度與不透明度會逐漸改變，&lt;br&gt;
這樣的視覺化表示也方便我們能夠快速的理解他們的值。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204241DmtrEsI98.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204241DmtrEsI98.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204241DmtrEsI98_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204241DmtrEsI98_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;/p&gt;
&lt;li&gt;在output column我們可以同時看見training data與我們的model現在預測的值，
以及所有的點在features space裡面的位置
&lt;/li&gt;
- 我們也看到目前的training loss
&lt;blockquote&gt;
&lt;p&gt;這邊都會以「顏色」來表示值(「features」)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424tajc9FIh47.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424tajc9FIh47.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424tajc9FIh47_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424tajc9FIh47_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;最上方的控制列包含著「重新設定訓練, 開始訓練, 執行單個步驟」的按鈕&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;還有一個可以下拉的列表，可以調整我們的「learning rate」&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204242elAOz9WZJ.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204242elAOz9WZJ.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204242elAOz9WZJ_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204242elAOz9WZJ_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;data欄位允許我們選擇不同的資料集，並且也能控制「batch size」的大小&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&#34;12-開始訓練&#34;&gt;1.2. 開始訓練&lt;/h4&gt;
&lt;p&gt;我們就先以訓練一個「linear model」來替我們分類資料開始吧!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;這邊我們可以參考範例連結：https://goo.gl/EEuEGp&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204244ZVwt1dOF1.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204244ZVwt1dOF1.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204244ZVwt1dOF1_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204244ZVwt1dOF1_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;br&gt;
(這圖我另外截的XD，上面寫&amp;quot;「Don’t Worry, You Can’t Break It. We Promise.」&amp;ldquo;滿有喜感的XD)&lt;br&gt;
&lt;del&gt;「可惡，越是這樣講越讓我想嘗試玩壞看看」&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;當我們點進連結後，我們就會看到TensorFlow Playground的介面，，&lt;br&gt;
我們先介紹一下目前畫面上的配置(不用擔心沒有hidden layers的問題)，&lt;br&gt;
在目前我們所看到的介面設定中，這個模型接受一個「feature vector」，&lt;br&gt;
並與「weight factor」計算內積，再加上「bias」，&lt;br&gt;
然後使用計算結果去建立「決策邊界(decision boundary)」。&lt;/p&gt;
&lt;p&gt;因此我們可以將目前的配置視為「linear model」，&lt;br&gt;
我們現在會開始訓練這個model，讓他去嘗試分類一些屬於兩大不同族群的資料。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424OPJM6RaUoc.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424OPJM6RaUoc.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424OPJM6RaUoc_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424OPJM6RaUoc_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我們點擊畫面上的step鍵(紅框處)，我們會注意到畫面開始有ㄧ些變化。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
- 「epochs」的數值增加1
- 我們說代表「weights」的線換了顏色、也改變了大小
- 現在「loss function」的值也改變了
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;loss的圖形顯示了往下的斜率&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;output的「決策邊界(decision boundary)」也產生了改變&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424KJV10ezgUZ.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424KJV10ezgUZ.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424KJV10ezgUZ_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424KJV10ezgUZ_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們移動一下滑鼠靠近目前代表1的「weights」，觀察一下「weights」目前的大小，&lt;/p&gt;
&lt;p&gt;我們現在點擊play的按鈕讓他繼續訓練，但當loss小於0.002時我們就先暫停一下。&lt;br&gt;
(應該會在200 epochs以內)&lt;/p&gt;
&lt;p&gt;這時，我們已經完成訓練我們的第一個模型了!&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;13-小實驗---learning-rate-的改變對訓練過程的影響&#34;&gt;1.3. 小實驗 - 「learning rate 的改變對訓練過程的影響」&lt;/h4&gt;
&lt;p&gt;現在讓我們稍微改變一點東西，&lt;/p&gt;
&lt;p&gt;首先我們先看不同的「learning rates」是怎麼影響模型訓練的。&lt;/p&gt;
&lt;p&gt;簡單複習一下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「learning rate」是「hyperparameter」，也就是在訓練模型前設定的。&lt;br&gt;
這個值會乘上偏微分的結果，並決定我們「weights」要改變(之前我們說的「移動」)的量，&lt;/p&gt;&lt;/blockquote&gt;
&lt;li&gt;這邊我們先試第一種，我們看看當「learning rate」非常小(0.00001)的訓練結果
這邊我們只要先等到約100 epochs即可(大約需要兩秒)，然後先暫停訓練。
&lt;/li&gt;
- 參考範例連結：https://goo.gl/3pmeKj
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;現在的loss是多少?&lt;/li&gt;
&lt;li&gt;loss的變化是怎麼樣的?&lt;/li&gt;
&lt;li&gt;然後我們的模型變成了怎麼樣的「weights」?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424TEoQuVcXdK.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424TEoQuVcXdK.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424TEoQuVcXdK_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424TEoQuVcXdK_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;br&gt;
(調整「learning rate」的位置)&lt;/p&gt;
&lt;li&gt;然後我們將「learning rate」調整為0.001，並再重新訓練一次
一樣也是約100 epochs即可先暫停訓練。
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;現在的loss是多少?  (應該會少了很多)&lt;/li&gt;
&lt;li&gt;loss的變化是怎麼樣的?&lt;/li&gt;
&lt;li&gt;然後我們的模型變成了怎麼樣的「weights」?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;再來我們將「learning rate」調整為0.1，並再重新訓練一次
一樣也是約100 epochs即可先暫停訓練。
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;現在的loss是多少? (應該會少更多)&lt;/li&gt;
&lt;li&gt;loss的變化是怎麼樣的? (減少的有多快?)&lt;/li&gt;
&lt;li&gt;然後我們的模型變成了怎麼樣的「weights」?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;最後我們將「learning rate」調整為10，並再重新訓練一次
&lt;ul&gt;
&lt;li&gt;我們先試著只做一步看看，注意「weight」的變化。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;再來我們繼續訓練直到100 epochs暫停訓練。
&gt; * 現在的loss是多少? (應該會少更多)
&gt; * loss的變化是怎麼樣的? (減少的有多快?)
&gt; * 然後我們的模型變成了怎麼樣的「weights」?&lt;/li&gt;
&lt;p&gt;我們觀察loss的曲線下降的速度，應該是非常急遽的下降的。&lt;/p&gt;
&lt;p&gt;當我們把這些訓練結果放在一起，我們比較這四種的變化，&lt;br&gt;
並試著用我們學到的最佳化知識解釋看看原因，&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424EoNUdkWTBV.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424EoNUdkWTBV.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424EoNUdkWTBV_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424EoNUdkWTBV_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】24 - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&#34;  &gt;&lt;/p&gt;
&lt;p&gt;(上面這張表是影片實驗結果的整理，正常來說我們的結果應該會有點不一樣，而重跑實驗也會有點不一樣也是同理。)&lt;/p&gt;
&lt;p&gt;「TensorFlow Playground」幫我們隨機初始化了「權重(weights)」，&lt;br&gt;
這也表示我們每次的搜尋都從一個隨機位置開始。&lt;/p&gt;
&lt;li&gt;我們先討論「Weight1」那一直行：
注意「weights」的變化與我們「learning rate」的關係，
我們發現隨著「learning rate」增加，「weight」也會增加。&lt;/li&gt;
&lt;p&gt;為什麼呢?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;因為我們的模型在訓練的時候走比較大步。&lt;br&gt;
而事實上，當「learning rate」為10時，「第一步」改變的「weight」最為顯著。&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;而我們再看「loss over time」那一直行：&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我們發現當「learning rate」增加，「loss曲線」也逐漸變陡。&lt;br&gt;
這正與我們之前所分析的結果相同。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10220441&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 24】 Google ML - Lab 4 - TensorFlow Playground - 讓我們在視覺化的網頁中體驗一下訓練ML模型吧！learning rate 改變對訓練過程的影響&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1080
Post Date: 2019-09-25 01:22:15
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】23 - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/batch-size-iteration-epoch/</link>
        <pubDate>Tue, 24 Sep 2019 01:19:23 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/batch-size-iteration-epoch/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/201204242vKdw5D43n.png" alt="Featured image of post 【Google ML】23 - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;而今天的文章我們要來討論一下「加快ML模型訓練的方法」。&lt;/p&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Defining ML Models
&lt;ul&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;li&gt;Introducing the Natality Dataset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;li&gt;「Gradient Descent」
&lt;ul&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;li&gt;Troubleshooting a Loss Curve&lt;/li&gt;
&lt;li&gt;「ML Model Pitfalls」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TensorFlow Playground
&lt;ul&gt;
&lt;li&gt;Lab: Introducing the TensorFlow Playground&lt;/li&gt;
&lt;li&gt;Lab: TensorFlow Playground - Advanced&lt;/li&gt;
&lt;li&gt;Lab: Practicing with Neural Networks&lt;/li&gt;
&lt;li&gt;Loss Curve Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Performance Metrics
&lt;ul&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;li&gt;Confusion Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;0-一樣先來個重點整理下面會有詳細介紹&#34;&gt;0. 一樣先來個重點整理，下面會有詳細介紹&lt;/h3&gt;
&lt;li&gt;加速訓練的方法：
&lt;li&gt;調整「計算偏微分時的資料總數」
&lt;ul&gt;
&lt;li&gt;利用「batch」的方法&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;調整我們「檢查loss的頻率」
&lt;ul&gt;
&lt;li&gt;基於「固定時間(Time-based)」的檢查&lt;/li&gt;
&lt;li&gt;基於「固定步驟(Step-based)」的檢查&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/li&gt;
- 一大堆有關「batch」的名詞整理：
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;名詞&lt;/th&gt;
  &lt;th&gt;種類&lt;/th&gt;
  &lt;th&gt;意義&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;「mini-batching」&lt;/td&gt;
  &lt;td&gt;方法(method)&lt;/td&gt;
  &lt;td&gt;抽樣的方法&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「batches」&lt;/td&gt;
  &lt;td&gt;被抽樣到的資料(data)&lt;/td&gt;
  &lt;td&gt;使用抽樣的方法得到的資料(subset of dataset)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「batch size」&lt;/td&gt;
  &lt;td&gt;樣本數大小(size, number)&lt;/td&gt;
  &lt;td&gt;代表抽樣的數目、樣本數大小(size, number)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「mini-batch size」&lt;/td&gt;
  &lt;td&gt;同上&lt;/td&gt;
  &lt;td&gt;「mini-batch size」比較常被稱作「batch size」。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「mini-batch gradient descent」&lt;/td&gt;
  &lt;td&gt;方法(method)&lt;/td&gt;
  &lt;td&gt;使用抽樣的結果去做「gradient descent」&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「term batch gradient descent」&lt;/td&gt;
  &lt;td&gt;方法(method)&lt;/td&gt;
  &lt;td&gt;使用分堆的方式，也就是將「全部資料都下去分堆」。與「mini-batch gradient descent」最大的不同在於抽樣「使不使用全部資料」(另外一個只抽樣)，另外這個比較常用&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;li&gt;「batch size」與「迭代(iteration)」與「epoch」的概念比較：
&gt; 假設我現在有400筆資料，我做分堆：
&gt; 我決定「一堆的大小(batch size)」要有40筆資料，
&gt; 這樣一共會有10堆(通常稱為「number of batches」,「batch number」)，
&gt; 也就是說每一輪我要學10堆資料，也就是學10個「迭代(iteration)」。
&gt; 學完「10個「迭代(iteration)」」後，等於我把資料集全部都看過一次了。
&gt; 這樣就是一輪(「epoch」)訓練的結束。
&gt; .
&gt; 會有「batch size」與「迭代(iteration)」與「epoch」這些詞的原因，
&gt; 是因為通常ML學習的資料量都很大，我們會需要分比較小堆。&lt;/li&gt;
&lt;h3 id=&#34;1-ml-model-pitfalls&#34;&gt;1. ML Model Pitfalls&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Gradient Descent
&lt;ul&gt;
&lt;li&gt;ML Model Pitfalls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有個常見的情況是，每次當我們重新訓練ML模型的時候，&lt;br&gt;
明明是一樣的code，我們也希望能產生一樣的實驗結果，但往往結果不同。&lt;br&gt;
但通常我們會希望每次訓練的結果皆相同，這樣才是一個穩定的模型。&lt;/p&gt;
&lt;p&gt;在ML裡面，很多時候我們再進行第二次訓練時，即使使用完全相同的「hyperparameter」&lt;br&gt;
最後訓練出來的參數(「parameter」)結果也會完全不同。&lt;br&gt;
這似乎是不太好的現象，我們希望尋找的是一個最佳參數(「parameter」)解，&lt;br&gt;
結果不同，難道是「gradient descent」無效或是我們實作錯誤嗎?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424D5K3Ua5tnK.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424D5K3Ua5tnK.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424D5K3Ua5tnK_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424D5K3Ua5tnK_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】23 - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較&#34;  &gt;&lt;/p&gt;
&lt;p&gt;並不一定，我們從上圖可以看出，當我們在搜尋Loss的表面時，&lt;br&gt;
Loss的表面可能不單純像左圖只有一個山谷，&lt;br&gt;
像右邊多於一個山谷的才是比較常見的Loss表面，&lt;br&gt;
這個特性有個名稱叫做「凸性(convexity)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左邊的是「convex surface」(凸面)&lt;/li&gt;
&lt;li&gt;右邊的是「non-convex surface」(非凸面)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;為什麼loss surface可能會有不只一個最小值?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這意思是在參數空間(parameter space)中有很多等值(或接近等值)的點，&lt;br&gt;
(這裡的等值 = 參數算出來的「loss」等值)&lt;br&gt;
也就是說這些參數的設置，都能是ML模型具有相同的預測能力。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;也就是說，不同的參數組合，算出「一樣的loss」，等於具有「相同的預測能力」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們會在稍後介紹神經網路(「neural networks」)再更仔細的討論這問題。&lt;br&gt;
(因為這樣的情況主要發生在神經網路(「neural networks」))&lt;/p&gt;
&lt;p&gt;我們只要先記得loss surface會因為擁有的最小值數量，而有不同數量的山谷。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;最大值(最小值)有分成兩種：local maxima(minima), global maxima(minima)&lt;br&gt;
local指的是區域性的，也就是一個範圍內的最大(最小)&lt;br&gt;
global指的是全域性的，也就是全部範圍內的最大(最小)&lt;br&gt;
以山來比喻，山都會有主峰，主峰就是全部(global)最高的山，&lt;br&gt;
但除了主峰之外還有有次高峰、第三高峰&amp;hellip;，這些都是區域性(local)的最高。&lt;br&gt;
我們指的很多山谷就是因為有很多local minima，然而最深的谷只會有一個。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424xXFFLo4qb7.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424xXFFLo4qb7.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424xXFFLo4qb7_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424xXFFLo4qb7_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】23 - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們在訓練時，時常會覺得完成訓練時間太長，我們要來思考怎麼樣可以加快我們的訓練速度?&lt;/p&gt;
&lt;p&gt;不過為了要討論這問題，我們先從比較高階的角度看所有的步驟，&lt;br&gt;
並從演算法的角度去分析他們的time complexity，&lt;/p&gt;
&lt;p&gt;我們將訓練的主要演算法分成三大步驟：&lt;/p&gt;
&lt;p&gt;★Step 1 : 計算導數(偏微分)，上圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;當我們計算偏微分時，「計算的時間成本」會與我們需要放入loss function的「比較資料數量」成正比，也會與我們ML「模型參數的總量」成正比。
&lt;ul&gt;
&lt;li&gt;而「模型參數的總量」可以從數千到數億個不等。&lt;/li&gt;
&lt;li&gt;同樣的「比較資料的數量」也可以從數千到到數千億不等。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自己的小註記：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Step 1 : 計算導數(偏微分) 這階段影響訓練速度的關鍵在於：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型參數(「parameters」)的總量&lt;/li&gt;
&lt;li&gt;比較資料(「label」)的數量&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204249jSGg5ZcCH.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204249jSGg5ZcCH.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204249jSGg5ZcCH_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204249jSGg5ZcCH_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】23 - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較&#34;  &gt;&lt;br&gt;
★Step 2 : 參數更新&lt;/p&gt;
&lt;p&gt;在這張圖中，「每個循環」也代表會「參數會更新一次」，&lt;br&gt;
而這「時間成本」僅由模型內「參數的數量」影響，&lt;br&gt;
然後，相對其他步驟，「更新參數」時間的時間成本較小。&lt;/p&gt;
&lt;p&gt;自己的小註記：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Step 2 : 參數更新 這階段影響訓練速度的關鍵在於：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型參數(「parameters」)的總量&lt;br&gt;
-&amp;gt; 但「更新參數」本身影響的時間相對其他步驟不多。&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424vt3wjD1WZl.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424vt3wjD1WZl.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424vt3wjD1WZl_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424vt3wjD1WZl_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】23 - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較&#34;  &gt;&lt;br&gt;
★Step 3 : 檢查loss&lt;/p&gt;
&lt;p&gt;我們來想一下計算Loss的時間，這個步驟的時間複雜度，&lt;br&gt;
會與我們的「想要計算loss的總資料數(「label」數)」與「我們模型的複雜度」成正比，&lt;/p&gt;
&lt;p&gt;但特別的是，即使我們說這一個循環有這三個步驟，&lt;br&gt;
但「檢查loss」的步驟不需要每次都做，&lt;br&gt;
因為通常loss function的變化都是在逐漸好的方向變化。&lt;/p&gt;
&lt;p&gt;自己的小註記：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Step 3 : 檢查loss 這階段影響訓練速度的關鍵在於：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想要計算loss的總資料數(「label」數)&lt;/li&gt;
&lt;li&gt;模型參數(「parameters」)的總量&lt;/li&gt;
&lt;li&gt;檢查 loss 的頻率&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;所以經由上述簡單的討論，我們應該心理先有個底了，&lt;br&gt;
我們該怎麼做才能加快訓練的速度呢?&lt;/p&gt;
&lt;li&gt;首先，模型裡面的參數如果是固定的數量，
未來我們會提到我們可以將裡面的參數做「「正規化(regularization)」」&lt;/li&gt;
- 另外，雖然減少檢查loss的總資料數(「label」數)聽起來會有用，但我們通常不建議這樣做。
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「正規化(regularization)」：可以讓模型的數字被限制在一定的範圍，&lt;br&gt;
例如原本所有的ML模型內的參數可能介於「1&lt;del&gt;1000」，&lt;br&gt;
透過「正規化(regularization)」的縮放，我們可以縮小1000倍(只是舉例)，&lt;br&gt;
參數就會變成「0.001&lt;/del&gt;1」，這樣的好處在於我們可以避免做「大數運算」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424S3qSAkOIsd.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424S3qSAkOIsd.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424S3qSAkOIsd_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424S3qSAkOIsd_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】23 - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較&#34;  &gt;&lt;/p&gt;
&lt;p&gt;取而代之的，我們有兩大手段作為我們加快訓練速度的關鍵：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;調整我們「計算偏微分時的資料總數」&lt;/li&gt;
&lt;li&gt;調整我們「檢查loss的頻率」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Yo3KAaE7zw.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Yo3KAaE7zw.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Yo3KAaE7zw_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Yo3KAaE7zw_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】23 - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較&#34;  &gt;&lt;/p&gt;
&lt;p&gt;正如同我們前面所說，我們能加快模型訓練速度的關鍵之一是「調整我們計算偏微分的資料數」&lt;/p&gt;
&lt;p&gt;記得：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;偏微分來自於我們的loss function，&lt;br&gt;
而我們的loss function是將很多預測的error組合在一起的值。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;所以這個方法需要減少「我們給loss function」的資料總數在每一輪「迭代(iteration)」中，&lt;br&gt;
到這裡，我們可以先停下來想一下為什麼這樣是可以的。&lt;/p&gt;
&lt;p&gt;為何這個方法沒有問題?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;主要是因為我們可以從我們的訓練資料中抽取樣本，&lt;br&gt;
而這個樣本與其他相比是平均且平衡的。&lt;br&gt;
我們在之後會講到關於抽樣的陷阱以及如何避免，&lt;br&gt;
而現在我們先知道抽樣的策略是從我們的資料集用統一的機率抽樣的。&lt;br&gt;
所以所有在訓練資料集的例子都有一樣均等的機會被模型看過。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在ML中，我們將這種在從訓練集中抽樣的做法稱為「mini-batching」，&lt;br&gt;
原本我們所計算的「gradient descent」預設會使用所有的資料集，&lt;br&gt;
然後使用「mini-batching」的資料，我們可以算出「mini-batch gradient descent」，&lt;br&gt;
而這些資料被抽樣出的資料被稱為「batches」。&lt;/p&gt;
&lt;p&gt;「mini-batch gradient descent」具有許多的好處：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;花費更少的時間運算&lt;/li&gt;
&lt;li&gt;使用更少的記憶體&lt;/li&gt;
&lt;li&gt;很容易做平行運算&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外一個很常聽到的名稱「term batch gradient descent」，&lt;br&gt;
batch指的是以分批(batch)的方式來處理，&lt;br&gt;
所以「batch gradient descent」會計算整個資料集，&lt;br&gt;
與「mini-batch gradient descent」不相同。&lt;/p&gt;
&lt;p&gt;這裡我們討論的是「mini-batch gradient descent」，&lt;br&gt;
但有個常讓人搞錯的地方是，「mini-batch size」時常被稱作「batch size」，&lt;br&gt;
TensorFlow也是這樣稱呼的，所以我們也這樣稱呼他。&lt;/p&gt;
&lt;p&gt;在之後的討論中，如果我們討論到有關於「batch size」的事情時，&lt;br&gt;
我們就是在討論「mini-batch gradient descent」的「樣本數大小」。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這邊名詞太多覺得很混亂嗎XD?&lt;br&gt;
簡單整理一下：&lt;/p&gt;&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;名詞&lt;/th&gt;
  &lt;th&gt;種類&lt;/th&gt;
  &lt;th&gt;意義&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;「mini-batching」&lt;/td&gt;
  &lt;td&gt;方法(method)&lt;/td&gt;
  &lt;td&gt;抽樣的方法&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「batches」&lt;/td&gt;
  &lt;td&gt;被抽樣到的資料(data)&lt;/td&gt;
  &lt;td&gt;使用抽樣的方法得到的資料(subset of dataset)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「batch size」&lt;/td&gt;
  &lt;td&gt;樣本數大小(size, number)&lt;/td&gt;
  &lt;td&gt;代表抽樣的數目、樣本數大小(size, number)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「mini-batch size」&lt;/td&gt;
  &lt;td&gt;同上&lt;/td&gt;
  &lt;td&gt;「mini-batch size」比較常被稱作「batch size」。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「mini-batch gradient descent」&lt;/td&gt;
  &lt;td&gt;方法(method)&lt;/td&gt;
  &lt;td&gt;使用抽樣的結果去做「gradient descent」&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「term batch gradient descent」&lt;/td&gt;
  &lt;td&gt;方法(method)&lt;/td&gt;
  &lt;td&gt;使用分堆的方式，也就是將「全部資料都下去分堆」。與「mini-batch gradient descent」最大的不同在於抽樣「使不使用全部資料」(另外一個只抽樣)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;★另外再送大家「batch size」與「迭代(iteration)」與「epoch」的概念比較：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;假設我現在有400筆資料，我做分堆：&lt;br&gt;
我決定「一堆的大小(batch size)」要有40筆資料，&lt;br&gt;
這樣一共會有10堆(通常稱為「batch number」,「number of batches」)，&lt;br&gt;
也就是說每一輪我要學10堆資料，也就是學10個「迭代(iteration)」。&lt;br&gt;
學完「10個「迭代(iteration)」」後，等於我把資料集全部都看過一次了。&lt;br&gt;
這樣就是一輪(「epoch」)訓練的結束。&lt;br&gt;
.&lt;br&gt;
會有「batch size」與「迭代(iteration)」與「epoch」這些詞的原因，&lt;br&gt;
是因為通常ML學習的資料量都很大，我們會需要分比較小堆。&lt;br&gt;
.&lt;br&gt;
參考資料：&lt;a class=&#34;link&#34; href=&#34;https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/557816/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;神經網路中Epoch、Iteration、Batchsize相關理解和說明&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424CiZWvxGg6K.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424CiZWvxGg6K.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424CiZWvxGg6K_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424CiZWvxGg6K_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】23 - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們來討論一下那「mini-batches」應該有多大?&lt;br&gt;
「batch size」也像「learning rate」一樣是hyperparameter，&lt;br&gt;
而且同樣的，這兩個的最佳值都是「因題目而異」的，&lt;br&gt;
我們一樣可以使用「hyperparameter tuning」的方法找到他，&lt;br&gt;
我們也會在後面一並詳細介紹。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;通常「batch sizes」會介於10~1000個樣本之間。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204242vKdw5D43n.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204242vKdw5D43n.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204242vKdw5D43n_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204242vKdw5D43n_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】23 - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較&#34;  &gt;&lt;/p&gt;
&lt;p&gt;另外一個我們提到加速訓練的關鍵是改變我們檢查loss的頻率，&lt;br&gt;
稍微想一下，儘管一個個檢查每一個資料集的子集合是好事，但未必對訓練時間是好的。&lt;/p&gt;
&lt;p&gt;上面是我們將我們的講法轉換後寫出的code，想法非常的簡單，&lt;br&gt;
我們加入一些邏輯，使得計算loss function的高時間代價能夠減少計算的頻率，&lt;/p&gt;
&lt;p&gt;現代檢查loss function的頻率很多有名的策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基於固定時間的檢查(Time-based) -&amp;gt; 例如：每三十分鐘檢查一次loss&lt;/li&gt;
&lt;li&gt;基於固定步驟的檢查(Step-based) -&amp;gt; 例如：每一千個步驟檢查一次loss&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我們減少檢查loss的頻率，並且引入「mini-batching」這套方法，&lt;br&gt;
我們開始將模型訓練的兩個基本部分分開並各自調整，&lt;br&gt;
「更改我們模型的參數」與「檢查我們是否有做正確的修正」。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10219945&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 23】 Google ML - Lesson 9 - 加速ML模型訓練的兩大方法(如何設定batch/檢查loss頻率)、batch size, iteration, epoch的概念和比較&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/557816/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;神經網路中Epoch、Iteration、Batchsize相關理解和說明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1077
Post Date: 2019-09-24 01:19:23
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】22 - Lesson 8 - 學習速率 (learning rate) 介紹, 透過「learning rate」調整ML模型訓練的學習速度</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/learning-rate/</link>
        <pubDate>Mon, 23 Sep 2019 01:16:09 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/learning-rate/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424RQRcro5Yon.png" alt="Featured image of post 【Google ML】22 - Lesson 8 - 學習速率 (learning rate) 介紹, 透過「learning rate」調整ML模型訓練的學習速度" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;而今天的文章我們要來討論一下所謂的「學習速率(learning rate)」，&lt;br&gt;
可以幫我們調整學習的「步長(「step size」)」。&lt;/p&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Defining ML Models
&lt;ul&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;li&gt;Introducing the Natality Dataset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;li&gt;「Gradient Descent」
&lt;ul&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;li&gt;「Troubleshooting a Loss Curve」&lt;/li&gt;
&lt;li&gt;ML Model Pitfalls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TensorFlow Playground
&lt;ul&gt;
&lt;li&gt;Lab: Introducing the TensorFlow Playground&lt;/li&gt;
&lt;li&gt;Lab: TensorFlow Playground - Advanced&lt;/li&gt;
&lt;li&gt;Lab: Practicing with Neural Networks&lt;/li&gt;
&lt;li&gt;Loss Curve Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Performance Metrics
&lt;ul&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;li&gt;Confusion Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;昨日我們詳細了介紹「Gradient Descent」的概念，&lt;br&gt;
以及Loss在參數空間所能畫出的等高圖，&lt;br&gt;
今天我們要稍微更細的討論一下Loss隨著時間所變化的圖，可能會有哪些情況。&lt;/p&gt;
&lt;h3 id=&#34;1-troubleshooting-a-loss-curve&#34;&gt;1. Troubleshooting a Loss Curve&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Gradient Descent
&lt;ul&gt;
&lt;li&gt;Troubleshooting a Loss Curve&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;想像我們現在正在進行「Gradient Descent」的過程，&lt;br&gt;
我們「修改我們ML模型的參數」依照「loss function結果的偏微分」，&lt;br&gt;
我們通常會紀錄並觀察「隨著訓練時間，loss的變化」。&lt;br&gt;
(這就是通常我們machine learning在做的事情)&lt;/p&gt;
&lt;p&gt;整個ML的訓練個過程可能數小時甚至到數天，&lt;br&gt;
你可以想像這樣的過程是多麼的費時，因此考慮到這點，&lt;br&gt;
我們需要稍微研究一下loss curve，來看看有沒有什麼可能的困難。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424BEnudq0ZOn.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424BEnudq0ZOn.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424BEnudq0ZOn_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424BEnudq0ZOn_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】22 - Lesson 8 - 學習速率 (learning rate) 介紹, 透過「learning rate」調整ML模型訓練的學習速度&#34;  &gt;&lt;/p&gt;
&lt;p&gt;(上圖是一個常見且我們期望的loss curve與時間的對應圖。)&lt;/p&gt;
&lt;p&gt;如同我們所想像的一樣，我們在一開始時，我們的loss下降快速，&lt;br&gt;
因為我們的「Gradient Descent」算出較大的「step size」，&lt;br&gt;
後來隨著時間增加，loss curve漸漸變緩和了，因為逐漸靠近loss最小值，&lt;br&gt;
我們的「Gradient Descent」也算出較小的「step size」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424st6ev300eg.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424st6ev300eg.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424st6ev300eg_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424st6ev300eg_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】22 - Lesson 8 - 學習速率 (learning rate) 介紹, 透過「learning rate」調整ML模型訓練的學習速度&#34;  &gt;&lt;br&gt;
但loss curve還有可能有其他的樣子，不一定我們每次訓練都這麼順利。&lt;br&gt;
我們也可以藉此判斷我們是否有合適的「step size」。&lt;/p&gt;
&lt;p&gt;假如我們的loss curve長得像上圖這樣，&lt;br&gt;
這表示我們走個幾步就跨越了好多山谷，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這也表示「step size」還是太大。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「step size」只依靠「loss function的偏微分結果」，&lt;br&gt;
以二維來說，是我們該點的切線斜率。&lt;br&gt;
套用到三維來說，也就是我們所說的「梯度」，&lt;br&gt;
表示有點類似該點的有&amp;quot;多&amp;quot;陡、往&amp;quot;哪裡&amp;quot;陡 &amp;lt;- 不確定能不能這樣說?&lt;br&gt;
我們知道該點的「梯度」後，不見得這山就跟我們預測的一樣「直接」傾斜到山谷。&lt;br&gt;
所以只靠「loss function的偏微分結果」決定的方向與步伐大小，「步伐大小不見得每次適用」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424KpBJ411tzz.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424KpBJ411tzz.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424KpBJ411tzz_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424KpBJ411tzz_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】22 - Lesson 8 - 學習速率 (learning rate) 介紹, 透過「learning rate」調整ML模型訓練的學習速度&#34;  &gt;&lt;br&gt;
假如我們的loss curve長得像上圖這樣，&lt;br&gt;
這表示我們可能在同一個山谷裡面，但我們可能要花很久很久時間才能到谷底。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;自己的註：可以看到有緩緩下降的感覺。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這也表示「step size」還是太小了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424YN5j1gJQf4.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424YN5j1gJQf4.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424YN5j1gJQf4_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424YN5j1gJQf4_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】22 - Lesson 8 - 學習速率 (learning rate) 介紹, 透過「learning rate」調整ML模型訓練的學習速度&#34;  &gt;&lt;/p&gt;
&lt;p&gt;上述的這兩個例子都是「step size」不合適的情況，&lt;br&gt;
因此，除了單純的只靠計算之外，我們還需要一個「可以縮放的參數」，&lt;br&gt;
這個「可以縮放的參數」我們稱之為「learning rate」，&lt;br&gt;
加上這個參數後，我們就有了最經典的「梯度下降法(gradient descent)」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424RQRcro5Yon.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424RQRcro5Yon.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424RQRcro5Yon_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424RQRcro5Yon_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】22 - Lesson 8 - 學習速率 (learning rate) 介紹, 透過「learning rate」調整ML模型訓練的學習速度&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們可以看到上圖就是最經典的「梯度下降法(gradient descent)」實現code，&lt;br&gt;
我們可以注意到在移動變數位置時，&lt;br&gt;
我們的偏微分結果乘上了「「learning rate」」的值，&lt;br&gt;
透過「「learning rate」」我們可以更直接的調整我們的「參數移動大小」。&lt;/p&gt;
&lt;p&gt;「「learning rate」」的調整，可以依照不同學習問題而改變，使達到最佳學習效果。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「「learning rate」」也是「hyperparameter」的一種，設定於ML模型訓練開始前。&lt;br&gt;
而為了找出「「learning rate」」最適合的值，&lt;br&gt;
有一種方法稱為「hyperparameter tuning」，這個會在之後的章節細講。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「「learning rate」」就是依據訓練題目有所不同而調整的值&lt;br&gt;
不同的題目需要的「learning rate」不同，&lt;br&gt;
「梯度下降法(gradient descent)」能幫我們決定方向與步伐大概的大小，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;但為了防止計算出的步伐太慢，可能要調整「learning rate」使其加快&lt;/li&gt;
&lt;li&gt;也為了防止計算出的步伐太快，導致一步就走過頭，透過調整「learning rate」使其變慢&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;通常「「learning rate」」會是一個小於1的分數，&lt;br&gt;
而我們現在只需先簡單記得怎麼樣計算「梯度下降法(gradient descent)」，&lt;br&gt;
並將「learning rate」視為一個調整學習腳步的「固定參數」即可。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10219458&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 22】 Google ML - Lesson 8 - 學習速率 (learning rate) 介紹, 透過「learning rate」調整ML模型訓練的學習速度&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1074
Post Date: 2019-09-23 01:16:09
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/gradient-descent/</link>
        <pubDate>Sun, 22 Sep 2019 01:11:56 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/gradient-descent/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/201204241oV3BHJ399.png" alt="Featured image of post 【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;而今天的文章我們就要來介紹所謂的「梯度下降法 (Gradient Descent)」&lt;br&gt;
與ML模型中參數的修正「方向」與「步長(「step size」)」概念。&lt;/p&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Optimization」
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Defining ML Models
&lt;ul&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;li&gt;Introducing the Natality Dataset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;li&gt;「Gradient Descent」
&lt;ul&gt;
&lt;li&gt;「Gradient Descent」&lt;/li&gt;
&lt;li&gt;Troubleshooting a Loss Curve&lt;/li&gt;
&lt;li&gt;ML Model Pitfalls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TensorFlow Playground
&lt;ul&gt;
&lt;li&gt;Lab: Introducing the TensorFlow Playground&lt;/li&gt;
&lt;li&gt;Lab: TensorFlow Playground - Advanced&lt;/li&gt;
&lt;li&gt;Lab: Practicing with Neural Networks&lt;/li&gt;
&lt;li&gt;Loss Curve Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Performance Metrics
&lt;ul&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;li&gt;Confusion Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-gradient-descent&#34;&gt;1. Gradient Descent&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Gradient Descent
&lt;ul&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在昨天的章節中，我們介紹了「損失函數(loss function)」的計算方式，&lt;br&gt;
然而「損失函數loss function」只能「&lt;strong&gt;告訴我們參數的好壞&lt;/strong&gt;」，&lt;br&gt;
我們仍需要一個「&lt;strong&gt;修改參數的方法&lt;/strong&gt;」，&lt;/p&gt;
&lt;p&gt;今天我們要介紹的「梯度下降法 (Gradient Descent)」，就是一種「&lt;strong&gt;修改參數的方法&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;自己的註1：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「損失函數(loss function)」是判斷誤差大小的計算方法，然而還需要一個「修改參數的方法」。像這邊介紹的「梯度下降法 (Gradient Descent)」就是一個基於「損失函數(loss function)」的值去「修改參數的方法」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;自己的註2：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;現在機器學習可使用於「修改參數的方法」有非常多種，然而這邊只介紹最經典的「梯度下降法 (Gradient Descent)」，仍有其他好的「修改參數的方法」可以使用。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QO6pe6cJMK.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QO6pe6cJMK.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424QO6pe6cJMK_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424QO6pe6cJMK_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;「梯度下降法 (Gradient Descent)」，是一種「搜尋參數的策略」，&lt;br&gt;
他是在一個參數空間中的每個點所代表的loss上，沿著表面往下走的過程，如上圖。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們從上一節可以知道一個點表示一組參數，而一組參數能算出一個loss值(代表誤差多少)，&lt;br&gt;
我們可以將這個「loss值的計算結果」想像成「山的高度」，而對應位置就是參數的點，&lt;br&gt;
就能夠畫出像上圖的等高線圖。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424m4lSnEIxVN.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424m4lSnEIxVN.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424m4lSnEIxVN_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424m4lSnEIxVN_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;然而我們通常不可能把所有的loss都計算出來，我們頂多知道要評估哪個點時，&lt;br&gt;
才會去計算那一個點的loss，例如說我們可能只知道像上圖的兩個點。&lt;/p&gt;
&lt;p&gt;但即使如此，我們仍然要知道接下來我們要往哪裡移動，才能找到最小值。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;還記得「最小化loss」是我們的訓練目標嗎?&lt;br&gt;
另外我們所謂的「修正模型參數」，也就等同於「修正點的位置」，&lt;br&gt;
那「最小的loss」會在這個像山的圖的哪邊呢?&lt;br&gt;
當然是山谷的地方，所以上面才說「梯度下降法」像是「沿著表面往下走的過程」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424h2WRQlRKR9.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424h2WRQlRKR9.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424h2WRQlRKR9_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424h2WRQlRKR9_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們把這個問題稍微拆解成兩個不同卻同樣重要的問題。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我應該往哪個方向移動?&lt;/li&gt;
&lt;li&gt;我應該要走多遠?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;現在我們先做個簡單的假設，我們先「固定我們走一步的移動距離」，&lt;br&gt;
「走一步的移動距離」又稱為，我們只討論我們「該往哪個方向移動」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424SwRUIBXaXn.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424SwRUIBXaXn.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424SwRUIBXaXn_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424SwRUIBXaXn_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;而這使得我們能得到上述的簡單演算法。&lt;/p&gt;
&lt;p&gt;當 loss &amp;gt; 某一個很小的常數(epsilon)時，我們先計算方向，&lt;br&gt;
然後對於模型中的參數(parameter)，&lt;br&gt;
設定新的值為我們現在的點加上【往我們要的方向「走幾步」乘上「步長(「step size」)」】，&lt;br&gt;
然後針對新的點計算新的loss。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424RatNrL7Mvv.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424RatNrL7Mvv.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424RatNrL7Mvv_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424RatNrL7Mvv_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們可以用地形圖或等高線圖的概念去想，&lt;br&gt;
等高線上的每一條線代表一定的深度。&lt;br&gt;
線與線的距離越近，表示那段越陡峭。&lt;/p&gt;
&lt;p&gt;就像上面這張圖的每一個點，我們可以從點與點之間看出點移動的方式。&lt;br&gt;
這就是一個從頂部邊緣開始漸漸往下走，直到走到最終的最小值。&lt;/p&gt;
&lt;p&gt;另外一個可以注意的點是：因為我們現在固定步長(「step size」)，所以每個點之間的距離是一樣的。&lt;br&gt;
我們再來試著想一個問題，如果步長(「step size」)太小，我們的訓練會花很多時間。&lt;br&gt;
但我們還是能夠保證能找到「可能的最小值」，&lt;br&gt;
這裡會說是「可能的最小值」是因為「最小值可能不只一個」，後面我們會再討論。&lt;/p&gt;
&lt;p&gt;自己的註1：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果步長(「step size」)太小，我們的訓練會花很多時間。&lt;br&gt;
這句話也可以想像為走一步的距離小，走道目標的時間就會長。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;自己的註2：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;另外「最小值可能不只一個」，是因為這張圖只有一個山谷。&lt;br&gt;
但想想現實生活中的山谷也應該不是只有一個吧? 這裡也是一樣的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424WXxyCdysid.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424WXxyCdysid.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424WXxyCdysid_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424WXxyCdysid_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;br&gt;
(如上面這張圖，從開始點到走到山谷，步長(「step size」)越小，到山谷花的時間自然就要越長)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424oCsPfuicRn.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424oCsPfuicRn.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424oCsPfuicRn_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424oCsPfuicRn_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;既然我們說步長(「step size」)越小，花的時間越長，&lt;br&gt;
那我們走大步一點總會比較快了吧? 然而事情也沒有這麼順利。&lt;/p&gt;
&lt;p&gt;如果步長(「step size」)太大，你有可能從loss表面的其中一面甚至直接跳到另外一面，&lt;br&gt;
甚至有可能整個直接跳出這個山谷中，然後到了全新未知的地方，如上圖。&lt;/p&gt;
&lt;p&gt;因為這個原因，步長(「step size」)太大，很有可能導致ML模型模辦法收斂。&lt;/p&gt;
&lt;p&gt;自己的註1：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;可以想像成，人走一個超級大步，連山谷都跨出去都有可能的那麼大步。(現實中可能有點扯啦XD)&lt;br&gt;
可以想像成巨人之類的XDDD，總之太大步也不行，&lt;br&gt;
有可能直接跨出山谷，或跨到山谷的另外一面。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;自己的註2：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這裡突然提到「收斂」一詞，其實我們確實在找谷底的過程就是在做「收斂」的動作，&lt;br&gt;
「當抵達谷底時」=「收斂完成」=「找到最小的loss」=「&lt;strong&gt;完成學習目標&lt;/strong&gt;」&lt;br&gt;
不能收斂的原因就是跟上面所說一樣，走太大步了! 谷底都被跨過了! 找不到谷底了!&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424UPbZf74JaR.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424UPbZf74JaR.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424UPbZf74JaR_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424UPbZf74JaR_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;從上面的例子我們就可以知道，我們應該要指定一個剛剛好的步長(「step size」)，&lt;br&gt;
不可以太大、也不可以太小。&lt;br&gt;
但想要找到這個剛剛好的值，似乎是沒那麼容易?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424WuxdDIjmE7.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424WuxdDIjmE7.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424WuxdDIjmE7_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424WuxdDIjmE7_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們觀察左邊的圖與右邊的圖，&lt;br&gt;
我們都給這兩張圖設定一樣的步長(「step size」)，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左邊的圖沒問題。&lt;/li&gt;
&lt;li&gt;但在右邊的圖中，一開始的移動也許還可以，但我們看到在接近山谷時，&lt;br&gt;
這個我們設定的步長卻讓他一腳跨過了山谷，造成了訓練失敗。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以從上面例子我們知道一個固定的步長(「step size」)，&lt;br&gt;
似乎沒辦法適用於所有的ML模型，那我們該怎麼改變步長(「step size」)呢?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ocOh5e4okK.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ocOh5e4okK.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424ocOh5e4okK_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424ocOh5e4okK_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們這裡用一些斜率與曲線變化的速率，&lt;br&gt;
使我們對步長(「step size」)與方向(「direction」)更有概念。&lt;/p&gt;
&lt;p&gt;我們看上圖，圖下方表示圖上方圖曲線(此曲線就是loss的變化曲線)的各點斜率值，&lt;br&gt;
我們發現值較大的地方通常比值較小的地方離底部更遠。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(這裡的值指的是絕對值之後的值，也就是說下圖負越多或正越多離底部越遠。)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果「斜率值越小」，表示我們「快要到底部了」(「要走一小步」)&lt;/li&gt;
&lt;li&gt;如果「斜率值越大」，表示我們「離底部還很遠」(「要走一大步」)&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;另外再注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果「斜率是負」，表示我們的「「谷底在右手邊」(「向右找最小值」)&lt;/li&gt;
&lt;li&gt;如果「斜率是正」，表示我們的「谷底在左手邊」(「向左找最小值」)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424IOp91NWHsG.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424IOp91NWHsG.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424IOp91NWHsG_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424IOp91NWHsG_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們換一個點看，例如點B，&lt;br&gt;
他有「「正的斜率」」，告訴我們要「「向左找最小值」」，&lt;br&gt;
另外他的「「斜率值很大」」，告訴我們「「要走一大步」」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424tmBFIyd06g.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424tmBFIyd06g.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424tmBFIyd06g_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424tmBFIyd06g_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們再換另一個點看，例如點C，&lt;br&gt;
他有「「正的斜率」」，告訴我們要「「向左找最小值」」，&lt;br&gt;
另外他的「「斜率值很小」」，告訴我們「「要走一小步」」，以避免走過頭。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204241oV3BHJ399.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204241oV3BHJ399.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204241oV3BHJ399_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204241oV3BHJ399_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】21 - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們現在就將我們的一開始所說的「固定的步長(「step size」)」，&lt;br&gt;
用一個新函數「computeDerivative」來取代掉，&lt;br&gt;
同時這個函數也能夠同時替我們決定「要前進的方向(derivative)」&lt;br&gt;
我們將原本的點減掉「loss值的偏微分」，以獲得新的點。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;也就是說，我們對loss值偏微分，依照剛剛上面的概念，&lt;br&gt;
我們能同時獲得「應該前進的方向」與「要走多遠」。&lt;br&gt;
啊對了，這方法就叫做「梯度下降法 (Gradient Descent)」，&lt;br&gt;
這邊就已經介紹完了XDD，梯度就是指「loss的偏微分」，下降就是「找谷底」。&lt;br&gt;
「loss的偏微分」：&lt;code&gt;y&lt;/code&gt;是「loss值」，偏微的對象&lt;code&gt;x&lt;/code&gt;是所有模型內的參數(「parameter」)，&lt;br&gt;
可以參考更上方的二維圖：「y反應loss值的大小，而x反應的是參數所在位置。」&lt;br&gt;
而上圖中的點也可以注意他的變化：「該走快時走很快，該走慢時走很慢，且走的方向很正確。」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們似乎找到了一個非常好的方法，&lt;br&gt;
他能幫我們找到合適的步長(「step size」)與要前進的方向(direction)，&lt;br&gt;
但這樣就沒有問題了嗎?&lt;/p&gt;
&lt;p&gt;以經驗來說，ML的種種問題集之中，我們所能建的loss表面，&lt;br&gt;
這個算法通常會花費較多的時間，可能會找到次小值而非最小值，甚至是沒有完成。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;「「花費較多的時間」」：「梯度下降法 (Gradient Descent)」相對比較新的算法來說，確實較慢，但並非不能用(下面也有提到XD)&lt;/li&gt;
&lt;li&gt;「「找到次小值而非最小值」」：這確實是常見問題，我們可以想像等高線上有很多山谷，我們從找到第一個點時，就會開始往一個山谷的谷底直直前進。然而，如果這個山谷不是全部山谷最深的，那我們就找不到最深的山谷。不過目前也已經有新方法能解決這個搜索的問題。&lt;/li&gt;
&lt;li&gt;「「沒有完成」」：有時候花費時間太長，而且特別是在接近底部的時候，可以想像一個問題，我們在做「y = 1/x」的畫圖時，那種趨近x軸卻永遠碰不到x軸的感覺(y無限接近0, x無限增加)，收斂的感覺也很像這樣，一直無限接近，但遲遲沒有到。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但「梯度下降法 (Gradient Descent)」仍然是一個常被使用的方法，&lt;br&gt;
這也表示像上述可能會出現問題的資料集，我們往往很少會碰到。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10218980&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 21】 Google ML - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1071
Post Date: 2019-09-22 01:11:56
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/loss-functions/</link>
        <pubDate>Sat, 21 Sep 2019 01:06:29 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/loss-functions/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424y6sF5gs5H8.png" alt="Featured image of post 【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;而今天的文章我們就要來介紹所謂的「損失函數(Loss Functions)」的概念。&lt;/p&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Optimization」
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Defining ML Models
&lt;ul&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;li&gt;Introducing the Natality Dataset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Introducing Loss Functions」&lt;/li&gt;
&lt;li&gt;Gradient Descent
&lt;ul&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;li&gt;Troubleshooting a Loss Curve&lt;/li&gt;
&lt;li&gt;ML Model Pitfalls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TensorFlow Playground
&lt;ul&gt;
&lt;li&gt;Lab: Introducing the TensorFlow Playground&lt;/li&gt;
&lt;li&gt;Lab: TensorFlow Playground - Advanced&lt;/li&gt;
&lt;li&gt;Lab: Practicing with Neural Networks&lt;/li&gt;
&lt;li&gt;Loss Curve Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Performance Metrics
&lt;ul&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;li&gt;Confusion Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-introducing-loss-functions&#34;&gt;1. Introducing Loss Functions&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在前面的章節中，我們定義的ML模型內的參數 「parameters」 與 「hyperparameters」，&lt;br&gt;
並介紹了 linear models 裡面的 「parameters」 大概會做什麼運算。&lt;/p&gt;
&lt;p&gt;然後我們就要討論如何去最佳化這些在ML模型中的「parameters」，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10217666&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 19】&lt;/a&gt; 中，我們曾經提過在數據集不大時，可以使用的統計方法。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;後來我們提到可以在參數空間(parameter space)試著搜尋最佳參數，&lt;br&gt;
但要「比較每個參數的好壞」，我們會需要一個「判定的準則」。&lt;/p&gt;
&lt;p&gt;今天我們就是要來細講這個「判定的準則」，&lt;br&gt;
我們稱這個準則為「損失函數(loss functions)」，&lt;br&gt;
這個函數就是用來幫助依照現在ML模型(裡面參數「parameters」)的預測結果，&lt;br&gt;
做好壞的評估，並且他會以「數值化」的方式告訴我們有多好/壞。&lt;/p&gt;
&lt;h4 id=&#34;11-regression-problems回歸問題-的損失函數&#34;&gt;1.1 「regression problems(回歸問題)」 的損失函數&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424HNA2zBdmC1.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424HNA2zBdmC1.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424HNA2zBdmC1_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424HNA2zBdmC1_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們將目前所預測的值(prediction)與真實數據(「label」)直接比較差多少，&lt;br&gt;
我們稱之為「誤差(「error」)」，我們可參考上圖。&lt;/p&gt;
&lt;p&gt;但在每次訓練中，我們有非常多組參考資料(「example」)，&lt;br&gt;
我們會得到一堆誤差(「error」)，&lt;br&gt;
我們需要去思考該怎麼組合這些數據。&lt;/p&gt;
&lt;li&gt;最簡單的方法，就是直接加總，例如使用sum。
&gt; 然而，我們想一個問題，如果直接加總的話，正值與負值會被抵銷，
&gt; 例如誤差組合：(+100,-100)與(0,0)，sum值相同，但代表意義相同?!
&gt; 顯然，這方法存在問題。&lt;/li&gt;
&lt;p&gt;因此，為了解決上述問題，我們應該要找一個更具代表性的&lt;br&gt;
能象徵我們預測的值(prediction)與真實數據(「label」)的算法，&lt;br&gt;
而這算法不會使得「誤差(「error」)」之間相互抵消。&lt;/p&gt;
&lt;li&gt;那「誤差(「error」)」的絕對值之和呢? 
google只有提到會有問題，沒關係我自己來補充註：
&lt;blockquote&gt;
&lt;p&gt;這方法稱作「MAE(Mean absolute error)」 - 平均絕對值誤差，這方法是合理的，&lt;br&gt;
但會有「在等於0時」不可微分的問題(這個可以自己畫圖或看以下參考資料)&lt;br&gt;
不可微分會有什麼問題? 簡單來說，我們會沒辦法透過微分決定ML模型的修正方向。&lt;br&gt;
但完全不能使用嗎? 倒也不完全是不能用，他有它的長處，但這邊再談下去就太多了，&lt;br&gt;
★就留個可參考的資料給有興趣的人：&lt;a class=&#34;link&#34; href=&#34;https://medium.com/@chih.sheng.huang821/%E6%A9%9F%E5%99%A8-%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92-%E5%9F%BA%E7%A4%8E%E4%BB%8B%E7%B4%B9-%E6%90%8D%E5%A4%B1%E5%87%BD%E6%95%B8-loss-function-2dcac5ebb6cb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;機器/深度學習: 基礎介紹-損失函數(loss function)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
- 我們常用的方法：「MSE(Mean Squared Error)」&lt;/blockquote&gt;
&lt;p&gt;「MSE(Mean Squared Error)」的算法是從我們的所有數據中，&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;拿預測的值(predictd value)與真實數據(labeled value)相減&lt;/li&gt;
&lt;li&gt;所有的相減值皆平方(避免誤差正負相消)，並取總和&lt;/li&gt;
&lt;li&gt;再除以總數量平均&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;MSE方法計算結果是很值得參考的，確實很適合作為我們的 loss function。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;但MSE方法仍然有個小問題，&lt;strong&gt;在「單位的解釋」上我們有點難以解釋數據&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;例1：計算「體重」誤差，請問「公斤的平方」意義是?&lt;br&gt;
例2：計算「金錢」誤差，請問「美元的平方」意義是?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;因此，我們會採用「MSE(Mean Squared Error)的平方根」，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 「RMSE(Root Mean Squared Error)」 以獲得我們能解釋的單位。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：「MSE(Mean Squared Error)」在「數值」上仍然具有誤差代表性，並非不能使用。&lt;br&gt;
而使用「RMSE(Root Mean Squared Error)」只是更能解釋「數值」量的意義(因為有單位)。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ZLgYqCzufr.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ZLgYqCzufr.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424ZLgYqCzufr_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424ZLgYqCzufr_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性&#34;  &gt;&lt;br&gt;
(RMSE的算法，少做開根號的動作即為MSE。)&lt;br&gt;
(圖中&lt;code&gt;ŷ&lt;/code&gt;表示我們預測的值(predictd value)、&lt;code&gt;y&lt;/code&gt;表示真實數據(「labeled value」))&lt;/p&gt;
&lt;p&gt;當「RMSE(Root Mean Squared Error)」的數值越大，同時也能表示我們預測的表現越差。&lt;br&gt;
所以訓練我們要做的事情就是「最小化「RMSE(Root Mean Squared Error)」」。&lt;/p&gt;
&lt;p&gt;現在我們找到了一個方法，能幫助我們在參數空間(parameter space)中衡量參數(parameter)的好壞。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;記得：參數(parameter)使用於我們的ML模型中，也就是我們線性模型(linear model)中的參數。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424fP4dMRtaFD.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424fP4dMRtaFD.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424fP4dMRtaFD_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424fP4dMRtaFD_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們稍微比較上面的的兩張圖，這是兩張散佈圖(資料集為&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10217666&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 19】&lt;/a&gt;的嬰兒資料)，&lt;br&gt;
我們只看39歲以上的母親並畫上回歸線，&lt;br&gt;
視覺上我們非常難看出哪條線畫的比較好。&lt;br&gt;
這就是為何我們要決定我們的「損失函數(loss functions)」，&lt;br&gt;
他可以數值化且具體的指出哪一條線比較好，&lt;br&gt;
於是我們使用我們剛剛決定的「損失函數(loss functions)」：「RMSE(Root Mean Squared Error)」&lt;/p&gt;
&lt;p&gt;我們發現左邊的模型目前的RMSE值為145、右邊的模型目前的RMSE值為149，&lt;br&gt;
因此，透過「損失函數(loss functions)」我們知道左側的「目前模型訓練的結果比較好」。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「目前模型訓練的結果比較好」：表示有較好的「weight」與「bias」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;12-classification-problems分類問題-的損失函數&#34;&gt;1.2 「classification problems(分類問題)」 的損失函數&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424mOVdOyjlVF.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424mOVdOyjlVF.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424mOVdOyjlVF_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424mOVdOyjlVF_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性&#34;  &gt;&lt;br&gt;
(用「RMSE」預測分類問題的結果。下方內容有圖片解釋。)&lt;/p&gt;
&lt;p&gt;但我們發現有個問題：「RMSE」作為「損失函數(loss functions)」，&lt;br&gt;
在「線性回歸問題(linear regression problems」)的表現很好，&lt;br&gt;
在「分類問題(classification problems」)似乎不行。&lt;/p&gt;
&lt;p&gt;我們先回到分類問題的本身，還記得當初我們定義的分類問題，&lt;br&gt;
他的結果是將目標分類。也就是我們的「label」會是一個「類別」而「非連續數」。&lt;br&gt;
我們拿之前提到的「編碼(encode)」為例，&lt;br&gt;
透過「編碼(encode)」，我們能將我們預測的類別「以「0或1」的方式」表示。&lt;/p&gt;
&lt;p&gt;我們回來解釋上方的圖，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;X軸表示我們的預測結果(prediction)&lt;/li&gt;
&lt;li&gt;Y軸表示(loss)，表示預測值(prediction)與實際值(「label」)的RMSE誤差&lt;/li&gt;
&lt;li&gt;藍色為預測結果是0所畫出來的線&lt;/li&gt;
&lt;li&gt;綠色為預測結果是1所畫出來的線&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這曲線出了什麼問題呢?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們可以看見當目標target(「label」)為0時，預測結果1的比預測結果0.5的糟糕三倍&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這邊比較難懂，自己稍微補充解釋一下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;例如明明是正確結果是0，我們預測1，loss自然就是全錯 = 1&lt;br&gt;
明明是正確結果是0，我們預測0，loss自然就是全對 = 0&lt;br&gt;
明明是正確結果是0，我們預測0.5，loss是「算誤差總共的RMSE」約等於 0.3&lt;br&gt;
(很多的「0.5-0」然後平方、除總數、開根)&lt;br&gt;
這也是為什麼明明是正確結果是1，我們預測0.5，loss是也等於 0.3&lt;br&gt;
因為也是(很多的「0.5-1」然後平方、除總數、開根)，一樣吧！&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這結果說明了什麼? 有些糟糕的預測應該有更強的懲罰，而且這預測完全不夠直覺。&lt;br&gt;
所以證明我們會需要一個新的「損失函數(loss functions)」，&lt;br&gt;
針對我們的「classification problems(分類問題)」能夠有更直覺的懲罰。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(自己的註：「直覺的懲罰」的概念要比較下圖比較好懂，下面會解釋。)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424p49iL4vqTg.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424p49iL4vqTg.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424p49iL4vqTg_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424p49iL4vqTg_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性&#34;  &gt;&lt;/p&gt;
&lt;p&gt;「交叉熵(Cross Entropy)」是最常使用於分類問題的損失函數(loss functions)。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「交叉熵(Cross Entropy)」又有個別名「log loss」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;上圖我們做一個與用「RMSE預測分類問題」的結果類似的圖，&lt;br&gt;
我們使用「交叉熵(Cross Entropy)」做為新的「損失函數(loss functions)」。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;特別注意：圖中顯示「交叉熵(Cross Entropy)」會強烈處罰錯誤的預測。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這邊比較難懂，自己稍微補充解釋一下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;與上圖比較中，如果以藍線來說(真實label為1)，預測結果如果是0，&lt;br&gt;
看藍色取線的左側，套一句&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10215946&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 17】&lt;/a&gt;的內容，有沒有一種預測錯就非常完蛋的感覺?&lt;br&gt;
與上面「RMSE」相比，處罰嚴重太多了，分類問題正是需要在分類錯誤時有最嚴重的懲罰，&lt;br&gt;
我之前所說的「分類正確沒事，分類錯誤非常完蛋!!! 只要有分錯邊，誤差瘋狂上升」，正是類似這樣的概念~。&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;我們再拿我之前&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10215946&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 17】&lt;/a&gt;做的表格看一下、順便複習一下吧：&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;★ 均方差(mean squared error) 與 交叉熵(cross-entropy) 的比較★&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;常用的計算誤差方法&lt;/th&gt;
  &lt;th&gt;**均方差(mean squared error)**&lt;/th&gt;
  &lt;th&gt;**交叉熵(cross-entropy)**&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;使用問題種類&lt;/td&gt;
  &lt;td&gt;「regression problem」(回歸問題)&lt;/td&gt;
  &lt;td&gt;「classification problem」(分類問題)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練目標&lt;/td&gt;
  &lt;td&gt;最小化「均方差」&lt;/td&gt;
  &lt;td&gt;最小化「交叉熵」&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;一維畫線(解)依據&lt;/td&gt;
  &lt;td&gt;只要能使最小距離就好(平方最小)&lt;/td&gt;
  &lt;td&gt;線畫下去就是要分好兩類資料，不可以有人跑錯邊(誤差會指數成長)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;我自己的理解方式(不完全正確)&lt;/td&gt;
  &lt;td&gt;計算距離，所以不管在線的哪邊沒差，離線平均都近一點就能最小惹&lt;/td&gt;
  &lt;td&gt;分類正確沒事，分類錯誤非常完蛋!!! 只要有分錯邊，誤差瘋狂上升&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;完整內容請參考：&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10215946&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 17】 Google ML - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們下面來舉一個實際的例子。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204241rqp93GFeU.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204241rqp93GFeU.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204241rqp93GFeU_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204241rqp93GFeU_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性&#34;  &gt;&lt;/p&gt;
&lt;p&gt;上面這個就是「交叉熵(Cross Entropy)」的公式，&lt;br&gt;
簡單拆解一下我們可以說分成「兩大terms」，&lt;br&gt;
有趣的是這個公式每次「只會有一個term」有反應。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;自己的註：「反應」等於「會產生loss的值」&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;「Positive term」：當結果是1時有反應。&lt;/li&gt;
&lt;li&gt;「Negative term」：當結果是0時有反應。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你問為什麼嗎? 自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;因為「0乘任何東西都是0，在Positive term出現&lt;code&gt;0&lt;/code&gt;相乘就沒反應了。」&lt;br&gt;
然後也是因為「0乘任何東西都是0，在Negative term出現1相乘就沒反應了(因為「1-1=0」)。」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sjLQ1LnOgS.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sjLQ1LnOgS.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424sjLQ1LnOgS_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424sjLQ1LnOgS_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性&#34;  &gt;&lt;br&gt;
這裡我們有一張表，正是一個圖片分類的問題，它秀出兩種已經被encode的labels，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這裡的encode方法為「有人臉的為1，沒有人臉的為0」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;並且有我們的預測結果(predictions)與實際結果(label)，看目前預測的結果似乎不錯。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424hqpYs8iUC5.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424hqpYs8iUC5.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424hqpYs8iUC5_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424hqpYs8iUC5_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們先看上方的example，因為它真的是人臉，所以label=1，&lt;br&gt;
而我們預測0.7，我們發現後面的「Negative term」消失了(因為「1-1=0」)，&lt;br&gt;
而只剩下 「Positive term」 提供 loss。&lt;/p&gt;
&lt;p&gt;我們在看下方的example，因為它不是人臉，所以label=0，&lt;br&gt;
而我們預測0.7，我們發現前面的「Positive term」消失了(因為「0乘任何東西都0」)，&lt;br&gt;
而只剩下 「Negative term」 提供 loss。&lt;/p&gt;
&lt;p&gt;稍微計算一下結果，我們得到的Cross Entropy Loss = 0.13&lt;br&gt;
似乎是不錯的數值，顯示我們的模型結果不錯，然而我們來做個比較會更明顯。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424dWh1ncIk8z.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424dWh1ncIk8z.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424dWh1ncIk8z_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424dWh1ncIk8z_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性&#34;  &gt;&lt;/p&gt;
&lt;p&gt;如果我們的模型沒有訓練好(做出好的預測)，結果會是多少?&lt;/p&gt;
&lt;p&gt;我們將下方的預測結果改為 0.8，也表示著下方結果目前是被錯誤預測(分類)的，&lt;br&gt;
我們計算Cross Entropy Loss = 0.42，Loss有增加，&lt;br&gt;
別忘了&lt;strong&gt;我們的訓練目標是要將「最小化Loss」&lt;/strong&gt;，&lt;br&gt;
所以確實增加的Loss不是接近我們要的訓練結果。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424y6sF5gs5H8.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424y6sF5gs5H8.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424y6sF5gs5H8_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424y6sF5gs5H8_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】20 - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy 的計算方法與特性&#34;  &gt;&lt;/p&gt;
&lt;p&gt;因此，上面介紹的方法就是我們如何在參數空間(parameter space)中比較參數的好壞，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;自己再註一下：參數(parameter)指的就是 「weight」 與 「bias」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;不論是使用 「RMSE(Root Mean Squared Error)」 作為回歸問題的Loss Functions，&lt;br&gt;
或是使用 「交叉熵(Cross Entropy)」 作為分類問題的Loss Functions，&lt;br&gt;
要記住我們的目標是找出最佳的參數，&lt;strong&gt;Loss Functions是我們參考好壞的依據&lt;/strong&gt;，&lt;/p&gt;
&lt;p&gt;但知道如何衡量好壞後，接下來我們要講的是如何去尋找這些點?&lt;br&gt;
這個我們會在下一章「梯度下降法 (Gradient Descent)」提到。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10218158&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 20】 Google ML - Lesson 6 - 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy的計算方法與特性&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;medium - &lt;a class=&#34;link&#34; href=&#34;https://medium.com/@chih.sheng.huang821/%E6%A9%9F%E5%99%A8-%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92-%E5%9F%BA%E7%A4%8E%E4%BB%8B%E7%B4%B9-%E6%90%8D%E5%A4%B1%E5%87%BD%E6%95%B8-loss-function-2dcac5ebb6cb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;機器/深度學習: 基礎介紹-損失函數(loss function)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;medium - &lt;a class=&#34;link&#34; href=&#34;https://towardsdatascience.com/understanding-binary-cross-entropy-log-loss-a-visual-explanation-a3ac6025181a&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Understanding binary cross-entropy / log loss: a visual explanation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1068
Post Date: 2019-09-21 01:06:29
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】19 - Lesson 5 - 接下來幾天作為範例的「訓練資料集介紹」、範例「資料集訓練前分析」(順便補上整個ML訓練流程，作為系列文章中的訓練階段參考)</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/training-data/</link>
        <pubDate>Fri, 20 Sep 2019 00:51:23 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/training-data/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424T0b8Gz1a65.png" alt="Featured image of post 【Google ML】19 - Lesson 5 - 接下來幾天作為範例的「訓練資料集介紹」、範例「資料集訓練前分析」(順便補上整個ML訓練流程，作為系列文章中的訓練階段參考)" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;而今天的文章我們也會先介紹並且稍微分析一下，接下來我們要用來作為訓練範例的資料集。&lt;/p&gt;
&lt;p&gt;今天我們會繼續 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 的第三章節~&lt;/p&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Defining ML Models」
&lt;ul&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;li&gt;「Introducing the Natality Dataset」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;li&gt;Gradient Descent
&lt;ul&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;li&gt;Troubleshooting a Loss Curve&lt;/li&gt;
&lt;li&gt;ML Model Pitfalls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TensorFlow Playground
&lt;ul&gt;
&lt;li&gt;Lab: Introducing the TensorFlow Playground&lt;/li&gt;
&lt;li&gt;Lab: TensorFlow Playground - Advanced&lt;/li&gt;
&lt;li&gt;Lab: Practicing with Neural Networks&lt;/li&gt;
&lt;li&gt;Loss Curve Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Performance Metrics
&lt;ul&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;li&gt;Confusion Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-introducing-the-natality-dataset&#34;&gt;1. Introducing the Natality Dataset&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Defining ML Models
&lt;ul&gt;
&lt;li&gt;Introducing the Natality Dataset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;決定訓練資料集&#34;&gt;決定訓練資料集&lt;/h4&gt;
&lt;p&gt;簡單來說這邊就是要介紹接下來我們要作為示範訓練的資料集了，&lt;br&gt;
資料集很重要的原因在於它可以直接影響我們要使用什麼「ML模型」。&lt;/p&gt;
&lt;p&gt;我們這次要訓練的是一些關於新生兒的資料集。&lt;/p&gt;
&lt;p&gt;問題情境：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;有些嬰兒剛出生時會需要緊急護理，然而能提供這樣護理的醫生卻不多，&lt;br&gt;
我們希望能夠妥善的分配醫生，使得真的有需求的嬰兒能得到需要的護理。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們將這問題轉換為ML問題：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們想預測的目標是，預測哪些嬰兒會需要醫生的照顧&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;再來我們來思考一下什麼東西能作為我們的參考的依據(「feature」)，&lt;br&gt;
什麼東西能作為我們的訓練目標(「label」)，&lt;br&gt;
假設這裡有三種資料：母親的年齡, 嬰兒的生日, 嬰兒的體重，哪些是能用的呢?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Aiels1Lc6u.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Aiels1Lc6u.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Aiels1Lc6u_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Aiels1Lc6u_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】19 - Lesson 5 - 接下來幾天作為範例的「訓練資料集介紹」、範例「資料集訓練前分析」(順便補上整個ML訓練流程，作為系列文章中的訓練階段參考)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們在這邊稍微題外話一下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;有些專業領域的知識，會告訴我們某些資料是不可能相關的，&lt;br&gt;
例如(我任意舉例的)：能不能用一個人的身高、體重預測那個人的年齡?&lt;br&gt;
我們應該都知道這個相關性是薄弱的，但在ML模型裡面我們就是想試著找看看關聯性。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;但另外一個預測的重點，那就是這些資料要在我們想預測時，資料是「可取得的」。&lt;/p&gt;
&lt;p&gt;回到剛剛上面問題的答案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;嬰兒的生日：我們必須要等嬰兒出生才能知道的資料，所以就是預測時還不可取得的資料。&lt;/li&gt;
&lt;li&gt;嬰兒的體重：嬰兒的體重恰好就是嬰兒是否需要照護的重要指標之一。&lt;/li&gt;
&lt;li&gt;母親的年齡：雖然不確定有沒有相關性，但母親的年齡確實是我們可以觀測的資料。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;選擇好我們要使用的資料後，我們來想想我們剛剛所定義的問題：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們想預測的目標是，預測哪些嬰兒會需要醫生的照顧，&lt;br&gt;
也就是預測「寶寶的健康」，嬰兒的體重是「寶寶的健康」的參考指標之一&lt;br&gt;
我們就先將我們想預測的目標(「label」)訂為實際數據的預測「嬰兒的體重」，&lt;br&gt;
而「母親的年齡」可以做為我們參考的依據(「feature」)，&lt;br&gt;
這個問題我們要預測的是「嬰兒的體重」，為連續值，&lt;br&gt;
所以這是「「回歸問題(regression problem)」」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;再把資料丟進ML模型之前，我們通常還要先看一下這個資料是否可能存在某些特性，而非全部雜訊(noise)。&lt;br&gt;
我們先觀察一下數據分布，我們將「母親的年齡」與「嬰兒的體重」做成了散佈圖。&lt;/p&gt;
&lt;p&gt;而這個資料並不需要把全部的資料都拿來丟，我們只要「取樣(sample)」即可：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一方面是，全部的資料都丟，在計算上是不太合適的(太多資料)&lt;/li&gt;
&lt;li&gt;另外一方面是，如果丟入大量資料，除了製圖困難，我們也很難解釋他&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424I8LBOTwCNi.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424I8LBOTwCNi.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424I8LBOTwCNi_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424I8LBOTwCNi_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】19 - Lesson 5 - 接下來幾天作為範例的「訓練資料集介紹」、範例「資料集訓練前分析」(順便補上整個ML訓練流程，作為系列文章中的訓練階段參考)&#34;  &gt;&lt;br&gt;
(這個資料來自BigQuery中的公開資料，為美國政府收集的natality data)&lt;/p&gt;
&lt;p&gt;稍微注意一下，這些資料似乎有小的正相關性。&lt;br&gt;
這邊我們還可以比較另外一張圖，我們一樣使用這兩種資料作為座標，&lt;br&gt;
但這次我們不做散佈圖，我們將資料分成各個資料組的累積量。&lt;/p&gt;
&lt;p&gt;先稍微比較一下兩者的特色：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;圖的種類&lt;/th&gt;
  &lt;th&gt;「散佈圖(scatter plot)」&lt;/th&gt;
  &lt;th&gt;「資料組的累積圖」&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;介紹&lt;/td&gt;
  &lt;td&gt;使用一個個資料點呈現的方式，標記在圖上&lt;/td&gt;
  &lt;td&gt;使用資料累積的量所畫出的圖&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;資料取樣&lt;/td&gt;
  &lt;td&gt;需要「取樣(sample)」，所以不會用到全部的資料&lt;/td&gt;
  &lt;td&gt;使用全部的資料累積值，所以不需要取樣&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;代表性樣本&lt;/td&gt;
  &lt;td&gt;要擔心「非代表性樣本」的風險(指比較特殊的資料，不夠有代表性)&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;製圖結果&lt;/td&gt;
  &lt;td&gt;每次製圖結果可能不同(因為取樣)&lt;/td&gt;
  &lt;td&gt;每次製圖結果皆相同&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424v86T66c3bw.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424v86T66c3bw.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424v86T66c3bw_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424v86T66c3bw_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】19 - Lesson 5 - 接下來幾天作為範例的「訓練資料集介紹」、範例「資料集訓練前分析」(順便補上整個ML訓練流程，作為系列文章中的訓練階段參考)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這張圖是由一共22GB的資料所繪成，我們試著觀察一下裡面的關係，&lt;br&gt;
這時我們就會發現，我們看見了一些散佈圖中看不出來的資訊。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們發現，寶寶的體重似乎在母親年齡30歲左右達到最大值，&lt;br&gt;
而隨著母親年齡的增長或減小，嬰兒體重逐漸減少。&lt;br&gt;
這表示這組資料存在著「非線性」的關係，且在散佈圖中是觀察不出的關係。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;但我們想基於昨天提到的線性模型(linear model)而分析他，似乎看起來不是那麼容易。&lt;br&gt;
事實上，我們用線性模型(linear model)想去建立一個非線性函數(non-linear function)的模型，&lt;br&gt;
這樣的例子有個名詞叫做「欠擬合(underfitting)」。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;也許你可能會問為什麼不使用更複雜的模型來解這個問題? 這是因為這邊作為教學示範的原因。&lt;br&gt;
而其他複雜的模型我們之後也會討論到，此外我們還會討論「過度擬合(overfitting)」的概念。&lt;br&gt;
但簡單來說，隨著「模型的複雜度」增加，「訓練過程的失敗風險」也會增加。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/2012042421rFncvnib.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/2012042421rFncvnib.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/2012042421rFncvnib_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/2012042421rFncvnib_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】19 - Lesson 5 - 接下來幾天作為範例的「訓練資料集介紹」、範例「資料集訓練前分析」(順便補上整個ML訓練流程，作為系列文章中的訓練階段參考)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們回到原先題目的散佈圖，我們認為母親的年齡與嬰兒的體重成些微的正相關，&lt;br&gt;
於是我們先將我們的直覺判斷，以「藍線」來模擬這個概念，&lt;br&gt;
而決定藍線之後，我們再來想思考這條線是否應該要高還是更低? 斜率是否正確?&lt;br&gt;
要怎麼樣去決定其他的線「紅、黃線」沒有比這條「藍線」好?&lt;/p&gt;
&lt;p&gt;這邊先來個題外話一下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;有學過統計的人，可能會知道有個「least squares regression」的方法，他能夠幫助我們在線型模型(linear models)中決定最佳權重(weights)，這方法在這題目中也確實可行。&lt;br&gt;
但問題在於這些解只能在「一定的數量規模」內使用，當數據量只要一大，為了解決問題使用統計方法的計算量就顯得不切實際。&lt;br&gt;
那如果統計方法不行的話，這裡該怎麼辦?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們可以使用「「gradient descent(梯度下降法)」」：&lt;/p&gt;
&lt;p&gt;我們先考慮在空間中搜尋最佳化變數，&lt;br&gt;
記得我們的線型模型(linear model)裡面有兩個變數，weight 和 bias。&lt;br&gt;
因為這兩個數字都是實數，我們可以考慮將這兩個變數的每個組合想像成是2D空間中的一個點。&lt;/p&gt;
&lt;p&gt;有這樣的想像後，我們要怎麼找到最佳解呢?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424T0b8Gz1a65.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424T0b8Gz1a65.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424T0b8Gz1a65_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424T0b8Gz1a65_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】19 - Lesson 5 - 接下來幾天作為範例的「訓練資料集介紹」、範例「資料集訓練前分析」(順便補上整個ML訓練流程，作為系列文章中的訓練階段參考)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;首先，我們要認知到，因為input是實數，所以基本上他有無限的輸入可能，&lt;br&gt;
所以以上面的圖來說，沒辦法呈現出所有的結果，&lt;br&gt;
也就是說，我們沒辦法考慮所有的組合。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(自己的註：他這邊指的是所有的weight 和 bias組合，在這張圖上)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;所以，我們採取的是找到點後，先進行計算，然後與我們training data比較&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;自己的註：比較training data的「label」與「我們預測結果」與實際的差異。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;而為了做到這件事，我們需要建立能對每個點評估「我們預測的結果」品質的方法，&lt;br&gt;
換句話說就是計算「我們預測結果」的誤差值(error)的方式，&lt;br&gt;
用一個數值來表示我們「我們預測結果」的品質，&lt;br&gt;
而這個就是我們所說的「「損失函數(loss functions)」」，下章節我們將仔細介紹。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10217666&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 19】 Google ML - Lesson 5 - 接下來幾天作為範例的「訓練資料集介紹」、範例「資料集訓練前分析」(順便補上整個ML訓練流程，作為系列文章中的訓練階段參考)&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1065
Post Date: 2019-09-20 00:51:23
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】18 - Lesson 4 - 什麼是ML模型?訓練的目標? 回歸模型(Regression model), 分類模型(Classification model)的運算</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/regression-classification-model/</link>
        <pubDate>Thu, 19 Sep 2019 00:47:47 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/regression-classification-model/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424Eh6Nsvgl5V.png" alt="Featured image of post 【Google ML】18 - Lesson 4 - 什麼是ML模型?訓練的目標? 回歸模型(Regression model), 分類模型(Classification model)的運算" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以「監督式學習(Supervised Learning)」為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;今天我們會直接進 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 的第三章節~&lt;br&gt;
第二章節剩下的歷史部分，因為我稍微想了一下內容，真的要寫起來應該可以寫成七篇文章，&lt;br&gt;
然而因為很多都是比較舊的算法，我自己因為有研究正在做，會比較想先看新的作法，&lt;br&gt;
所以我先細寫新章節的內容，一樣的，有機會我會回去補完那部分XD&lt;br&gt;
(一天都可以寫一整個算法了XD)&lt;/p&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;「Introduction to Optimization」
&lt;ul&gt;
&lt;li&gt;「Introduction」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Defining ML Models」
&lt;ul&gt;
&lt;li&gt;「Defining ML Models」&lt;/li&gt;
&lt;li&gt;Introducing the Natality Dataset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;li&gt;Gradient Descent
&lt;ul&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;li&gt;Troubleshooting a Loss Curve&lt;/li&gt;
&lt;li&gt;ML Model Pitfalls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TensorFlow Playground
&lt;ul&gt;
&lt;li&gt;Lab: Introducing the TensorFlow Playground&lt;/li&gt;
&lt;li&gt;Lab: TensorFlow Playground - Advanced&lt;/li&gt;
&lt;li&gt;Lab: Practicing with Neural Networks&lt;/li&gt;
&lt;li&gt;Loss Curve Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Performance Metrics
&lt;ul&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;li&gt;Confusion Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-introduction-to-optimization&#34;&gt;1. Introduction to Optimization&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個章節的名稱為Optimization，也就是說我們如何在訓練過程中優化我們的結果。&lt;/p&gt;
&lt;p&gt;對於如何優化，我們在這的學習目標是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;評價model的表現，利用「loss functions」&lt;/li&gt;
&lt;li&gt;以loss functions作為基準的使用「Gradient Descent」演算法&lt;/li&gt;
&lt;li&gt;最佳化「Gradient Descent」演算法，使它的效率達到最高&lt;/li&gt;
&lt;li&gt;使用「Performance Metrics」作商業決策&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424D847J1pjYg.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424D847J1pjYg.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424D847J1pjYg_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424D847J1pjYg_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】18 - Lesson 4 - 什麼是ML模型?訓練的目標? 回歸模型(Regression model), 分類模型(Classification model)的運算&#34;  &gt;&lt;/p&gt;
&lt;p&gt;(ML的整個過程，在Optimization這一章節，我們會先跑其中前半的流程。)&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-defining-ml-models&#34;&gt;2. Defining ML Models&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Defining ML Models
&lt;ul&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在介紹怎麼決定ML模型之前，我們先對整個ML的整個「訓練過程」有點概念：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;註：我們在&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】- 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt; 有提過，整個ML過程會有兩個stage&lt;br&gt;
Stage1 - training&lt;br&gt;
Stage2 - inference(推理)(也有些人稱為prediction(預測))&lt;br&gt;
所以這邊的「ML的整個訓練過程」，只有指Stage1的部分，&lt;br&gt;
並不是訓練完整個ML的過程就結束了。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;★ML的整個「訓練過程」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;定義 ML models -&amp;gt; 決定模型&lt;/li&gt;
&lt;li&gt;介紹 Loss Functions -&amp;gt; 「訓練過程中」，我們評估「目前訓練當下」好壞的依據&lt;/li&gt;
&lt;li&gt;梯度下降法 (Gradient Descent) -&amp;gt; 依據評估決定訓練的修正方向&lt;/li&gt;
&lt;li&gt;使用 TensorFlow Playground -&amp;gt; 視覺化的看上述的變化過程&lt;/li&gt;
&lt;li&gt;訓練結果的表現 Performance Metrics -&amp;gt; 「訓練結束後」，&amp;ldquo;外部&amp;quot;評估我們的訓練結果如何&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那開始來介紹 ML模型 吧！&lt;/p&gt;
&lt;h4 id=&#34;20-ml模型是什麼-訓練目標是什麼&#34;&gt;2.0. ML模型是什麼? 訓練目標是什麼?&lt;/h4&gt;
&lt;p&gt;ML模型簡單說就是個數學函數，我們透過「修改參數」使等式盡量成立(接近目標)，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;自己的註：y=Ax+B, 我們去努力試出A, B是什麼 (「修改參數」指的就是修改A, B)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424h1RnzUuQXm.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424h1RnzUuQXm.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424h1RnzUuQXm_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424h1RnzUuQXm_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】18 - Lesson 4 - 什麼是ML模型?訓練的目標? 回歸模型(Regression model), 分類模型(Classification model)的運算&#34;  &gt;&lt;/p&gt;
&lt;p&gt;而在ML模型裡面，參數也有分成 「parameters」 與 「hyper-parameters」，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「parameters」 : 隨著模型訓練的過程中不斷變化的(實數)變數&lt;/li&gt;
&lt;li&gt;「hyper-parameters」 : 開始訓練前就設定好的變數，之後開始訓練也不會變。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而依照歷史的變化，線性模型(linear models)是最早被使用的ML模型，&lt;br&gt;
甚至到現在仍然是一種重要且被廣泛使用的模型。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們在ML模型中所做的事情，就是不斷調整變數(parameters)，&lt;br&gt;
使所有作為我們input的「feature」，都能透過這個模型，output吻合訓練目標「label」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;再來我們要講ML模型會有哪些種類，&lt;br&gt;
我們前兩天的辛苦介紹 Regression and Classification 這兩種問題的定義就是為了這邊使用：&lt;/p&gt;
&lt;p&gt;如果不清楚 Regression and Classification 問題是什麼與有什麼差別，&lt;br&gt;
詳細介紹可以先參考前面兩天的文，我們這裡直接拿結論的表格，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10216585&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 16】 監督式學習(Supervised Learning)中兩大問題 - Regression &amp;amp; Classification(回歸與分類)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10215946&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 17】 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;問題種類&lt;/th&gt;
  &lt;th&gt;「regression problem」(回歸問題)&lt;/th&gt;
  &lt;th&gt;「classification problem」(分類問題)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;答案(label)特性&lt;/td&gt;
  &lt;td&gt;預測的答案(label)為「連續」值&lt;/td&gt;
  &lt;td&gt;預測的答案(label)為「非連續」值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;利用資料的方式&lt;/td&gt;
  &lt;td&gt;我們使用數學函數組合不同的「features」，預測出一個「連續函數」作為我們結果的「label」&lt;/td&gt;
  &lt;td&gt;我們用「features」創造一個決策邊界，這個邊界幫助我們區分(分類)出結果「label」&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練目標&lt;/td&gt;
  &lt;td&gt;最小化「預測的結果」與「實際的結果(「label」)」的誤差&lt;/td&gt;
  &lt;td&gt;最小化「誤分類(misclassification)」的數量，也就是「預測的分類」與「實際上的分類(「label」)」的誤差要為最小。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;常用的計算誤差方法&lt;/td&gt;
  &lt;td&gt;均方差(mean squared error)&lt;/td&gt;
  &lt;td&gt;交叉熵(cross-entropy)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;學習類型&lt;/td&gt;
  &lt;td&gt;監督式學習(Supervised Learning)&lt;/td&gt;
  &lt;td&gt;監督式學習(Supervised Learning)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;使用的ML模型&lt;/td&gt;
  &lt;td&gt;「Regression model」(回歸模型)&lt;/td&gt;
  &lt;td&gt;「Classification model」(分類模型)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;我們這邊只看最後一行，回歸問題用回歸模型解，分類問題用分類模型解。(滿自然而然的吧XD)&lt;br&gt;
這邊就是要來實際講我們做了什麼「數學運算」，來解決這兩類問題。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;21-regression-model-回歸模型&#34;&gt;2.1. 「Regression model」 回歸模型&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424dwNNxdLpvj.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424dwNNxdLpvj.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424dwNNxdLpvj_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424dwNNxdLpvj_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】18 - Lesson 4 - 什麼是ML模型?訓練的目標? 回歸模型(Regression model), 分類模型(Classification model)的運算&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們將上述在ML模型中所做的事情數學化，可以簡單表示成 y = mx + b，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x是input，也就是我們參考的「feature」&lt;/li&gt;
&lt;li&gt;y是output，也就是我們訓練的目標「label」&lt;/li&gt;
&lt;li&gt;我們透過調整b(bias)、m(weight、權重)，使我們方程式能接近我們想要的結果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而這個概念示範雖然只有二維空間，但只要知道「labels」與「features」之前的關係，&lt;br&gt;
我們可以將這概念任意拓展到更高的維度，&lt;br&gt;
所有的inputs(「features」)經過我們的model，就會產生對應的outputs(「labels」)。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;也就是說，我們可能可以建立一個模型，只要給他所有的inputs(「features」)，&lt;br&gt;
他就會吐出所有你想知道的outputs(「labels」)。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;當我們增加input的維度(也就是同時輸入更多「features」)，&lt;br&gt;
我們上述所說的斜率m，也必須因此變成n維度，我們把這個m稱作「權重(weight)」&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424kDbcvYrG8X.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424kDbcvYrG8X.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424kDbcvYrG8X_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424kDbcvYrG8X_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】18 - Lesson 4 - 什麼是ML模型?訓練的目標? 回歸模型(Regression model), 分類模型(Classification model)的運算&#34;  &gt;&lt;/p&gt;
&lt;p&gt;視覺上的表示，在原本的一條線變成n維度的同時，&lt;br&gt;
這時原本我們所說的「斜率(m)」也變成了「超平面(ω, Omega)」，如上面的右圖。&lt;/p&gt;
&lt;p&gt;同時我們也思考一下，原本的式子 y = mx + b，由於此處變多維空間，&lt;br&gt;
我們改表示成 y = Xω + b，X 因為輸入變多了，所以變成多維值&lt;br&gt;
所以 ω與b 應該也要變成更高維的值，才能繼續使等式成立。&lt;/p&gt;
&lt;p&gt;自己的註：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;X 代表所有inputs(「features」)&lt;br&gt;
ω 為「權重(weight)」&lt;br&gt;
y 依然是我們訓練的目標「labels」&lt;br&gt;
b 「偏差值(bias)」，調整用的參數&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們稍微想一下，X如果變成二維向量(x1,x2)，&lt;br&gt;
output也變成多維(y1,y2)，也就是同時預測多個項目，&lt;br&gt;
先看b，b需要變成高維(b1,b2)才能維持計算等式，&lt;br&gt;
而ω也是，至少也要變成二維矩陣才能算啊!&lt;/p&gt;
&lt;p&gt;★ 自己的一些小結論：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;線性回歸模型的例子看起來比較直觀，重點就是在解 y = Xω + b 中的 ω與b，&lt;br&gt;
X(「features」)與 y(「labels」) 我們一開始都已經有了，只差解出ω與b，&lt;br&gt;
而我們所說的訓練就是在調整模型裡面的所有參數。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h4 id=&#34;22-classification-model-分類模型&#34;&gt;2.2. 「Classification model」 分類模型&lt;/h4&gt;
&lt;p&gt;分類模型相對比較沒有回歸模型那麼直覺，&lt;br&gt;
回歸模型就是找出 y = Xω + b 中的 ω與b後，我們就能用X來預測y了，&lt;br&gt;
但我們要怎麼樣用線性模型(linear model)做分類呢? 連續數字要怎麼做分類?&lt;/p&gt;
&lt;p&gt;為了討論怎麼樣將我們模型output的連續數字轉換成分類，&lt;br&gt;
我們需要將這些結果做「encode」，也就是將這些資料做成員編碼，&lt;br&gt;
來看他是不是屬於這個class的成員。&lt;/p&gt;
&lt;p&gt;最簡單的編碼方式就是二進位編碼，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;自己的註：如果你有什麼特性一類、沒有那個特性一類，&lt;br&gt;
(在&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10215946&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 17】 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&lt;/a&gt;也有用過這樣的方法。)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;當然有很多數據可能會需要分類成兩個以上，這方法依然有效，只要將每個類視為獨立的類即可。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;自己的註：例如 (A,非A)，(B,非B)、 (C,非C)，&lt;br&gt;
這邊有點小細節，獨立的類不是像之前分成 (~15%, 15%&lt;del&gt;25%, 25%&lt;/del&gt;)，&lt;br&gt;
應該後面會介紹，沒有我再自己補XD&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;使用二進位編碼還有個好處，我們能更容易的管理我們的任務，&lt;br&gt;
但以下的討論我們先以分兩類為主，這樣比較容易解釋。&lt;/p&gt;
&lt;p&gt;我們要找到一種方法，「依據二進位分類規則」找到我們的目標線，&lt;br&gt;
一個簡單的方法就是單純依靠輸出的結果。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Eh6Nsvgl5V.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Eh6Nsvgl5V.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Eh6Nsvgl5V_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Eh6Nsvgl5V_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】18 - Lesson 4 - 什麼是ML模型?訓練的目標? 回歸模型(Regression model), 分類模型(Classification model)的運算&#34;  &gt;&lt;/p&gt;
&lt;p&gt;以圖來看，這條線就像是將我們的圖片分成兩大塊，在線上方的與線下方的各一區，&lt;br&gt;
我們就稱這條線為決策邊界(decision boundary)，區隔出這兩類。&lt;br&gt;
而且，決策邊界(decision boundary)不只是描述目前的資料，&lt;br&gt;
他的目標是預測我們還沒看見的資料，&lt;/p&gt;
&lt;p&gt;而這種可以擴展預測到還沒看見的資料的特徵，我們稱之為「泛化(generalization)」，&lt;br&gt;
「泛化(generalization)」的過程對ML相當重要，我們後續也會有很多的討論。&lt;/p&gt;
&lt;p&gt;★ 自己的一些小結論：&lt;br&gt;
這段我真的看超級久&amp;hellip;&amp;hellip;，我看完「Classification model」一直在想說，&lt;br&gt;
所以你不是沒講到怎麼找到這條分類線嗎?&lt;br&gt;
後來想了大概快三小時，我才想通&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;這個階段主要只在介紹怎麼生出一條線，
就有點像我只是在「任意」決定 y=ax+b 的a,b而已，
至於怎麼「找到」(或說是「修正出」)這條線，那是後面「修正階段」的事情
&lt;/li&gt;
&lt;li&gt;原來我自己的文章版本中(現在改掉了)，我自己寫的註是
「自己的註：如果你有什麼特性就是0、沒有那個特性就是1」，
這是根據前面章節使用的方法延伸過來的，但我就是被這例子誤導，
我後來又看了無數遍影片內容才懂，原來他指的分類是，
「如果你有什麼特性一類、沒有那個特性一類」，
這個差別在哪? 也就是說當任意線被決定後(例如：y=3x+2好了)，
我們可以直接將「y &gt; 3x+2」與「y &lt; 3x+2」分成兩類，
而我一直在想是0、是1的問題才卡那麼久......真的是被誤導很久
不過想出來的感覺也滿爽的啦XD (希望我想的真的是對的XD)
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10217431&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 18】 Google ML - Lesson 4 - 什麼是ML模型？訓練的目標? 回歸模型(Regression model), 分類模型(Classification model)的運算&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1062
Post Date: 2019-09-19 00:47:47
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】17 - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/cross-entropy-mse/</link>
        <pubDate>Wed, 18 Sep 2019 00:44:34 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/cross-entropy-mse/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424rIbVu2NnRT.png" alt="Featured image of post 【Google ML】17 - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同" /&gt;&lt;p&gt;今天的內容會很數學&amp;hellip;&amp;hellip;不過我盡量試著用自己的方式講的比較簡單一點了，&lt;br&gt;
裡面附帶一點我自己比較ㄎㄧㄤ的理解方式，但不一定完全正確就是XD，&lt;br&gt;
希望大家能比較舒服的看完比較數學的這部分(?)&lt;/p&gt;
&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;我們繼續新課程 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 的第二章~&lt;/p&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以監督式學習(Supervised Learning)為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第二章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Practical ML
&lt;ul&gt;
&lt;li&gt;Introduction to Practical ML
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Supervised Learning」
&lt;ul&gt;
&lt;li&gt;Supervised Learning&lt;/li&gt;
&lt;li&gt;「Regression and Classification」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ML History
&lt;ul&gt;
&lt;li&gt;Short History of ML: Linear Regression&lt;/li&gt;
&lt;li&gt;Short History of ML: Perceptron&lt;/li&gt;
&lt;li&gt;Short History of ML: Neural Networks&lt;/li&gt;
&lt;li&gt;Short History of ML: Decision Trees&lt;/li&gt;
&lt;li&gt;Short History of ML: Kernel Methods&lt;/li&gt;
&lt;li&gt;Short History of ML: Random Forests&lt;/li&gt;
&lt;li&gt;Short History of ML: Modern Neural Networks&lt;/li&gt;
&lt;li&gt;討論提示: Modern Neural Networks&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;regression-and-classification&#34;&gt;Regression and Classification&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Practical ML
&lt;ul&gt;
&lt;li&gt;Supervised Learning
&lt;ul&gt;
&lt;li&gt;Regression and Classification&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;0-一樣也先來個小整理不過今天還有其他內容哦&#34;&gt;0. 一樣也先來個小整理，不過今天還有其他內容哦&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;★ 均方差(mean squared error) 與 交叉熵(cross-entropy) 的比較&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;常用的計算誤差方法&lt;/th&gt;
  &lt;th&gt;**均方差(mean squared error)**&lt;/th&gt;
  &lt;th&gt;**交叉熵(cross-entropy)**&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;使用問題種類&lt;/td&gt;
  &lt;td&gt;「regression problem」(回歸問題)&lt;/td&gt;
  &lt;td&gt;「classification problem」(分類問題)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練目標&lt;/td&gt;
  &lt;td&gt;最小化「均方差」&lt;/td&gt;
  &lt;td&gt;最小化「交叉熵」&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;一維畫線(解)依據&lt;/td&gt;
  &lt;td&gt;只要能使最小距離就好(平方最小)&lt;/td&gt;
  &lt;td&gt;線畫下去就是要分好兩類資料，不可以有人跑錯邊(誤差會指數成長)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;我自己的理解方式(不完全正確)&lt;/td&gt;
  &lt;td&gt;計算距離，所以不管在線的哪邊沒差，離線平均都近一點就能最小惹&lt;/td&gt;
  &lt;td&gt;分類正確沒事，分類錯誤非常完蛋!!! 只要有分錯邊，誤差瘋狂上升&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;1-結構化資料-與-非結構化資料&#34;&gt;1. 「結構化」資料 與 「非結構化」資料&lt;/h4&gt;
&lt;p&gt;今天我們先討論一下昨天來不及討論的「資料」部分，&lt;br&gt;
我們之前所看到的表格資料我們都可以稱之為「結構化」的資料，&lt;br&gt;
-&amp;gt; 自己的註：也就是「有行有列有數據的表格」都可以算。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「結構化」資料是最常見的ML資料類型。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;對比「結構化」資料，自然就有「非結構化」資料，&lt;br&gt;
-&amp;gt; 例如：圖片、音樂、影片&amp;hellip;&amp;hellip; 都屬於非結構化資料。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;稍微想一下應該就會知道&amp;hellip; 這些資料應該都沒有直接的「數據」好分析吧(?)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424i5urxrcRc1.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424i5urxrcRc1.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424i5urxrcRc1_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424i5urxrcRc1_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】17 - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們來看一下上圖，上圖是一個有關出生率的公開資料(BigQuery中找得到)&lt;br&gt;
我們來思考一個問題：&lt;strong&gt;我們能不能預測嬰兒什麼時間會出生?&lt;/strong&gt;&lt;br&gt;
老樣子，我們還是把該確定的東西確定一下，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;預測的目標「label」：嬰兒出生的時間(週)&lt;/li&gt;
&lt;li&gt;參考的依據「features」：我們這邊可以選擇媽媽的年齡、體重的變化&amp;hellip;&lt;/li&gt;
&lt;li&gt;因為嬰兒出生的時間是連續值，所以這是個「regression problem」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;接下來，我們可以很容易的對 BigQuery 下 SQL select 找出你要的資料，&lt;br&gt;
這樣你的ML準備的資料就齊全了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;由「結構化」資料預測事情是非常平常且頻繁的，而且也比較容易完成。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424wJSMnqkdUD.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424wJSMnqkdUD.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424wJSMnqkdUD_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424wJSMnqkdUD_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】17 - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們再看一個例子，我們可以更清楚「結構化」資料的方便性。&lt;/p&gt;
&lt;p&gt;我們當然也可以用這表格來預測其他事情。&lt;br&gt;
例如，&lt;strong&gt;如果我們想預測嬰兒的體重呢?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;預測的目標「label」：嬰兒的體重&lt;/li&gt;
&lt;li&gt;參考的依據「features」：除了嬰兒體重之外的資料皆可以作為參考&lt;/li&gt;
&lt;li&gt;因為嬰兒的體重是連續值，所以這是個「regression problem」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣的預測可以幫助醫院提早診斷新生兒會不會有體重過輕的可能，&lt;br&gt;
可以提早替嬰兒準備恆溫箱等等相關的準備，因此能夠預測嬰兒的體重十分重要。&lt;/p&gt;
&lt;h4 id=&#34;2-思考問題&#34;&gt;2. 思考問題&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424AXfI2WAtoM.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424AXfI2WAtoM.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424AXfI2WAtoM_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424AXfI2WAtoM_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】17 - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Q：對於這個資料集，你覺得他會適合用「linear regression(線性回歸)」還是「linear classification(線性分類)」分析?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;答案是，兩個都很適合！&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們來思考一下為什麼，我們仔細觀察這個資料的分布，&lt;br&gt;
如果我們先拿掉資料的顏色與類別(class)，沒有任何幫助我們理解數據的線，如下圖&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424FsrSRCev5R.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424FsrSRCev5R.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424FsrSRCev5R_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424FsrSRCev5R_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】17 - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這個資料感覺可以用兩條斜線可以貫穿其中，&lt;br&gt;
而線旁上下的偏移點可以視為雜訊(noise)，&lt;br&gt;
只要能這樣判斷，基本上他就是個很適合用linear regression分析的例子。&lt;/p&gt;
&lt;p&gt;我們想預測的值是Y，我們替這張圖加了一些不同的顏色與形狀，&lt;br&gt;
使這個數據的結果明顯的呈現兩條線的分佈，&lt;br&gt;
兩條線有不同的斜率與截距、而這兩條線的noise又各自有不同的標準差。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424zCm0DwJxbr.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424zCm0DwJxbr.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424zCm0DwJxbr_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424zCm0DwJxbr_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】17 - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們將我們所預測的線真的加進圖中，我們可以更明顯感覺到他們的線性關係，即使有些小雜訊(noise)，這些線就是能使用「linear regression」作為分析的證明。&lt;/p&gt;
&lt;h4 id=&#34;21-一維的線性回歸-linear-regression&#34;&gt;2.1 一維的線性回歸 「linear regression」&lt;/h4&gt;
&lt;p&gt;我們先看一維「linear regression」的分析結果，我們添加一條綠線，&lt;br&gt;
這條綠線表示我們剛剛所認定的藍線與紅線的「linear equation」(線性組合)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;也就是 「藍線」與「紅線」 可以組合成 「綠線」。 (經過一些數學運算)&lt;br&gt;
例如： A(ax+b) + B(cx+d) = ex+f 的感覺 &amp;lt;- 我盡力表達線性組合的概念了XD&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;注意：這條綠線不管是離 class A 或 class B 皆有段距離。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424VLIoF76pFP.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424VLIoF76pFP.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424VLIoF76pFP_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424VLIoF76pFP_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】17 - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這條綠線，換個角度說，我們也可以說他將整個空間分佈成兩等分。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;原因是因為我們經由回歸計算，我們就是在做「&lt;strong&gt;最小化均方差&lt;/strong&gt;」的損失，&lt;br&gt;
假使我們計算正確，兩個類別(class)對於這條線應該會有相等的拉力，&lt;br&gt;
也就是在這時我們可得到均方差(mean squared error)最小值，&lt;br&gt;
大約會使他們的平均值等距。&lt;br&gt;
註：前面的課程有提到「linear regression」的學習目標就是在做「&lt;strong&gt;最小化均方差&lt;/strong&gt;」，如果忘記可以回前面章節看&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;因為每個類別(class)有不同的斜率與截距，比起對整體做「linear regression」，&lt;br&gt;
我們對於個別兩個類別(class)做「linear regression」效果應該會更好，&lt;br&gt;
也許就是我們這裡所繪製的藍線與紅線。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;★ google講到這邊沒有做一個小結，我自己稍微做點小結論：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這邊自己稍微解釋一下，「linear regression」基本上是預測一條線，&lt;br&gt;
使我們能依照「一個」「feature」(X)去做結果的預測「label」(Y)，&lt;br&gt;
(這裡要特別強調「一個「feature」」，因為等等二維就不是一個了)&lt;br&gt;
也就是遵照這條線的規則，因此我們能得到預測答案，&lt;br&gt;
目前我們會依照我們所有可參考的東西，依照綠色線的預測說是我們預測的結果。&lt;br&gt;
但很明顯的，如果可以用兩條線(藍線與紅線)來做預測，預測誤差一定會小更多。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;22-二維的線性回歸-2d-linear-regression&#34;&gt;2.2 二維的線性回歸 「2D linear regression」&lt;/h4&gt;
&lt;p&gt;剛剛我們做了一維的線性回歸，現在我們來做看看二維的線性回歸：&lt;/p&gt;
&lt;p&gt;二維的線性回歸，也就是說我們不再只依靠一個「feature」去預測「label」，&lt;br&gt;
也就是不再只靠X去計算出Y，&lt;br&gt;
這裡我們使用兩個「feature」，「X」 與 「資料所對應的class」，去預測「Y」&lt;/p&gt;
&lt;p&gt;「資料所對應的class」，我們先下個他在圖上的定義：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果該資料屬於A類別，他的特徵值就是1&lt;/li&gt;
&lt;li&gt;如果該資料屬於B類別，他的特徵值就是0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以我們就可以畫出下面這張圖：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424il5OAX6qWI.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424il5OAX6qWI.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424il5OAX6qWI_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424il5OAX6qWI_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】17 - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&#34;  &gt;&lt;/p&gt;
&lt;p&gt;二維的線性回歸(「2D linear regression」)結果，&lt;br&gt;
不會再是一條「線」，而是由線變成了「平面」。&lt;/p&gt;
&lt;p&gt;老樣子我們還是確認一下我們現在的資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我們想預測的目標「label」：Y&lt;/li&gt;
&lt;li&gt;我們作為參考的依據「features」有兩個，X 和 class&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;兩組不同的數據之間&lt;strong&gt;形成了一個平面&lt;/strong&gt;，&lt;br&gt;
這兩組數據現在因為有多了一個類別(class)的維度而分開，&lt;br&gt;
我們把最適合 A class 與 B class 的線加入圖中(紅藍線)，&lt;br&gt;
我們也一併把一維的線性回歸結果線(綠線)也畫進圖中，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：&lt;strong&gt;這個平面並沒有包含上面所說的任何一條線&lt;/strong&gt;，&lt;br&gt;
因為資料的雜訊(noise)使這些線傾斜於這個平面，&lt;br&gt;
反過來說，如果沒有這些雜訊(noise)，這三條線應該會完美的皆在這平面上。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;★ google講到這邊沒有做一個小結，我自己稍微做點小結論：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;二維的線性回歸(「2D linear regression」)解從「線」，變成了「&lt;strong&gt;平面&lt;/strong&gt;」，&lt;br&gt;
換句話說，我們提供兩種「features」(X 和 class)，能得到一個預測結果「label」(Y)，&lt;br&gt;
數學上空間中的平面只要給其中兩點，就可以找到剩下一點，所以我們說解是「平面」。&lt;br&gt;
.&lt;br&gt;
這個解答比一維的線性回歸好非常多，還記得我們在一維線性回歸得到的答案「綠線」，&lt;br&gt;
不管怎麼看都與所有的資料點有段距離嗎?&lt;br&gt;
我們甚至還說，如果可以用「藍紅線的兩種線性解」分別表示答案，還能得到比「綠線」更好的預測&lt;br&gt;
.&lt;br&gt;
那為什麼這個二維的線性回歸解答比較好?&lt;br&gt;
&lt;strong&gt;因為這個平面找得到的Y，離實際上真實資料點超近啊！&lt;/strong&gt;(點到平面的直線距離)&lt;br&gt;
你可能會問為什麼?&lt;br&gt;
因為這題目需要參考兩個參數(X 和 class)能有更好的預測結果(Y)，&lt;br&gt;
舉例子就是：a+b=c，但我今天只給a，要預測c多少&amp;hellip;&lt;br&gt;
不是不能預測(至少我們還掌握一半的關鍵a)，只是誤差很多而已嘛&amp;hellip;..XD&lt;br&gt;
.&lt;br&gt;
當然很多情況當然可能參考更多的參數，也就是&lt;strong&gt;更多的「features」能做到更好的預測&lt;/strong&gt;。&lt;br&gt;
那就是更高維的線性回歸問題了 。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;23-線性分類-linear-classification&#34;&gt;2.3 線性分類 「linear classification」&lt;/h4&gt;
&lt;p&gt;我們的思考問題還沒有討論完呢XD，&lt;br&gt;
既然我們都說不管是「linear regression(線性回歸)」還是「linear classification(線性分類)」都很適合分析，那當然我們也要解釋為什麼「linear classification」線性分類也適合。&lt;/p&gt;
&lt;p&gt;但說到這，相信讀者應該也知道答案了，在剛剛的分析中，我們可以看到「線性回歸」所畫出來的線，&lt;br&gt;
也替我們做了一個非常好的資料分離，所以自然這問題使用「linear classification」(線性分類)也很合適。&lt;/p&gt;
&lt;p&gt;但我們想討論的是，這條一維的線性回歸最佳解，&lt;br&gt;
會恰好等於我們的「linear classification」(線性分類)問題的最佳決策邊界嗎?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;自己的註：決策邊界昨天有提過，簡單來說就是可以&lt;strong&gt;區分兩類別(class)的決定線&lt;/strong&gt;。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們以一維線性分類器所計算出來的結果，劃出圖上的黃線。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424rIbVu2NnRT.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424rIbVu2NnRT.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424rIbVu2NnRT_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424rIbVu2NnRT_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】17 - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&#34;  &gt;&lt;/p&gt;
&lt;p&gt;-&amp;gt; 注意：我們可以發現&lt;strong&gt;黃線非常接近綠線&lt;/strong&gt;，但&lt;strong&gt;不完全等於&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;想想看為什麼會這樣呢?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;答：因為計算誤差方式的不同，也可以說是最小化誤差的目標不同。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們直接搬之前我做的表好了XD&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;問題種類&lt;/th&gt;
  &lt;th&gt;「regression problem」(回歸問題)&lt;/th&gt;
  &lt;th&gt;「classification problem」(分類問題)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;答案(label)特性&lt;/td&gt;
  &lt;td&gt;預測的答案(label)為「連續」值&lt;/td&gt;
  &lt;td&gt;預測的答案(label)為「非連續」值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;利用資料的方式&lt;/td&gt;
  &lt;td&gt;我們使用數學函數組合不同的「features」，預測出一個「連續函數」作為我們結果的「label」&lt;/td&gt;
  &lt;td&gt;我們用「features」創造一個抉擇邊界，這個邊界幫助我們區分(分類)出結果「label」&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練目標&lt;/td&gt;
  &lt;td&gt;最小化「預測的結果」與「實際的結果(「label」)」的誤差&lt;/td&gt;
  &lt;td&gt;最小化「誤分類(misclassification)」的數量，也就是「預測的分類」與「實際上的分類(「label」)」的誤差要為最小。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;常用的計算誤差方法&lt;/td&gt;
  &lt;td&gt;**均方差(mean squared error)**&lt;/td&gt;
  &lt;td&gt;**交叉熵(cross-entropy)**&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;學習類型&lt;/td&gt;
  &lt;td&gt;監督式學習(Supervised Learning)&lt;/td&gt;
  &lt;td&gt;監督式學習(Supervised Learning)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;注意到「回歸問題」與「分類問題」學習目標是不同的嗎?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分類問題的訓練目標是「&lt;strong&gt;最小化交叉熵(cross-entropy)&lt;/strong&gt;」&lt;/li&gt;
&lt;li&gt;而回歸問題的訓練目標是「&lt;strong&gt;最小化均方差(mean squared error)&lt;/strong&gt;」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而這兩個計算誤差的差別&amp;hellip;先不講太深的數學，&lt;br&gt;
但簡單的來說，均方差(mean squared error)存在兩次處罰(quadratic penalty)的計算，&lt;br&gt;
他在算實際點(「label」)與我們預測點(「prediction」)的歐氏距離(euclidean distance)，&lt;br&gt;
並試著將這距離最小化&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;就先簡單理解，他有平方嘛，平方不就誤差被放大(更小)了嗎?&lt;/strong&gt; &amp;lt;- 至少我先這樣簡單理解XD&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;分類問題所使用的交叉熵(cross-entropy)，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;實際分類(「label」)與我們預測分類(「prediction」)結果相同，處罰會線性的成長(等於幾乎沒差)&lt;/li&gt;
&lt;li&gt;如果實際分類(「label」)與我們預測分類(「prediction」)是相反的，處罰會指數性的成長&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;我是理解成，才這麼簡單分成兩類而已?! 你對了就沒事，你錯了你就超級完蛋!!!&lt;/strong&gt; &amp;lt;- 至少我是先這樣理解XD&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;所以我們可以仔細看看剛剛的圖，我們分類問題的決策邊界線感覺更在綠色的上面一點，&lt;br&gt;
為什麼? 因為你看綠色線上有些紅點資料正在上面，&lt;br&gt;
綠線上也有些紅點的雜訊(noise)分佈，甚至有些紅點還越線跑到綠色那邊?!?!&lt;br&gt;
照我們剛剛上面的結論 (或者用我的理解也好XD)，&lt;/p&gt;
&lt;p&gt;我大分類問題使用交叉熵(cross-entropy)，你對沒事，你錯你就超級完蛋!!!!&lt;br&gt;
我怎麼可能允許你在我分界上? 還甚至是越界!!! 不可能!!!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;數學一點的講法就是，這個越界造成了非常大的誤差!!!&lt;br&gt;
會違背我們的學習目標「最小化交叉熵(cross-entropy)」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;而對於線性回歸(「linear regression」)來說，雖然誤差是二次方的，&lt;br&gt;
(二次方也表示，你在線的這側或對側，只要距離一樣對我來說意義都一樣(平方嘛)。)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;只要「距離盡可能的小」，就可以滿足線性回歸的學習目標「最小化均方差(mean squared error)」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;不過最後我們還是要提到，這個資料集，&lt;br&gt;
不論使用linear regression或linear classification來分析皆非常適合，&lt;br&gt;
不同於我們之前所預測的 tips 和 bills 的那個資料集(前面章節提過那個)，&lt;br&gt;
這問題反而只適用linear regression，不然就是非線性的分類 non-linear classification。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10215946&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 17】 Google ML - Lesson 3 - 多維度線性回歸解(N-D Regression), 交叉熵(cross-entropy)與均方差(MSE) 作為誤差函數計算所帶來的不同&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1059
Post Date: 2019-09-18 00:44:34
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】16 - Lesson 2 - 監督式學習(Supervised Learning)中兩大問題 - Regression &amp; Classification(回歸與分類)</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/regression-classification/</link>
        <pubDate>Tue, 17 Sep 2019 00:42:42 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/regression-classification/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424eO4Mk6dvo3.png" alt="Featured image of post 【Google ML】16 - Lesson 2 - 監督式學習(Supervised Learning)中兩大問題 - Regression &amp; Classification(回歸與分類)" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天我們繼續新課程 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 的第二章~&lt;/p&gt;
&lt;p&gt;這幾天的文章會是一系列的，會需要一起看才比較能看懂整個ML模型的輪廓，&lt;br&gt;
然而因為一天能寫的內容量有限，所以我會在前言部分稍微說明我寫到哪。&lt;/p&gt;
&lt;h3 id=&#34;複習一下ml的整個訓練過程&#34;&gt;複習一下ML的整個訓練過程&lt;/h3&gt;
&lt;p&gt;因為ML模型的訓練階段章節內容會分很多部分，我們要先確認好自己在哪個階段，&lt;br&gt;
以免吸收新內容卻不知道用在內容的什麼地方。&lt;/p&gt;
&lt;p&gt;★ML的整個「訓練過程」：這裡以監督式學習(Supervised Learning)為例&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;階段&lt;/th&gt;
  &lt;th&gt;要做的事情&lt;/th&gt;
  &lt;th&gt;簡介&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定資料集與分析資料&lt;/td&gt;
  &lt;td&gt;你想要預測的是什麼資料? 這邊需要先知道 「example」、「label」、「features」的概念。介紹可參考：[【Day 15】](https://ithelp.ithome.com.tw/articles/10215499)，而我們這次作為範例的訓練資料集介紹在[【Day 19】](https://ithelp.ithome.com.tw/articles/10217666)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定問題種類&lt;/td&gt;
  &lt;td&gt;依據資料，會知道是什麼類型的問題。「regression problem(回歸問題)」?   「classification problem(分類問題)」? 此處可參考：[【Day 16】](https://ithelp.ithome.com.tw/articles/10216585)、與進階內容：[【Day 17】](https://ithelp.ithome.com.tw/articles/10215946)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練前&lt;/td&gt;
  &lt;td&gt;決定ML模型(ML models)&lt;/td&gt;
  &lt;td&gt;依據問題的種類，會知道需要使用什麼對應的ML模型。「回歸模型(Regression model)」? 「分類模型(Classification model)」? 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)，「神經網路(neural network)」? 簡介於：[【Day 25】](https://ithelp.ithome.com.tw/articles/10221227)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(模型裡面的參數)&lt;/td&gt;
  &lt;td&gt;ML模型裡面的「參數(parameters)」與「超參數(hyper-parameters)」 此處可參考：[【Day 18】](https://ithelp.ithome.com.tw/articles/10217431)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;評估當前模型好壞&lt;/td&gt;
  &lt;td&gt;「損失函數(Loss Functions)」：使用損失函數評估目前模型的好與壞。以「MSE(Mean Squared Error)」, 「RMSE(Root Mean Squared Error)」, 「交叉熵(Cross Entropy)」為例。此處可參考：[【Day 20】](https://ithelp.ithome.com.tw/articles/10218158)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整模型&lt;/td&gt;
  &lt;td&gt;修正模型參數&lt;/td&gt;
  &lt;td&gt;以「梯度下降法 (Gradient Descent)」為例：決定模型中參數的修正「方向」與「「步長(step size)」」此處可參考：[【Day 21】](https://ithelp.ithome.com.tw/articles/10218980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 調整腳步&lt;/td&gt;
  &lt;td&gt;調整學習腳步&lt;/td&gt;
  &lt;td&gt;透過「學習速率(learning rate)」來調整ML模型訓練的「步長(step size)」，調整學習腳步。(此參數在「訓練前」設定，為「hyper-parameter」)。此處可參考：[【Day 22】](https://ithelp.ithome.com.tw/articles/10219458)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;取樣與分堆&lt;/td&gt;
  &lt;td&gt;設定「batch size」，透過「batch」從訓練目標中取樣，來加快ML模型訓練的速度。(此參數在「訓練前」設定，為「hyper-parameter」)。與「迭代(iteration)」,「epoch」介紹。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 加快訓練&lt;/td&gt;
  &lt;td&gt;檢查loss的頻率&lt;/td&gt;
  &lt;td&gt;調整「檢查loss的頻率」，依據「時間(Time-based)」與「步驟(Step-based)」。此處可參考：[【Day 23】](https://ithelp.ithome.com.tw/articles/10219945/draft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練中 - 完成訓練&lt;/td&gt;
  &lt;td&gt;(loop) -&gt; 完成&lt;/td&gt;
  &lt;td&gt;重覆過程(評估當前模型好壞 -&gt; 修正模型參數)，直到能「通過「驗證資料集(Validation)」的驗證」即可結束訓練。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「「不適當的最小loss?」」 此處可參考：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;訓練結果可能問題&lt;/td&gt;
  &lt;td&gt;「欠擬合(underfitting)」?「過度擬合(overfitting)」? 此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 性能指標&lt;/td&gt;
  &lt;td&gt;「性能指標(performance metrics)」：以「混淆矩陣(confusion matrix)」分析，包含「「Accuracy」」、「「Precision」」、「「Recall」」三種評估指標。簡介於：[【Day 28】](https://ithelp.ithome.com.tw/articles/10222317)、詳細介紹於：[【Day 29】](https://ithelp.ithome.com.tw/articles/10222697)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 新資料適用性&lt;/td&gt;
  &lt;td&gt;「泛化(Generalization)」：對於新資料、沒看過的資料的模型適用性。此處可參考：[【Day 26】](https://ithelp.ithome.com.tw/articles/10221245)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練後&lt;/td&gt;
  &lt;td&gt;評估 - 模型測試&lt;/td&gt;
  &lt;td&gt;使用「「獨立測試資料集(Test)」」測試? 使用「交叉驗證(cross-validation)」(又稱「bootstrapping」)測試? 此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;(資料分堆的方式)&lt;/td&gt;
  &lt;td&gt;訓練前 - 依據上方「模型測試」的方法，決定資料分堆的方式：訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考：[【Day 27】](https://ithelp.ithome.com.tw/articles/10222043)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第二章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Practical ML
&lt;ul&gt;
&lt;li&gt;Introduction to Practical ML
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Supervised Learning」
&lt;ul&gt;
&lt;li&gt;Supervised Learning&lt;/li&gt;
&lt;li&gt;「Regression and Classification」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ML History
&lt;ul&gt;
&lt;li&gt;Short History of ML: Linear Regression&lt;/li&gt;
&lt;li&gt;Short History of ML: Perceptron&lt;/li&gt;
&lt;li&gt;Short History of ML: Neural Networks&lt;/li&gt;
&lt;li&gt;Short History of ML: Decision Trees&lt;/li&gt;
&lt;li&gt;Short History of ML: Kernel Methods&lt;/li&gt;
&lt;li&gt;Short History of ML: Random Forests&lt;/li&gt;
&lt;li&gt;Short History of ML: Modern Neural Networks&lt;/li&gt;
&lt;li&gt;討論提示: Modern Neural Networks&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;regression-and-classification&#34;&gt;Regression and Classification&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Practical ML
&lt;ul&gt;
&lt;li&gt;Supervised Learning
&lt;ul&gt;
&lt;li&gt;Regression and Classification&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今天我們要來更細部的解說Regression與Classification的差別，昨天已經有先做簡單的比較了。&lt;/p&gt;
&lt;h4 id=&#34;一樣先講結論想看詳細說明或例子再往下拉吧&#34;&gt;一樣先講結論，想看詳細說明或例子再往下拉吧~&lt;/h4&gt;
&lt;p&gt;不論是regression problem或classification problem，&lt;br&gt;
皆是屬於監督式學習(Supervised Learning)的問題。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;問題種類&lt;/th&gt;
  &lt;th&gt;「regression problem」(回歸問題)&lt;/th&gt;
  &lt;th&gt;「classification problem」(分類問題)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;答案(label)特性&lt;/td&gt;
  &lt;td&gt;預測的答案(label)為「連續」值&lt;/td&gt;
  &lt;td&gt;預測的答案(label)為「非連續」值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;利用資料的方式&lt;/td&gt;
  &lt;td&gt;我們使用數學函數組合不同的「features」，預測出一個「連續函數」作為我們結果的「label」&lt;/td&gt;
  &lt;td&gt;我們用「features」創造一個決策邊界，這個邊界幫助我們區分(分類)出結果「label」&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;訓練目標&lt;/td&gt;
  &lt;td&gt;最小化「預測的結果」與「實際的結果(「label」)」的誤差&lt;/td&gt;
  &lt;td&gt;最小化「誤分類(misclassification)」的數量，也就是「預測的分類」與「實際上的分類(「label」)」的誤差要為最小。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;常用的計算誤差方法&lt;/td&gt;
  &lt;td&gt;均方差(mean squared error)&lt;/td&gt;
  &lt;td&gt;交叉熵(cross-entropy)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;學習類型&lt;/td&gt;
  &lt;td&gt;監督式學習(Supervised Learning)&lt;/td&gt;
  &lt;td&gt;監督式學習(Supervised Learning)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一樣的我們再整理一下：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;「Supervised Learning」(監督式學習)&lt;/th&gt;
  &lt;th&gt;「Unsupervised Learning」(非監督式學習)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;有預設可能的答案(label)，用「資料」做label的預測(學習目標)&lt;/td&gt;
  &lt;td&gt;無預設可能的答案(label)，通常是將「資料」做分組(分群)，再來依據分佈的結果說明「發現(學習目標)」。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;預測問題可能的答案(predict)&lt;/td&gt;
  &lt;td&gt;描述問題(資料)的分佈現象(description)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;regression-problem&#34;&gt;Regression problem&lt;/h4&gt;
&lt;p&gt;一樣我們先從昨天的例子來看，&lt;br&gt;
我們想從其他資訊「features」預測tip的價格&lt;br&gt;
tip是我們的預測的目標，也就是我們的「label」&lt;br&gt;
也因為tip是「連續值」，所以這是個「regression problem」。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在regression problem中，我們的目標是使用數學函數去組合不同的「features」，&lt;br&gt;
這樣我們就能預測出一個連續值作為我們結果的「label」。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Qucv2dDi1k.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Qucv2dDi1k.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Qucv2dDi1k_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Qucv2dDi1k_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】16 - Lesson 2 - 監督式學習(Supervised Learning)中兩大問題 - Regression &amp;amp; Classification(回歸與分類)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們先稍微把問題簡化一下，假設現在只考慮一個「feature」: 帳單(bill)&lt;br&gt;
而這個問題的數學函數結果正是上圖中顯示的綠線，我們可以從綠線看出bill與tip的關係。&lt;br&gt;
更近一步的我們就可以從bill去預測tip會有多少。&lt;/p&gt;
&lt;p&gt;而現在這題目因為只考慮一種「feature」，只有二維的線性關係，線性也表示著連續的結果。&lt;br&gt;
我們可以考慮更多的「features」，這個結果也會更多維度。&lt;/p&gt;
&lt;p&gt;在regression problems中，我們的目標是最小化我們「預測的結果」與「實際的結果(「label」)」的誤差，&lt;br&gt;
我們常用的計算誤差的方法叫做均方差(mean squared error)&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;classification-problem&#34;&gt;Classification problem&lt;/h4&gt;
&lt;p&gt;一樣也是昨天的問題，另外一個我們提到的例子，&lt;br&gt;
我們想從其他資訊「features」預測「顧客的性別」&lt;br&gt;
「顧客的性別」是我們的預測的目標，也就是我們的「label」&lt;br&gt;
也因為「顧客的性別」是「不連續值」，所以這是個「classification problem」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424eO4Mk6dvo3.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424eO4Mk6dvo3.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424eO4Mk6dvo3_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424eO4Mk6dvo3_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】16 - Lesson 2 - 監督式學習(Supervised Learning)中兩大問題 - Regression &amp;amp; Classification(回歸與分類)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們看與上面一樣的圖，我們想用tip和bill去試著預測顧客的性別，&lt;br&gt;
但我們會發現這是個不好的idea，我們的仔細看這張圖裡面，&lt;br&gt;
男女的分佈非常的不明顯，所以結果一定也不太好。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這個例子就很好說明了當我們想預測的東西「不是連續」的差別，&lt;br&gt;
性別是一個不連續的資料，當作為我們的預測的目標(「label」)時，&lt;br&gt;
這就是一個「classification problem」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在classification problems中，我們使用「features」預測的結果不會是一個連續的值。&lt;br&gt;
我們用「features」創造一個抉擇邊界，這個邊界幫助我們區分(分類)出結果「label」&lt;/p&gt;
&lt;p&gt;在這個例子中，一樣我們也會畫出一條線，而這條線的兩側會代表著兩種不同的類別(class)，&lt;br&gt;
例如隨便假設tip比0.18倍的bill值還大(紅線)，我們就預測這位顧客可能是為男性，&lt;br&gt;
(當然在這個例子中我們可以看出這樣的預測結果明顯是錯誤的，我們可以看到有很多反例)&lt;/p&gt;
&lt;p&gt;我們知道在這個例子中抉擇邊界(紅線)應該不會是線性的(non-linear)，&lt;br&gt;
在這張圖中我們取黃線部分的結果會是更好的，問題是我們要怎麼要確定黃線比紅線好?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在classification problems，我們的目標是最小化「誤分類(misclassification)」的數量，&lt;br&gt;
也就是我們「預測的分類」與「實際上的分類「label」」的誤差要為最小。&lt;br&gt;
我們常用的計算誤差的方法叫做交叉熵(cross-entropy)。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;另外，就算是預測tip，如果我們不用明確知道tip的值，&lt;br&gt;
我們也可以用「classification problem」方式解，&lt;br&gt;
假設我們可以將tip分成低中高三個等級：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高：高於total bill的25%&lt;/li&gt;
&lt;li&gt;中：介於total bill的15%~25%之間&lt;/li&gt;
&lt;li&gt;低：低於total bill的15%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;換句話說，我們把價格用區間的方式「離散化」了，&lt;br&gt;
現在「tip等級分類」的問題就是一個classification problem，&lt;br&gt;
一般來說，原來的連續feature都可以被「離散化」成為分類特徵(categorical feature)&lt;/p&gt;
&lt;p&gt;當然，反過來將分類特徵(categorical feature)嵌入至連續空間(continuous space)也是做得到的，&lt;br&gt;
這我們會在後面的章節討論，&lt;br&gt;
但不論如何，regression與classification問題皆是「預測問題」，&lt;br&gt;
對比於unsupervised problems的「描述問題」，方向是截然不同的。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10216585&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 16】 Google ML - Lesson 2 - 監督式學習(Supervised Learning)中兩大問題 - Regression &amp;amp; Classification(回歸與分類)&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1056
Post Date: 2019-09-17 00:42:42
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】15 - Lesson 1 - Supervised Learning 與 Unsupervised Learning 監督式學習與非監督式學習的介紹和比較</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/supervised-unsupervised/</link>
        <pubDate>Mon, 16 Sep 2019 00:36:06 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/supervised-unsupervised/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424T4oPEbIu19.png" alt="Featured image of post 【Google ML】15 - Lesson 1 - Supervised Learning 與 Unsupervised Learning 監督式學習與非監督式學習的介紹和比較" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天要來進新課程 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; ~&lt;/p&gt;
&lt;p&gt;我們先來介紹一下這課程裡面有哪些章節，這次的課程一共有四章~&lt;/p&gt;
&lt;h2 id=&#34;launching-into-machine-learning&#34;&gt;Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第一章節：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction
&lt;ul&gt;
&lt;li&gt;Introduction to Launching into ML
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Intro to Qwiklabs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二章節：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Practical ML
&lt;ul&gt;
&lt;li&gt;Introduction to Practical ML&lt;/li&gt;
&lt;li&gt;Supervised Learning&lt;/li&gt;
&lt;li&gt;ML History&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第三章節：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization
&lt;ul&gt;
&lt;li&gt;Introduction to Optimization&lt;/li&gt;
&lt;li&gt;Defining ML Models&lt;/li&gt;
&lt;li&gt;Introducing Loss Functions&lt;/li&gt;
&lt;li&gt;Gradient Descent&lt;/li&gt;
&lt;li&gt;TensorFlow Playground&lt;/li&gt;
&lt;li&gt;Performance Metrics&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第四章節：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generalization and Sampling
&lt;ul&gt;
&lt;li&gt;Introduction to Generalization and Sampling&lt;/li&gt;
&lt;li&gt;Generalization&lt;/li&gt;
&lt;li&gt;Sampling&lt;/li&gt;
&lt;li&gt;Demo of Splitting Datasets in BigQuery&lt;/li&gt;
&lt;li&gt;Lab: Creating Repeatable Dataset Splits&lt;/li&gt;
&lt;li&gt;Lab: Exploring and Creating ML Datasets&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比較歷史的部分我會先跳過~&lt;br&gt;
或者先只帶到與最近的ML模型重疊的知識部分&lt;/p&gt;
&lt;p&gt;由於第一章介紹比較實驗，我們先從第二章開始吧~&lt;/p&gt;
&lt;h2 id=&#34;course---launching-into-machine-learning&#34;&gt;Course - Launching into Machine Learning&lt;/h2&gt;
&lt;p&gt;第二章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Practical ML
&lt;ul&gt;
&lt;li&gt;「Introduction to Practical ML」
&lt;ul&gt;
&lt;li&gt;「Introduction」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Supervised Learning」
&lt;ul&gt;
&lt;li&gt;「Supervised Learning」&lt;/li&gt;
&lt;li&gt;Regression and Classification&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ML History
&lt;ul&gt;
&lt;li&gt;Short History of ML: Linear Regression&lt;/li&gt;
&lt;li&gt;Short History of ML: Perceptron&lt;/li&gt;
&lt;li&gt;Short History of ML: Neural Networks&lt;/li&gt;
&lt;li&gt;Short History of ML: Decision Trees&lt;/li&gt;
&lt;li&gt;Short History of ML: Kernel Methods&lt;/li&gt;
&lt;li&gt;Short History of ML: Random Forests&lt;/li&gt;
&lt;li&gt;Short History of ML: Modern Neural Networks&lt;/li&gt;
&lt;li&gt;討論提示: Modern Neural Networks&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-introduction-to-practical-ml&#34;&gt;1. Introduction to Practical ML&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Practical ML
&lt;ul&gt;
&lt;li&gt;Introduction to Practical ML
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這一章節要來介紹實際的ML內容與ML的歷史，&lt;br&gt;
我們主要會講到以下重點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;區分ML問題的主要類別，以及學習如何實作&lt;/li&gt;
&lt;li&gt;學習近幾年機器學習是如何進化的歷史，學習這段過程中運用到的技巧與技術&lt;/li&gt;
&lt;li&gt;知道為何最近深度學習這領域會如此受歡迎，並參考google使用ML於自家產品中的例子&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-supervised-learning&#34;&gt;2. Supervised Learning&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Practical ML
&lt;ul&gt;
&lt;li&gt;Supervised Learning
&lt;ul&gt;
&lt;li&gt;Supervised Learning&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Supervised Learning 與 Unsupervised Learning 是兩種最常見的ML模型，也是兩種不同的ML演算法，&lt;br&gt;
這裡我們先比較一下這兩種的差別。&lt;/p&gt;
&lt;h4 id=&#34;先講結論-supervised-learning-與-unsupervised-learning-比較&#34;&gt;先講結論： Supervised Learning 與 Unsupervised Learning 比較&lt;/h4&gt;
&lt;p&gt;這表格我自己聽完這堂課做的，有興趣看課程內容筆記再往下拉，有很多例子：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;「Supervised Learning」(監督式學習)&lt;/th&gt;
  &lt;th&gt;「Unsupervised Learning」(非監督式學習)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;有預設可能的答案(label)，用「資料」做label的預測(學習目標)&lt;/td&gt;
  &lt;td&gt;無預設可能的答案(label)，通常是將「資料」做分組(分群)，再來依據分佈的結果說明「發現(學習目標)」。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;然後 Supervised Learning 可再細分兩種不同的model：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;「regression model」(回歸模型)&lt;/th&gt;
  &lt;th&gt;「classification model」(分類模型)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;預測的答案(label)為「連續」值&lt;/td&gt;
  &lt;td&gt;預測的答案(label)為「非連續」值&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這裡有些中文比較細膩的地方，是我自己找資料的心得：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supervised Learning：做分類、回歸&lt;/li&gt;
&lt;li&gt;Unsupervised Learning：做分群(分組)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特別注意「分類」與「分群(分組)」的不同：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;分類&lt;/th&gt;
  &lt;th&gt;分群(分組)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;你「會」知道那個「類」的名字，我們依照這個「類的準則」分類&lt;/td&gt;
  &lt;td&gt;你「不會」知道那個「群(組)」的名字，我們讓他們自己找相似的一組&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;例如：我有身高體重，我想預測是「男生女生」&lt;/td&gt;
  &lt;td&gt;例如：我有一堆人的資料，我想分看看這群人中有沒有哪一小群有相似的特性，可能都喜歡吃日式料理的一群、吃韓式料理的一群...... (注意這個「結果」是分完後才去解釋的，我們並不像男女分類一樣一開始就知道要「依照某個準則分類」)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Supervised Learning」(監督式學習)&lt;/td&gt;
  &lt;td&gt;「Unsupervised Learning」(非監督式學習)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;以下課程就是有很多很多的例子&amp;hellip;&amp;hellip;&lt;/p&gt;
&lt;h4 id=&#34;21-unsupervised-learning-非監督式學習&#34;&gt;2.1 Unsupervised Learning 非監督式學習&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;例圖：Unsupervised Learning 的例子&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424aF75RjAtUT.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424aF75RjAtUT.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424aF75RjAtUT_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424aF75RjAtUT_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】15 - Lesson 1 - Supervised Learning 與 Unsupervised Learning 監督式學習與非監督式學習的介紹和比較&#34;  &gt;&lt;br&gt;
我們想透過這圖片了解的是 income(薪水) 和 tenure(年資) 之間的關係，&lt;br&gt;
並對員工進行分組(分群)，以了解是否有些人成長比較快速。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;「unsupervised問題有個很重要的特性在於「沒有一個基本的答案(結果)」。」&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;以這個問題來說，對於所有的人而言，&lt;br&gt;
我們不是一開始就知道他的薪水與年資是在比較快還是比較慢成長的，&lt;br&gt;
我們是在分析結果後才發現所有人的分布呈現如上圖，「看到圖片時」才知道有兩大分佈。&lt;br&gt;
特別留意順序：先看到圖片分佈，才知道有人屬於比較快的、有人屬於比較慢的(也是這時才定義結果)。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;因此，unsupervised問題最主要是在解「發現」的問題，&lt;br&gt;
我們想知道「所有的數據」能不能「被分出組別」來。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;22-supervised-learning-監督式學習&#34;&gt;2.2 Supervised Learning 監督式學習&lt;/h4&gt;
&lt;p&gt;同樣的我們也來看一下 supervised問題，&lt;/p&gt;
&lt;p&gt;「supervised問題重要的特性在於「我們有預設的答案(label)」。」&lt;/p&gt;
&lt;p&gt;而 supervised Learning 能預測的問題答案有兩種模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;「regression model」 : 預測的答案為「連續」值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;「classification model」 : 預測的答案為「不連續」值。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;例圖：supervised Learning 的例子&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204247SVKhvAb8V.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204247SVKhvAb8V.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204247SVKhvAb8V_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204247SVKhvAb8V_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】15 - Lesson 1 - Supervised Learning 與 Unsupervised Learning 監督式學習與非監督式學習的介紹和比較&#34;  &gt;&lt;br&gt;
我們想透過這圖片了解的是 Bill(帳單) 和 Tips(小費) 之間的關係，&lt;br&gt;
來看看我們能不能從一些跡象預測 Tips(小費) 是多少?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們先將上方的資料表格化一下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424T4oPEbIu19.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424T4oPEbIu19.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424T4oPEbIu19_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424T4oPEbIu19_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】15 - Lesson 1 - Supervised Learning 與 Unsupervised Learning 監督式學習與非監督式學習的介紹和比較&#34;  &gt;&lt;/p&gt;
&lt;p&gt;※名詞解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「example」 : 每一橫行各代表一個example。&lt;br&gt;
「label」 : 任何一個直行，表示我們想預測的目標。&lt;br&gt;
「features」 : 除了「label」外的其他直行，我們參考這些數據來預測label。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;回到剛剛的問題，我們想要預測 Tips(小費) 是多少?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我們想「預測的目標(label)」就是「Tips(小費)」的那個直行&lt;/li&gt;
&lt;li&gt;而「除了Tips(小費)之外的直行」，皆為我們的「features」&lt;/li&gt;
&lt;li&gt;回到上面的兩種問題模型，從表格我們可以看出Tips(小費)為「連續值」，所以這會是一個「regression model」。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;我們可以使用一行或多行的「features」試著去推測出「label」。&lt;br&gt;
在 supervised Learning 中，要使用多少 「features」 去預測 「label」 並沒有數量上的限制。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們以同樣的問題來看另外一個例子，如果今天我們想預測是「顧客的性別」呢?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我們想「預測的目標(label)」就是「顧客的性別(sex)」所在的直行&lt;/li&gt;
&lt;li&gt;而「除了顧客的性別(sex)之外的直行」，皆為我們的「features」&lt;/li&gt;
&lt;li&gt;回到上面的兩種問題模型，從表格我們可以看出顧客的性別(sex)為「不連續值」，所以這會是一個「classification model」。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;同樣的，我們可以使用一行或多行的「features」試著去推測出「label」。&lt;br&gt;
一樣要使用多少 「features」 去預測 「label」 並沒有數量上的限制。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這邊我們再練習個幾題，確認大家到目前的觀念是清楚的：&lt;/p&gt;
&lt;li&gt;我們想要預測狗的品種，我們應該使用什麼 model? label是? features是?
&lt;blockquote&gt;
&lt;p&gt;狗的種類為非連續值，使用「classification model」&lt;br&gt;
狗的品種是我們的預測目標，為「label」&lt;br&gt;
其他狗的相關特徵都可以作為我們預測結果前的參考資料，為「features」&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;我們想要預測狗的體重，我們應該使用什麼 model? label是? features是?&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;狗的體重為連續值，使用「regression model」&lt;br&gt;
狗的體重是我們的預測目標，為「label」&lt;br&gt;
其他狗的相關特徵都可以作為我們預測結果前的參考資料，為「features」&lt;/p&gt;
&lt;/li&gt;&lt;/blockquote&gt;
&lt;p&gt;另外我們舉個特別的例子，例如現在有間銀行想要預測交易是否是詐騙，我們可以怎麼做?&lt;br&gt;
很直覺的我們應該會想，不就只是分成兩類? 「詐騙交易」與「非詐騙交易」嗎?&lt;br&gt;
確實如此，但在現實中會有些問題，例如我們如何「絕對的」從我們的分析肯定一定是詐騙交易?&lt;br&gt;
他可能符合某些「feature」與「example」相似，但也有些不相似，這樣就會有誤判的可能。&lt;br&gt;
所以我們還是會發現有些特別的case會因為我們訓練的限制而陷入模稜兩可的狀況。&lt;/p&gt;
&lt;p&gt;我們的模型會需要蒐集更多的資料來判斷這種目前可能會模稜兩可的問題，&lt;br&gt;
因此在前面課程中的所提到的 &lt;strong&gt;human in the loop&lt;/strong&gt; 的概念這時顯得十分重要，&lt;br&gt;
更多資料就能夠幫助我們分辨更多這些介於模稜兩可之間的分類問題。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10215499&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 15】 Google ML - Lesson 1 - Supervised Learning 與 Unsupervised Learning 監督式學習與非監督式學習的介紹和比較&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/launching-machine-learning/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching into Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1052
Post Date: 2019-09-16 00:36:06
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/machine-learning-apis/</link>
        <pubDate>Sun, 15 Sep 2019 00:32:18 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/machine-learning-apis/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424pkwfhOK579.png" alt="Featured image of post 【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;我們來做 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的第二個lab~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;li&gt;Chapter 1 - Introduction to specialization
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】- 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chapter 2 - What it means to be AI first
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】- 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 4】- 我們要怎麼樣設計一個ML問題? 與google提供的好用工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213900&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 5】- ML要成功的秘訣與策略&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chapter 3 - How Google does ML
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213904&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 6】- ML會失敗的最常見十大陷阱&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 7】- ML在企業運行的五大階段與注意事項&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chapter 5 - Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214362&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 8】- 先來初步認識一下google雲端上執行ML的環境&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214523&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 9】 Lab 0 - 每次在google雲端上開始lab前都要的事前準備與注意事項&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214718&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 10】 Lab 1 - 在google雲端上分析地震資料與製圖，並儲存在雲端&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214863&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 11】- Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214867&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 12】- google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10215097&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 13】 Lab 2 - 使用 BigQuery 與 Datalab 視覺化分析資料&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第五章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Module Introduction&lt;/li&gt;
&lt;li&gt;Cloud Datalab
&lt;ul&gt;
&lt;li&gt;Cloud Datalab&lt;/li&gt;
&lt;li&gt;Demo: Cloud Datalab&lt;/li&gt;
&lt;li&gt;Development process&lt;/li&gt;
&lt;li&gt;Demo of rehosting Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Working with managed services&lt;/li&gt;
&lt;li&gt;Computation and storage&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM
&lt;ul&gt;
&lt;li&gt;Intro to Qwiklabs&lt;/li&gt;
&lt;li&gt;Intro to Renting-VM Lab&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM to process earthquake data&lt;/li&gt;
&lt;li&gt;Lab debrief&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cloud Shell&lt;/li&gt;
&lt;li&gt;Third wave of cloud
&lt;ul&gt;
&lt;li&gt;Third Wave of Cloud: Fully-Managed Services&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: Serverless Data Analysis&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: BigQuery and Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Datalab and BigQuery
&lt;ul&gt;
&lt;li&gt;Lab Intro: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab Debrief: Analyzing Data using Datalab and BigQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Machine Learning with Sara Robinson
&lt;ul&gt;
&lt;li&gt;ML, not rules&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pre-trained ML APIs
&lt;ul&gt;
&lt;li&gt;Vision API in action&lt;/li&gt;
&lt;li&gt;Video intelligence API&lt;/li&gt;
&lt;li&gt;Cloud Speech API&lt;/li&gt;
&lt;li&gt;Translation and NL&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Lab: Machine Learning APIs」
&lt;ul&gt;
&lt;li&gt;「Lab: Pretrained ML APIs Intro」&lt;/li&gt;
&lt;li&gt;「Lab: Invoking Machine Learning APIs」&lt;/li&gt;
&lt;li&gt;「Lab Solution」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;lab-machine-learning-apis&#34;&gt;Lab: Machine Learning APIs&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Lab: Machine Learning APIs
&lt;ul&gt;
&lt;li&gt;Lab: Pretrained ML APIs Intro&lt;/li&gt;
&lt;li&gt;Lab: Invoking Machine Learning APIs&lt;/li&gt;
&lt;li&gt;Lab Solution&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在這個lab中，我們將實作之前 &lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214867&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 12】- google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&lt;/a&gt; 的API應用&lt;/p&gt;
&lt;p&gt;我們會示範如何進行API串接，讓我們能直接使用google已訓練好的ML API來直接實現功能。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-0--事前準備-開啟-gcp-console&#34;&gt;part 0 : (事前準備) 開啟 GCP console&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;請先參考 &lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214523&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 9】- 每次在google雲端上開始lab前都要的事前準備與注意事項&lt;/a&gt; 的內容，完成到&lt;strong&gt;運行中階段&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-1--建立機器-建立並執行-cloud-datalab-vm&#34;&gt;part 1 : (建立機器) 建立並執行 Cloud Datalab VM&lt;/h4&gt;
&lt;p&gt;Step 0 : 打開 Cloud Shell&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果不清楚 Cloud Shell 如何開啟，請參考 &lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214863&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 11】- Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Step 1 : 首先我們要先知道我們的 compute zones 在哪，我們可以透過以下指令知道我們所有的 compute zones 位置，我們會在其中一個 compute zones 運行我們的 Datalab。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gcloud compute zones list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;註：影片中的範例使用的是 U.S. Central。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Step 2 :  我們透過以下指令創建我們的 datalab VM。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;datalab create mydatalabvm --zone &amp;lt;ZONE&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;「&lt;ZONE&gt;」: 這個必須更改為Step 2中，我們所找到compute zones的名字。&lt;/li&gt;
&lt;li&gt;依照影片中的範例，我們填入：「datalab create mydatalabvm &amp;ndash;zone us-central1-b」&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;創建過程約需稍等五分鐘。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Step 3 :  創建過程中，可能會碰到如紅框處的問題(詢問ssh passphrase)。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;第一個問題回答 &amp;ldquo;Y&amp;rdquo;&lt;br&gt;
第二三個問題直接按 &amp;ldquo;Enter&amp;rdquo; return即可。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424cCgWtjRWxm.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424cCgWtjRWxm.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424cCgWtjRWxm_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424cCgWtjRWxm_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 4 :  直到看到下方處出現請你開啟 &amp;ldquo;Web Preview&amp;rdquo; 的訊息才算建立完成，&lt;br&gt;
這時按 Cloud Shell 的右上角，點選 Change Port，&lt;br&gt;
並更換我們的 port 至 8081，完成後點選 CHANGE AND PREVIEW。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ROXbAmTiE1.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ROXbAmTiE1.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424ROXbAmTiE1_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424ROXbAmTiE1_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-2--啟用cloud-api-開啟-cloud-source-repositories-api&#34;&gt;part 2 : (啟用Cloud API) 開啟 Cloud Source Repositories API&lt;/h4&gt;
&lt;p&gt;Step 1 : 確定 Cloud Source Repositories API 是被開啟的:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;點選一下網址，記得要切換至&amp;quot;&lt;strong&gt;Qwiklabs所提供的帳號&lt;/strong&gt;&amp;ldquo;開啟API應用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://console.cloud.google.com/apis/library/sourcerepo.googleapis.com/?q=Repositories&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://console.cloud.google.com/apis/library/sourcerepo.googleapis.com/?q=Repositories&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-3--複製專案-在-cloud-datalab-將專案複製下來&#34;&gt;part 3 : (複製專案) 在 Cloud Datalab 將專案複製下來&lt;/h4&gt;
&lt;p&gt;Step 0 : 接下來會直接使用 Cloud Datalab 跑 pyhton 程式&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果不清楚 Cloud Datalab 的基本指令與運作，請先複習 &lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214362&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 8】- 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Step 1 : 我們回到 part 1 所開啟的 Datalab，按左上角開啟一個新的 notebook。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424hgoNuzUOPU.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424hgoNuzUOPU.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424hgoNuzUOPU_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424hgoNuzUOPU_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 2 : 我們可以點選紅框處更改notebook的名字，例如我們更改成：&amp;ldquo;checkout&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ns2w7Piguw.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ns2w7Piguw.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424ns2w7Piguw_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424ns2w7Piguw_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 3 : 我們在第一格中貼上這段code，這段code主要是幫我們從github複製檔案下來。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;%bash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/GoogleCloudPlatform/training-data-analyst
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -rf training-data-analyst/.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;※解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;　「%bash」:此指令打在開頭，表示這整格cell之後皆執行Bash指令。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Step 4 : 我們確認是否檔案有被成功的複製下來，我們輸入「!ls」，只要有看到&amp;quot;training-data-analyst&amp;quot;資料夾就是成功了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;!ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;結果如下圖：&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424E34FqdZ5wq.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424E34FqdZ5wq.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424E34FqdZ5wq_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424E34FqdZ5wq_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;※解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;　「!ls」:&lt;code&gt;!&lt;/code&gt;表示執行單行Bash指令，後面接指令內容，例如這段我們執行&lt;code&gt;ls&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Step 5 : 現在我們可以回到上一頁，點進&amp;quot;training-data-analyst&amp;quot;資料夾，裡面有我們這次會使用到的code。&lt;br&gt;
(點擊左上角的Cloud Datalab即可回到索引頁。)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424rkrb2tupDw.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424rkrb2tupDw.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424rkrb2tupDw_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424rkrb2tupDw_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 6 : 開啟 mlapis.ipynb。&lt;/p&gt;
&lt;p&gt;檔案路徑為：「training-data-analyst &amp;gt; courses &amp;gt; machine_learning &amp;gt; deepdive &amp;gt; 01_googleml &amp;gt; mlapis.ipynb」&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-4--取得api-key-取得圖片辨識-語音辨識相關的ml-api-key&#34;&gt;part 4 : (取得API key) 取得圖片辨識, 語音辨識&amp;hellip;相關的ML API key&lt;/h4&gt;
&lt;p&gt;再來我們要先去啟用我們的API服務，這樣才能執行Vision API, Translate API, Speech API&amp;hellip;&lt;/p&gt;
&lt;p&gt;Step 1 : 在「APIs &amp;amp; services」找到「Library」&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204245mtvJZMRts.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204245mtvJZMRts.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204245mtvJZMRts_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204245mtvJZMRts_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 2 : 我們搜尋「Vision API」&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424GBsrvngBa2.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424GBsrvngBa2.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424GBsrvngBa2_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424GBsrvngBa2_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 3 : 確認「Vision API」已經被開啟&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204244imAeIB8O8.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204244imAeIB8O8.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204244imAeIB8O8_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204244imAeIB8O8_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 4 : 我們重複Step 2, 3，依序確認「Translate API」, 「Speech API」&amp;hellip;等要用的API，確認這些都是已經被開啟的。&lt;/p&gt;
&lt;p&gt;Step 5 : 我們需要去取得 credentials(類似金鑰的證明文件)，我們在「APIs &amp;amp; services」找到「credentials」&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424fzTfPiomps.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424fzTfPiomps.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424fzTfPiomps_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424fzTfPiomps_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 6 : 我們點選「Create Credentials」找到「API key」&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424qjeanBAFsN.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424qjeanBAFsN.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424qjeanBAFsN_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424qjeanBAFsN_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 7 : 我們就會得到我們的API key了，我們將他複製下來。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QXr7iKC025.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QXr7iKC025.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424QXr7iKC025_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424QXr7iKC025_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;h4 id=&#34;part-5--實作api-實作各種-api&#34;&gt;part 5 : (實作API) 實作各種 API&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;我們要回到 part 3 的 mlapis.ipynb檔案。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Step 1 : 將我們剛剛所複製的API key取代原本key的地方。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424tZ7CZFNUqU.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424tZ7CZFNUqU.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424tZ7CZFNUqU_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424tZ7CZFNUqU_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 2 : 執行第二格cell的pip程式碼，我們要安裝Python client的服務。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424oiqiA2pItC.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424oiqiA2pItC.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424oiqiA2pItC_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424oiqiA2pItC_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;h4 id=&#34;翻譯語言-translate-api&#34;&gt;翻譯語言 「Translate API」&lt;/h4&gt;
&lt;p&gt;Step 3 : 執行第三格cell的程式碼，這行是「Translate API」的測試。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# running Translate API&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;googleapiclient.discovery&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;service&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;translate&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;v2&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;developerKey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;APIKEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# use the service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;inputs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;is it really this easy?&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;amazing technology&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;wow&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outputs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;service&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;translations&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;en&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;fr&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# print outputs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;zip&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;outputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;translations&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{0}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; -&amp;gt; &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{1}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;translatedText&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424q3efTVPYA9.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424q3efTVPYA9.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424q3efTVPYA9_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424q3efTVPYA9_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們可以在紅框處看到執行結果，我們也可以在綠框處更改想要翻譯的語言。&lt;br&gt;
註：&lt;code&gt;fr&lt;/code&gt;:French&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;※解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們先輸入了input字串，再拿這些inputs向伺服器請求此內容的翻譯，&lt;br&gt;
而伺服器會回傳給我們outputs，這些outputs就是翻譯的結果。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;圖像辨識-vision-api&#34;&gt;圖像辨識 「Vision API」&lt;/h4&gt;
&lt;p&gt;Step 4 : 我們執行第四格cell的程式碼，這行是「Vision API」的測試。&lt;br&gt;
我們會需要一張圖做為input，而此處已經有一個路標作為我們的範例使用。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Running Vision API&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;base64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;IMAGE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gs://cloud-training-demos/vision/sign2.jpg&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vservice&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;vision&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;v1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;developerKey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;APIKEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vservice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;images&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;annotate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;requests&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s1&#34;&gt;&amp;#39;image&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;s1&#34;&gt;&amp;#39;source&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;s1&#34;&gt;&amp;#39;gcs_image_uri&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IMAGE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s1&#34;&gt;&amp;#39;features&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;s1&#34;&gt;&amp;#39;type&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;TEXT_DETECTION&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;s1&#34;&gt;&amp;#39;maxResults&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;responses&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;num_retries&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;responses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424bkKTeJdDY4.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424bkKTeJdDY4.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424bkKTeJdDY4_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424bkKTeJdDY4_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;※解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們可以注意到&lt;strong&gt;紅框處&lt;/strong&gt;，他是一個雲端的圖片位置，就是我們的input圖片&lt;br&gt;
&lt;strong&gt;綠框處與籃框處&lt;/strong&gt;，代表的是我們運行的「Vision API」是&lt;code&gt;v1&lt;/code&gt;版本&lt;br&gt;
&lt;strong&gt;橘框處&lt;/strong&gt;代表的是我們透過「gcs_image_uri」這個參數擺放我們的圖片內容(此處為變數「IMAGE」)，傳送至雲端&lt;br&gt;
(這裡直接使用雲端圖片位置會更快，因為我們不需要再次上傳圖片。)&lt;br&gt;
「GCS」就是Google Cloud Storage的簡稱&lt;br&gt;
&lt;strong&gt;紫框處&lt;/strong&gt;代表我們要求作「TEXT_DETECTION」，代表文字偵測。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們請求 Vision API 幫我們分析這張圖的內容，他會回傳 JSON 格式給我們。&lt;br&gt;
我來看回傳的所有內容，&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424D2keqV60hZ.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424D2keqV60hZ.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424D2keqV60hZ_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424D2keqV60hZ_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;※解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;開頭的&lt;code&gt;zh&lt;/code&gt;指的是中文&lt;br&gt;
「boundingPoly」 : 指的是bounding polygon，表示偵測這個文字邊界範圍所圍成的多邊形。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Step 5 : 因為回傳的結果很多，我們往下一格cell看，這格cell能幫我們只先取得第一個文字片段。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;foreigntext&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;responses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;responses&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;textAnnotations&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;description&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;foreignlang&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;responses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;responses&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;textAnnotations&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;locale&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foreignlang&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;foreigntext&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204245N2Gken8y1.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204245N2Gken8y1.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204245N2Gken8y1_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204245N2Gken8y1_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;※解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;第一行「description」: 幫我們取得文字內容 (可以看到剩下的中文內容)&lt;br&gt;
第二行「locale」: 幫我們取得語言種類 (得到zh，表示中文)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Step 6 : 再往下一格cell看，這裡我們再使用一下「Translate API」幫我們翻譯內容變成英文。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;inputs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foreigntext&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outputs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;service&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;translations&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foreignlang&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;en&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# print(outputs)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;zip&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;outputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;translations&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{0}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; -&amp;gt; &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{1}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;translatedText&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Bt2IX2AnvI.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Bt2IX2AnvI.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Bt2IX2AnvI_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Bt2IX2AnvI_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;※解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;可以看到紅框處分別表示翻譯的目標語言，以及翻譯的結果。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;自然語言辨識-language-api&#34;&gt;自然語言辨識 「Language API」&lt;/h4&gt;
&lt;p&gt;Step 7 : 往下一格cell看，我們接下來要實作自然語言辨識的功能，我們已經預先準備好一些引文。&lt;br&gt;
我們直接來看這些內容的情緒如何。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;lservice&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;language&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;v1beta1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;developerKey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;APIKEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;quotes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;To succeed, you must have tremendous perseverance, tremendous will.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;It’s not that I’m so smart, it’s just that I stay with problems longer.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;Love is quivering happiness.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;Love is of all passions the strongest, for it attacks simultaneously the head, the heart, and the senses.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;What difference does it make to the dead, the orphans and the homeless, whether the mad destruction is wrought under the name of totalitarianism or in the holy name of liberty or democracy?&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;When someone you love dies, and you’re not expecting it, you don’t lose her all at once; you lose her in pieces over a long time — the way the mail stops coming, and her scent fades from the pillows and even from the clothes in her closet and drawers. &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quote&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quotes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lservice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;documents&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;analyzeSentiment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s1&#34;&gt;&amp;#39;document&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;s1&#34;&gt;&amp;#39;type&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;PLAIN_TEXT&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;s1&#34;&gt;&amp;#39;content&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quote&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;polarity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;documentSentiment&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;polarity&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;magnitude&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;documentSentiment&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;magnitude&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;POLARITY=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt; MAGNITUDE=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt; for &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;polarity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;magnitude&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quote&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204240GKn53Gnfv.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204240GKn53Gnfv.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204240GKn53Gnfv_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204240GKn53Gnfv_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;※解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;可以看到紅框處的「polarity」: 如果為正，表示情緒正面；如果為負，表示情緒負面&lt;br&gt;
紅框處的另一個「magnitude」: 表示這段文字中的情緒詞有多強烈 (非常強烈的正面詞彙或負面詞彙)&lt;br&gt;
可以以綠框處的結果作為參考。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;語音辨識-speech-api&#34;&gt;語音辨識 「Speech API」&lt;/h4&gt;
&lt;p&gt;Step 8 : 往下一格cell看，我們接下來要實作語音辨識功能，我們一樣已經先準備好了一段語音。&lt;br&gt;
這段語音被存放在雲端中，我們只要下指令請求他幫我們將這段語音轉成文字稿即可得到回傳的JSON檔案。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sservice&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;speech&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;v1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;developerKey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;APIKEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sservice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;speech&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;recognize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;config&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s1&#34;&gt;&amp;#39;languageCode&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;en-US&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s1&#34;&gt;&amp;#39;encoding&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;LINEAR16&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s1&#34;&gt;&amp;#39;sampleRateHertz&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;16000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;audio&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s1&#34;&gt;&amp;#39;uri&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;gs://cloud-training-demos/vision/audio.raw&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pkwfhOK579.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pkwfhOK579.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424pkwfhOK579_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424pkwfhOK579_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】14 - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&#34;  &gt;&lt;/p&gt;
&lt;p&gt;※解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;圖中&lt;strong&gt;紅框處&lt;/strong&gt; : 語音檔的雲端連結。&lt;br&gt;
&lt;strong&gt;綠框處&lt;/strong&gt;「confidence」 : 指的是他對這個語音轉換文字稿的結果有多少的信心水準。&lt;br&gt;
從圖片中可以看見，信心水準非常高。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這個lab中我們利用了一些已經訓練好的ML模型，&lt;br&gt;
透過API的串接我們能直接運算出結果。&lt;br&gt;
我們想讓讀者知道的是，「&lt;strong&gt;並不是所有的ML訓練皆要從0開始建立模型&lt;/strong&gt;」，&lt;br&gt;
很多已經訓練好的結果，例如圖片辨識或語音辨識，&lt;br&gt;
是可以直接使用而無需從頭開始建的。&lt;/p&gt;
&lt;p&gt;而之後的課程，我們就要開始學習「從0開始建立屬於自己的ML模型」。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(Course - How Google does Machine Learning 完)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10215285&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 14】 Google ML - Lab 3 - Machine Learning APIs - (API實作篇) google圖片辨識, 語音辨識, 語言翻譯, 自然語言辨識(NL)&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1047
Post Date: 2019-09-15 00:32:18
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/datalab-and-bigquery/</link>
        <pubDate>Sat, 14 Sep 2019 00:29:51 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/datalab-and-bigquery/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424TDJbI4eAMB.png" alt="Featured image of post 【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;我們來做 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的第二個lab~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;li&gt;Chapter 1 - Introduction to specialization
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】- 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chapter 2 - What it means to be AI first
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】- 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 4】- 我們要怎麼樣設計一個ML問題? 與google提供的好用工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213900&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 5】- ML要成功的秘訣與策略&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chapter 3 - How Google does ML
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213904&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 6】- ML會失敗的最常見十大陷阱&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 7】- ML在企業運行的五大階段與注意事項&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chapter 5 - Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214362&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 8】- 先來初步認識一下google雲端上執行ML的環境&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214523&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 9】 Lab 0 - 每次在google雲端上開始lab前都要的事前準備與注意事項&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214718&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 10】 Lab 1 - 在google雲端上分析地震資料與製圖，並儲存在雲端&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214863&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 11】- Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214867&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 12】- google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第五章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Module Introduction&lt;/li&gt;
&lt;li&gt;Cloud Datalab
&lt;ul&gt;
&lt;li&gt;Cloud Datalab&lt;/li&gt;
&lt;li&gt;Demo: Cloud Datalab&lt;/li&gt;
&lt;li&gt;Development process&lt;/li&gt;
&lt;li&gt;Demo of rehosting Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Working with managed services&lt;/li&gt;
&lt;li&gt;Computation and storage&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM
&lt;ul&gt;
&lt;li&gt;Intro to Qwiklabs&lt;/li&gt;
&lt;li&gt;Intro to Renting-VM Lab&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM to process earthquake data&lt;/li&gt;
&lt;li&gt;Lab debrief&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cloud Shell&lt;/li&gt;
&lt;li&gt;Third wave of cloud
&lt;ul&gt;
&lt;li&gt;Third Wave of Cloud: Fully-Managed Services&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: Serverless Data Analysis&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: BigQuery and Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Datalab and BigQuery」
&lt;ul&gt;
&lt;li&gt;「Lab Intro: Analyzing data using Datalab and BigQuery」&lt;/li&gt;
&lt;li&gt;「Lab: Analyzing data using Datalab and BigQuery」&lt;/li&gt;
&lt;li&gt;「Lab Debrief: Analyzing Data using Datalab and BigQuery」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Machine Learning with Sara Robinson
&lt;ul&gt;
&lt;li&gt;ML, not rules&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pre-trained ML APIs
&lt;ul&gt;
&lt;li&gt;Vision API in action&lt;/li&gt;
&lt;li&gt;Video intelligence API&lt;/li&gt;
&lt;li&gt;Cloud Speech API&lt;/li&gt;
&lt;li&gt;Translation and NL&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lab: Machine Learning APIs
&lt;ul&gt;
&lt;li&gt;Lab: Pretrained ML APIs Intro&lt;/li&gt;
&lt;li&gt;Lab: Invoking Machine Learning APIs&lt;/li&gt;
&lt;li&gt;Lab Solution&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;lab-analyzing-data-using-datalab-and-bigquery&#34;&gt;Lab: Analyzing Data using Datalab and BigQuery&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Datalab and BigQuery
&lt;ul&gt;
&lt;li&gt;Lab Intro: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab Debrief: Analyzing Data using Datalab and BigQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在這個lab中，我們將使用BigQuery去分析7000萬行左右的資料，&lt;br&gt;
並將結果以幾十行的Pandas DataFrame輸出。&lt;br&gt;
再來我們可以直接使用Pandas DataFrame的結果作資料視覺化。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;註：「BigQuery」 = 大量資料分析工具&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在這裡我們只需要數秒鐘就可以創建圖形，這是使用其他方法可能做不到的。&lt;br&gt;
然而，在互動式的開發流程中我們會很需要即時的分析，&lt;br&gt;
對於大量資料的處理來說，這樣的速度是重要的，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;你可能會想說，那就不要處理這麼多資料就好了啊?&lt;br&gt;
問題是，如果我們處理的資料量小，這就不會是個好的 machine learning practice的範例了。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;統計方法-與-machine-learning-的關鍵差別&#34;&gt;&lt;strong&gt;統計方法&lt;/strong&gt; 與 &lt;strong&gt;machine learning&lt;/strong&gt; 的關鍵差別?&lt;/h4&gt;
&lt;p&gt;另外一件事情是，我們想順便討論 &lt;strong&gt;統計方法&lt;/strong&gt; 與 &lt;strong&gt;machine learning&lt;/strong&gt; 的關鍵差別，&lt;br&gt;
關於我們如何&lt;strong&gt;處理離群值&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在統計方法中，我們會傾向移除離群值。&lt;br&gt;
但在 machine learning 中，離群值也會是我們學習的內容。&lt;br&gt;
而且如果要學習離群值，我們也必須要有足夠的離群值資料，&lt;br&gt;
我們還需要確保這些離群值在資料集中被分配，做好管理完整dataset的工作就顯得重要。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在這個實驗中我們提供了BigQuery能幫助你管理大量的dataset，&lt;br&gt;
然後能替我們帶來更習慣的資料結構(例如：Pandas)，&lt;br&gt;
我們也可以使用python的繪圖工具製圖，就是我們這個lab的主要內容。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-0--事前準備-開啟-gcp-console&#34;&gt;part 0 : (事前準備) 開啟 GCP console&lt;/h4&gt;
&lt;p&gt;請先參考 &lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214523&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 9】- 每次在google雲端上開始lab前都要的事前準備與注意事項&lt;/a&gt; 的內容，完成到&lt;strong&gt;運行中階段&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-1--建立機器-建立-datalab-vm&#34;&gt;part 1 : (建立機器) 建立 Datalab VM&lt;/h4&gt;
&lt;p&gt;Step 0 : 打開 Cloud Shell&lt;/p&gt;
&lt;p&gt;如果不清楚 Cloud Shell 如何開啟，請參考 &lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214863&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 11】- Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Step 1 : 首先我們要先知道我們的 compute zones 在哪，我們可以透過以下指令知道我們所有的 compute zones 位置，我們會在其中一個 compute zones 運行我們的 Datalab。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gcloud compute zones list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;註：影片中的範例使用的是 U.S. Central。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Step 2 :  我們透過以下指令創建我們的 datalab VM。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;datalab create mydatalabvm --zone &amp;lt;ZONE&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;「&lt;ZONE&gt;」: 這個必須更改為Step 2中，我們所找到compute zones的名字。&lt;/li&gt;
&lt;li&gt;依照影片中的範例，我們必須填入：「datalab create mydatalabvm &amp;ndash;zone us-central1-b」&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;創建過程約需稍等五分鐘。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Step 3 :  創建過程中，可能會碰到如紅框處的問題(詢問ssh passphrase)。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;第一個問題回答 &amp;ldquo;Y&amp;rdquo;&lt;br&gt;
第二三個問題直接按 &amp;ldquo;Enter&amp;rdquo; return即可。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424cCgWtjRWxm.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424cCgWtjRWxm.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424cCgWtjRWxm_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424cCgWtjRWxm_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 4 :  直到看到下方處出現請你開啟 &amp;ldquo;Web Preview&amp;rdquo; 的訊息才算建立完成，這時按 Cloud Shell 的右上角，&lt;br&gt;
點選 Change Port，並更換我們的 port 至 8081，完成後點選 CHANGE AND PREVIEW。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ROXbAmTiE1.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ROXbAmTiE1.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424ROXbAmTiE1_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424ROXbAmTiE1_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-2--啟用api-開啟-cloud-source-repositories-api&#34;&gt;part 2 : (啟用API) 開啟 Cloud Source Repositories API&lt;/h4&gt;
&lt;p&gt;Step 1 : 確定 Cloud Source Repositories API 是被開啟的:&lt;/p&gt;
&lt;p&gt;點選一下網址，記得要切換至&amp;quot;&lt;strong&gt;Qwiklabs所提供的帳號&lt;/strong&gt;&amp;ldquo;開啟API應用。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://console.cloud.google.com/apis/library/sourcerepo.googleapis.com/?q=Repositories&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://console.cloud.google.com/apis/library/sourcerepo.googleapis.com/?q=Repositories&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-3--分析資料-使用-bigquery-分析資料&#34;&gt;part 3 : (分析資料) 使用 BigQuery 分析資料&lt;/h4&gt;
&lt;p&gt;Step 1 : 我們先從 Google Console開啟 BigQuery (紅框處)，一樣透過&amp;rdquo;&lt;strong&gt;Qwiklabs所提供的帳號密碼&lt;/strong&gt;&amp;ldquo;來進行登入&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204243387vqEnVT.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204243387vqEnVT.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204243387vqEnVT_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204243387vqEnVT_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;稍微確認一下 Project名稱是否與 Qwiklabs的名稱相同。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Step 2 : 我們可以按 COMPOSE QUERY 開始執行QUERY的視窗。(紅框處，實際介面可能稍有不同。)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Z3jvFyiRW7.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Z3jvFyiRW7.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Z3jvFyiRW7_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Z3jvFyiRW7_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 3 : 在執行QUERY的視窗輸入以下指令，並執行。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;standardSQL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;departure_delay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;COUNT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;num_flights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;APPROX_QUANTILES&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arrival_delay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arrival_delay_quantiles&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bigquery&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;samples&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;airline_ontime_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;flights&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;GROUP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;departure_delay&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;HAVING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;num_flights&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ORDER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;departure_delay&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ASC&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;這是 standard SQL的語法。&lt;br&gt;
但同樣的我們也可以不使用standard SQL的語法，我們點選 Show Options。&lt;br&gt;
我們可以看到更多選項，並取消勾選 Legacy SQL。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424x79kA84E2b.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424x79kA84E2b.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424x79kA84E2b_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424x79kA84E2b_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們在稍微注意一下語法中From的部分，我們會發現這個dataset來自 bigquery-samples 中的 airline_ontime_data，而 table 的名字是 flights。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ewzDjezLhR.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ewzDjezLhR.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424ewzDjezLhR_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424ewzDjezLhR_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 4 : (練習題) 試從以下的結果判斷：35分前離開的班機延遲抵達時間的中位數是多少?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204247HKIbukJQx.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204247HKIbukJQx.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204247HKIbukJQx_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204247HKIbukJQx_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;說明：我們先看Step 3中例子的圖來解釋，「departure_dalay」:表示班機離開的時間，-37也表示37分鐘前離開。&lt;br&gt;
我們可以看到在「num_flights」中找到107個班機35分前離開，這些格子細分成五格表示五個級距，&lt;br&gt;
-66 表示80%飛機抵達時提前66分鐘或更早，-41~-66 表示 60%~80% 飛機在這個區間抵達。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;解答: 所以如果我們問你35分前離開的班機延遲抵達時間的中位數是多少? 答案就是提早28分鐘到達。&lt;/p&gt;
&lt;p&gt;Step 5 : (練習題2) 試著寫一個Query找出：擁有最大的航班數的airport pair (departure and arrival airport)。(指的是兩機場間的航班數最多)&lt;/p&gt;
&lt;p&gt;參考解答：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;standardSQL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;departure_airport&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arrival_airport&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;COUNT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;num_flights&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bigquery&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;samples&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;airline_ontime_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;flights&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;GROUP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;departure_airport&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arrival_airport&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ORDER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;num_flights&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DESC&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LIMIT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解釋：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我們先用「GROUP BY」，將 departure_airport, arrival_airport選定&lt;/li&gt;
&lt;li&gt;並在 departure_airport, arrival_airport 用 「COUNT(1) AS num_flights」，計算兩機場的總航班數&lt;/li&gt;
&lt;li&gt;「ORDER BY」可以幫助我們排序，「num_flights DESC」，表示 num_flights的降序排列，因為透過降序我們就可以找到最多數量的位於最上方。&lt;/li&gt;
&lt;li&gt;「LIMIT」限制10，因為我們只要找最多，所以也不需要顯示太多結果。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;結果：LAX(起飛) 與 SAN(降落) 一共有 133394 航班數。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424SwTXGX93fu.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424SwTXGX93fu.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424SwTXGX93fu_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424SwTXGX93fu_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們約花2.3秒搜尋了7000萬筆的資料。看似不可思議，但其實這就是數以千計的電腦一起搜尋的結果。&lt;br&gt;
這就是我們所說的 &lt;strong&gt;run at scale&lt;/strong&gt;，也是雲端運行服務，我們不必自己負擔運算過程，達到serverless的效果。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;part-4--視覺化結果-使用-datalab-建立視覺化結果&#34;&gt;part 4 : (視覺化結果) 使用 Datalab 建立視覺化結果&lt;/h4&gt;
&lt;p&gt;BigQuery分析東西很方便，但他沒辦法幫我們視覺化的分析結果，&lt;br&gt;
我們現在用Datalab來幫助我們建立視覺化結果。&lt;/p&gt;
&lt;p&gt;Step 0 : 接下來會直接使用 Cloud Datalab 跑 pyhton 程式&lt;/p&gt;
&lt;p&gt;如果不清楚 Cloud Datalab 的基本指令與運作，請先複習 &lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214362&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 8】- 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Step 1 : 我們回到 part 1 所開啟的 Datalab，按左上角開啟一個新的 notebook。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424hgoNuzUOPU.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424hgoNuzUOPU.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424hgoNuzUOPU_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424hgoNuzUOPU_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 2 : 我們在第一格cell中貼上這段code，這段code是呼叫BigQuery幫我們執行的，我們只是透過API串接過來使Datalab能夠使用。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;SELECT
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  departure_delay,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  COUNT(1) AS num_flights,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  APPROX_QUANTILES(arrival_delay, 10) AS arrival_delay_deciles
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;FROM
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  `bigquery-samples.airline_ontime_data.flights`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;GROUP BY
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  departure_delay
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;HAVING
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  num_flights &amp;gt; 100
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;ORDER BY
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  departure_delay ASC
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;datalab&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bigquery&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;as&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bq&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;df&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to_dataframe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;df&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;而在code的最後幾行&lt;code&gt;.to_dataframe()&lt;/code&gt;，將我們回傳的資料轉成 Pandas Dataframes。&lt;br&gt;
我們也可以透過&lt;code&gt;.head()&lt;/code&gt;，從結果中先偷看前幾行的內容。&lt;br&gt;
也正如同我們之前在BigQuery所執行的一樣，有departure_delay, number of flights&amp;hellip;，&lt;br&gt;
但這例子中我們有10分位數，因為我們在「APPROX_QUANTILES(arrival_delay, 10)」中下了數字10，所以我們可以得到10個數字。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sr647YT0R4.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sr647YT0R4.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424sr647YT0R4_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424sr647YT0R4_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 3 : 我們在第二格cell中貼上這段code。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pandas&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;percentiles&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;df&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;arrival_delay_deciles&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;apply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Series&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;percentiles&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;percentiles&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;columns&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;%&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;df&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;concat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;df&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;departure_delay&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;percentiles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;axis&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;df&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;這段code能幫助我們把十分位數的部分整個分開整理清楚，如下圖。&lt;br&gt;
分開的原因與下步驟的製圖有關係。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424JIf4DwHTHy.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424JIf4DwHTHy.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424JIf4DwHTHy_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424JIf4DwHTHy_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 4 : 我們在第三格cell中貼上這段code。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;without_extremes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;df&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;drop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;0%&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;100%&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;without_extremes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;plot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;departure_delay&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xlim&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ylim&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在第一行&lt;code&gt;.drop([&#39;0%&#39;, &#39;100%&#39;], 1)&lt;/code&gt;，我們先將0%, 100%的結果移除，不畫入圖中，&lt;br&gt;
我們在最後的結果只使用10%~90%的資料。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424TDJbI4eAMB.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424TDJbI4eAMB.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424TDJbI4eAMB_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424TDJbI4eAMB_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】13 - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們試著閱讀這張圖，departure_delay如果是10，表示10分鐘delay，&lt;br&gt;
我們可以看見10%的班機仍然可以提前到達，但90%的班機會晚21分鐘以上到達。&lt;br&gt;
另外一方面中位數(50%)的 departure_delay 所對應到的 arrival_delay 約提早3~4分鐘。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們看結果會發現，除了一些 -20 以下的結果，這些結果的呈現滿線性的，&lt;br&gt;
我們的結果只要在中間不在邊緣，基本上可以做一個線性模型。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;現在我們可以回來想，我們分析了多大的資料才能得到這樣的結果，&lt;br&gt;
這樣的insight，正是一種很難透過其他方式能獲得的結果。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10215097&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 13】 Google ML - Lab 2 - Analyzing Data using Datalab and BigQuery - 使用 BigQuery與Datalab視覺化分析資料&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1044
Post Date: 2019-09-14 00:29:51
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/google-apis/</link>
        <pubDate>Fri, 13 Sep 2019 00:26:36 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/google-apis/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424kTL0ZzyBiJ.png" alt="Featured image of post 【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;h3 id=&#34;開頭先整理一下今天的內容&#34;&gt;開頭先整理一下今天的內容&lt;/h3&gt;
&lt;p&gt;我們今天一共會整理google的5種Cloud API，以下針對類型先做個簡單整理：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;Google雲端上的API名稱&lt;/th&gt;
  &lt;th&gt;類型&lt;/th&gt;
  &lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;「Cloud Vision API」&lt;/td&gt;
  &lt;td&gt;(image -&gt; text)&lt;/td&gt;
  &lt;td&gt;**圖片辨識API**&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Cloud Video intelligence API」&lt;/td&gt;
  &lt;td&gt;(video -&gt; text)&lt;/td&gt;
  &lt;td&gt;**影片辨識API**&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Cloud Speech API」&lt;/td&gt;
  &lt;td&gt;(audio -&gt; text)&lt;/td&gt;
  &lt;td&gt;**語音辨識API**&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Cloud Translation API」&lt;/td&gt;
  &lt;td&gt;(text -&gt; text)&lt;/td&gt;
  &lt;td&gt;**語言翻譯API**&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Cloud Natural Language API」&lt;/td&gt;
  &lt;td&gt;(text -&gt; text)&lt;/td&gt;
  &lt;td&gt;**自然語言處理API**&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第五章節的課程地圖： 「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Module Introduction&lt;/li&gt;
&lt;li&gt;Cloud Datalab
&lt;ul&gt;
&lt;li&gt;Cloud Datalab&lt;/li&gt;
&lt;li&gt;Demo: Cloud Datalab&lt;/li&gt;
&lt;li&gt;Development process&lt;/li&gt;
&lt;li&gt;Demo of rehosting Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Working with managed services&lt;/li&gt;
&lt;li&gt;Computation and storage&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM
&lt;ul&gt;
&lt;li&gt;Intro to Qwiklabs&lt;/li&gt;
&lt;li&gt;Intro to Renting-VM Lab&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM to process earthquake data&lt;/li&gt;
&lt;li&gt;Lab debrief &amp;lt;&amp;ndash; (昨天到這邊)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cloud Shell&lt;/li&gt;
&lt;li&gt;Third wave of cloud
&lt;ul&gt;
&lt;li&gt;Third Wave of Cloud: Fully-Managed Services&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: Serverless Data Analysis&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: BigQuery and Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Datalab and BigQuery
&lt;ul&gt;
&lt;li&gt;Lab Intro: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab Debrief: Analyzing Data using Datalab and BigQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Machine Learning with Sara Robinson
&lt;ul&gt;
&lt;li&gt;ML, not rules&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Pre-trained ML APIs」
&lt;ul&gt;
&lt;li&gt;「Vision API in action」&lt;/li&gt;
&lt;li&gt;「Video intelligence API」&lt;/li&gt;
&lt;li&gt;「Cloud Speech API」&lt;/li&gt;
&lt;li&gt;「Translation and NL」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lab: Machine Learning APIs
&lt;ul&gt;
&lt;li&gt;Lab: Pretrained ML APIs Intro&lt;/li&gt;
&lt;li&gt;Lab: Invoking Machine Learning APIs&lt;/li&gt;
&lt;li&gt;Lab Solution&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-vision-api-in-action&#34;&gt;1. Vision API in action&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Pre-trained ML APIs
&lt;ul&gt;
&lt;li&gt;Vision API in action&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cloud Vision API是google的圖片辨識的API，&lt;br&gt;
可以讓我們使用單個REST API request就能得到圖片的各種檢測結果。&lt;/p&gt;
&lt;h4 id=&#34;part-1--case-先看目前商業上使用vision-api的範例&#34;&gt;part 1 : case: 先看目前商業上使用Vision API的範例&lt;/h4&gt;
&lt;p&gt;Giphy：Giphy是一個app，我們能在上面搜尋GIF，並在也可以分享這些動圖。&lt;br&gt;
gif的裡面有可能包含文字，而它們可透過Vision API解釋gif裡面的內容，&lt;br&gt;
並藉此改進搜尋結果。&lt;/p&gt;
&lt;p&gt;他們使用的是Vision API裡面的「OCR(Optical Character Recognition)功能」，&lt;br&gt;
這個功能讓它們可以&lt;strong&gt;從gif中提取出文字內容&lt;/strong&gt;，用於幫助增進他們的搜尋體驗。&lt;/p&gt;
&lt;p&gt;想要更了解Giphy怎麼做的，可以參考：https://engineering.giphy.com&lt;/p&gt;
&lt;h4 id=&#34;part-2--我們來看vision-api裡面有哪些功能&#34;&gt;part 2 : 我們來看Vision API裡面有哪些功能&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;Vision API 功能名稱&lt;/th&gt;
  &lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;「label detection」&lt;/td&gt;
  &lt;td&gt;可以告訴你這圖片是什麼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「web detection」&lt;/td&gt;
  &lt;td&gt;在網路上搜尋相似圖片，並從這些搜尋結果中提取內容，回傳圖片更多相關資訊。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「OCR (Optical Character Recognition)」&lt;/td&gt;
  &lt;td&gt;解析你圖片中的文字內容，告訴你圖片中哪裡有文字，甚至可以告訴你這是什麼語言。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Logo detection」&lt;/td&gt;
  &lt;td&gt;專門辨識公司logo用的&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Landmark detection」&lt;/td&gt;
  &lt;td&gt;如果這圖片包含著常見的地標，他可以告訴你是什麼地標。 同時提供對應地標的經度、緯度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Crop hints」&lt;/td&gt;
  &lt;td&gt;可以幫助你裁剪照片，以符合你想要做的主題。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Explicit Content Detection」&lt;/td&gt;
  &lt;td&gt;檢測圖片中是否有不適當的內容。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;※補充：&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「label detection」&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;例如：你給他看大象的圖片，他會告訴你這是大象&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;以整體來說，Cloud Vision API可以提供上述所有功能的圖片內容檢測。&lt;br&gt;
這些功能在任何地方皆很實用，而且特別像是社群網站檢測不適當圖片內容，&lt;br&gt;
我們很難人工一張一張的檢測，這時候Vision API能夠幫助我們做初步的分類，&lt;br&gt;
我們只需要簡單所有圖片的子集合即可。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;自己的註：這邊講到的做法個人認為非常聰明，&lt;br&gt;
他們並不是直接將Vision API認定不適宜的結果，&lt;br&gt;
直接進行刪除的動作，而是先取這些圖片的子集合在&amp;quot;人工檢查&amp;quot;。&lt;br&gt;
這樣兩階段的作法，&lt;br&gt;
&lt;strong&gt;對於社群上的人&lt;/strong&gt;：大幅的減少誤判機率&lt;br&gt;
&lt;strong&gt;對於自己訓練的ML&lt;/strong&gt;：如果我們認為這些圖片是適合的，&lt;br&gt;
我們可以直接更改label，再次強化我們的ML判定。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;又能減少使用者不滿又能強化自己的ML模型，採用兩階段判定確實非常聰明。&lt;/p&gt;
&lt;h4 id=&#34;part-3--我們直接來demo-vision-api的功能&#34;&gt;part 3 : 我們直接來demo Vision API的功能&lt;/h4&gt;
&lt;p&gt;Vision API有提供網頁版，在開始寫code串Vision API的功能前，&lt;br&gt;
我們可以先到這網站測試自己想要偵測的圖片：https://cloud.google.com/vision/&lt;br&gt;
可以先偷看串完Vision API會得到什麼結果。&lt;/p&gt;
&lt;p&gt;(這邊也是先使用影片中的範例，有興趣的朋友可以自己嘗試。)&lt;/p&gt;
&lt;p&gt;Step 1 : 首先我們先到網址中的紅框處，可以上傳自己的圖片。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424jdgJtmdOdf.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424jdgJtmdOdf.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424jdgJtmdOdf_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424jdgJtmdOdf_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 2 : 得到我們圖片分析的結果。&lt;/p&gt;
&lt;p&gt;我們來看看我們可以得到什麼結果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Landmarks」: 顯示了這圖中的地標在哪(71%表示信心指數，有多肯定這答案的意思)，我們還可以看到下方標出了實際上地圖的位置與衛星雲圖。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424C3kSJqrH6c.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424C3kSJqrH6c.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424C3kSJqrH6c_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424C3kSJqrH6c_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Faces」: 顯示了這張圖中哪裡有臉；還有辨識表情，像這張圖他認為圖片中的人很開心。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424eGGTwgH5lq.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424eGGTwgH5lq.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424eGGTwgH5lq_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424eGGTwgH5lq_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/li&gt;
&lt;li&gt;「Labels」: 告訴你這張圖可能的組成元素，與這張圖的標籤。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Qk6J2i2XUh.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Qk6J2i2XUh.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Qk6J2i2XUh_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Qk6J2i2XUh_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/li&gt;
&lt;li&gt;「Web」: 如果拿這張圖到網路上搜尋類似圖片，會得到什麼結果的分析整理。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sdaNqcZLtZ.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sdaNqcZLtZ.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424sdaNqcZLtZ_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424sdaNqcZLtZ_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/li&gt;
&lt;li&gt;「Properties」: 告訴你這張圖片的主色調組成。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424YKUidpaJLb.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424YKUidpaJLb.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424YKUidpaJLb_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424YKUidpaJLb_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/li&gt;
&lt;li&gt;「Safe Search」: 告訴我們這張圖片是否有不適當內容，主要分成四種判定標準
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Adult&lt;/strong&gt;: 圖片內容是否色情&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spoof&lt;/strong&gt;: 圖片內容是否像是meme類型的(可能有些網站要防止meme類型的內容不斷散播)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medical&lt;/strong&gt;: 圖片內容是否像是做外科手術&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Violence&lt;/strong&gt;: 圖片內容是否暴力血腥的&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;很明顯的，這張圖片都沒有包含以上的分類要素。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424INi3LP65B5.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424INi3LP65B5.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424INi3LP65B5_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424INi3LP65B5_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「JSON」: 將上面所有結果的內容包成JSON給你，也就是實際上串好API會拿到的東西。&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-video-intelligence-api&#34;&gt;2. Video intelligence API&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Pre-trained ML APIs
&lt;ul&gt;
&lt;li&gt;Video intelligence API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Video intelligence API是google的影片辨識的API，&lt;br&gt;
可以讓我們分析一個影片內容，從一瞬間、一幀到一整個影片的分析都可以做到。&lt;/p&gt;
&lt;h4 id=&#34;part-1--video-intelligence-api裡面有哪些功能&#34;&gt;part 1 : Video intelligence API裡面有哪些功能&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424n4P2ko1tKM.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424n4P2ko1tKM.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424n4P2ko1tKM_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424n4P2ko1tKM_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;Video intelligence API 功能名稱&lt;/th&gt;
  &lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;「label detection」&lt;/td&gt;
  &lt;td&gt;他會告訴你這影片中可能有什麼(代表著他的label)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Video &amp; scene-level annotations」&lt;/td&gt;
  &lt;td&gt;從各個場景或整個影片&#34;解釋&#34;影片的內容，算上面功能的進階版&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Shot Change Detection」&lt;/td&gt;
  &lt;td&gt;告訴你這個影片哪裡有(突然的)場景變化。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Explicit Content Detection」&lt;/td&gt;
  &lt;td&gt;檢測影片中是否有不適當的內容。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Regionalization」&lt;/td&gt;
  &lt;td&gt;使我們可以指定這個影片可以執行Video intelligence API的區域&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;※補充：&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Video &amp;amp; scene-level annotations」&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;自己的註：要&amp;quot;解釋&amp;quot;影片可以從很多個角度切入，&lt;br&gt;
例如說一個場景可以解釋出一個意義，&lt;br&gt;
scene等級的功能就是在做這樣的分析，而video等級的分析就是做整部影片的解釋。&lt;br&gt;
與label detection不同的是，label只會告訴你有什麼，但不會告訴你意義(沒有&amp;quot;解釋&amp;quot;)&lt;/p&gt;&lt;/blockquote&gt;
&lt;li&gt;「Shot Change Detection」
&gt; 例如：如果你的影片從一個風景突然特寫到一個人，他會告訴你變化的時間點。&lt;/li&gt;
&lt;h4 id=&#34;part-2--demo-video-intelligence-api的功能&#34;&gt;part 2 : demo Video intelligence API的功能&lt;/h4&gt;
&lt;p&gt;Video intelligence API一樣有提供網頁版，在開始串Video intelligence API前，&lt;br&gt;
我們可以先到這網站測試自己影片的結果：https://cloud.google.com/video-intelligence/&lt;/p&gt;
&lt;p&gt;(這邊也是先使用影片中的範例，有興趣的朋友可以自己嘗試。)&lt;/p&gt;
&lt;p&gt;example 1 : 一部影片的分析&lt;/p&gt;
&lt;p&gt;我們先示範上傳一個影片，上傳後我們可以看到google已經為這個影片做了許多標籤：&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/2012042462zsSlldkm.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/2012042462zsSlldkm.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/2012042462zsSlldkm_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/2012042462zsSlldkm_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們觀察結果，我們可以發現紅框處顯示了這影片中的label，&lt;br&gt;
也就是Video intelligence API在這影片中找到的東西。&lt;br&gt;
右側綠框處為這個label對應影片中的位置(秒數)。&lt;/p&gt;
&lt;p&gt;以圖片中的上方影片正好有一隻狗出現，往下方找第一行DOG的label，&lt;br&gt;
對應的紅色分布正是Video intelligence API偵測到有出現狗的片段。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;以人工看影片的方式找出狗不是做不到，&lt;br&gt;
但是會非常耗時且沒辦法大量快速的處理內容。&lt;br&gt;
而且我們要完全確定答案的話，我們必須將整個影片都看過才行。&lt;br&gt;
更何況如果我們不是要找狗而已，我們要找整個影片有哪些內容並記錄下來的話。&lt;br&gt;
那人工處理這件事情的速度會非常慢。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們可以用單一個REST API取得一個JSON格式的回覆結果，&lt;br&gt;
這個畫面也是將JSON格式視覺化呈現，讓我們知道會拿到什麼東西。&lt;/p&gt;
&lt;p&gt;example 2 : 多部影片的分析&lt;/p&gt;
&lt;p&gt;這邊要提到的是對多部影片的分析，適用的情境例如：&lt;br&gt;
我們是一家體育新聞公司，我們想要找尋棒球賽事的精采片段。&lt;br&gt;
手動看手邊的每一部影片是一件耗時的工作，&lt;br&gt;
我們如果使用Video API就可以很輕鬆地得到JSON結果。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424nkniSnmnZI.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424nkniSnmnZI.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424nkniSnmnZI_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424nkniSnmnZI_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們從上方紅框處搜尋baseball，我們就可以找到baseball的影片。&lt;br&gt;
而下方會自動過濾出含有baseball的影片內容，以及baseball有出現的秒數。&lt;br&gt;
而且我們只要對紅點處點擊一下，我們立刻可以看到那一段影片內容。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們可以看見使用了Video Intelligence API，&lt;br&gt;
只需要幾分鐘就能幫我們處理了人工觀看影片可能需要的數小時的工作時間。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&#34;3-cloud-speech-api&#34;&gt;3. Cloud Speech API&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Pre-trained ML APIs
&lt;ul&gt;
&lt;li&gt;Cloud Speech API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cloud Speech API是google的語音辨識的API，&lt;br&gt;
他可以幫助我們從語音轉換成&amp;quot;超過100種語言&amp;quot;的文字稿。&lt;/p&gt;
&lt;h4 id=&#34;part-1--cloud-speech-api裡面有哪些功能&#34;&gt;part 1 : Cloud Speech API裡面有哪些功能&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;Speech API 功能名稱&lt;/th&gt;
  &lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;「Speech to text transcription」&lt;/td&gt;
  &lt;td&gt;只要丟語音給Cloud Speech，就可以回傳語音的文字稿。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Speech timestamps」&lt;/td&gt;
  &lt;td&gt;可以讓你的文字稿具有能回查演講時間的功能(點文字就能跳到該語音段落)。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Profanity filtering」&lt;/td&gt;
  &lt;td&gt;過濾不適當的語音內容。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Batch &amp; streaming transcription」&lt;/td&gt;
  &lt;td&gt;允許傳送一個完整的語音文件，或者也可以發送連續的語音串流。最後我們將會回傳一個完整的對應文字稿。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;※補充：&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Speech timestamps」&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;也就是說，我們可以知道每一個字在speech中的開始與結束時間。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;part-2--demo-cloud-speech-api的功能&#34;&gt;part 2 : demo Cloud Speech API的功能&lt;/h4&gt;
&lt;p&gt;Cloud Speech API一樣有提供網頁版，&lt;br&gt;
我們可以先到這網站測試自己語音的分析結果：https://cloud.google.com/speech&lt;/p&gt;
&lt;p&gt;(這邊也是先使用影片中的範例，有興趣的朋友可以自己嘗試。)&lt;/p&gt;
&lt;p&gt;而這裡我們著重在展示「Speech timestamps」的功能，我們先稍微解釋一下其運作的原理：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/2012042481vWa3ZIVx.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/2012042481vWa3ZIVx.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/2012042481vWa3ZIVx_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/2012042481vWa3ZIVx_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;step1 : 從一個影片中提取出語音。&lt;br&gt;
step2 : 將語音送進 Cloud Speech API 並得到文字稿與時間標記。&lt;br&gt;
step3 : 我們將結果視覺化，在我們視覺化的UI中，我們可以直接搜尋文字稿對應影片的段落。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;example 1 : 一部影片的分析&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424CmjwhnATJr.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424CmjwhnATJr.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424CmjwhnATJr_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424CmjwhnATJr_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這個就是網頁顯示的結果，下方文字稿就是從上面影片內容擷取出的。&lt;br&gt;
我們可以在下方任意點擊一段文字，就會直接跳到影片的該段落(如圖所示)。&lt;/p&gt;
&lt;p&gt;example 2 : 多部影片的分析&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424RHzMIIgn4S.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424RHzMIIgn4S.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424RHzMIIgn4S_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424RHzMIIgn4S_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;p&gt;再來我們想要實現的功能是，在大量的演說影片中找到我們要的關鍵字。&lt;br&gt;
我們回到主目錄，我們以搜尋Firebase作為示範，&lt;br&gt;
我們可以先在上方藍框處搜尋，他會幫我們從我們所有的影片中找到符合我們的結果，&lt;br&gt;
然後只要點擊對應的藍點處(如圖中的紅框處)，就可以直接跳到該段影片有提到Firebase的內容。&lt;/p&gt;
&lt;h4 id=&#34;part-3--cloud-translation裡面有哪些功能與demo&#34;&gt;part 3 : Cloud Translation裡面有哪些功能與demo&lt;/h4&gt;
&lt;p&gt;當我們從語音得到文字之後，我們可能會想開始嘗試分析。&lt;br&gt;
有一件可能必須做的事情就是我們得先試著翻譯他，Cloud Translation可以快速地幫助您完成。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;Translation API 功能名稱&lt;/th&gt;
  &lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;「Translate text」&lt;/td&gt;
  &lt;td&gt;可以翻譯100多種不同的語言&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Detect language」&lt;/td&gt;
  &lt;td&gt;可以偵測100多種不同的語言&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;※補充：&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Detect language」&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;也就是當你看不懂是哪個國家的語言的時候，他可以幫助你找到是哪個國家的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Cloud Translation 最有名的應用就是 Google Translate，相信大家都不陌生，&lt;br&gt;
Cloud Translation API能翻譯100多種不同的語言，&lt;br&gt;
也就是說，如果我們現在想要提供多國語言服務，&lt;br&gt;
自動偵測語言與翻譯語言能幫助你輕鬆地找到這是什麼國家的語言，並翻譯內容。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cloud Translation API一樣有提供網頁版，&lt;br&gt;
我們可以到這網站測試：https://cloud.google.com/translation&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&#34;4-translation-and-nl&#34;&gt;4. Translation and NL&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Pre-trained ML APIs
&lt;ul&gt;
&lt;li&gt;Translation and NL&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;(Translation的課程內容應該在上一節，但這裡是依照google課程的名稱命名的，可能命名有誤。)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Cloud Natural Language是google提供的自然語言辨識API，&lt;br&gt;
我們一樣可以利用單一的REST API request得到一段文字內容的理解。&lt;/p&gt;
&lt;h4 id=&#34;part-1--cloud-natural-language-api裡面有哪些功能&#34;&gt;part 1 : Cloud Natural Language API裡面有哪些功能&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;Natural Language API 功能名稱&lt;/th&gt;
  &lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;「Extract entities」&lt;/td&gt;
  &lt;td&gt;可以從文章內容中提取entities(實體)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Detect sentiment」&lt;/td&gt;
  &lt;td&gt;偵測這篇文章內容中或是句子的情緒，會告訴你情緒是正面還是負面。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Analyze syntax」&lt;/td&gt;
  &lt;td&gt;可以分析語法，了解更多文章的語言細節，或是提取文章中的部分內容。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;「Classify content」&lt;/td&gt;
  &lt;td&gt;可以將文章內容分類到不同類別。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;part-2--analyze-syntax的demo與更詳細介紹&#34;&gt;part 2 : 「Analyze syntax」的demo與更詳細介紹&lt;/h4&gt;
&lt;p&gt;以下，我們將先針對「Analyze syntax」做更多的介紹，&lt;br&gt;
我們使用一個例句 &amp;ldquo;The natural language API helps us understand text.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424JESmMu2nh4.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424JESmMu2nh4.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424JESmMu2nh4_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424JESmMu2nh4_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們做了一個視覺化的圖片來使我們能更了解透過API回覆的JSON內容，&lt;/p&gt;
&lt;li&gt;「Dependency parse tree(紅色部分)」，這個的功能是將所有有關係的詞彙做相互關聯，
像是那些單詞可能與其他的單詞有關係。
&lt;/li&gt;
&lt;li&gt;「Parse label(綠色部分)」，他會告訴我們每個詞在句子中的作用
&lt;blockquote&gt;
&lt;p&gt;例如，在這句話裡面 helps 是 root verb(主要的動詞)，API是nominal subject(主要的主詞)&lt;/p&gt;
&lt;/li&gt;
- 「Part of speech(黃色部分)」，他會告訴我們每個詞在句子中的詞性(形容詞、名詞、動詞...)&lt;/blockquote&gt;
&lt;li&gt;「Lemma(黑色部分)」，代表這個詞的canonical form(標準形式)
&lt;blockquote&gt;
&lt;p&gt;例如，在這句話裡面 helps 的 canonical form(lemma) 是 help&lt;br&gt;
這個對於計算特定單詞用於描述某些內容，在文章中所出現的次數非常有用&lt;br&gt;
你可能不希望在分析的過程中，helps 與 help 被當成兩個詞來分別計算，&lt;br&gt;
這時Lemma就可以幫助你完成這件事情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;「Morphology (灰色部分)」，可以分析這個詞的Morphology(詞法)&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;例如：名詞有可數、不可數的特性&amp;hellip;，動詞有是不是第三人稱單數之類的特性&amp;hellip;&lt;br&gt;
這個結果也會根據語言而有所不同。&lt;/p&gt;
&lt;/li&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;part-3--content-classification的demo與更詳細介紹&#34;&gt;part 3 : 「Content classification」的demo與更詳細介紹&lt;/h4&gt;
&lt;p&gt;以下，我們將針對「Content classification」做更多的介紹，&lt;br&gt;
我們拿一篇新聞文章來做分析，我們將這篇新聞的標題與第一句話丟進Natural Language API進行分類。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204247wsLTIWwVj.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204247wsLTIWwVj.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204247wsLTIWwVj_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204247wsLTIWwVj_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們可以看到他返回的類別是baseball(上方紅框處)，&lt;br&gt;
我們再注意另外一件事，文章裡面&lt;strong&gt;並沒有提到過baseball這個詞&lt;/strong&gt;，&lt;br&gt;
但google告訴我們他有99%的肯定(下方紅框處)這篇文與baseball有關。&lt;/p&gt;
&lt;p&gt;這個API的方法總共提供了700多種可用的類別可以使用。&lt;/p&gt;
&lt;h4 id=&#34;part-4--case-使用cloud-natural-language-api的企業例子&#34;&gt;part 4 : case: 使用Cloud Natural Language API的企業例子&lt;/h4&gt;
&lt;p&gt;這邊我們會提到一間公司使用各種不同的Natural Language API方法在他產品中的例子。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424HMJqpBUnA6.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424HMJqpBUnA6.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424HMJqpBUnA6_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424HMJqpBUnA6_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wootric&lt;/strong&gt;：一個客戶反饋的平台，他透過圖中紅框處幫助客戶收集使用者的回饋，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;他們在自己應用中的各處放置這個方框，&lt;br&gt;
並且要求用戶提供一個分數代表著它們的使用體驗與覺得這個應用最特別的地方。&lt;br&gt;
0-10的分數很容易理解，但是如果是開放式的回饋(自己填文字的)就比較難快速理解(需要時間消化內容)。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;而這個就正是他們使用natural language API的地方，&lt;br&gt;
它們使用「sentiment analysis」來分析這個人的文字回覆情緒是否與他們提供的數字分數吻合，&lt;br&gt;
然後他們使用「entities」與「syntax analysis」取解析出最關鍵的內容(entities)，&lt;br&gt;
並直接反饋給適當的對象，就可以做即時的處理，而不用派一個人手動的逐條閱讀回饋內容才反饋。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;例如：他們可能遇到對可用性感到憤怒的使用者，他們可以及時反應給適當的人，請他做即時的處理。&lt;br&gt;
而如果沒有這樣做，我們會需要一個人手動的閱讀每一條回饋內容，並一個個反饋給適當的對象。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;part-5--demo-cloud-natural-language-api的功能&#34;&gt;part 5 : demo Cloud Natural Language API的功能&lt;/h4&gt;
&lt;p&gt;Cloud Natural Language API一樣有提供網頁版，&lt;br&gt;
我們可以先到這網站測試自己文字分析結果：https://cloud.google.com/natural-language/&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424FBc9vnOwjL.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424FBc9vnOwjL.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424FBc9vnOwjL_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424FBc9vnOwjL_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;p&gt;紅框處可以打入自己想要的句子，&lt;br&gt;
我們以影片中句子作為例子：&amp;ldquo;I liked the sushi but the service was bad.&amp;rdquo;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這是從某個餐廳的評論找下來的，假設我們是經營餐廳的人，每天我們可能會收集很多評論，&lt;br&gt;
我們不會想一句句的分析每個評論，我們可能只想找最正面與最負面的評論。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們來看看Cloud Natural Language API分析的結果：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424whEIr6pxFB.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424whEIr6pxFB.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424whEIr6pxFB_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424whEIr6pxFB_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;li&gt;「Entities」：從這個句子的結果中，我們看到他從我們的句子中分析出了兩個entities(實體)，service與sushi，並且還能夠從這兩個實體中分別分析情緒。
我們除了可以理解整個句子的情感之外，還能分別針對兩個實體(service與sushi)查看情感。&lt;/li&gt;
&lt;blockquote&gt;
&lt;p&gt;natural language API 返回的情緒值介於-1到1，表示情緒的負面與正面。&lt;br&gt;
我們可以看到service的得分為-0.9，幾乎完全是負的，表示顧客認為服務很差。&lt;br&gt;
我們再來看sushi的得分為0.9，幾乎完全是正的，表示顧客非常滿意壽司。&lt;br&gt;
這樣的個別實體分析是非常有價值的，整句話的情緒分析做不到這樣的細節分析。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424LwmwCEynV5.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424LwmwCEynV5.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424LwmwCEynV5_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424LwmwCEynV5_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Sentiment」：我們再來看到整句話的情感分析，也能同樣看到上方的單個實體分析結果。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;不過這個例子特別的地方在於，我們針對單個實體分析情緒，&lt;br&gt;
比起分析整句話的情緒，能得到更多有用的資訊。&lt;br&gt;
(sushi好而service不好，整句話只能知道是不好的。)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424kTL0ZzyBiJ.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424kTL0ZzyBiJ.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424kTL0ZzyBiJ_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424kTL0ZzyBiJ_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】12 - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;「Syntax」：可以幫我們分析這句子的結構，因為上面已經有詳細demo過了，這邊只展示結果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;「Categories」：可以看到這句話是屬於哪一種分類。影片中沒有展示。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;但我有自己試了，原來是找不到結果XD (是因為這樣才沒放在影片中嗎XD)&lt;br&gt;
回傳的結果會是 &amp;ldquo;No categories found. Try a longer text input.&amp;rdquo;&lt;br&gt;
照這句話的意思看來，可能是資訊量不足，還沒辦法做分類，&lt;br&gt;
上方的例子畢竟是用一篇新聞的句子才能找到結果，也許是因為這句話能提供的資訊還太少吧。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214867&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 12】 Google ML - Lesson 9 - google圖片辨識(Vision), 影片辨識(Video), 語音辨識, 語言翻譯, 自然語言辨識(NL) API功能總整理&lt;/a&gt;&lt;/p&gt;
&lt;!--
Post ID: 1040
Post Date: 2019-09-13 00:26:36
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/cloud-shell/</link>
        <pubDate>Thu, 12 Sep 2019 00:23:19 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/cloud-shell/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424fTcV9apSY0.png" alt="Featured image of post 【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;我們繼續 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的第五章節~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】 Chapter 1 - 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】 Chapter 2(上) - 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 4】 Chapter 2(中) - 我們要怎麼樣設計一個ML問題? 與google提供的好用工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213900&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 5】 Chapter 2(下) - ML要成功的秘訣與策略&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213904&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 6】 Chapter 3(上) - ML會失敗的最常見十大陷阱&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 7】 Chapter 3(下) - ML在企業運行的五大階段與注意事項&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214362&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 8】 Chapter 5(上) - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214523&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 9】 Lab 0 - 每次在google雲端上要開始lab前都要的事前準備與注意事項&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214718&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 10】 Lab 1 - 在google雲端上分析地震資料與製圖，並儲存在雲端&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第五章節的課程地圖： 「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Module Introduction&lt;/li&gt;
&lt;li&gt;Cloud Datalab
&lt;ul&gt;
&lt;li&gt;Cloud Datalab&lt;/li&gt;
&lt;li&gt;Demo: Cloud Datalab&lt;/li&gt;
&lt;li&gt;Development process&lt;/li&gt;
&lt;li&gt;Demo of rehosting Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Working with managed services&lt;/li&gt;
&lt;li&gt;Computation and storage&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM
&lt;ul&gt;
&lt;li&gt;Intro to Qwiklabs&lt;/li&gt;
&lt;li&gt;Intro to Renting-VM Lab&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM to process earthquake data&lt;/li&gt;
&lt;li&gt;Lab debrief &amp;lt;&amp;ndash; (昨天到這邊)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Cloud Shell」&lt;/li&gt;
&lt;li&gt;「Third wave of cloud」
&lt;ul&gt;
&lt;li&gt;「Third Wave of Cloud: Fully-Managed Services」&lt;/li&gt;
&lt;li&gt;「Third Wave of Cloud: Serverless Data Analysis」&lt;/li&gt;
&lt;li&gt;「Third Wave of Cloud: BigQuery and Cloud Datalab」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Datalab and BigQuery
&lt;ul&gt;
&lt;li&gt;Lab Intro: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab Debrief: Analyzing Data using Datalab and BigQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Machine Learning with Sara Robinson」
&lt;ul&gt;
&lt;li&gt;「ML, not rules」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pre-trained ML APIs
&lt;ul&gt;
&lt;li&gt;Vision API in action&lt;/li&gt;
&lt;li&gt;Video intelligence API&lt;/li&gt;
&lt;li&gt;Cloud Speech API&lt;/li&gt;
&lt;li&gt;Translation and NL&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lab: Machine Learning APIs
&lt;ul&gt;
&lt;li&gt;Lab: Pretrained ML APIs Intro&lt;/li&gt;
&lt;li&gt;Lab: Invoking Machine Learning APIs&lt;/li&gt;
&lt;li&gt;Lab Solution&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-cloud-shell&#34;&gt;1. Cloud Shell&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Cloud Shell&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我們之前所做的事情是建立一個 Compute Engine VM，他幫我們實現了一些功能。&lt;br&gt;
但其實以這樣的需求來說，這樣做是有點浪費的。&lt;/p&gt;
&lt;p&gt;現在我們將來介紹 &lt;strong&gt;Google Cloud Shell&lt;/strong&gt;，&lt;br&gt;
想要執行 Cloud Shell 只需要點選 GCP console 右上角的「Activate Google Cloud Shell」，即可開始執行。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424DvdhBMWEFm.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424DvdhBMWEFm.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424DvdhBMWEFm_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424DvdhBMWEFm_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們所開啟的視窗，稱為 &lt;strong&gt;Cloud Shell&lt;/strong&gt;，他是一種&lt;strong&gt;小型的VM&lt;/strong&gt;，&lt;br&gt;
雖然小，但當我們的目的只是嘗試些小事情(跑幾行code、複製東西&amp;hellip;)，Cloud Shell絕對夠用。&lt;/p&gt;
&lt;p&gt;我們看到Cloud Shell的視窗，基本上我們可以做與Compute Engine VM幾乎相同的事情，&lt;br&gt;
此外，Cloud Shell更適合給developers使用，&lt;br&gt;
在Compute Engine VM中，我們可能還需要安裝一些軟體(因為是全新的環境)，&lt;br&gt;
但這些在Cloud Shell幾乎都不用，已經都裝好了。&lt;/p&gt;
&lt;p&gt;這邊以「git」,「git clone」作為示範，可以看到我們能直接使用。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424WAKyGOAC1h.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424WAKyGOAC1h.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424WAKyGOAC1h_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424WAKyGOAC1h_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;p&gt;但要注意的事情就是 Cloud Shell 是一個很短暫的 VM，&lt;br&gt;
也就是說大概一陣子(可能大約一小時)沒使用，這VM的內容會被自動回收。&lt;br&gt;
但我們也能隨時重新在啟動新的 Cloud Shell，&lt;br&gt;
或者我們也可以按新的tab啟動另外一個 Cloud Shell (下圖&amp;quot;+&amp;ldquo;號)，這仍是相同的VM。&lt;br&gt;
當有兩個tab的時候，你可以執行其他指令在另外一個tab，&lt;br&gt;
讓每個 Cloud Shell 所做的事情更清楚。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：仍是在同個VM下執行指令。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424AMsJSGn4hS.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424AMsJSGn4hS.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424AMsJSGn4hS_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424AMsJSGn4hS_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-third-wave-of-cloud-fully-managed-services&#34;&gt;2. Third Wave of Cloud: Fully-Managed Services&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Third wave of cloud
&lt;ul&gt;
&lt;li&gt;Third Wave of Cloud: Fully-Managed Services&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204248Pnuy3PP3S.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204248Pnuy3PP3S.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204248Pnuy3PP3S_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204248Pnuy3PP3S_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這邊講一點歷史，三波google雲的變化：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;原先的 Data lab 是由本機電腦拓展到雲端處理服務，&lt;br&gt;
google從MapReduce，後來意識到困難(也可能是因應時代變化)。&lt;/li&gt;
&lt;li&gt;改為開發了Dremel和Colossus，Dremel是做SQL查詢用的，&lt;br&gt;
Colossus是一個允許大量資料讀取的文件系統，&lt;br&gt;
Dremel和Colossus作為BigQuery和Google Cloud Storage，&lt;br&gt;
在Google Cloud Platform上提供，這就是指google的第二波雲。&lt;/li&gt;
&lt;li&gt;當然，這樣的事情不只google在做，所以就會有第三波雲。&lt;br&gt;
最大的差別就是在，第二波雲主要在做的是租用基礎設施(之前lab在做的事情)。&lt;br&gt;
第三波雲重點放在完全彈性的服務。&lt;br&gt;
如果要處理比較新的項目，請使用第三波雲的Managed Services，&lt;br&gt;
這個服務能提供open source軟體的標準使用方法，而且也不須擔心基礎結構。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id=&#34;3-third-wave-of-cloud-serverless-data-analysis&#34;&gt;3. Third Wave of Cloud: Serverless Data Analysis&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Third wave of cloud
&lt;ul&gt;
&lt;li&gt;Third Wave of Cloud: Serverless Data Analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而上面這些內容實際上對應到的是什麼，這邊我們提供範例，&lt;br&gt;
我們開啟BigQuery console，BigQuery是一個存放data的倉庫。&lt;/p&gt;
&lt;p&gt;我們現在想查詢醫療保險索賠的public dataset，我想要查2014年的Medicare索賠。&lt;br&gt;
而我們想做一個ad hoc(臨時的)query查詢，&lt;br&gt;
所以我們也沒有創建indices，也沒有準備database使這查詢更有效率。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204249wNBKMniMY.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204249wNBKMniMY.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204249wNBKMniMY_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204249wNBKMniMY_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們只花了3秒左右查詢了276MB的資料，BigQuery是一個columnar database，&lt;br&gt;
我們可以注意一下結果，它們在Medicare的公共數據中。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424hoFl52acay.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424hoFl52acay.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424hoFl52acay_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424hoFl52acay_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這個數據大約有2400萬行，因此我們能在幾秒鐘對一個大約2400萬行的數據集進行查詢，&lt;br&gt;
而且在不建立任何VM、不安裝任何軟體下完成這樣的查詢操作。&lt;/p&gt;
&lt;p&gt;當我們說第三波雲時，就是這件事，我們想做到完全的managed services，&lt;br&gt;
到時我們只需要寫一些code，並交由他執行即可。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;4-third-wave-of-cloud-bigquery-and-cloud-datalab&#34;&gt;4. Third Wave of Cloud: BigQuery and Cloud Datalab&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Third wave of cloud
&lt;ul&gt;
&lt;li&gt;Third Wave of Cloud: BigQuery and Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424aNGJzT5ahy.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424aNGJzT5ahy.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424aNGJzT5ahy_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424aNGJzT5ahy_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;p&gt;在上面的小實驗中，我們看到了BigQuery的一些優點&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;能快速地進行大量資料的查詢。&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;
- 我們能使用SQL2011做一個ad-hoc(臨時的)查詢。
&lt;li&gt;而想將資料傳入BigQuery也非常簡單，直接上傳檔案，
或透過web GUI存到雲端中，再將它們的資料流向BigQuery。
&lt;/li&gt;
&lt;li&gt;另外匯出BigQuery的資料也非常簡單，google有提供非常多的APIs，
運行SQL query並保存成任何你想要的格式結果。
&lt;/li&gt;
- BigQuery資料儲存不貴。
&lt;li&gt;最重要的目的是，因為有了BigQuery，
Datalab可以與BigQuery有良好的整合，
所以我們可以探索數據、運行query，
並將結果以Pandas DataFrame的方式匯出，還能用Python來製圖。
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id=&#34;5-ml-not-rules&#34;&gt;5. ML, not rules&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Machine Learning with Sara Robinson
&lt;ul&gt;
&lt;li&gt;ML, not rules&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這邊我們要稍微討論一下機器學習比起一般方法更強大的地方，&lt;br&gt;
但要比較，我們就必須要先思考，「&lt;strong&gt;如果沒有機器學習，我們要怎麼解一樣的問題?&lt;/strong&gt;」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;問題1：請說明一個方法(rule)，能分辨出下面的蘋果與橘子。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424YVj4cvPPum.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424YVj4cvPPum.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424YVj4cvPPum_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424YVj4cvPPum_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;你可能會想說，我們只要分辨顏色就好了。 這是正確的方向。&lt;br&gt;
如果我們的程式分辨出大多像素是紅色，就輸出apple；大多像素是橘色，就輸出orange。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;但一樣的問題，如果我們今天拿到的是灰階的圖片呢?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;問題2：請說明一個方法(rule)，能分辨出下面的蘋果與橘子。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424AMlwHV4i5Q.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424AMlwHV4i5Q.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424AMlwHV4i5Q_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424AMlwHV4i5Q_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這時候我們可能就需要開始尋找表面的紋理或梗的形狀之類的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;但你會發現，我們會因此而要開始改寫我們的演算法，才能夠達到這題目正確的分類結果。&lt;br&gt;
但正當你寫完的時候，如果我們突然想要分辨出三種水果呢?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QABqgxwizD.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QABqgxwizD.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424QABqgxwizD_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424QABqgxwizD_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;p&gt;你到那時才會知道，你整個的算法又會需要再重寫了，&lt;br&gt;
但這些圖片是如此的相似、都是接近一個橢圓形的立體、都是水果，&lt;br&gt;
如果我們的任務改成相差很多的，或許就會變簡單了吧?&lt;br&gt;
這裡就有一個例子，我們來分辨狗與拖把的圖片：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ZmZpuC2MUM.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ZmZpuC2MUM.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424ZmZpuC2MUM_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424ZmZpuC2MUM_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;p&gt;狗有生命且會呼吸，掃把沒眼睛、鼻子、嘴巴，&lt;br&gt;
正當你想這個問題看來能夠輕易地被解決的時候，&lt;br&gt;
突然有人請你分辨sheep dogs(羊狗)與拖把的差別時，你又崩潰了，&lt;br&gt;
況且這是一個連人由自己的眼睛分辨都很難的題目，&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sboOqT5Yid.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sboOqT5Yid.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424sboOqT5Yid_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424sboOqT5Yid_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們就不要再寫code(寫rules)解決這樣的問題了吧，&lt;br&gt;
我們沒有必要特別針對特定的圖片多寫幾行code，只為了能多識別出那個圖像，&lt;br&gt;
而且就算寫出來了，還有可能在別的情況下，這份code又沒有用了。&lt;/p&gt;
&lt;p&gt;所以我們應該要改寫能&lt;strong&gt;自動幫助我們找到這些規則&lt;/strong&gt;的code，&lt;br&gt;
這時候我們就需要依靠ML。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424fTcV9apSY0.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424fTcV9apSY0.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424fTcV9apSY0_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424fTcV9apSY0_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】11 - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Google Cloud Platform提供了兩種簡單的方式讓ML能加在我們自己的project中，&lt;br&gt;
而且我們可以自己定義ML的功能，如圖的左邊，&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;「Tensorflow」: Google Brain團隊提供的open source library，
能讓我們使用自己的數據建構並訓練自己的ML模型。&lt;/li&gt;
&lt;li&gt;「Cloud Machine Learning Engine」: Tensorflow模型除了在自己的電腦跑之外，
也能直接在google提供的架構下直接執行。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;圖的右側指的是一些google已經訓練好的ML所提供的API，&lt;br&gt;
google又稱之為&amp;quot;友善的機器學習&amp;rdquo;，可以透過REST API取得資料，&lt;br&gt;
下個章節中，我們會把所有的API的應用做介紹並且demo每一個功能。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214863&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 11】 Google ML - Lesson 8 - Cloud Shell 的介紹與 google雲的三代變化, 使用ML與一般演算法的比較與優勢&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1036
Post Date: 2019-09-12 00:23:19
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/rent-a-vm/</link>
        <pubDate>Wed, 11 Sep 2019 02:50:07 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/rent-a-vm/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424ifjuteUV4H.png" alt="Featured image of post 【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天的內容一開始的幾個part會跟昨天重複(步驟上的相同)，&lt;br&gt;
原因是今天整理完之後，覺得把昨天的步驟整理到今天放在一起會比較像一個完整的lab。&lt;/p&gt;
&lt;p&gt;而昨天的lab內容我也會把這次lab 1的內容拿掉，&lt;br&gt;
剩下的內容改成lab 0，代表運行lab前的準備，&lt;br&gt;
這樣也有個好處，之後每個的lab開始前，&lt;br&gt;
都會有跟lab 0差不多的步驟，這樣之後也就不用再贅述這部分了。&lt;br&gt;
所以在今天的lab開始前，還是一樣需要先做lab 0的部分才能開始哦~&lt;br&gt;
(雖然下面步驟也會貼心的再提醒就是了XD)&lt;/p&gt;
&lt;p&gt;我們就繼續 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的第五章節~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】 Chapter 1 - 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】 Chapter 2(上) - 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 4】 Chapter 2(中) - 我們要怎麼樣設計一個ML問題? 與google提供的好用工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213900&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 5】 Chapter 2(下) - ML要成功的秘訣與策略&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213904&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 6】 Chapter 3(上) - ML會失敗的最常見十大陷阱&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 7】 Chapter 3(下) - ML在企業運行的五大階段與注意事項&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214362&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 8】 Chapter 5(上) - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214523&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 9】 Lab 0 - 每次在google雲端上開始lab前都要的事前準備與注意事項&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第五章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Module Introduction&lt;/li&gt;
&lt;li&gt;Cloud Datalab
&lt;ul&gt;
&lt;li&gt;Cloud Datalab&lt;/li&gt;
&lt;li&gt;Demo: Cloud Datalab&lt;/li&gt;
&lt;li&gt;Development process&lt;/li&gt;
&lt;li&gt;Demo of rehosting Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Working with managed services&lt;/li&gt;
&lt;li&gt;Computation and storage&lt;/li&gt;
&lt;li&gt;「Lab: Rent-a-VM」
&lt;ul&gt;
&lt;li&gt;Intro to Qwiklabs &amp;lt;&amp;ndash; (昨天到這邊)&lt;/li&gt;
&lt;li&gt;「Intro to Renting-VM Lab」&lt;/li&gt;
&lt;li&gt;「Lab: Rent-a-VM to process earthquake data」&lt;/li&gt;
&lt;li&gt;「Lab debrief」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cloud Shell&lt;/li&gt;
&lt;li&gt;Third wave of cloud
&lt;ul&gt;
&lt;li&gt;Third Wave of Cloud: Fully-Managed Services&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: Serverless Data Analysis&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: BigQuery and Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Datalab and BigQuery
&lt;ul&gt;
&lt;li&gt;Lab Intro: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab Debrief: Analyzing Data using Datalab and BigQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Machine Learning with Sara Robinson
&lt;ul&gt;
&lt;li&gt;ML, not rules&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pre-trained ML APIs
&lt;ul&gt;
&lt;li&gt;Vision API in action&lt;/li&gt;
&lt;li&gt;Video intelligence API&lt;/li&gt;
&lt;li&gt;Cloud Speech API&lt;/li&gt;
&lt;li&gt;Translation and NL&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lab: Machine Learning APIs
&lt;ul&gt;
&lt;li&gt;Lab: Pretrained ML APIs Intro&lt;/li&gt;
&lt;li&gt;Lab: Invoking Machine Learning APIs&lt;/li&gt;
&lt;li&gt;Lab Solution&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;lab-rent-a-vm-to-process-earthquake-data&#34;&gt;Lab: Rent-a-VM to process earthquake data&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Lab: Rent-a-VM
&lt;ul&gt;
&lt;li&gt;Lab: Rent-a-VM to process earthquake data&lt;/li&gt;
&lt;li&gt;Lab debrief&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在這裡，我們將建立一個 Compute Engine，並使用一些位於Cloud Storage的data，&lt;br&gt;
並完成一個簡單的任務：使我們的網頁顯示現在的地震資料圖，並把這些資料儲存下來。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-0--事前準備-開啟-gcp-console&#34;&gt;part 0 : (事前準備) 開啟 GCP console&lt;/h4&gt;
&lt;p&gt;請先參考 &lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214523&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 9】- 每次在google雲端上開始lab前都要的事前準備與注意事項&lt;/a&gt; 的內容，完成到&lt;strong&gt;運行中階段&lt;/strong&gt;。&lt;/p&gt;
&lt;h4 id=&#34;part-1--準備機器-在-gcp-console-中建立一台vm並執行-ssh&#34;&gt;part 1 : (準備機器) 在 GCP console 中建立一台VM，並執行 SSH&lt;/h4&gt;
&lt;p&gt;Step 1 : 在GCP console中，我們找到 MENU -&amp;gt; Compute Engine -&amp;gt; VM instances&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424bpGRFtaEof.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424bpGRFtaEof.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424bpGRFtaEof_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424bpGRFtaEof_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 2 : 按下Create新的VM後，&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;設定名字&lt;/li&gt;
&lt;li&gt;設定zone(可選擇靠近自己的地區的，或任意也沒關係，影片中示範：US Central 1-b)&lt;/li&gt;
&lt;li&gt;設定CPU(影片中示範：1 vCPU，已經很足夠使用)&lt;/li&gt;
&lt;li&gt;下方選擇&amp;quot;Allow full access to all the Cloud APIs&amp;quot;&lt;/li&gt;
&lt;li&gt;按下最下方的Create&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424siuQaGcG3i.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424siuQaGcG3i.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424siuQaGcG3i_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424siuQaGcG3i_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 3 : 稍微等一下VM被建立，按下SSH，(這邊可能需要允許pop-ups)&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Nl1h8CnfPg.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Nl1h8CnfPg.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Nl1h8CnfPg_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Nl1h8CnfPg_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 4 : 我們可以看到SSH的畫面顯示如下。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QE5bhZsAm7.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QE5bhZsAm7.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424QE5bhZsAm7_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424QE5bhZsAm7_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-2--準備資料-在-ssh-中-下載必要資料&#34;&gt;part 2 : (準備資料) 在 SSH 中 下載必要資料&lt;/h4&gt;
&lt;p&gt;Step 1 : 在SSH中，我們會需要使用git，如果還沒有安裝，&lt;br&gt;
我們輸入以下指令即可安裝git，&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果是安裝完成的，我們直接輸入「git」，會看到他的使用說明(如何下參數)。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Wm7KYBN11C.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Wm7KYBN11C.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Wm7KYBN11C_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Wm7KYBN11C_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 2 : 再來我們要使用git來下載我們想要的資料，&lt;br&gt;
我們輸入&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/GoogleCloudPlatform/training-data-analyst
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;下載完我們輸入&lt;code&gt;ls&lt;/code&gt;顯示當前資料夾，&lt;br&gt;
如果有看到顯示「training-data-analyst」，那表示下載成功了。&lt;/p&gt;
&lt;p&gt;我們接下來要來取用來自USGS的地震資料，&lt;br&gt;
而這段script，google在剛剛clone的資料夾內已經幫我們寫好了。&lt;/p&gt;
&lt;p&gt;Step 3 : 首先我們需要先&lt;strong&gt;切換資料夾&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; training-data-analyst/courses/machine_learning/deepdive/01_googleml/earthquakes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;小技巧：使用「tab」，可以自動完成，不用完整的輸入資料夾名稱(如果資料夾存在)。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Step 4 : 接下來我們輸入這段程式碼，less可以幫助我們預覽這份script檔案。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;less ingest.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用方式為：&lt;br&gt;
「space」:往下捲動&lt;br&gt;
&lt;code&gt;b&lt;/code&gt;:備份這個page&lt;br&gt;
&lt;code&gt;q&lt;/code&gt;:離開(quit)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424JxzYNkeoxl.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424JxzYNkeoxl.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424JxzYNkeoxl_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424JxzYNkeoxl_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;p&gt;讓我們稍微解析一下這份scripts：&lt;br&gt;
&lt;code&gt;rm&lt;/code&gt;行：強制移除現有的&amp;quot;earthquakes.csv&amp;quot;檔案(如果存在的話)&lt;br&gt;
「wget」行：從USGS下載最近的資料，並命名為&amp;quot;earthquakes.csv&amp;quot;&lt;/p&gt;
&lt;p&gt;Step 5 : 執行這份script檔案，將我們要的檔案下載下來。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash ingest.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Step 6 : 我們可以用「head」偷看一下這個下載檔案的前幾行。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;head earthquakes.csv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我們可以看到有顯示時間、經緯度，與所有這幾週發生的地震資料。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-3--跑程式-轉換資料部分&#34;&gt;part 3 : (跑程式) 轉換資料部分&lt;/h4&gt;
&lt;p&gt;Step 0 : 我們可以先在以下網址看結果與code的解釋：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;基本上是取得地震資料，然後使用matplotlib製圖而成。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/GoogleCloudPlatform/datalab-samples/blob/master/basemap/earthquakes.ipynb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/GoogleCloudPlatform/datalab-samples/blob/master/basemap/earthquakes.ipynb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Step 1 : 換我們自己動動手，首先先把我們所缺的python package都安裝起來：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「basemap」：可以畫製地理位置地圖&lt;br&gt;
「numpy」：數字處理library&lt;br&gt;
「matplotlib」：基礎圖形繪製library&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash install_missing.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Step 2 : 執行&lt;code&gt;transform.py&lt;/code&gt;，這份code會執行與剛剛Step 0相同的內容：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python transform.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Step 3 : 執行「ls -lrt」，這會照時間順序顯示我們&lt;strong&gt;最近所建立的新東西&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -lrt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Step 4 : 我們會發現有個「earthquakes.png」被建立，到這邊這階段就完成了。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-4--儲存結果-建立bucket雲端儲存資料的地方並儲存資料&#34;&gt;part 4 : (儲存結果) 建立bucket(雲端儲存資料的地方)，並儲存資料。&lt;/h4&gt;
&lt;p&gt;現在我們想將這個生成的結果存在GCP的雲端上。&lt;/p&gt;
&lt;p&gt;Step 1 : 我們先按一下Menu，選擇storage，並按下Create bucket。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204249YpTRICksH.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204249YpTRICksH.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204249YpTRICksH_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204249YpTRICksH_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 2 : 這是關於bucket的設定介面，我們一共需要設定的東西如下，&lt;br&gt;
準備好就可以按Create了!&lt;/p&gt;
&lt;li&gt;`名字`：注意這名字一定要**全球唯一**!!!
&lt;blockquote&gt;
&lt;p&gt;我們可以直接使用之前的part 0階段產生的 Projcet ID，我們能確保這是全球唯一的，&lt;br&gt;
除非真的是極度的不幸，不然這名字基本上不太可能被其他人使用過XD&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;「storage class」：可選multi-regional或regional&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;看想不想要跨地區儲存(全球化的應用會需要)，這邊我們先選regional&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;「location」：選地區&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;基本上建議跟當初part 1所建立的 Compute Engine(VM) 在同一個位置，會比較快(減少資料取得時間)。&lt;br&gt;
所以這邊我們一樣選 us-central1&lt;/p&gt;
&lt;/li&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Xk4UPv6y7i.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Xk4UPv6y7i.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Xk4UPv6y7i_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Xk4UPv6y7i_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 3 : 現在我們該來把我們結果的圖片存進去剛剛建的bucket了，&lt;br&gt;
我們回到我們的 SSH 中，我們直接使用GCP的「gsutil」工具來儲存資料。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gsutil cp earthquakes.* gs://&amp;lt;這邊填上你bucket的名字&amp;gt;/earthquakes/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;稍微解析一下這段：&lt;br&gt;
「gsutil」：GCP提供的指令工具&lt;br&gt;
&lt;code&gt;cp&lt;/code&gt;：copy&lt;br&gt;
「earthquakes.&lt;em&gt;」：任何符合「earthquakes.&lt;/em&gt;」格式的資料，&lt;code&gt;*&lt;/code&gt;代表任意值&lt;br&gt;
「gs://&amp;lt;這邊填上你bucket的名字&amp;gt;/earthquakes/」：目標路徑&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204243X1zM5CSFS.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204243X1zM5CSFS.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204243X1zM5CSFS_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204243X1zM5CSFS_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-5--顯示結果-找到剛剛儲存的資料並顯示結果&#34;&gt;part 5 : (顯示結果) 找到剛剛儲存的資料，並顯示結果。&lt;/h4&gt;
&lt;p&gt;Step 1 : 我們回到我們剛剛的bucket，重新整理後，應該會看到檔案已經被儲存了。&lt;br&gt;
會看到三個檔案「earthquakes.htm」, 「earthquakes.png」, 「earthquakes.cs」。&lt;/p&gt;
&lt;p&gt;這表示這三個檔案已經透過剛剛的指令被複製進我們的bucket了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424jykRyauTXy.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424jykRyauTXy.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424jykRyauTXy_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424jykRyauTXy_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 2 : 再來我們要將我們在雲端所儲存的東西，製作成一個連結分享出去。&lt;br&gt;
先在左方紅框處的地方打勾，然後再打勾右方紅框處(才會看到顯示Public link)。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424H4AlbvDwKi.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424H4AlbvDwKi.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424H4AlbvDwKi_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424H4AlbvDwKi_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;p&gt;※新版的介面UI改了，我們改在 SSH 中執行以下指令，以達到一樣的效果：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gsutil acl ch -u AllUsers:R gs://&amp;lt;這邊填上你bucket的名字&amp;gt;/earthquakes/*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Step 3 : 點一下Public link，就會顯示剛剛結果圖了，我們也可將這結果分享給別人(公開的情況下)。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;可以稍微注意網址：「storage.googleapis.com/&amp;lt;我們bucket的名稱&amp;gt;/earthquake/earthquake.htm」&lt;br&gt;
這就像是一般我們常見的資料夾結構&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ifjuteUV4H.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ifjuteUV4H.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424ifjuteUV4H_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424ifjuteUV4H_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】10 - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&#34;  &gt;&lt;/p&gt;
&lt;p&gt;到這邊我們就算完成我們這次的lab了，&lt;br&gt;
這次的lab我們主要學習的目標有：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Compute Engine (VM) 的租用，並在上面運作程式碼&lt;/li&gt;
&lt;li&gt;使用 Cloud Storage 儲存資料&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不過在之後的lab中，就不會再使用這個VM了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這個lab主要的目的是在建立所有GCP上內容的基礎以及知識。&lt;br&gt;
之後自己想做 Side Project 也必須用到這些觀念。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在之後大部分的課程中，我們將改使用 &lt;strong&gt;Managed Services&lt;/strong&gt;。&lt;br&gt;
&lt;strong&gt;Managed Services&lt;/strong&gt; 允許我們直接在上面跑程式，而不需要再自己配置VM、安裝軟體了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Managed Services&lt;/strong&gt; 是一種更高階的方式運用 Cloud Services。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214718&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 10】 Google ML - Lab 1 - Rent-a-VM to process earthquake data - 在google雲端上分析地震資料與製圖，並儲存在雲端&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1022
Post Date: 2019-09-11 02:50:07
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/intro-to-qwiklabs/</link>
        <pubDate>Tue, 10 Sep 2019 02:48:08 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/intro-to-qwiklabs/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424GNGO6OY2R3.png" alt="Featured image of post 【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天我們繼續 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的第五章節~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】 Chapter 1 - 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】 Chapter 2(上) - 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 4】 Chapter 2(中) - 我們要怎麼樣設計一個ML問題? 與google提供的好用工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213900&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 5】 Chapter 2(下) - ML要成功的秘訣與策略&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213904&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 6】 Chapter 3(上) - ML會失敗的最常見十大陷阱&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 7】 Chapter 3(下) - ML在企業運行的五大階段與注意事項&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214362&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 8】 Chapter 5(上) - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第五章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Module Introduction&lt;/li&gt;
&lt;li&gt;Cloud Datalab
&lt;ul&gt;
&lt;li&gt;Cloud Datalab&lt;/li&gt;
&lt;li&gt;Demo: Cloud Datalab&lt;/li&gt;
&lt;li&gt;Development process&lt;/li&gt;
&lt;li&gt;Demo of rehosting Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Working with managed services&lt;/li&gt;
&lt;li&gt;Computation and storage &amp;lt;&amp;ndash; (昨天到這邊)&lt;/li&gt;
&lt;li&gt;「Lab: Rent-a-VM」
&lt;ul&gt;
&lt;li&gt;「Intro to Qwiklabs」&lt;/li&gt;
&lt;li&gt;Intro to Renting-VM Lab&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM to process earthquake data&lt;/li&gt;
&lt;li&gt;Lab debrief&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cloud Shell&lt;/li&gt;
&lt;li&gt;Third wave of cloud
&lt;ul&gt;
&lt;li&gt;Third Wave of Cloud: Fully-Managed Services&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: Serverless Data Analysis&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: BigQuery and Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Datalab and BigQuery
&lt;ul&gt;
&lt;li&gt;Lab Intro: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab Debrief: Analyzing Data using Datalab and BigQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Machine Learning with Sara Robinson
&lt;ul&gt;
&lt;li&gt;ML, not rules&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pre-trained ML APIs
&lt;ul&gt;
&lt;li&gt;Vision API in action&lt;/li&gt;
&lt;li&gt;Video intelligence API&lt;/li&gt;
&lt;li&gt;Cloud Speech API&lt;/li&gt;
&lt;li&gt;Translation and NL&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lab: Machine Learning APIs
&lt;ul&gt;
&lt;li&gt;Lab: Pretrained ML APIs Intro&lt;/li&gt;
&lt;li&gt;Lab: Invoking Machine Learning APIs&lt;/li&gt;
&lt;li&gt;Lab Solution&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;lab-intro-to-qwiklabs&#34;&gt;Lab: Intro to Qwiklabs&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Lab: Rent-a-VM
&lt;ul&gt;
&lt;li&gt;Intro to Qwiklabs&lt;/li&gt;
&lt;li&gt;Intro to Renting-VM Lab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這邊會進入我們第一個lab，我們可以從Coursera直接執行我們的應用，&lt;br&gt;
我們可以參考下圖的使用說明：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204247OJYOT4OWa.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204247OJYOT4OWa.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204247OJYOT4OWa_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204247OJYOT4OWa_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&#34;  &gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Step1: 在Coursera點選一個Lab&lt;/li&gt;
&lt;li&gt;Step2: 按下藍色的Open Tool(藍色按鈕)，進入Qwiklabs&lt;/li&gt;
&lt;li&gt;Step3: 在Qwiklabs按下START LAB(綠色按鈕)，開始一個lab&lt;/li&gt;
&lt;li&gt;Step4: 在開始lab的同時，會有一些credentials被同時生成(對應各個帳號)&lt;/li&gt;
&lt;li&gt;Step5: 在Qwiklabs可以點選Open Google Console(黃色按鈕)&lt;/li&gt;
&lt;li&gt;Step6: 他會要求你登入Google Home platform，這個帳號密碼在Step4找得到(並非個人google帳號)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;再來我們來實際執行一次吧！(這裡的截圖取用影片中的範例，帳號密碼也只是影片中的範例)&lt;/p&gt;
&lt;h4 id=&#34;part-1--開始執行階段&#34;&gt;part 1 : 開始執行階段&lt;/h4&gt;
&lt;p&gt;Step 1: 按下藍色的Open Tool按鈕&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424fjpygvxdvy.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424fjpygvxdvy.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424fjpygvxdvy_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424fjpygvxdvy_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 2: 可以在右邊閱讀這個lab的詳細內容與注意事項，&lt;br&gt;
按下綠色的START LAB(綠色按鈕)就會進入Qwiklabs，&lt;br&gt;
這個視窗在開始Qwiklabs後可以不用關閉，繼續查詢lab的內容。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424yFdHiYISm2.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424yFdHiYISm2.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424yFdHiYISm2_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424yFdHiYISm2_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 3: 開始lab之後，右上角時間會開始倒數，&lt;br&gt;
不過這個不用擔心，時間基本上一定夠做得完lab。&lt;br&gt;
(如果真的做不完，還可以再重啟lab，使他重新倒數計時。)&lt;/p&gt;
&lt;p&gt;我們也可以看到左側產生的各種&lt;strong&gt;帳號、密碼與 Project ID&lt;/strong&gt;，&lt;strong&gt;作為之後的步驟使用&lt;/strong&gt;&lt;br&gt;
(這裡的&lt;strong&gt;帳號、密碼與 Project ID&lt;/strong&gt;都是臨時且唯一的，在lab結束後就會消失。)&lt;br&gt;
下一步我們就按上方的 Open Google Console。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424dT3q4NU0Ca.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424dT3q4NU0Ca.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424dT3q4NU0Ca_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424dT3q4NU0Ca_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 4: 這裡會要求登入google，請務必輸入「Step3中的「帳號密碼」」，而不是自己的帳號。&lt;br&gt;
並同意使用條款，手機認證不用管沒關係。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424jNCw72tSS3.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424jNCw72tSS3.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424jNCw72tSS3_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424jNCw72tSS3_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 5: 這邊也要同意GCP的使用條款。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sEXZsl9qCE.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sEXZsl9qCE.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424sEXZsl9qCE_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424sEXZsl9qCE_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step 6: 看到這個畫面，基本上準備程序已經完成了。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Cj2UH7UKfi.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Cj2UH7UKfi.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Cj2UH7UKfi_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Cj2UH7UKfi_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;注意事項 1：注意上方的project名稱是否有對應Step3中的lab名稱&lt;br&gt;
(不過這邊親測基本上除非名字差太多，不然基本上應該是都沒問題的。)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果真的不同的話，按上方的project名稱，點選正確的名稱打勾即可。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424rXl5q5vyDo.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424rXl5q5vyDo.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424rXl5q5vyDo_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424rXl5q5vyDo_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&#34;  &gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-2--運行中階段&#34;&gt;part 2 : 運行中階段&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;左上角有Menu可以找到全部的功能&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;右上角(紅框處)有可以開始執行 Google Cloud Shell 的功能
(terminal for Google Cloud Platform)&lt;/li&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424OtxdXAMxhT.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424OtxdXAMxhT.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424OtxdXAMxhT_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424OtxdXAMxhT_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&#34;part-3--結束運行階段-重要&#34;&gt;part 3 : 結束運行階段 (重要)&lt;/h4&gt;
&lt;p&gt;結束運行的階段非常重要，不可以直接關閉(可能會造成其他lab有使用上的問題)&lt;/p&gt;
&lt;p&gt;Step 1 : 我們回到這個畫面按下紅色的END LAB按鈕，並確認關閉。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;沒有正常關閉可能會造成下次執行同lab出問題，或是執行其他lab出問題。&lt;/li&gt;
&lt;li&gt;「另外一個重要的注意事項」：只要關閉lab，裡面的 datasets 或 working &lt;strong&gt;皆會全部清除&lt;/strong&gt;。&lt;br&gt;
記得要先做好儲存的動作，不論是儲存在 GCP的帳號中(&lt;strong&gt;不等於lab的這個帳號&lt;/strong&gt;) 或 自己的電腦裡皆可。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424GNGO6OY2R3.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424GNGO6OY2R3.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424GNGO6OY2R3_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424GNGO6OY2R3_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】9 - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214523&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 9】 Google ML - Lab 0 - Intro to Qwiklabs - 每次在google雲端上開始lab前都要的事前準備與注意事項&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1020
Post Date: 2019-09-10 02:48:08
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/google-python-notebook/</link>
        <pubDate>Mon, 09 Sep 2019 02:45:51 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/google-python-notebook/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424sN1Zkl8d55.png" alt="Featured image of post 【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天我們先進入 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的第五章節，之後再回到第四章~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】 Chapter 1 - 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】 Chapter 2(上) - 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 4】 Chapter 2(中) - 我們要怎麼樣設計一個ML問題? 與google提供的好用工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213900&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 5】 Chapter 2(下) - ML要成功的秘訣與策略&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213904&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 6】 Chapter 3(上) - ML會失敗的最常見十大陷阱&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 7】 Chapter 3(下) - ML在企業運行的五大階段與注意事項&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第五章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;「Module Introduction」&lt;/li&gt;
&lt;li&gt;「Cloud Datalab」
&lt;ul&gt;
&lt;li&gt;「Cloud Datalab」&lt;/li&gt;
&lt;li&gt;「Demo: Cloud Datalab」&lt;/li&gt;
&lt;li&gt;「Development process」&lt;/li&gt;
&lt;li&gt;「Demo of rehosting Cloud Datalab」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Working with managed services」&lt;/li&gt;
&lt;li&gt;「Computation and storage」&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM
&lt;ul&gt;
&lt;li&gt;Intro to Qwiklabs&lt;/li&gt;
&lt;li&gt;Intro to Renting-VM Lab&lt;/li&gt;
&lt;li&gt;Lab: Rent-a-VM to process earthquake data&lt;/li&gt;
&lt;li&gt;Lab debrief&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cloud Shell&lt;/li&gt;
&lt;li&gt;Third wave of cloud
&lt;ul&gt;
&lt;li&gt;Third Wave of Cloud: Fully-Managed Services&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: Serverless Data Analysis&lt;/li&gt;
&lt;li&gt;Third Wave of Cloud: BigQuery and Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Datalab and BigQuery
&lt;ul&gt;
&lt;li&gt;Lab Intro: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab: Analyzing data using Datalab and BigQuery&lt;/li&gt;
&lt;li&gt;Lab Debrief: Analyzing Data using Datalab and BigQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Machine Learning with Sara Robinson
&lt;ul&gt;
&lt;li&gt;ML, not rules&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pre-trained ML APIs
&lt;ul&gt;
&lt;li&gt;Vision API in action&lt;/li&gt;
&lt;li&gt;Video intelligence API&lt;/li&gt;
&lt;li&gt;Cloud Speech API&lt;/li&gt;
&lt;li&gt;Translation and NL&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lab: Machine Learning APIs
&lt;ul&gt;
&lt;li&gt;Lab: Pretrained ML APIs Intro&lt;/li&gt;
&lt;li&gt;Lab: Invoking Machine Learning APIs&lt;/li&gt;
&lt;li&gt;Lab Solution&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-module-introduction&#34;&gt;1. Module Introduction&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Module Introduction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這章基本的用文字介紹了一下雲端的環境，&lt;br&gt;
我們會用python notebook做機器學習的開發，&lt;br&gt;
而notebook的服務在google雲端上。&lt;/p&gt;
&lt;p&gt;Cloud Datalab基本上是本章節使用的開發環境，&lt;br&gt;
而此服務在VM上運行，包含python notebook，&lt;br&gt;
我們同時也會教學&lt;strong&gt;Compute Engine的原理&lt;/strong&gt;與&lt;strong&gt;Cloud Storage的知識&lt;/strong&gt;。&lt;br&gt;
既然是VM就必須提調VM的兩個特性：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;可以實際控制與更改notebook的機器內容，且無須重寫
&gt; 例如：添加GPU或增加更多memory&lt;/li&gt;
&gt; &lt;li&gt;VM是短暫的，如果想保存內容須保存在VM外
&gt; 而這點最方便的方法就是使用Cloud Storage。
&gt; 我們將notebook的內容保存在Cloud Storage中，
&gt; 同時還能達到版本控制的效果。&lt;/li&gt;
&gt; &lt;/ol&gt;
&lt;p&gt;而這個章節的學習目標，我們可以參考如下：&lt;/p&gt;
&lt;p&gt;Module Learning Objectives(這個module的學習目標)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Carry out data science tasks in notebooks&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;練習使用notebooks完成資料科學的任務&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rehost notebooks on the cloud&lt;br&gt;
在雲上使用notebooks，並更改硬體規格&lt;/li&gt;
&lt;li&gt;Execute ad-hoc queries at scale&lt;br&gt;
我們將將Cloud Datalab與BigQuery一起使用，BigQuery是雲上的數據分析服務，可以讓超越傳統數據庫的執行速度與規模進行queries的查詢&lt;/li&gt;
&lt;li&gt;Invoke pre-trained ML models from Datalab&lt;br&gt;
能使用一些pre-trained ML models(前面的章節有介紹到)，並在Cloud Datalab中運行。&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424IZmz7tT6sZ.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424IZmz7tT6sZ.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424IZmz7tT6sZ_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424IZmz7tT6sZ_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-cloud-datalab&#34;&gt;2. Cloud Datalab&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Cloud Datalab
&lt;ul&gt;
&lt;li&gt;Cloud Datalab&lt;/li&gt;
&lt;li&gt;Demo: Cloud Datalab&lt;/li&gt;
&lt;li&gt;Development process&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這章稍微介紹了一下Datalab的環境，以jupyter作為基礎的open source平台。&lt;br&gt;
下面為Datalab的介面展示：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424VHrZ0Uq5Lp.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424VHrZ0Uq5Lp.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424VHrZ0Uq5Lp_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424VHrZ0Uq5Lp_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;p&gt;可以看到主要有三個部分：code, output, markup sections彼此交錯&lt;br&gt;
也因為這樣的交錯才能使notebook如此實用，&lt;/p&gt;
&lt;p&gt;code:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在此打你的python code&lt;br&gt;
執行code的方式: 按 「shift+enter」 或 按上方的 「Run botton」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;output:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意output可以為圖形，不像command line一樣。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;markup:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;可以寫一些markup(markdown語法)，可以解釋你這個部分在做什麼。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;最後是綠色部分:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;有可以將notebook匯出的按鈕，可以將此notebook下載下來。&lt;br&gt;
可以commit code至Google Cloud Platform至code repository的按鈕。&lt;br&gt;
「Clear all」: 清除所有output&lt;br&gt;
「Run all Cells」: 執行所有Cells&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;所以整個Datalab的使用流程大概可以表示成下圖：&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424vyVPouZKR2.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424vyVPouZKR2.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424vyVPouZKR2_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424vyVPouZKR2_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;p&gt;另外要特別強調的是，Datalab的一大特色是可以&lt;strong&gt;線上協同合作&lt;/strong&gt;&lt;br&gt;
傳統的notebook要線上合作有個基本的問題，誰當host?&lt;br&gt;
一但host只要關機，任何人都無法繼續工作。&lt;br&gt;
而Datalab解決了這個問題，而我們只要給一個URL就可以了。&lt;/p&gt;
&lt;p&gt;另外一種Share的方式可以利用版本控制系統，例如Git，&lt;br&gt;
而且只要我們想改動硬體的規格，任何人都可以直接改好後，&lt;br&gt;
重新啟動VM，就直接以新的硬體規格來執行程式。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;簡單來說，Datalab架於雲端的VM上，任何人只要連線即可開始工作。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;而只要工作結束了，隨時也能將此VM刪除。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424vIAO0YtmEy.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424vIAO0YtmEy.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424vIAO0YtmEy_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424vIAO0YtmEy_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;3-demo-of-rehosting-cloud-datalab&#34;&gt;3. Demo of rehosting Cloud Datalab&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Cloud Datalab
&lt;ul&gt;
&lt;li&gt;Demo of rehosting Cloud Datalab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個章節主要來介紹如何在Datalab中更換VM的硬體規格。&lt;/p&gt;
&lt;p&gt;Step1. 先將想更改規格的VM打勾，上方按下暫停VM&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424LY0080InDP.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424LY0080InDP.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424LY0080InDP_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424LY0080InDP_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step2. 點選Edit，在方框處更改想要的硬體規格，記得在下方按&amp;quot;Save&amp;quot;&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424K2AXFTlKsf.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424K2AXFTlKsf.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424K2AXFTlKsf_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424K2AXFTlKsf_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step3. 點選要重啟的VM，按上方Start，確認重新Start&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424DARMJZEZo9.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424DARMJZEZo9.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424DARMJZEZo9_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424DARMJZEZo9_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;p&gt;小提示：在未來的lab中，我們只需要用到&amp;quot;n1-standard-1 VM&amp;quot;(basic plain vanilla virtual machine)的硬體規格，就已經非常足夠執行我們所要的程式。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;4-working-with-managed-services&#34;&gt;4. Working with managed services&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Working with managed services&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個章節會介紹透過雲端執行ML時的大致流程。&lt;/p&gt;
&lt;p&gt;以讀取CSV file作舉例，如果是一般的處理方式，&lt;br&gt;
首先我們將CSV file可以透過Pandas and Apache Beam進行資料前置處理，&lt;br&gt;
再丟入至Tensorflow進行訓練，透過訓練使其不斷的進步。&lt;/p&gt;
&lt;p&gt;如果同樣的例子透過GCP的方式處理，&lt;br&gt;
首先用Google Cloud Storage儲存資料，用Cloud Dataflow進行資料前置處理，&lt;br&gt;
再用Cloud Machine Learning進行訓練，透過Cloud ML Engine進行參數最佳化。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424TZBQ9MFCpp.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424TZBQ9MFCpp.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424TZBQ9MFCpp_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424TZBQ9MFCpp_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;p&gt;使用GCP就能產生與其他GCP產品一樣的效果，&lt;br&gt;
而且數千台機器同時探索並分析數據，&lt;br&gt;
而且就算已經習慣使用如Pandas, Seaborn 或 Plotly之類的工具，&lt;br&gt;
也能夠直接在GCP使用，透過API直接串連起來。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sR4STWtlSf.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sR4STWtlSf.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424sR4STWtlSf_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424sR4STWtlSf_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Compute Engine&lt;/strong&gt;&lt;br&gt;
先去Cloud Shell並輸入&amp;quot;datalab create&amp;quot;，並設定一些參數，&lt;br&gt;
例如compute zone, machine type，這些都屬於&lt;strong&gt;Compute Engine&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Compute Engine&lt;/strong&gt;是一種向雲端租借的機器(VM)，所以也代表不用永久擁有。&lt;br&gt;
當VM消失時，在此機器上的工作也會消失，&lt;br&gt;
因此我們還會在下一個章節中介紹Cloud Storage的知識，&lt;br&gt;
&lt;strong&gt;Cloud Storage&lt;/strong&gt;就是透過雲端來幫助我們儲存這些資料的地方，避免資料遺失。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424FloHSlRu1m.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424FloHSlRu1m.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424FloHSlRu1m_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424FloHSlRu1m_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;5-computation-and-storage&#34;&gt;5. Computation and storage&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python notebooks in the cloud
&lt;ul&gt;
&lt;li&gt;Computation and storage&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個章節會介紹&lt;strong&gt;Compute Engine的原理&lt;/strong&gt;與&lt;strong&gt;Cloud Storage的知識&lt;/strong&gt;，&lt;br&gt;
了解&lt;strong&gt;Compute Engine&lt;/strong&gt;可以清楚我們是怎麼在雲端運算的，&lt;br&gt;
了解&lt;strong&gt;Cloud Storage&lt;/strong&gt;則可以清楚資料是怎麼儲存的。&lt;/p&gt;
&lt;p&gt;Compute Engine基本上可以想像成是分散在世界各地的CPU，&lt;br&gt;
而Cloud Storage則是分散在世界各地的儲存裝置(硬碟)。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Compute Engine&lt;/strong&gt;&lt;br&gt;
Datalab雖然是一個Compute Engine所執行的，&lt;br&gt;
但我們可以客製化我們的Compute Engine，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;例如：幾核心電腦、有多少memory、硬碟有多少容量、作業系統&lt;br&gt;
而這些設定皆可以修改，不用太擔心一開始的設定值。&lt;br&gt;
VM上的disk速度非常快，但當VM消失時，disk也會消失。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cloud Storage&lt;/strong&gt;&lt;br&gt;
而Cloud Storage是持久的，也就是說放在Cloud Storage的資料會被&lt;strong&gt;複製存儲&lt;/strong&gt;在多個位置。&lt;br&gt;
我們可以透過任何電腦取得這些資料，並直接讀取內容。&lt;br&gt;
而Google Center的網路以petabit bisectional bandwidth速度在通信，&lt;br&gt;
這也代表著十萬台機器可以以每秒10 gigabits的速度在相互通信。&lt;/p&gt;
&lt;p&gt;我們來談一下資料在雲上的形式，&lt;br&gt;
一個典型的Cloud Storage URL可能看起來像&lt;code&gt;gs:acme-sales/data/sales003.csv&lt;/code&gt;，&lt;br&gt;
我們稱這樣的資料存儲為&amp;quot;bucket&amp;quot;，bucket的名稱是全球唯一的，&lt;br&gt;
就像是domain name或internet URL一樣，&lt;br&gt;
基本上除非真的非常不幸，否則bucket的名稱很難已經被使用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Compute Engine&lt;/strong&gt;與&lt;strong&gt;Cloud Storage&lt;/strong&gt;的連結方式：&lt;br&gt;
gs URL 就像是一個資料結結構一樣，一個gs URL對應一個在Cloud Storage的物件&lt;br&gt;
我們可以使用gsutil來取用他，這是一個給command line用的工具，&lt;br&gt;
我們可以透過Google Cloud SDK下載到他，&lt;br&gt;
雲端上的Compute Engine已經內建好gsutil了。&lt;/p&gt;
&lt;p&gt;如果是想在自己的電腦使用，可以去下載Google Cloud SDK，裡面包含gsutil的功能。&lt;br&gt;
Gsutil 也使用大家所熟悉的 Unix command line的表示方式：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;像是 MB 與 RB 代表著&amp;quot;建立bucket&amp;quot;與&amp;quot;移除bucket&amp;quot; (這個真的滿有熟悉感的)&lt;br&gt;
或 CP 代表著&amp;quot;copy&amp;quot;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;如果不使用command line，也可以使用GCP console 或 programming API, REST API&lt;br&gt;
我們示範一個複製大量檔案作為例子，我們將&lt;code&gt;sales*.csv&lt;/code&gt;複製到一個特別的Cloud Storage位置&lt;br&gt;
(註：我們前面提到Cloud Storage buckets是耐久的，也就表示這資料會被重複儲存至多個位置。)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424unLg2mFDis.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424unLg2mFDis.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424unLg2mFDis_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424unLg2mFDis_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;p&gt;不過這裡要提醒的是，雖然資料被儲存在多個位置，但不代表不用在意&amp;quot;網路延遲問題&amp;quot;，&lt;br&gt;
可以的話還是&lt;strong&gt;盡量把資料儲存在計算的位置附近&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;另外一個情況是可能有時會有區域的伺服器故障，&lt;br&gt;
我們應該要分散apps與data至多個zones以保護這樣的情況，&lt;br&gt;
一個zone故障了，可以即時調用附近的zone來接續服務。&lt;br&gt;
zone是分散在一個regions的不同位置，被命名為「region name-a zone, letter」，&lt;/p&gt;
&lt;p&gt;而當我們建立一個全球可用的app，&lt;br&gt;
我們就可以考慮分散apps與data在不同的regions，來為全球的客戶提供服務。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sN1Zkl8d55.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424sN1Zkl8d55.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424sN1Zkl8d55_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424sN1Zkl8d55_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】8 - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214362&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 8】 Google ML - Lesson 7 - 先來初步認識一下google雲端上執行 python notebook (Cloud Datalab) 的環境&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1018
Post Date: 2019-09-09 02:45:51
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/ml-5steps/</link>
        <pubDate>Sun, 08 Sep 2019 02:43:55 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/ml-5steps/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424E62DTsPVXV.png" alt="Featured image of post 【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天來完成 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 第三章節的最後部分~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】 Chapter 1 - 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】 Chapter 2(上) - 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 4】 Chapter 2(中) - 我們要怎麼樣設計一個ML問題? 與google提供的好用工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213900&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 5】 Chapter 2(下) - ML要成功的秘訣與策略&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213904&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 6】 Chapter 3(上) - ML會失敗的最常見十大陷阱&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How Google does ML
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;ML Surprise&lt;/li&gt;
&lt;li&gt;The secret sauce &amp;lt;- (昨天到這邊)&lt;/li&gt;
&lt;li&gt;「ML and Business Processes」&lt;/li&gt;
&lt;li&gt;「The Path to ML」&lt;/li&gt;
&lt;li&gt;「End of phases deep dive」&lt;/li&gt;
&lt;li&gt;Module 3 Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-ml-and-business-processes&#34;&gt;1. ML and Business Processes&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How Google does ML
&lt;ul&gt;
&lt;li&gt;ML and Business Processes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(from &amp;ldquo;No ML&amp;rdquo; to &amp;ldquo;ML&amp;rdquo;)在目前的組織中加入ML的方式，我們可以先原先的業務流程來看，&lt;br&gt;
我們先觀察客戶與公司之間的活動，這裡以call center作為例子：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424FXdqmDHbOd.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424FXdqmDHbOd.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424FXdqmDHbOd_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424FXdqmDHbOd_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;現在有個call center&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;call center員工接聽客戶問題，回答客戶問題&lt;/li&gt;
&lt;li&gt;詢問顧客滿意度調查&lt;/li&gt;
&lt;li&gt;依據調查結果，整理調整回答問題的方式與內容(訓練機構)&lt;/li&gt;
&lt;li&gt;將調整後的內容給員工訓練&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;而這樣的例子我們用一個較一般化的表示方法如下圖：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ZHVd3g2qKI.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424ZHVd3g2qKI.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424ZHVd3g2qKI_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424ZHVd3g2qKI_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這樣就是一般的 &lt;strong&gt;General Feedback Loop&lt;/strong&gt;，我們試著在其中加入ML，&lt;br&gt;
這裡我們必須先提到有五點 &lt;strong&gt;Path to ML&lt;/strong&gt; 的方法&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Individual contributor
&lt;blockquote&gt;
&lt;p&gt;一個人負責這件事情&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Delegation&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;開始多人負責這件事情，有組織化，或有組織平行的在運作相同任務&lt;br&gt;
(通常到這階段會開始制定一些rules)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Digitalization&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;開始將一些&amp;quot;重複性高&amp;quot;的動作(rules)，透過電腦來自動化幫人處理&lt;br&gt;
一個容易理解的例子：ATM&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Big Data and Analytics&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;使用大量的data去更符合使用者的需求(insights)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Machine Learning&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;再將前面的所有資料，去進化我們的電腦處理流程(使完全自動化處理)&lt;br&gt;
(自己的註：這邊的自動化，指的是連&amp;quot;&lt;strong&gt;符合使用者的需求&lt;/strong&gt;&amp;ldquo;這件事也自動化了)&lt;br&gt;
例子：youtube推薦，要先讓使用者有回饋給youtube喜好，youtube才能主動推薦影片&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424LQphXTiAx6.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424LQphXTiAx6.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424LQphXTiAx6_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424LQphXTiAx6_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;而回到我們該如何加入進去我們的 &lt;strong&gt;General Feedback Loop&lt;/strong&gt;，&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424xjfw8qBYTb.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424xjfw8qBYTb.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424xjfw8qBYTb_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424xjfw8qBYTb_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;ol&gt;
- Individual contributor
- Delegation
- Digitalization
&lt;/ol&gt;
&lt;p&gt;前三個步驟裡面可以影響到process本身，&lt;br&gt;
這三個步驟主要是再處理使用者面臨到我們產品的階段。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Z2keYQQadU.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Z2keYQQadU.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Z2keYQQadU_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Z2keYQQadU_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
- Big Data and Analytics
- Machine Learning
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Big Data and Analytics&lt;/strong&gt;主要影響到的是我們如何找尋使用者的insights，&lt;br&gt;
簡單換句話說就是知道(或更加清楚)使用者想到的是什麼，&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Machine Learning&lt;/strong&gt;，我們原本藉由調查來知道使用者需求(上一個階段)，&lt;br&gt;
並依這件事情訓練員工，使顧客能享受到更好的服務，&lt;br&gt;
但現在我們可以用ML處理掉這階段，使得訓練員工(員工現在已經是我們的電腦)，&lt;br&gt;
自動化的讓顧客能享受到更好的服務。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-the-path-to-ml&#34;&gt;2. The Path to ML&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How Google does ML
&lt;ul&gt;
&lt;li&gt;The Path to ML&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個章節我們要接續講上章的Path to ML，&lt;br&gt;
但我們要來更詳細分析這幾個階段，&lt;br&gt;
如果需要定義的話可以往上一章節看。&lt;/p&gt;
&lt;p&gt;而在這個章節中，我們也可以拿這五個步驟來檢視一間企業目前可能碰到的問題。&lt;/p&gt;
&lt;p&gt;Path to ML的五大步驟如下圖：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QrGFsAULds.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424QrGFsAULds.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424QrGFsAULds_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424QrGFsAULds_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Step1. Individual contributor&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424eqf9mw04bI.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424eqf9mw04bI.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424eqf9mw04bI_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424eqf9mw04bI_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;由個別的人去應對一件需求。&lt;/p&gt;
&lt;p&gt;如果skip這步驟會怎麼樣?&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
  - 可能很難擴展規模。
  &lt;li&gt;沒有一個人先嘗試過，或先提早失敗過，直接建立一個很大的團體，
  如果問題發現後，很難能夠整個組織大幅度的調整。&lt;/li&gt;
  &lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;如果這步驟太久會怎麼樣?&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
  &lt;li&gt;一個人掌握了所有的技術，當他離開時也將所有技術帶走，
  公司直接沒有了這樣的技術，嚴重可能公司因為沒有會此技術的人而停止運作。&lt;/li&gt;
  - 很難去擴大規模去應對使用者的需求。
  &lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;Step2. Delegation&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424g1be9tIVi5.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424g1be9tIVi5.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424g1be9tIVi5_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424g1be9tIVi5_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;開始由個別的人擴展變多人去應對一件需求，能同時處理需求的量也提升。&lt;/p&gt;
&lt;p&gt;如果skip這步驟會怎麼樣?&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
  &lt;li&gt;不知道怎麼建立process，很多rules都是再規模化的這階段被建立起來的。
  如果沒有rules，也很難在下一個步驟交由電腦自動完成。&lt;/li&gt;
  &lt;li&gt;可以再這階段累積大量不同的使用者需求，藉由不同人不同個性能得到不同的回饋經驗，
  例子：call center，每個人回覆的個性不同，也能幫助我們收集需求考慮得更全面。
  (反過來說skip就沒有)&lt;/li&gt;
  &lt;li&gt;也是藉由大量客戶的反應回饋，造成**human in the loop**的良性循環。
  (使客戶能反覆地提供我們改進的地方。)&lt;/li&gt;
  &lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;如果這步驟太久會怎麼樣?&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
  &lt;li&gt;付出很高的成本在服務每一個客戶
  (試想一個人一直待在銀行，只為了等待客戶來處理事情的成本，與ATM比較)&lt;/li&gt;
  - 有太多的人，就會有太多種聲音，可能導致服務標準不一致。
  - 甚至最後可能會讓組織發展停留在這階段。
  &lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;Step3. Digitalization&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Z4fWcJzTOR.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Z4fWcJzTOR.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Z4fWcJzTOR_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Z4fWcJzTOR_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;開始讓電腦來代替人力去自動化處理一些反覆的事情。&lt;/p&gt;
&lt;p&gt;如果skip這步驟會怎麼樣?&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
  - 就算是ML，也需要一些基礎的設備
  &lt;li&gt;沒有先做一些基本的IT project(software)，
  沒辦法提早在這階段先測試一些簡單的case能否成功，
  直接跳到ML階段，導致ML失敗，整個project也失敗了。&lt;/li&gt;
  &lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;如果這步驟太久會怎麼樣?&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
  &lt;li&gt;你的競爭者更快速的收集資料，並搶先找到新的insights，
  別人的**General Feedback Loop**先被良好的建立後，你可能就會被打敗。&lt;/li&gt;
  &lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;Step4. Big Data and Analytics&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204243KOB30bHVN.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204243KOB30bHVN.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204243KOB30bHVN_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204243KOB30bHVN_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;藉由自動化的服務，收集大量使用者的數據，並找到新的使用者需求(痛點)。&lt;/p&gt;
&lt;p&gt;如果skip這步驟會怎麼樣?&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
  - 不夠乾淨與組織化的資料，你也不知道做ML訓練的最終目的是為了什麼。
  &lt;li&gt;沒有大量數據的證明，很難預估自己會成功。
  ML是拿來**improving**成功的，也就是要先有一定的基礎才能透過ML強化，
  我們先自己反覆的做這樣的分析，再交由ML替我們分析，這樣ML訓練能順水推舟。&lt;/li&gt;
  &lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;如果這步驟太久會怎麼樣?&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
  &lt;li&gt;基本上，在這裡待很久並不會產生太大的問題，
  google也很常在這個階段停留非常久、甚至數年。&lt;/li&gt;
  &lt;li&gt;但是透過ML能分析得更快，甚至讓結果更好，
  停留在此有可能會限制能解決問題的複雜性。&lt;/li&gt;
  &lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;Step5. Machine Learning&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424PIJ1tf58SJ.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424PIJ1tf58SJ.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424PIJ1tf58SJ_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424PIJ1tf58SJ_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這個步驟就是將前面的步驟(Step4. Big Data and Analytics)自動化，&lt;br&gt;
透過ML能處理的訊息量遠遠超過一個人能應付的極限，&lt;br&gt;
而且我們能用更快的速度處理前面所有的需求，&lt;br&gt;
甚至是更細緻的細節處理，帶來整體更好的效率與體驗。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;3-end-of-phases-deep-dive&#34;&gt;3. End of phases deep dive&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How Google does ML
&lt;ul&gt;
&lt;li&gt;End of phases deep dive&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這章節是Path to ML的總結論，另外我們也會在此試著用另外的角度來看這五個流程。&lt;/p&gt;
&lt;p&gt;我們一樣先回到五個步驟，我們換個圖來表示：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424E62DTsPVXV.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424E62DTsPVXV.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424E62DTsPVXV_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424E62DTsPVXV_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】7 - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&#34;  &gt;&lt;/p&gt;
&lt;p&gt;觀點1：誰是執行者?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;從第一列我們可以看出，&amp;gt; 階段從&lt;br&gt;
一個人(階段1.)-&amp;gt;&lt;br&gt;
很多人(階段2.)-&amp;gt;&lt;br&gt;
電腦處理(階段3.4.5.)」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;觀點2：我們怎麼選擇調整的參數? (我們從哪裡知道如何調整以符合使用者需求?)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;從第二列我們可以看出，階段從&lt;br&gt;
一個個的調查結果(階段1.2.3.)-&amp;gt;&lt;br&gt;
調查結果整體分析(階段4.)-&amp;gt;&lt;br&gt;
調查結果分析並找出公式(階段5.)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;觀點3：誰來幫助我們進步? (我們自己如何調整以符合使用者需求?)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;從第三列我們可以看出，階段從&lt;br&gt;
員工手冊或有人帶領新員工學習新的應對方式(階段1.2.) -&amp;gt;&lt;br&gt;
工程師找到規則，並對機器coding符合使用者需求(階段3.4.) -&amp;gt;&lt;br&gt;
machine learning(階段5.)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;最後的提醒：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
  &lt;li&gt;從沒有到直接&#34;完全的使用ML&#34;來解決問題是很危險的(對企業來說)
  依照上面所說的Path to ML做可以減少很多不確定性，是比較安全的做法&lt;/li&gt;
  - Path to ML的終極目標就是將整個**General Feedback Loop**的過程自動化。
  - 使用GCP平台的協助，能使這段Path to ML過程更加順利。
  &lt;/ol&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10214219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 7】 Google ML - Lesson 6 - How Google does ML (下) - 讓ML在企業運行的五大階段與注意事項&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1016
Post Date: 2019-09-08 02:43:55
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】6 - Lesson 5 - ML會失敗的最常見十大陷阱 與 企業運行ML時，在ML各階段應該放的比重與心力</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/ml-trap/</link>
        <pubDate>Sat, 07 Sep 2019 02:43:12 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/ml-trap/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424PGpM6AW6xD.png" alt="Featured image of post 【Google ML】6 - Lesson 5 - ML會失敗的最常見十大陷阱 與 企業運行ML時，在ML各階段應該放的比重與心力" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天來閱讀 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的第三章節~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】 Chapter 1 - 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】 Chapter 2(上) - 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 4】 Chapter 2(中) - 我們要怎麼樣設計一個ML問題? 與google提供的好用工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213900&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 5】 Chapter 2(下) - ML要成功的秘訣與策略&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第三章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How Google does ML
&lt;ul&gt;
&lt;li&gt;「Introduction」&lt;/li&gt;
&lt;li&gt;「ML Surprise」&lt;/li&gt;
&lt;li&gt;「The secret sauce」&lt;/li&gt;
&lt;li&gt;ML and Business Processes&lt;/li&gt;
&lt;li&gt;The Path to ML&lt;/li&gt;
&lt;li&gt;End of phases deep dive&lt;/li&gt;
&lt;li&gt;Module 3 Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-ml-surprise&#34;&gt;1. ML Surprise&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How Google does ML
&lt;ul&gt;
&lt;li&gt;ML Surprise&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Rciup2jb1x.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Rciup2jb1x.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Rciup2jb1x_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Rciup2jb1x_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】6 - Lesson 5 - ML會失敗的最常見十大陷阱 與 企業運行ML時，在ML各階段應該放的比重與心力&#34;  &gt;&lt;/p&gt;
&lt;p&gt;ML是什麼?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ML是一種透過讓電腦寫程式去完成一項任務。&lt;br&gt;
而這個電腦只需要看一大堆&amp;quot;&lt;strong&gt;例子&lt;/strong&gt;&amp;quot;，就可以自動想到最好的&amp;quot;&lt;strong&gt;程式&lt;/strong&gt;&amp;quot;。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424KBDo4a97th.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424KBDo4a97th.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424KBDo4a97th_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424KBDo4a97th_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】6 - Lesson 5 - ML會失敗的最常見十大陷阱 與 企業運行ML時，在ML各階段應該放的比重與心力&#34;  &gt;&lt;/p&gt;
&lt;p&gt;傳統的軟體工程&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;軟體工程師寫一大堆code(描述rules)，&lt;br&gt;
使我們能達成目標(inputs能產生對應Outputs)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204248E4ezIIetW.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204248E4ezIIetW.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204248E4ezIIetW_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204248E4ezIIetW_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】6 - Lesson 5 - ML會失敗的最常見十大陷阱 與 企業運行ML時，在ML各階段應該放的比重與心力&#34;  &gt;&lt;/p&gt;
&lt;p&gt;ML會自己想出這些rules該怎麼完成&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一樣能使我們能達成目標(inputs能產生對應Outputs)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424SZEJ5izNbe.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424SZEJ5izNbe.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424SZEJ5izNbe_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424SZEJ5izNbe_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】6 - Lesson 5 - ML會失敗的最常見十大陷阱 與 企業運行ML時，在ML各階段應該放的比重與心力&#34;  &gt;&lt;/p&gt;
&lt;p&gt;ML Surprise&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;defining the KPIs -&amp;gt; 想要達成的目標&lt;/li&gt;
&lt;li&gt;collecting the data&lt;/li&gt;
&lt;li&gt;building the infrastructure&lt;/li&gt;
&lt;li&gt;optimizing the ML algorithm&lt;/li&gt;
&lt;li&gt;integration -&amp;gt; 整合組織內部之前的所有系統&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424irNnOGBRC6.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424irNnOGBRC6.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424irNnOGBRC6_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424irNnOGBRC6_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】6 - Lesson 5 - ML會失敗的最常見十大陷阱 與 企業運行ML時，在ML各階段應該放的比重與心力&#34;  &gt;&lt;/p&gt;
&lt;p&gt;上圖我們會發現一件事情是，很多公司會期待如上方的時間分布，&lt;br&gt;
但我們真實的時間分布應該如下圖，&lt;br&gt;
有許多公司花太多時間在優化演算法上，&lt;br&gt;
甚至會想要不斷的使用最新最強的演算法，&lt;br&gt;
但就結果而言這樣並不會比較好，我們甚至更應該&lt;strong&gt;花時間在找資料上&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;另外還有一點是，我們也應該花少一點時間去訂KPIs，&lt;br&gt;
ML的影響力有可能短期對於KPI並不會有很大的影響，&lt;br&gt;
但就長期來看，ML的預測準確性會不斷提升，影響力是非常長遠的。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-the-secret-sauce&#34;&gt;2. The secret sauce&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How Google does ML
&lt;ul&gt;
&lt;li&gt;The secret sauce&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個章節講到ML失敗的最常見10大陷阱，也算是google自己對客戶的經驗談，&lt;br&gt;
(配合前一章節提到的五個階段)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Sd0wQjJLV7.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Sd0wQjJLV7.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Sd0wQjJLV7_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Sd0wQjJLV7_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】6 - Lesson 5 - ML會失敗的最常見十大陷阱 與 企業運行ML時，在ML各階段應該放的比重與心力&#34;  &gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;(最常見的第一名)認為訓練自己的ML演算法會比寫軟體還快
&lt;blockquote&gt;
&lt;p&gt;只依靠演算法建ML系統，實現演算法的過程仍需要一堆透過軟體才能實現的事，&lt;br&gt;
而這件事情往往只會使整個過程更加複雜。&lt;br&gt;
所以我們更推薦先從簡單的軟體開始先寫。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;你想做ML，但你&#34;沒準備好data&#34;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;就請先停止別做ML，去蒐集資料吧，沒有資料你是做不了ML的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;你以為data已經準備好了&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;這裡還有一種的經驗是，很多企業說自己擁有資料，&lt;br&gt;
但那些資料是已過時，甚至沒有人整理過的，&lt;br&gt;
沒有整理過的資料，甚至都不清楚資料裡面有什麼，&lt;br&gt;
公司內也沒有人最近有去查看這些資料並提出新的想法，&lt;br&gt;
這些都算是&amp;quot;沒準備好data&amp;quot;(還沒有&amp;quot;價值&amp;quot;的data)。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;相信我，等到要開始訓練ML時，你會花更多的心力在處理資料上，&lt;br&gt;
甚至是為了乾淨的資料還要重新收集，這才會是更大的挫折。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;將人員保留在循環中
&lt;blockquote&gt;
&lt;p&gt;當有人開始在系統中訓練ML的系統時，那些人會變得相當重要。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這段個人的理解是，以google來說，&lt;br&gt;
使用者通常能夠提供ML的結果反饋，&lt;br&gt;
我們需要想辦法讓人能持續地給系統的反饋，&lt;br&gt;
(因為沒有這些人，我們就沒有資料，他們非常的重要)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;太過專注於研究最好的ML演算法
&lt;blockquote&gt;
&lt;p&gt;以使用者的角度來說，不論他們得到的是不是ML的結果，&lt;br&gt;
他們會更在乎的是有沒有得到好的建議或很酷的觀點。&lt;br&gt;
一開始，從我們ML系統得到的結果也許不是最好的，&lt;br&gt;
但我們要使使用者能喜歡我們的產品，使他們不斷持續地投入。&lt;br&gt;
這樣我們的結果就能不斷的更加優化。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;ML往不好的方向最佳化&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;提到這裡也還有另外一個可能的問題，&lt;br&gt;
我們也要避免不正當的得到回饋，&lt;br&gt;
例如像是讓使用者一定要定期回饋使用心得，&lt;br&gt;
或者我們採取了不好的方式取得資料，像是一定要點擊某個結果，&lt;br&gt;
這部分是需要思考的，因為這有可能使我們的ML學習到不良的內容。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;你的ML對真實世界是有幫助的嗎?&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;要記得去思考你的ML結果對世界有沒有幫助，&lt;br&gt;
你訓練了他，把他放在那裡為用戶服務，&lt;br&gt;
但無法說他有多好，或沒辦法分辨他有辦法讓客戶能終身參與，&lt;br&gt;
或是使他具有終身價值，這樣沒辦法向人說明這個ML是有用的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;到底要自己訓練一個model還是使用pre-train model?&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;使用pre-train model在初期能夠省下不少時間，&lt;br&gt;
初期使用也能幫助功能快速完成，而且也較容易使用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;ML演算法需要訓練多過一次&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;事實證明，一個好的ML演算法需要訓練非常非常多次，&lt;br&gt;
很多人會只訓練一次，並拿結果來說很好，&lt;br&gt;
但事實上可能只完成了10%左右，&lt;br&gt;
一個好的ML演算法，他需要被訓練很多很多次。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;想要設計自己的知覺偵測模型或使用自己的NLP演算法&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;這是一種特殊的陷阱，事實上以NLP來舉例，&lt;br&gt;
google解決這些問題都是經過數十年的研究而得到很好的調整，&lt;br&gt;
而以商用來說，你幾乎只需要一個現成的、已經製作好的或已經定義好的，&lt;br&gt;
先不要嘗試在這部分試圖做自己的研究，這會非常的貴。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;聽到這你可能會覺得，天啊，ML怎麼會有這麼多的陷阱，&lt;br&gt;
但好消息是，ML的價值是長遠的，&lt;br&gt;
而且ML能達成幾乎比任何已經有的產品還要更好的結果。&lt;br&gt;
同時，當你覺得ML難時，你的競爭者也會覺得ML很難。&lt;br&gt;
但當你有ML產品釋出時，你能給顧客帶來更好的使用者體驗，&lt;br&gt;
而且不斷的使用者回饋能使你的ML開始一直一直不斷的精進。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424PGpM6AW6xD.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424PGpM6AW6xD.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424PGpM6AW6xD_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424PGpM6AW6xD_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】6 - Lesson 5 - ML會失敗的最常見十大陷阱 與 企業運行ML時，在ML各階段應該放的比重與心力&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213904&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 6】 Google ML - Lesson 5 - ML會失敗的最常見十大陷阱 與 企業運行ML時，在ML各階段應該放的比重與心力&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1014
Post Date: 2019-09-07 02:43:12
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】5 - Lesson 4 - What it means to be AI first (下) - ML要成功的秘訣與策略</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/ml-success/</link>
        <pubDate>Fri, 06 Sep 2019 02:37:32 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/ml-success/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424Df47LPg2mY.png" alt="Featured image of post 【Google ML】5 - Lesson 4 - What it means to be AI first (下) - ML要成功的秘訣與策略" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天繼續完成 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的第二章節最後一部分~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】 Chapter 1 - 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】 Chapter 2(上) - 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 4】 Chapter 2(中) - 我們要怎麼樣設計一個ML問題? 與google提供的好用工具&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第二章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;What it means to be AI first&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Two stages of ML&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ML in Google products&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Demo: ML in Google products&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Demo: ML in Google Photos&lt;/li&gt;
&lt;li&gt;Google Translate and Gmail&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Replacing heuristics&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It&amp;rsquo;s all about data&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Framing an ML problem&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lab Intro - Framing an ML Problem&lt;/li&gt;
&lt;li&gt;Framing an ML problem&lt;/li&gt;
&lt;li&gt;Lab debrief&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ML in applications&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Demo: ML in applications&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pre-trained models&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The ML marketplace is evolving &amp;lt;&amp;mdash; (昨天到這邊)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;「A data strategy」&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;「Training and serving skew」&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;「An ML strategy」&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;「Transform your business」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Transform your business」&lt;/li&gt;
&lt;li&gt;「Lab Intro - ML use case」&lt;/li&gt;
&lt;li&gt;「Non-traditional ML use case」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Module 2 Quiz&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;11-a-data-strategy-接續昨天的編號&#34;&gt;11. A data strategy (接續昨天的編號)&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;A data strategy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這邊講到google map的一些應用&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424VSLe7VNCkh.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424VSLe7VNCkh.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424VSLe7VNCkh_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424VSLe7VNCkh_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】5 - Lesson 4 - What it means to be AI first (下) - ML要成功的秘訣與策略&#34;  &gt;&lt;/p&gt;
&lt;p&gt;左圖：依照rule&amp;quot;搜尋最快路徑&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;需要參考的東西：交通堵塞? 橋未開放?&lt;br&gt;
怎麼蒐集上述的資料?&lt;br&gt;
最後使用 A* algorithm 解決問題 (最短路徑演算法)&lt;br&gt;
以結果來說，終究只是在設定rule&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;中間：另外一個例子，如何知道使用者在二樓?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;wi-fi points, barometric pressure, typical walking speed 之類的資料&lt;br&gt;
你有了這些數據，嘗試使用ML來避免寫rule&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;右邊：google地圖還能夠推薦使用者?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;連接使用者過去的歷史，清楚使用者偏好，並進行推薦&lt;br&gt;
我們希望google map能成為使用者的虛擬助手，&lt;br&gt;
這問題只有ML能夠實現地圖服務的&amp;quot;個人化&amp;quot;&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;因此，ML就是能超越手寫規則的方法，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;手寫規則有太多有可能無法實現的事情了。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;從上例中左圖(通用)到右圖(個人化)，&lt;br&gt;
越個人化的事情越只能靠ML來實現，&lt;br&gt;
(前面章節也有提到，這就是local data的問題)&lt;/p&gt;
&lt;p&gt;但不管需不需要ML，要完成這些事情我們都需要&lt;strong&gt;大量大量的data&lt;/strong&gt;，&lt;br&gt;
對我們而言，寫rules或models相對來說只是小case。&lt;/p&gt;
&lt;p&gt;比喻：ML是火箭引擎，data就是燃料&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If machine learning is a rocket engine, data is the fuel.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424iHl5muajTk.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424iHl5muajTk.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424iHl5muajTk_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424iHl5muajTk_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】5 - Lesson 4 - What it means to be AI first (下) - ML要成功的秘訣與策略&#34;  &gt;&lt;/p&gt;
&lt;p&gt;不論任何的階段，&lt;strong&gt;Data永遠是勝利的關鍵&lt;/strong&gt;，&lt;br&gt;
&lt;strong&gt;收集data除了要求量之外，也需要多樣化&lt;/strong&gt;，&lt;/p&gt;
&lt;p&gt;以認識下圖為例子，如果資料太少，你可能用再複雜的規則也不知其形，&lt;br&gt;
隨著資料夠多，整理的樣子就會更加得清楚。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424oCTU3oys7o.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424oCTU3oys7o.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424oCTU3oys7o_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424oCTU3oys7o_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】5 - Lesson 4 - What it means to be AI first (下) - ML要成功的秘訣與策略&#34;  &gt;&lt;/p&gt;
&lt;p&gt;因此，ML最重要最首先的事情，就是&lt;strong&gt;收集數據的策略&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ML strategy is first and foremost a data strategy.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&#34;12-training-and-serving-skew&#34;&gt;12. Training and serving skew&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;Training and serving skew&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在ML之前，我們還是必須要先分析一下數據&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;分析數據也代表著要收集資料，掌握數據是最耗時又最難的部分&lt;/li&gt;
&lt;li&gt;收集好數據還需要去rating data(finding labels)，有先分析過再進入ML階段可以避免做白工&lt;/li&gt;
&lt;li&gt;要建立一個好的ML模型，就要夠清楚你的資料，先分析數據也是為了這點&lt;/li&gt;
&lt;li&gt;ML會將產品走向自動與規畫化，也就是ML是數據分析的延伸與擴展。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;換句話說，如果不會數據分析，也不能做ML。&lt;/p&gt;
&lt;p&gt;有一個常見ML產品的fail原因:  training-serving skew&lt;/p&gt;
&lt;p&gt;簡單說是兩個單位收集資料的方式不同，造成資料訓練與服務時沒有對應&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The problem is that the result of stream processing and the result of batch processing have to be the same.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204241PewJj70e5.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204241PewJj70e5.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204241PewJj70e5_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204241PewJj70e5_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】5 - Lesson 4 - What it means to be AI first (下) - ML要成功的秘訣與策略&#34;  &gt;&lt;/p&gt;
&lt;p&gt;解決(減少問題發生的機會)方法：&lt;br&gt;
用一樣的方法蒐集資料，一個同時處理batch與stream的階段&lt;br&gt;
所以較好的架構應該如下圖：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204248z6x7w0Yiv.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204248z6x7w0Yiv.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204248z6x7w0Yiv_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204248z6x7w0Yiv_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】5 - Lesson 4 - What it means to be AI first (下) - ML要成功的秘訣與策略&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;13-an-ml-strategy&#34;&gt;13. An ML strategy&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;An ML strategy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ML要注意的事情：&amp;quot;&lt;strong&gt;ML的重點在量而不是在複雜度&lt;/strong&gt;&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;即使是小的ML model有有它的價值。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;另外一個心態是，&lt;strong&gt;多盡快失敗並反覆重試&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The idea is that if you&amp;rsquo;re failing fast, you get the ability to iterate. This ability to experiment is critical in the realm of machine learning.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204246NwdwE53tM.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204246NwdwE53tM.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204246NwdwE53tM_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204246NwdwE53tM_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】5 - Lesson 4 - What it means to be AI first (下) - ML要成功的秘訣與策略&#34;  &gt;&lt;/p&gt;
&lt;p&gt;從上圖我們可以看到，多嘗試，多快速的失敗，更能夠達到成功。&lt;br&gt;
(慢慢嘗試後得到的慢速失敗(採取比較穩紮穩打的作法)，反而成功的機會會小一些。)&lt;/p&gt;
&lt;p&gt;另外提到資料，90%的企業資料皆是沒有被結構化的&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;試想 emails, video footage, texts, reports, catalogs, fashion shoots, events, news, you name it. All unstructured data.&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;不過幸運的是，我們現在處理這些未結構化的資料，&lt;br&gt;
因為有了google的各種pre-trained model已經變很簡單了，&lt;br&gt;
我們就把這些unstructured data丟進這些ML APIs，&lt;br&gt;
我們就能得到一些像entities, places, labels, people&amp;hellip; 之類的資料，&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Df47LPg2mY.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Df47LPg2mY.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Df47LPg2mY_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Df47LPg2mY_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】5 - Lesson 4 - What it means to be AI first (下) - ML要成功的秘訣與策略&#34;  &gt;&lt;/p&gt;
&lt;p&gt;因此我們不必在花時間去處理unstructured data，&lt;br&gt;
丟進這些ML APIs，拿結果再丟進我們的 custom ML model 訓練即可。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;14-transform-your-business&#34;&gt;14. Transform your business&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;Transform your business
&lt;ul&gt;
&lt;li&gt;Transform your business&lt;/li&gt;
&lt;li&gt;Lab Intro - ML use case&lt;/li&gt;
&lt;li&gt;Non-traditional ML use case&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這章節在講ML在商業上怎麼應用&lt;br&gt;
使用ML訓練的方向是什麼? 記住一個字：&amp;quot;&lt;strong&gt;delight&lt;/strong&gt;&amp;quot;&lt;br&gt;
如何使你的使用者開心就是訓練的目標。&lt;/p&gt;
&lt;p&gt;影片中的舉例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Did the card get canceled?&lt;/li&gt;
&lt;li&gt;Did the flight get delayed, etc.?&lt;/li&gt;
&lt;li&gt;Or did they just walk into your store and see an empty shelf?&lt;/li&gt;
&lt;li&gt;Why are they contacting you?&lt;/li&gt;
&lt;li&gt;Did your system automatically find the right action to take for this customer?&lt;/li&gt;
&lt;li&gt;Did it offer to rebook them?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要是需要想辦法讓使用者開心的問題，都可以是我們訓練的目標。&lt;/p&gt;
&lt;p&gt;另一個例子：既然你喜歡的音樂可能有版權問題，&lt;br&gt;
何不自己用ML生一個音樂? 一定會是你最喜歡的。&lt;/p&gt;
&lt;p&gt;商業上能受惠於ML的三種方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;infuse your applications with machine learning&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;簡化使用者輸入、更適應用戶&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use machine learning to fine-tune your business&lt;br&gt;
簡化業務的流程、創造新的商業機會&lt;/li&gt;
&lt;li&gt;use machine learning to delight your users&lt;br&gt;
用ML讓你的使用者開心。預測需求，並為他們量身打造&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;而這裡又有份學習單：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;試著去思考公司內一個已經存在的應用，去想哪個部分能夠用ML取代呢?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;li&gt;What are some of the benefits to doing so?
&gt; 這樣做的優點是什麼?&lt;/li&gt;
&gt; &lt;li&gt;What kinds of data would you collect if you wanted to do this?
&gt; 你想要這樣做需要收集什麼資料?&lt;/li&gt;
&gt; &lt;li&gt;Are you collecting that data today? If no, why not?
&gt; 你現在能取得這樣的資料嗎?&lt;/li&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213900&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 5】 Google ML - Lesson 4 - What it means to be AI first (下) - ML要成功的秘訣與策略&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1011
Post Date: 2019-09-06 02:37:32
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】4 - Lesson 3 - 我們要怎麼樣設計一個ML問題? 與google提供的一些已訓練好能直接使用的ML模型</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/design-ml/</link>
        <pubDate>Thu, 05 Sep 2019 02:35:58 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/design-ml/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424COoh4mLocI.png" alt="Featured image of post 【Google ML】4 - Lesson 3 - 我們要怎麼樣設計一個ML問題? 與google提供的一些已訓練好能直接使用的ML模型" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天繼續 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的第二章節吧~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】 Chapter 1 - 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】 Chapter 2(上) - 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第二章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;What it means to be AI first&lt;/li&gt;
&lt;li&gt;Two stages of ML&lt;/li&gt;
&lt;li&gt;ML in Google products&lt;/li&gt;
&lt;li&gt;Demo: ML in Google products
&lt;ul&gt;
&lt;li&gt;Demo: ML in Google Photos&lt;/li&gt;
&lt;li&gt;Google Translate and Gmail&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Replacing heuristics  &amp;lt;&amp;mdash; (昨天到這邊)&lt;/li&gt;
&lt;li&gt;「It&amp;rsquo;s all about data」&lt;/li&gt;
&lt;li&gt;「Framing an ML problem」
&lt;ul&gt;
&lt;li&gt;「Lab Intro - Framing an ML Problem」&lt;/li&gt;
&lt;li&gt;「Framing an ML problem」&lt;/li&gt;
&lt;li&gt;「Lab debrief」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「ML in applications」
&lt;ul&gt;
&lt;li&gt;「Demo: ML in applications」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Pre-trained models」&lt;/li&gt;
&lt;li&gt;「The ML marketplace is evolving」&lt;/li&gt;
&lt;li&gt;A data strategy&lt;/li&gt;
&lt;li&gt;Training and serving skew&lt;/li&gt;
&lt;li&gt;An ML strategy&lt;/li&gt;
&lt;li&gt;Transform your business
&lt;ul&gt;
&lt;li&gt;Transform your business&lt;/li&gt;
&lt;li&gt;Lab Intro - ML use case&lt;/li&gt;
&lt;li&gt;Non-traditional ML use case&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module 2 Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;6-its-all-about-data-接續昨天的編號&#34;&gt;6. It&amp;rsquo;s all about data (接續昨天的編號)&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s all about data&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;p&gt;這章節就開始再講有關於資料的事情了，&lt;br&gt;
首先我們要知道，很多資料是很難搞的，&lt;br&gt;
例如下圖的例子：&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424rbwC8cRgYj.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424rbwC8cRgYj.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424rbwC8cRgYj_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424rbwC8cRgYj_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】4 - Lesson 3 - 我們要怎麼樣設計一個ML問題? 與google提供的一些已訓練好能直接使用的ML模型&#34;  &gt;&lt;/p&gt;
&lt;p&gt;你可能會想&amp;hellip;這些資料有什麼特別的?&lt;br&gt;
這些資料很多都是&amp;quot;在地的店名&amp;quot;，&lt;br&gt;
我們稱之為&amp;quot;hard queries, local queries&amp;quot;&lt;br&gt;
而且人們搜尋這個並不是在找網站，而是在找地圖上的商家，&lt;br&gt;
這時你會想一個個的替每家店寫一行新的code rule，&lt;br&gt;
好讓你的搜尋找的到這家店嗎? 聽起來就很&amp;quot;笨拙&amp;quot;吧!&lt;/p&gt;
&lt;p&gt;那我們來看看ML怎麼解決問題吧!&lt;br&gt;
現在有個人對著google搜尋&amp;quot;coffee near me&amp;quot;&lt;br&gt;
你看到了兩家店，你該怎麼推薦給他呢?&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424kD0lHP8HE0.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424kD0lHP8HE0.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424kD0lHP8HE0_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424kD0lHP8HE0_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】4 - Lesson 3 - 我們要怎麼樣設計一個ML問題? 與google提供的一些已訓練好能直接使用的ML模型&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們先來想想怎麼收集數據，使它成為ML問題，&lt;br&gt;
ML背後的想法就是&amp;quot;&lt;strong&gt;蒐集一大堆例子，使這些變為知識並做未來的預測&lt;/strong&gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;這問題中未來的預測是什麼?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;很簡單，就是這兩家咖啡店的其中一家。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;可是這問題的例子呢?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;比較喜歡去比較近的店?&lt;/li&gt;
&lt;li&gt;比較喜歡評價比較高的店?&lt;/li&gt;
&lt;li&gt;比較喜歡服務時間較快速的店?&lt;/li&gt;
&lt;li&gt;咖啡的品質呢?&lt;/li&gt;
&lt;li&gt;咖啡的價格符合CP值嗎?&lt;/li&gt;
&lt;li&gt;會不會剛好沒有供應咖啡?&lt;/li&gt;
&lt;li&gt;搞不好你更喜歡其中一家店的附餐三明治?&lt;/li&gt;
&lt;li&gt;能不能坐下好好喝一杯咖啡?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;hellip;&amp;hellip; 太多種可能要考慮的點了&lt;br&gt;
那你說我們如果要coding，你要將上述的問題全部變成一個個if的判斷條件式嗎?&lt;/p&gt;
&lt;p&gt;所以google寧願讓用戶告訴我們，而不是google自己猜測並寫了一大堆rule，&lt;br&gt;
我們用大量數據做權衡評估結果，而現在我們先將問題簡化成只考慮距離，&lt;br&gt;
但資料怎麼來?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一開始還是以heuristics的方式為主，但google的心態是，&lt;br&gt;
等到資料足夠時(有夠多的例子)，就會拋棄heuristics的方法。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這裡的例子，就是我們前面所說的labeled data，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;input：到商店的距離&lt;/li&gt;
&lt;li&gt;label：用戶喜歡/不喜歡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然後就開始蒐集資料，能整理出如下圖的結果，&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Q2Mqt8TyQm.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Q2Mqt8TyQm.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Q2Mqt8TyQm_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Q2Mqt8TyQm_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】4 - Lesson 3 - 我們要怎麼樣設計一個ML問題? 與google提供的一些已訓練好能直接使用的ML模型&#34;  &gt;&lt;/p&gt;
&lt;p&gt;很明顯的我們就能看出，當咖啡店離我們越遠，越沒有人想去。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;所以，ML就是關於收集適當data，&lt;br&gt;
然後在良好學習與取得能信任的例子之間取得平衡。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&#34;7-framing-an-ml-problem&#34;&gt;7. Framing an ML problem&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;Framing an ML problem
&lt;ul&gt;
&lt;li&gt;Lab Intro - Framing an ML Problem&lt;/li&gt;
&lt;li&gt;Framing an ML problem&lt;/li&gt;
&lt;li&gt;Lab debrief&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這邊有個ML學習單(可以算是要做ML問題之前要想的心法了吧)：&lt;/p&gt;
&lt;p&gt;The first framing (&lt;strong&gt;maching learning problem&lt;/strong&gt;)&lt;br&gt;
-&amp;gt; If the use case was an &lt;strong&gt;ML problem&lt;/strong&gt;&amp;hellip;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;What is being predicted?&lt;br&gt;
你將預測的東西是什麼，也就是你的答案&amp;quot;X&amp;quot;(label)&lt;/li&gt;
&lt;li&gt;What data is needed?&lt;br&gt;
你需要什麼數據呢?  &amp;lt;- 非常多種data都有可能會有影響(大量各種的inputs)&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;The second framing (&lt;strong&gt;software probelm&lt;/strong&gt;)&lt;br&gt;
-&amp;gt; Now imagine the ML problem is a question of &lt;strong&gt;software&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;What is the API for the problem during prediction?&lt;br&gt;
我們需要透過API取得什麼樣的資料?&lt;/li&gt;
&lt;li&gt;Who will use this service? How are they doing it today?&lt;br&gt;
誰會使用這樣的服務? 這使用者今天在做什麼?&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;The third framing (&lt;strong&gt;data problem&lt;/strong&gt;)&lt;br&gt;
-&amp;gt; Lastly, cast it in the framework of a &lt;strong&gt;data problem&lt;/strong&gt;. What are some key actions to collect, analyze, predict, and react to the data/predictions (different input features might require different actions)&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;What data are we analyzing?&lt;br&gt;
我們要分析什麼資料?&lt;/li&gt;
&lt;li&gt;What data are we predicting?&lt;br&gt;
我們要預測什麼?&lt;/li&gt;
&lt;li&gt;What data are we reacting to?&lt;br&gt;
當預測結果出來時，我們要做什麼反應?&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&#34;8-demo-ml-in-applications&#34;&gt;8. Demo: ML in applications&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;ML in applications
&lt;ul&gt;
&lt;li&gt;Demo: ML in applications&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;舉例：Aucnet - 日本最大的實時汽車拍賣服務&lt;br&gt;
以前是拍下多張照片上傳，&lt;br&gt;
經銷商還要一一比對並指定汽車的型號與部分，非常耗時。&lt;/p&gt;
&lt;p&gt;現在只要照著網站上的所說的上傳車子不同角度的照片，&lt;br&gt;
資料只要足夠，透過ML就可以做到即時分析車子的各種資訊，&lt;br&gt;
甚至還能估計出車子目前的售價範圍。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;9-pre-trained-models&#34;&gt;9. Pre-trained models&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;Pre-trained models&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上章所提到的Aucnet，就是使用在GCP使用Tensorflow服務做成的。&lt;/p&gt;
&lt;p&gt;最簡單的在我們的作品中使用ML的方法，就是使用Pre-trained models，&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204240aeXEMUKLy.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204240aeXEMUKLy.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204240aeXEMUKLy_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204240aeXEMUKLy_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】4 - Lesson 3 - 我們要怎麼樣設計一個ML問題? 與google提供的一些已訓練好能直接使用的ML模型&#34;  &gt;&lt;/p&gt;
&lt;p&gt;我們可以看見一般的訓練ML方法在左邊，&lt;br&gt;
但右邊的Pre-trained ML models，&lt;br&gt;
就是google都已經幫你訓練好了，可以直接拿這些ML模型使用。&lt;/p&gt;
&lt;p&gt;舉例：Ocado - 網路最大線上雜貨店&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以往的方式，寫email，慢慢看慢慢分析&lt;/li&gt;
&lt;li&gt;後來使用了NLP(自然語言處理)，提取email中的各種資料，&lt;br&gt;
幫助它們能分析email的內容，還可以確認優先級。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但是越來越多客戶不想寫信，它們更希望的是直接交談。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以前的方法，可能要一個個回答他們的電話&lt;/li&gt;
&lt;li&gt;現在的方法，使用Dialogflow (google的對話代理工具)，&lt;br&gt;
直接分析對話，拆解使用者需求，能達到一樣的效果。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(影片後面為Dialogflow的演示，以前打黑客松有稍微玩過一下，&lt;br&gt;
也許之後有做這30天的Side Project可以再來玩一下這個?)&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;10-the-ml-marketplace-is-evolving&#34;&gt;10. The ML marketplace is evolving&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;The ML marketplace&lt;br&gt;
這張主要在介紹一些有名的品牌或企業，&lt;br&gt;
使用google的Pre-trained ML models與他們的用法&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424COoh4mLocI.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424COoh4mLocI.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424COoh4mLocI_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424COoh4mLocI_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】4 - Lesson 3 - 我們要怎麼樣設計一個ML問題? 與google提供的一些已訓練好能直接使用的ML模型&#34;  &gt;&lt;/p&gt;
&lt;p&gt;以下只說明技術部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AUCNET
&lt;ul&gt;
&lt;li&gt;custom models - 傳統的土法煉鋼，自己從頭建啦! (膜拜)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ocado
&lt;ul&gt;
&lt;li&gt;NLP API - 自然語言，辨識情緒與文章entities(實體)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Giphy
&lt;ul&gt;
&lt;li&gt;vision API - 尋找文字、(另外的例子：拒絕不適當的上傳)&lt;/li&gt;
&lt;li&gt;OCR - 光學文字識別&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Uniqlo
&lt;ul&gt;
&lt;li&gt;Dialogflow - google更高階的應用 (裡面一堆功能都先幫你內建好呢!)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;他們提出的觀點是，現在ML這個領域也有分high level(高階)與low level(低階)，&lt;br&gt;
我們想構建應用，以現在科技的成熟，也不一定要從low level(低階)出發。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;雖然像上述一樣許多已經成熟的API可以直接使用非常方便，&lt;br&gt;
不過不見得所有的應用都有像上述的API，&lt;br&gt;
所以我們將從custom models開始教學，&lt;br&gt;
畢竟市場上也必須有人為一些尚未有的功能建構出API，&lt;br&gt;
而或許建構出那個API的人就會是你。 (感受到期待與壓力XD)&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 4】 Google ML - Lesson 3 - 我們要怎麼樣設計一個ML問題? 與google提供的一些已訓練好能直接使用的ML模型&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1009
Post Date: 2019-09-05 02:35:58
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?</title>
        <link>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/whats-ml/</link>
        <pubDate>Wed, 04 Sep 2019 02:34:16 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/ai/machine-learning/google-machine-learning/whats-ml/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/20120424jsvxsChklN.png" alt="Featured image of post 【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天就來進入 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的第二章節吧~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Course - How Google does Machine Learning
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】 Chapter 1 - 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;第二章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;「What it means to be AI first」&lt;/li&gt;
&lt;li&gt;「Two stages of ML」&lt;/li&gt;
&lt;li&gt;「ML in Google products」&lt;/li&gt;
&lt;li&gt;「Demo: ML in Google products」
&lt;ul&gt;
&lt;li&gt;「Demo: ML in Google Photos」&lt;/li&gt;
&lt;li&gt;「Google Translate and Gmail」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Replacing heuristics」&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s all about data&lt;/li&gt;
&lt;li&gt;Framing an ML problem
&lt;ul&gt;
&lt;li&gt;Lab Intro - Framing an ML Problem&lt;/li&gt;
&lt;li&gt;Framing an ML problem&lt;/li&gt;
&lt;li&gt;Lab debrief&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ML in applications
&lt;ul&gt;
&lt;li&gt;Demo: ML in applications&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pre-trained models&lt;/li&gt;
&lt;li&gt;The ML marketplace is evolving&lt;/li&gt;
&lt;li&gt;A data strategy&lt;/li&gt;
&lt;li&gt;Training and serving skew&lt;/li&gt;
&lt;li&gt;An ML strategy&lt;/li&gt;
&lt;li&gt;Transform your business
&lt;ul&gt;
&lt;li&gt;Transform your business&lt;/li&gt;
&lt;li&gt;Lab Intro - ML use case&lt;/li&gt;
&lt;li&gt;Non-traditional ML use case&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Module 2 Quiz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-what-it-means-to-be-ai-first&#34;&gt;1. What it means to be AI first&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;What it means to be AI first&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;p&gt;什麼是AI(Artificial Intelligence)? 與ML(machine learning)差在哪?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI是一種discipline(學科)，有許多的theory and methods&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;什麼是ML(machine learning)?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ML是一種toolset(工具集)，ML就是拿來解AI問題的&lt;br&gt;
(ML是讓machine訓練與學習用的，他們沒有intelligent，但會become intelligent)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424lt4Wpla3jg.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424lt4Wpla3jg.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424lt4Wpla3jg_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424lt4Wpla3jg_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-two-stages-of-ml&#34;&gt;2. Two stages of ML&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;Two stages of ML&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;ml的兩個stages&#34;&gt;ML的兩個stages&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Stage1 - training&lt;/li&gt;
&lt;li&gt;Stage2 - inference(推理)(也有些人稱為prediction(預測))&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;stage1--training&#34;&gt;Stage1 : training&lt;/h4&gt;
&lt;p&gt;這邊以 Supervised Learning (監督式學習)作為舉例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;input： input資料本身&lt;/li&gt;
&lt;li&gt;label： input資料的所對應的答案 (見下圖左邊)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ML model的本身就是一種數學函數(math functions)&lt;br&gt;
&lt;strong&gt;我們的目標&lt;/strong&gt; = 讓input經過我們的數學函數(math functions)後產生label&lt;br&gt;
ML 需要的就是 &lt;strong&gt;labeled examples&lt;/strong&gt; = &lt;strong&gt;input&lt;/strong&gt; + &lt;strong&gt;label&lt;/strong&gt;(ture anwser)&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424luGiaVzKog.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424luGiaVzKog.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424luGiaVzKog_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424luGiaVzKog_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;h4 id=&#34;stage2--inference&#34;&gt;Stage2 : inference&lt;/h4&gt;
&lt;p&gt;經過這樣的學習之後，即使是沒看過的貓，我們的模型也能夠正確的判斷他是貓。&lt;br&gt;
但要達成這樣的事情，關鍵是我們會需要&lt;strong&gt;非常非常多的資料&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204248HkYbc3jNJ.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204248HkYbc3jNJ.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204248HkYbc3jNJ_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204248HkYbc3jNJ_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;p&gt;所以一整個ML模型的產生(two stages)的流程如下圖：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424kxISeqa2UH.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424kxISeqa2UH.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424kxISeqa2UH_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424kxISeqa2UH_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;p&gt;一個好的ML模型，不能單單只有在Stage 1上面下非常多的功夫，&lt;br&gt;
很多研究數據的人員，甚至是書本、教科書都過度強調Stage 1的training重要性，&lt;br&gt;
但這裡就會掉入一個陷阱，過度強調Stage 1模型訓練，&lt;br&gt;
而不進入Stage 2的生產階段，往往實際上所訓練出來的ML模型都是沒有實際用途的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/2012042476diXgyJML.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/2012042476diXgyJML.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/2012042476diXgyJML_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/2012042476diXgyJML_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;3-ml-in-google-products&#34;&gt;3. ML in Google products&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;ML in Google products&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每層layer都是一個function，&lt;br&gt;
一整個model = functions，也稱之為Neural Network&lt;/p&gt;
&lt;p&gt;然而Neural Network(NN)也只是一種數學模型而已&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;其他還有常用在ML的數學模型像是： linear methods, decision trees, radial basis functions, ensembles of trees, radial basis functions&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424jee8cwzDwq.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424jee8cwzDwq.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424jee8cwzDwq_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424jee8cwzDwq_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;p&gt;最早的NN沒有這麼多層layer，只有一層，&lt;br&gt;
然而這也代表著為何最近ML才紅起來的幾個關鍵原因：&lt;/p&gt;
&lt;li&gt;原因1在於電腦運算能力
&lt;blockquote&gt;
&lt;p&gt;越多層(deep NNs)自然需要更強大的電腦運算能力&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;原因2在於資料的數量&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;越多層(deep NNs)需要更多的資料來調整參數&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;原因3在於計算技巧&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;越多層(deep NNs)需要更佳的計算技巧，否則會花非常大量的時間運算，甚至有大量沒幫助的參數&lt;/p&gt;
&lt;/li&gt;&lt;/blockquote&gt;
&lt;p&gt;總和以上原因，這些都是在近幾年才被解決的問題，&lt;br&gt;
所以google才能在近幾年有近4000個deep learning的應用。&lt;/p&gt;
&lt;p&gt;Google的產品中到處充滿了ML models，&lt;br&gt;
而且通常一個產品可能充滿了無數個ML models，而非只有&amp;quot;一個&amp;quot;&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424GSXNPxkR4G.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424GSXNPxkR4G.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424GSXNPxkR4G_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424GSXNPxkR4G_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;p&gt;一個產品中會碰到許多複雜的問題，而我們必須還要去拆解問題，&lt;br&gt;
拆解一個小問題之後，才能針對一個小問題去想出一個ML model去解決它。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One solution needs many ML models.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;舉例：how to forecast rather an item will go out of stock?&lt;br&gt;
這不會是只靠一個ML model能解決的問題，&lt;br&gt;
光這個問題我們就能拆成三個小問題，&lt;br&gt;
但三個小問題之中又不見得只靠一個ML model就能解決，&lt;br&gt;
也因此我們才會說一個產品可能充滿了無數個ML models，&lt;br&gt;
而且可能才解決了一個複雜的問題。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Dd2lclow5d.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Dd2lclow5d.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Dd2lclow5d_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Dd2lclow5d_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;4-google-translate-and-gmail&#34;&gt;4. Google Translate and Gmail&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;Demo: ML in Google products
&lt;ul&gt;
&lt;li&gt;Google Translate and Gmail&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個章節大概介紹了 Google Translate 與 Gmail 裡面是怎麼使用 ML的&lt;/p&gt;
&lt;p&gt;光是 Google Translate 裡面大概就有這六種不同的ML在使用&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pi7gcmKHsT.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pi7gcmKHsT.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424pi7gcmKHsT_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424pi7gcmKHsT_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Gmail 裡面提到的是跟 Smart Reply (自動回覆)有關的功能，&lt;br&gt;
用到 sequence to sequence model，&lt;/p&gt;
&lt;p&gt;不過這樣也表示我們收到的信內容其實有被拿去丟進模型分析了，&lt;br&gt;
雖然不是直接被人拿去閱讀就是(微妙)&amp;hellip;&amp;hellip; 科技進步與個人資料保護的兩個難題啊。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;5-replacing-heuristics&#34;&gt;5. Replacing heuristics&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What it means to be AI first
&lt;ul&gt;
&lt;li&gt;Replacing heuristics&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;引用自 Eric Schmidt, the Executive Chairman of the Board at Google 的一段話&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Machine learning,&amp;rdquo; says Eric, &amp;ldquo;This is the next transformation. The programming paradigm is changing. It&amp;rsquo;s not programming a computer. You teach a computer to learn something and then it does what you want.&amp;rdquo;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424EwFepr0EVP.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424EwFepr0EVP.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424EwFepr0EVP_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424EwFepr0EVP_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;p&gt;這句話非常有趣，裡面&lt;strong&gt;沒有提到任何有關於data的事情&lt;/strong&gt;，&lt;br&gt;
許多人都認為ML只是在做資料結果的預測，&lt;br&gt;
他認為ML是一種可以取代programming的方式，&lt;br&gt;
ML是一種logic，而並非只是在處理data。&lt;/p&gt;
&lt;p&gt;舉一個例子，例如我們今天想搜尋&amp;quot;Giants&amp;quot;，&lt;br&gt;
google要怎麼知道我們想搜尋的是 San Francisco Giants 還是 New York Giants 呢?&lt;/p&gt;
&lt;p&gt;之前google的作法，會在搜尋時先記錄使用者的位置，&lt;br&gt;
依據不同的位置給予不同的搜尋結果(如下圖)，&lt;br&gt;
我們可以看到有一堆rules，來決定顯示什麼結果給使用者&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424bwxp2l0VG8.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424bwxp2l0VG8.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424bwxp2l0VG8_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424bwxp2l0VG8_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;p&gt;很明顯的，這樣的做法是非常&amp;quot;笨重&amp;quot;的，&lt;br&gt;
這種做法，每當我們想加入一個新的結果，&lt;br&gt;
我們必須再為了多那結果去coding一行判斷式，只為了判斷新的東西，&lt;br&gt;
而且這種做法通常會導致非常難維護。&lt;/p&gt;
&lt;p&gt;然而，我們怎麼不嘗試用使用者的搜尋熱度去自動決定結果呢?&lt;br&gt;
因此，依據此概念產生的deep ML model, RankBrain就出現了，&lt;br&gt;
除了依照使用者的搜尋熱度可以自動的&lt;strong&gt;動態調整顯示結果&lt;/strong&gt;，&lt;br&gt;
而且這樣的模型還能夠&lt;strong&gt;靠自己就能不斷的進步&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424jsvxsChklN.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424jsvxsChklN.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424jsvxsChklN_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424jsvxsChklN_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】3 - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&#34;  &gt;&lt;/p&gt;
&lt;p&gt;透過 ML 取代 heuristic rules 就是在講像這樣的事情，&lt;/p&gt;
&lt;p&gt;ML還能夠替我們解決什麼問題? 如果提到 ML 未來的可能性，&lt;br&gt;
google認為，只要任何是能夠被寫下rules的東西，ML都可以完成，&lt;br&gt;
而且不只侷限於統計分析的這類事情。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Notice that saying that machine learning is a way to replace rules, notice that this is a far more expansive answer to what kinds of problems can machine learning solve.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;所以 Google 說自己是 &amp;ldquo;AI-first&amp;rdquo; company，&lt;br&gt;
他們認為 ML 在未來可以取代任何 coding 中所寫的 rules，&lt;br&gt;
只要能收集正確的資料，都可以透過 ML 去完成同樣的問題。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我們可以開始用新的角度來思考問題，&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我們不用再去想該如何替問題的改變去 coding rules，&lt;br&gt;
我們只需要想怎麼根據資料去訓練模型。&lt;/p&gt;
&lt;p&gt;我們不用再去想要為了修bug，去替它增加一個新的 rules，&lt;br&gt;
我們只需要想怎麼根據新資料去繼續訓練模型。&lt;/p&gt;
&lt;p&gt;至於處理那些特別的inputs與特別的rules，&lt;br&gt;
我們只需要想怎麼建立更大規模的模型，來應對這些需要的預測。&lt;/p&gt;
&lt;p&gt;(這段真的太猛了&amp;hellip;，如果真的實現了等於不用再慢慢地針對情況一一對應coding了，&lt;br&gt;
未來的工程都是在訓練模型，只是將我們coding所實現的rule，皆轉換成訓練的目標)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 3】 Google ML - Lesson 2 - What it means to be AI first (上) - 什麼是ML? 為什麼ML最近才紅起來?&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1007
Post Date: 2019-09-04 02:34:16
Categories: 510 - Google Machine Learning, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 11th, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】2 - Lesson 1 - Introduction to specialization - 讓你的ML在Google雲端平台運行的五大階段</title>
        <link>https://wongwongnotes.com/posts/life-and-work/portfolio/th-google-machine-learning/ml-in-gcp/</link>
        <pubDate>Tue, 03 Sep 2019 02:31:55 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/life-and-work/portfolio/th-google-machine-learning/ml-in-gcp/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/201204246dFc6F8lUg.png" alt="Featured image of post 【Google ML】2 - Lesson 1 - Introduction to specialization - 讓你的ML在Google雲端平台運行的五大階段" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;今天就廢話不多說直接來進入 &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 的課程吧~&lt;/p&gt;
&lt;p&gt;這次鐵人賽的30天中，我目前所寫文章的所有課程目錄如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】準備日 - 註冊coursera與訂閱課程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;course---how-google-does-machine-learning&#34;&gt;Course - How Google does Machine Learning&lt;/h2&gt;
&lt;p&gt;裡面又有五大章節，今天就先從第一章節開始看吧&lt;br&gt;
第一章節的課程地圖：「(紅字標記為本篇文章中會介紹到的章節)」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Introduction to specialization」
&lt;ul&gt;
&lt;li&gt;「Introduction」
&lt;ul&gt;
&lt;li&gt;「Intro to ML on GCP Specialization」&lt;/li&gt;
&lt;li&gt;「Specialization Agenda」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Why Google?」
&lt;ul&gt;
&lt;li&gt;「Why Google?」&lt;/li&gt;
&lt;li&gt;「Why Google Cloud?」&lt;/li&gt;
&lt;li&gt;「Latest from Google」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;「Module 1 Quiz」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;1-intro-to-ml-on-gcp-specialization&#34;&gt;1. Intro to ML on GCP Specialization&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;li&gt;Introduction to specialization
&lt;li&gt;Introduction
&lt;ul&gt;
&lt;li&gt;Intro to ML on GCP Specialization&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/li&gt;
&lt;p&gt;此章節有一個影片，介紹了 Google Cloud Platform (GCP)的服務，&lt;br&gt;
另外有提到未來會使用於機器學習的程式語言是python(在GCP上)，&lt;br&gt;
以及提到 Google BigQuery 的服務與 Open Source 的 Tensorflow 的整合，&lt;br&gt;
替整個數據研究與機器學習對於公司組織應用上更加的便利了&lt;/p&gt;
&lt;p&gt;(以自己的經驗來說，將整個機器學習的服務移至雲端，&lt;br&gt;
這樣確實能在買硬體的成本應該能省下不少錢，&lt;br&gt;
而且需要時再訂閱也不擔心買了硬體擱置不用的問題。)&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-specialization-agenda&#34;&gt;2. Specialization Agenda&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction to specialization
&lt;ul&gt;
&lt;li&gt;Introduction
&lt;ul&gt;
&lt;li&gt;Specialization Agenda&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這章提到了 GCP 上的 ML 整體的運作流程，&lt;br&gt;
主要分別五大步驟，影片中提到的圖片如下&lt;br&gt;
(不確定有沒有版權問題，有的話我再將圖拿掉)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424kG6I2u2vF1.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424kG6I2u2vF1.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424kG6I2u2vF1_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424kG6I2u2vF1_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】2 - Lesson 1 - Introduction to specialization - 讓你的ML在Google雲端平台運行的五大階段&#34;  &gt;&lt;/p&gt;
&lt;h4 id=&#34;21-why-ml&#34;&gt;2.1. Why ML?&lt;/h4&gt;
&lt;p&gt;影片中提到這章節也許單純的介紹會無聊會讓你想直接跳下章學習(笑，真懂XDD)&lt;br&gt;
但有一句話提到這張的重點，我們還是必須&lt;strong&gt;清楚整個 GCP上的ML的架構&lt;/strong&gt;，&lt;br&gt;
這樣未來在使用時你才能夠在大方向的掌握使用上的進程。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The big picture is very important for you to be able to get buy-in from the rest of the organization.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;22-ml-with-tensorflow&#34;&gt;2.2. ML with Tensorflow&lt;/h4&gt;
&lt;p&gt;想藉由完成TensorFlow完成Machine Learning，至少需要兩件事情，&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;準備&amp;quot;好的&amp;quot;資料集&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用TensorFlow建立你的機器學習模型&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;影片中有特別提到準備&amp;quot;好的&amp;quot;資料集是一個不能忽略的重點，&lt;br&gt;
有許多訓練好的模型結果最後的產品失敗(甚至是某些企業都會失敗)，&lt;br&gt;
這時候&lt;strong&gt;通常原因都是需要回來檢查我們的資料集&lt;/strong&gt;。&lt;/p&gt;
&lt;h4 id=&#34;23-improving-ml-accuracy&#34;&gt;2.3. Improving ML Accuracy&lt;/h4&gt;
&lt;p&gt;這個章節會灌輸你一大堆&lt;strong&gt;能精進ML模型結果準確度的想法與觀念&lt;/strong&gt;，&lt;br&gt;
然而不同的情況自然會使用不同的想法與對應方式，&lt;br&gt;
所以這章節更多是教觀念，幫助我們在之後面對更多 Machine Learning 上面的問題，&lt;br&gt;
而且還提到需要花時間去消化觀念並能運用到code中，不可只知其觀念名。&lt;/p&gt;
&lt;h4 id=&#34;24-ml-at-scale&#34;&gt;2.4. ML at scale&lt;/h4&gt;
&lt;p&gt;這個章節主要會提到如何讓訓練完成的ML模型進入產品化的階段，&lt;br&gt;
這個部分可能又比前面還要更加的困難，許多企業級的ML projects也經常失敗在此處。&lt;/p&gt;
&lt;p&gt;Operationalizing a Machine Learning model 大概又可以分成以下幾步驟&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;training it at scale in a distributed way&lt;/li&gt;
&lt;li&gt;serving out the predictions&lt;/li&gt;
&lt;li&gt;building a Machine Learning model end to end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;而在此章節將依照以下順序講解：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;how to train, deploy&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;predict with ML models in a way that they&amp;rsquo;re production ready&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;delve back into Machine Learning theory&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最後會回到 Machine Learning的理論講解，&lt;br&gt;
不過ML理論本身是多屬於heuristic(啟發式)的，&lt;br&gt;
也就是我們幾乎只能仰賴一些工具與技巧。&lt;/p&gt;
&lt;p&gt;因此我們將&lt;strong&gt;介紹一些工具跟技巧&lt;/strong&gt;，提供的範例主要是在訓練圖片時有效，&lt;br&gt;
但這些也有助於在處理時間序列數據或文本數據更佳有效。&lt;/p&gt;
&lt;h4 id=&#34;25-specialized-ml-models&#34;&gt;2.5. Specialized ML models&lt;/h4&gt;
&lt;p&gt;最後這章節會介紹一些能建立 powerful recommendation systems 的方法，&lt;br&gt;
Recommendation systems是一種ML model，&lt;br&gt;
指的是你怎麼&lt;strong&gt;建立你個人化的演算法的方式&lt;/strong&gt;，&lt;br&gt;
大多數ML工程師也會在職涯的某些階段中會逐漸建立起來這樣的個人化演算法。&lt;/p&gt;
&lt;p&gt;事實上這部影片認為，也許最後只會有一種ML system被大家所建，&lt;br&gt;
但在建立powerful recommendation engines之前，&lt;br&gt;
我們都會反覆碰到前四章所學的東西，不論是對工具與技巧的理解等等，&lt;/p&gt;
&lt;p&gt;我們可能在各種不同的地方學習ML，但儘管如此，細節也有可能完全不同，&lt;br&gt;
所以當你在碰到的新的ML教材時，也不要完全跳過他，將他視為有用的複習課程，&lt;br&gt;
並在一次確定自己還記得這些部分中提出的想法。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;3-why-google&#34;&gt;3. Why Google?&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction to specialization
&lt;ul&gt;
&lt;li&gt;Why Google?
&lt;ul&gt;
&lt;li&gt;Why Google?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;影片中提到了一些machine learning與我們日常的關係，&lt;br&gt;
特別是以下的圖片中的應用大家應該都不陌生。&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424PNJpFcR9jv.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424PNJpFcR9jv.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424PNJpFcR9jv_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424PNJpFcR9jv_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】2 - Lesson 1 - Introduction to specialization - 讓你的ML在Google雲端平台運行的五大階段&#34;  &gt;&lt;/p&gt;
&lt;p&gt;此外一個驚人的事實是，近幾年使用machine learning逐漸上升，&lt;br&gt;
就連google已推出了突破4000個有關於machine learning應用的產品。&lt;br&gt;
(近幾年的飆升真的滿驚人的)&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204241nftYyPAxw.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204241nftYyPAxw.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204241nftYyPAxw_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204241nftYyPAxw_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】2 - Lesson 1 - Introduction to specialization - 讓你的ML在Google雲端平台運行的五大階段&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;4-why-google-cloud&#34;&gt;4. Why Google Cloud?&lt;/h3&gt;
&lt;p&gt;課程地圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction to specialization
&lt;ul&gt;
&lt;li&gt;Why Google?
&lt;ul&gt;
&lt;li&gt;Why Google Cloud?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;影片中提到一般人認為的ML服務(ML serving, not just ML training)可能像下圖，&lt;br&gt;
很多人可能花了非常大量的時間再處理圖片的左半部，&lt;br&gt;
然而，ML service最主要的核心應用的卻是在圖片的右半部&lt;/p&gt;
&lt;p&gt;Google有提到，&lt;strong&gt;training data(batch data)與streaming data的相容性&lt;/strong&gt;，&lt;br&gt;
&lt;strong&gt;會是一個影響訓練模型成功機率的關鍵因素&lt;/strong&gt;，&lt;br&gt;
他們嘗試能在batch data與streaming data的進行相同的處理方式以減少失敗的機會。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424CIdKtDr9RU.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424CIdKtDr9RU.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424CIdKtDr9RU_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424CIdKtDr9RU_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】2 - Lesson 1 - Introduction to specialization - 讓你的ML在Google雲端平台運行的五大階段&#34;  &gt;&lt;/p&gt;
&lt;p&gt;ML的簡圖，基本上也代表著訓練的每個階段，&lt;br&gt;
而這部分透過GCP的服務，很多東西都已經先準備好了，&lt;br&gt;
我們可以用GCP的系統，具有彈性、可靠，且非常好的工程能力&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pMqg4oQ7yD.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pMqg4oQ7yD.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424pMqg4oQ7yD_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424pMqg4oQ7yD_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】2 - Lesson 1 - Introduction to specialization - 讓你的ML在Google雲端平台運行的五大階段&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;5-module-1-quiz&#34;&gt;5. Module 1 Quiz&lt;/h3&gt;
&lt;p&gt;不知道是不是因為英文的關係&amp;hellip;我覺得有點難，&lt;br&gt;
有幾題考得滿細的，不過忘記答案的話可以回去課程找答案，&lt;br&gt;
這章應該幾乎都考很介紹的東西，所以感覺超級像背科(背他介紹的東西XDDD&lt;/p&gt;
&lt;p&gt;不過都幾乎快把整個影片翻譯完的我，當然就直接交了&lt;/p&gt;
&lt;p&gt;耶依~ Module 1 Quiz結束囉~&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204246dFc6F8lUg.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204246dFc6F8lUg.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204246dFc6F8lUg_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204246dFc6F8lUg_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】2 - Lesson 1 - Introduction to specialization - 讓你的ML在Google雲端平台運行的五大階段&#34;  &gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213204&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 2】 Google ML - Lesson 1 - Introduction to specialization - 讓你的ML在Google雲端平台運行的五大階段&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;coursera - &lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt; 課程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若圖片有版權問題請告知我，我會將圖撤掉&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1005
Post Date: 2019-09-03 02:31:55
Categories: 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 510 - Google Machine Learning
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 11th, 學習筆記, 510
--&gt;</description>
        </item>
        <item>
        <title>【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧</title>
        <link>https://wongwongnotes.com/posts/life-and-work/portfolio/th-google-machine-learning/know-coursera/</link>
        <pubDate>Mon, 02 Sep 2019 02:24:26 +0800</pubDate>
        
        <guid>https://wongwongnotes.com/posts/life-and-work/portfolio/th-google-machine-learning/know-coursera/</guid>
        <description>&lt;img src="https://wongwongnotes.com/images/restored/2019/09/201204245fZfxATlKr.png" alt="Featured image of post 【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;會有這次作筆記的原因主要是因為 &lt;a class=&#34;link&#34; href=&#34;https://www.facebook.com/gdgtaiwan/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Developers Groups Taiwan&lt;/a&gt; (以下簡稱 GDG Taiwan)&lt;br&gt;
有推廣他們的課程，其中像是這次的「Google 機器學習培訓計劃」也是他們舉辦的活動，&lt;/p&gt;
&lt;p&gt;而在 GDG Taiwan 的計畫之下有舉辦一個「ML Study Jam」的讀書會，&lt;br&gt;
我是透過這個讀書會知道這活動的消息的。&lt;/p&gt;
&lt;p&gt;此外，由於今年 ML Study Jam 與 iT 邦幫忙的鐵人賽合作，&lt;br&gt;
並且推出「如果同時完成了這次的學習課程且完成鐵人賽，就加碼送 TensorFlow 背包！」的活動&lt;br&gt;
背包與那篇貼文長這樣：&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Xy6rvjwprn.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Xy6rvjwprn.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Xy6rvjwprn_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Xy6rvjwprn_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;p&gt;&lt;del&gt;(題外話：這貼文的照片與文字真的超陽春可愛的XD)&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;總之為了包包還是努力寫一下30天的文章XD，&lt;br&gt;
&lt;del&gt;雖然不知道拿到包包後會不會真的把這個包包背出去就是了&lt;/del&gt;&lt;/p&gt;
&lt;li&gt;對他們的計畫有興趣也可以追蹤 GDG Taiwan 的粉專：
https://www.facebook.com/gdgtaiwan/&lt;/li&gt;
&lt;h3 id=&#34;0-先來說說這次的30天學習筆記預計會有的內容&#34;&gt;0. 先來說說這次的30天學習筆記預計會有的內容&lt;/h3&gt;
&lt;p&gt;由google提供的免費課程有預先指定其中兩個，&lt;br&gt;
我將在會在30天中優先完成這兩門課程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://web.archive.org/web/20250412065557/https://www.coursera.org/learn/launching-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching to Machine Learning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;至於剩下的天數，規劃大概有兩種：&lt;/p&gt;
&lt;li&gt;繼續完成其他非指定的課程
&lt;blockquote&gt;
&lt;p&gt;畢竟難得有免費又高級的課程，當然要多學一點啊！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;試著用從這課程中學習到的東西試著做點小應用&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;只是照著教學做，感覺就沒有實作感，所以可以的話當然會希望能作些實際的應用，&lt;br&gt;
不過目前要做什麼還沒決定XD  (看學到什麼東西或許就會有靈感了XD)&lt;/p&gt;
&lt;/li&gt;&lt;/blockquote&gt;
&lt;p&gt;今天是開始做 Google machine learning 學習筆記的第一天，&lt;br&gt;
通常第一天就來先認識一下環境與做一些基本設定吧~&lt;/p&gt;
&lt;h3 id=&#34;1-開始註冊帳號&#34;&gt;1. 開始註冊帳號&lt;/h3&gt;
&lt;p&gt;有報名此活動的應該都會在自己的信件夾收到一封啟用信，&lt;br&gt;
我們 &lt;strong&gt;需要透過信中的連結(重要)&lt;/strong&gt; 開始我們的課程&lt;/p&gt;
&lt;p&gt;點信中連結會看到以下畫面：&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424oCIufpwoxj.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424oCIufpwoxj.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424oCIufpwoxj_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424oCIufpwoxj_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;p&gt;點選左下角的 Machine Learning with TensorFlow on Google Cloud Platform，並註冊課程&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pyirwr4Vhi.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pyirwr4Vhi.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424pyirwr4Vhi_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424pyirwr4Vhi_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;p&gt;註冊帳號成功後會顯示訂閱美金49元的提示，&lt;br&gt;
這裡我們就先按訂閱(第一個月是免費的，稍後會取消續訂)&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pcPIzuJVDD.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424pcPIzuJVDD.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424pcPIzuJVDD_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424pcPIzuJVDD_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;p&gt;註冊時coursera會需要你的信用卡資料&lt;br&gt;
(如果學生沒有信用卡，可能就需要先跟家人借，&lt;br&gt;
不過放心這次的學習課程不需要付費，但需要綁定卡片)&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424zlO6YvSWmU.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424zlO6YvSWmU.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424zlO6YvSWmU_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424zlO6YvSWmU_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;p&gt;看到這樣的畫面就表示完成囉！&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Uf6jVOWLwT.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424Uf6jVOWLwT.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424Uf6jVOWLwT_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424Uf6jVOWLwT_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;p&gt;按開始回到課程頁面會看到以下的畫面：&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424xp6cgHspw5.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424xp6cgHspw5.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424xp6cgHspw5_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424xp6cgHspw5_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;h3 id=&#34;2-取消第二個月繼續訂閱第二個月之後就要付費囉&#34;&gt;2. 取消第二個月繼續訂閱(第二個月之後就要付費囉~)&lt;/h3&gt;
&lt;p&gt;再來我們可以透過個人購買設定或&lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/my-purchases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;這個網址&lt;/a&gt;，去取消續訂第二個月的課程&lt;/p&gt;
&lt;p&gt;按下方的取消訂閱即可&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424zkBLCiXkyn.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424zkBLCiXkyn.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424zkBLCiXkyn_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424zkBLCiXkyn_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;p&gt;看到這個畫面就表示取消續訂成功囉！&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204246GZhnR9A9M.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204246GZhnR9A9M.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204246GZhnR9A9M_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204246GZhnR9A9M_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;h3 id=&#34;3-開始上課&#34;&gt;3. 開始上課&lt;/h3&gt;
&lt;p&gt;最後我們回到課程頁面，或點選以下兩個課程連結，就可以開始上課囉~&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/learn/google-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How Google does Machine Learning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://web.archive.org/web/20250412065557/https://www.coursera.org/learn/launching-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching to Machine Learning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;由於剛剛已經註冊了第一個，這邊示範註冊第二個課程( &lt;a class=&#34;link&#34; href=&#34;https://web.archive.org/web/20250412065557/https://www.coursera.org/learn/launching-machine-learning?specialization=machine-learning-tensorflow-gcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Launching to Machine Learning&lt;/a&gt;)&lt;br&gt;
(注意：註冊課程後會有&lt;strong&gt;完成課程的期限&lt;/strong&gt;(目前看上面寫的)，&lt;br&gt;
如果沒有把握在時間內完成兩門課程，建議等有空再註冊第二門課)&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424n7DsuFoFcD.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/20120424n7DsuFoFcD.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/20120424n7DsuFoFcD_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/20120424n7DsuFoFcD_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;p&gt;註冊課程成功囉！&lt;br&gt;
&lt;img src=&#34;https://wongwongnotes.com/images/restored/2019/09/201204245fZfxATlKr.webp&#34;   srcset=&#34;https://wongwongnotes.com/images/restored/2019/09/201204245fZfxATlKr.webp 1600w, https://wongwongnotes.com/images/restored/2019/09/201204245fZfxATlKr_800w.webp 800w, https://wongwongnotes.com/images/restored/2019/09/201204245fZfxATlKr_480w.webp 480w&#34;  loading=&#34;lazy&#34;  alt=&#34;【Google ML】1 - Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&#34;  &gt;&lt;/p&gt;
&lt;h3 id=&#34;4-繼續完成課程&#34;&gt;4. 繼續完成課程&lt;/h3&gt;
&lt;p&gt;完成今天的課程後，如果之後想要繼續課程，&lt;br&gt;
可以回到&lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;coursera的網頁&lt;/a&gt;，或點以下連結直接看&lt;a class=&#34;link&#34; href=&#34;https://www.coursera.org/?skipBrowseRedirect=true&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;課程網頁&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽&lt;br&gt;
&lt;a class=&#34;link&#34; href=&#34;https://ithelp.ithome.com.tw/articles/10213199&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【Day 1】 Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://bit.ly/tw-mlstudyjam-2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方所提供的操作手冊&lt;/a&gt; (裡面部分內容需要有報名活動才能使用)&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
Post ID: 1002
Post Date: 2019-09-02 02:24:26
Categories: 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 510 - Google Machine Learning
Tags: 鐵人賽, learning, 《Google, Google, Google ML, Machine, 11th鐵人賽, 機器學習, 045 - 11th 鐵人賽 - 《Google machine learning 學習筆記, 045, machine, Learning, 510 - Google Machine Learning, 11th, 學習筆記, 510
--&gt;</description>
        </item>
        
    </channel>
</rss>
