1. 程式人生 > >Google官方機器學習速成課程

Google官方機器學習速成課程

TOC

前提條件和準備工作

在開始機器學習速成課程之前,請先閱讀下面的前提條件和準備工作部分,以確保您已做好完成所有單元所需的準備工作。

前提條件

機器學習速成課程並不會假定或要求您預先掌握機器學習方面的任何知識。但是,為了能夠理解課程中介紹的概念並完成練習,您最好滿足以下前提條件:

  • 掌握入門級代數知識, 您應該瞭解變數和係數、線性方程式、函式圖和直方圖(熟悉對數和導數等更高階的數學概念會有幫助,但不是必需條件)。
  • 熟練掌握程式設計基礎知識,並且具有一些使用 Python 進行編碼的經驗。 機器學習速成課程中的程式設計練習是通過 TensorFlow 並使用 Python 進行編碼的。您無需擁有任何 TensorFlow 經驗,但應該能夠熟練閱讀和編寫包含基礎程式設計結構(例如,函式定義/呼叫、列表和字典、迴圈和條件表示式)的 Python 程式碼。

準備工作

Pandas 使用入門

機器學習速成課程中的程式設計練習使用 Pandas 庫來操控資料集。如果您不熟悉 Pandas,建議您先學習Pandas 簡介教程,該教程介紹了練習中使用的主要 Pandas 功能。

低階 TensorFlow 基礎知識

機器學習速成課程中的程式設計練習使用 TensorFlow 的高階 tf.estimator API 來配置模型。如果您有興趣從頭開始構建 TensorFlow 模型,請學習以下教程:

  • TensorFlow Hello World:在低階 TensorFlow 中編碼的“Hello World”。
  • TensorFlow 程式設計概念:演示了 TensorFlow 應用中的基本元件:張量、指令、圖和會話。
  • 建立和操控張量:張量快速入門 - TensorFlow 程式設計中的核心概念。此外,還回顧了線性代數中的矩陣加法和乘法概念。

主要概念和工具

機器學習速成課程中介紹並應用了以下概念和工具。有關詳情,請參閱連結的資源。

數學
  • 代數

    • 變數、係數和函式
    • 線性方程式,例如 y = b
      + w 1 x 1 + w 2 x 2 y = b + w_1x_1 + w_2x_2
    • 對數和對數方程式,例如 y = l n ( 1 + e z ) y = ln(1+ e^z)
    • S 型函式
  • 線性代數

    • 張量和張量等級
    • 矩陣乘法
  • 三角學

    • Tanh(作為啟用函式進行講解,無需提前掌握相關知識)
  • 統計資訊

    • 均值、中間值、離群值和標準偏差
    • 能夠讀懂直方圖
  • 微積分(可選,適合高階主題)

    • 概念(您不必真正計算導數)
    • 梯度或斜率
    • 偏導數(與梯度緊密相關)
    • 鏈式法則(帶您全面瞭解用於訓練神經網路的反向傳播演算法)

Python 程式設計

  • 基礎 Python
    • Python 教程中介紹了以下 Python 基礎知識:
    • 定義和呼叫函式:使用位置和關鍵字引數
    • 字典、列表、集合(建立、訪問和迭代)
    • for 迴圈:包含多個迭代器變數的 for 迴圈(例如 for a, b in [(1,2), (3,4)])if/else 條件塊和條件表示式
    • 字串格式(例如 ‘%.2f’ % 3.14)
    • 變數、賦值、基本資料型別(int、float、bool、str)
    • pass 語句
  • 中級 Python
    Python 教程還介紹了以下更高階的 Python 功能:
    • 列表推導式
    • Lambda 函式
  • 第三方 Python 庫
    機器學習速成課程程式碼示例使用了第三方庫提供的以下功能。無需提前熟悉這些庫;您可以在需要時查詢相關內容。
    • Matplotlib(適合資料視覺化)
    • pyplot 模組
    • cm 模組
    • gridspec 模組
    • Seaborn(適合熱圖)
    • heatmap 函式
    • Pandas(適合資料處理)
    • DataFrame 類
    • NumPy(適合低階數學運算)
    • linspace 函式
    • random 函式
    • array 函式
    • arange 函式
    • scikit-learn(適合評估指標)
    • metrics 模組

Bash 終端/雲端控制檯

要在本地計算機上或雲端控制檯中執行程式設計練習,您應該能熟練使用命令列:

  • Bash 參考手冊
  • Bash 快速參考表
  • 瞭解 Shell

機器學習簡介

本單元將為您介紹機器學習 (ML)。

  • 預計用時:3 分鐘

  • 學習目標

    • 瞭解掌握機器學習技術的實際優勢
    • 理解機器學習技術背後的理念
  • 視訊講座

框架處理

視訊講座

本單元探討了如何將某個任務構建為機器學習問題,並介紹了各種機器學習方法中通用的很多基本詞彙術語。

  • 學習目標
    • 複習機器學習基本術語。
    • 瞭解機器學習的各種用途。

機器學習主要術語

什麼是(監督式)機器學習?簡單來說,它的定義如下:

  • 機器學習系統通過學習如何組合輸入資訊來對從未見過的資料做出有用的預測。
    下面我們來了解一下機器學習的基本術語。

標籤

標籤是我們要預測的事物,即簡單線性迴歸中的 y 變數。標籤可以是小麥未來的價格、圖片中顯示的動物品種、音訊剪輯的含義或任何事物。

特徵

特徵是輸入變數,即簡單線性迴歸中的 x 變數。簡單的機器學習專案可能會使用單個特徵,而比較複雜的機器學習專案可能會使用數百萬個特徵,按如下方式指定:

{x_1, x_2, … x_N}

在垃圾郵件檢測器示例中,特徵可能包括:

  • 電子郵件文字中的字詞
  • 發件人的地址
  • 傳送電子郵件的時段
  • 電子郵件中包含“一種奇怪的把戲”這樣的短語。

樣本

樣本是指資料的特定例項:x。(我們採用粗體 x 表示它是一個向量。)我們將樣本分為以下兩類:

  • 有標籤樣本
  • 無標籤樣本
    有標籤樣本同時包含特徵和標籤。即:

    labeled examples: {features, label}: (x, y)

我們使用有標籤樣本來訓練模型。在我們的垃圾郵件檢測器示例中,有標籤樣本是使用者明確標記為“垃圾郵件”或“非垃圾郵件”的各個電子郵件。

例如,下表顯示了從包含加利福尼亞州房價資訊的資料集中抽取的 5 個有標籤樣本:

housingMedianAge totalRooms totalBedrooms medianHouseValue
15 5612 1283 66900
19 7650 7650 80100
17 720 174 85700
14 1501 337 73400
20 1454 326 65500

無標籤樣本包含特徵,但不包含標籤。即:

unlabeled examples: {features, ?}: (x, ?)

在使用有標籤樣本訓練了我們的模型之後,我們會使用該模型來預測無標籤樣本的標籤。在垃圾郵件檢測器示例中,無標籤樣本是使用者尚未新增標籤的新電子郵件。

模型

模型定義了特徵與標籤之間的關係。例如,垃圾郵件檢測模型可能會將某些特徵與“垃圾郵件”緊密聯絡起來。我們來重點介紹一下模型生命週期的兩個階段:

  • 訓練表示建立或學習模型。也就是說,您向模型展示有標籤樣本,讓模型逐漸學習特徵與標籤之間的關係。

  • 推斷表示將訓練後的模型應用於無標籤樣本。也就是說,您使用訓練後的模型來做出有用的預測 (y’)。例如,在推斷期間,您可以針對新的無標籤樣本預測 medianHouseValue。

迴歸與分類

迴歸模型可預測連續值。例如,迴歸模型做出的預測可回答如下問題:

  • 加利福尼亞州一棟房產的價值是多少?
  • 使用者點選此廣告的概率是多少?

分類模型可預測離散值。例如,分類模型做出的預測可回答如下問題:

  • 某個指定電子郵件是垃圾郵件還是非垃圾郵件?
  • 這是一張狗、貓還是倉鼠圖片?

關鍵字詞

分類模型 樣本 特徵 推斷 標籤 模型 迴歸 訓練

深入瞭解機器學習

線性迴歸

人們早就知曉,相比涼爽的天氣,蟋蟀在較為炎熱的天氣裡鳴叫更為頻繁。數十年來,專業和業餘昆蟲學者已將每分鐘的鳴叫聲和溫度方面的資料編入目錄。Ruth 阿姨將她喜愛的蟋蟀資料庫作為生日禮物送給您,並邀請您自己利用該資料庫訓練一個模型,從而預測鳴叫聲與溫度的關係。

首先建議您將資料繪製成圖表,瞭解下資料的分佈情況:

在這裡插入圖片描述

圖 1. 每分鐘的鳴叫聲與溫度(攝氏度)的關係。

毫無疑問,此曲線圖表明溫度隨著鳴叫聲次數的增加而上升。鳴叫聲與溫度之間的關係是線性關係嗎?是的,您可以繪製一條直線來近似地表示這種關係,如下所示:
在這裡插入圖片描述

圖 2. 線性關係。

事實上,雖然該直線並未精確無誤地經過每個點,但針對我們擁有的資料,清楚地顯示了鳴叫聲與溫度之間的關係。只需運用一點代數知識,您就可以將這種關係寫下來,如下所示:

y = b + w 1 x 1 y' = b + w_1x_1
其中:

  • y y' 指的是預測標籤(理想輸出值)。
  • b b 指的是偏差(y 軸截距)。而在一些機器學習文件中,它稱為 。
  • w 1 w_1 指的是特徵 1 的權重。權重與上文中用 表示的“斜率”的概念相同。
  • x 1 x_1 指的是特徵(已知輸入項)。
    要根據新的每分鐘的鳴叫聲值 推斷(預測)溫度 ,只需將 值代入此模型即可。

下標(例如 w 1 w_1 x 1 x_1 )預示著可以用多個特徵來表示更復雜的模型。例如,具有三個特徵的模型可以採用以下方程式:

y = b + w 1 x 1 + w 2 x 2 + w 3 x 3 y' = b + w_1x_1 + w_2x_2 + w_3x_3

訓練與損失

簡單來說,訓練模型表示通過有標籤樣本來學習(確定)所有權重和偏差的理想值。在監督式學習中,機器學習演算法通過以下方式構建模型:檢查多個樣本並嘗試找出可最大限度地減少損失的模型;這一過程稱為經驗風險最小化。

損失是對糟糕預測的懲罰。也就是說,損失是一個數值,表示對於單個樣本而言模型預測的準確程度。如果模型的預測完全準確,則損失為零,否則損失會較大。訓練模型的目標是從所有樣本中找到一組平均損失“較小”的權重和偏差。例如,圖 3 左側顯示的是損失較大的模型,右側顯示的是損失較小的模型。關於此圖,請注意以下幾點:

  • 紅色箭頭表示損失。
  • 藍線表示預測。
    在這裡插入圖片描述

左側模型的損失較大;右側模型的損失較小。

請注意,左側曲線圖中的紅色箭頭比右側曲線圖中的對應紅色箭頭長得多。顯然,相較於左側曲線圖中的藍線,右側曲線圖中的藍線代表的是預測效果更好的模型。

您可能想知道自己能否建立一個數學函式(損失函式),以有意義的方式彙總各個損失。

平方損失:一種常見的損失函式
接下來我們要看的線性迴歸模型使用的是一種稱為平方損失(又稱為 L2 損失)的損失函式。單個樣本的平方損失如下:

= the square of the difference between the label and the prediction
= (observation - prediction(x))2
= (y - y’)2

均方誤差 (MSE) 指的是每個樣本的平均平方損失。要計算 MSE,請求出各個樣本的所有平方損失之和,然後除以樣本數量:
M S E = 1 N ( x , y ) D ( y p r e d i c t i o n ( x ) ) 2 MSE = \frac{1}{N} \sum_{(x,y)\in D} (y - prediction(x))^2

其中:

  • ( x , y ) (x, y) 指的是樣本,其中
    • x x 指的是模型進行預測時使用的特徵集(例如,溫度、年齡和交配成功率)。
    • y y 指的是樣本的標籤(例如,每分鐘的鳴叫次數)。
    • p r e d i c t i o n ( x ) prediction(x) 指的是權重和偏差與特徵集 結合的函式。
    • D D 指的是包含多個有標籤樣本(即 )的資料集。
    • N N 指的是 D D 中的樣本數量。

雖然 MSE 常用於機器學習,但它既不是唯一實用的損失函式,也不是適用於所有情形的最佳損失函式。

降低損失

迭代方法

上一單元介紹了損失的概念。在本單元中,您將瞭解機器學習模型如何以迭代方式降低損失。

迭代學習可能會讓您想到“Hot and Cold”這種尋找隱藏物品(如頂針)的兒童遊戲。在我們的遊戲中,“隱藏的物品”就是最佳模型。剛開始,您會胡亂猜測(“ w 1 w_1 的值為 0。”),等待系統告訴您損失是多少。然後,您再嘗試另一種猜測(“ w 1 w_1 的值為 0.5。”),看看損失是多少。哎呀,這次更接近目標了。實際上,如果您以正確方式玩這個遊戲,通常會越來越接近目標。這個遊戲真正棘手的地方在於儘可能高效地找到最佳模型。

下圖顯示了機器學習演算法用於訓練模型的迭代試錯過程:

降低損失

圖 1. 用於訓練模型的迭代方法。

我們將在整個機器學習速成課程中使用相同的迭代方法詳細說明各種複雜情況,尤其是處於暴風雨中的藍雲區域。迭代策略在機器學習中的應用非常普遍,這主要是因為它們可以很好地擴充套件到大型資料集。

“模型”部分將一個或多個特徵作為輸入,然後返回一個預測 (y’) 作為輸出。為了進行簡化,不妨考慮一種採用一個特徵並返回一個預測的模型:

y = b + w 1 x 1 y' = b + w_1x_1

我們應該為 b b w 1 w_1 設定哪些初始值?對於線性迴歸問題,事實證明初始值並不重要。我們可以隨機選擇值,不過我們還是選擇採用以下這些無關緊要的值:

  • b b = 0
  • w 1 w_1 = 0
    假設第一個特徵值是 10。將該特徵值代入預測函式會得到以下結果:

y’ = 0 + 0(10)
y’ = 0

圖中的“計算損失”部分是模型將要使用的損失函式。假設我們使用平方損失函式。損失函式將採用兩個輸入值:

  • y’:模型對特徵 x 的預測
  • y:特徵 x 對應的正確標籤。

最後,我們來看圖的“計算引數更新”部分。機器學習系統就是在此部分檢查損失函式的值,併為 b b w 1 w_1 生成新值。現在,假設這個神祕的綠色框會產生新值,然後機器學習系統將根據所有標籤重新評估所有特徵,為損失函式生成一個新值,而該值又產生新的引數值。這種學習過程會持續迭代,直到該演算法發現損失可能最低的模型引數。通常,您可以不斷迭代,直到總體損失不再變化或至少變化極其緩慢為止。這時候,我們可以說該模型已收斂。

要點
在訓練機器學習模型時,首先對權重和偏差進行初始猜測,然後反覆調整這些猜測,直到獲得損失可能最低的權重和偏差為止。

關鍵字詞 收斂 損失 訓練

梯度下降法

迭代方法圖(圖 1)包含一個標題為“計算引數更新”的華而不實的綠框。現在,我們將用更實質的方法代替這種華而不實的演算法。

假設我們有時間和計算資源來計算 的所有可能值的損失。對於我們一直在研究的迴歸問題,所產生的損失與 的圖形始終是凸形。換言之, w w 圖形始終是碗狀圖,如下所示:
在這裡插入圖片描述

圖 2. 迴歸問題產生的損失與權重圖為凸形。

凸形問題只有一個最低點;即只存在一個斜率正好為 0 的位置。這個最小值就是損失函式收斂之處。

通過計算整個資料集中 每個可能值的損失函式來找到收斂點這種方法效率太低。我們來研究一種更好的機制,這種機制在機器學習領域非常熱門,稱為梯度下降法

梯度下降法的第一個階段是為 選擇一個起始值(起點)。起點並不重要;因此很多演算法就直接將 設為 0 或隨機選擇一個值。下圖顯示的是我們選擇了一個稍大於 0 的起點:

相關推薦

Google官方機器學習速成課程

TOC 前提條件和準備工作 在開始機器學習速成課程之前,請先閱讀下面的前提條件和準備工作部分,以確保您已做好完成所有單元所需的準備工作。 前提條件 機器學習速成課程並不會假定或要求您預先掌握機器學習方面的任何知識。但是,為了能夠理解課程中介紹的概念並完成練習,您最好滿足以下前

AI - Google機器學習速成課程

Google的機器學習速成課程 機器學習速成課程(MLCC,machine-learning crash-course):https://developers.google.com/machine-learning/crash-course/ 機器學習術語表:https://developers.

Google---機器學習速成課程(十二)- 神經網路簡介 (Introduction to Neural Networks)

神經網路簡介 (Introduction to Neural Networks)神經網路是更復雜版本的特徵組合。實質上,神經網路會學習適合您的相應特徵組合。學習目標對神經網路有一定的瞭解,尤其是瞭解以下方面:隱藏層啟用函式---------------------------

Google---機器學習速成課程(七)- 特徵組合 (Feature Crosses)

特徵組合 (Feature Crosses)特徵組合是指兩個或多個特徵相乘形成的合成特徵。特徵的相乘組合可以提供超出這些特徵單獨能夠提供的預測能力。學習目標瞭解特徵組合。在 TensorFlow 中實施特徵組合。--------------------------------

MLCC筆記 - Google機器學習速成課程 - 筆記匯總

cati ner 基礎知識 使用 live -i 正則化 復雜 soft MLCC筆記 - Google機器學習速成課程 https://www.cnblogs.com/anliven/p/6107783.html MLCC簡介 前提條件和準備工作 完成課程的下一步 M

谷歌機器學習速成課程---降低損失 (Reducing Loss):隨機梯度下降法

計算 機器 OS 隨機梯度下降法 術語表 表示 機器學習 放心 使用 在梯度下降法中,批量指的是用於在單次叠代中計算梯度的樣本總數。到目前為止,我們一直假定批量是指整個數據集。就 Google 的規模而言,數據集通常包含數十億甚至數千億個樣本。此外,Google 數據集通常

Google內部培訓過1.8萬人的機器學習速成

什麼是(監督)機器學習?簡而言之,它是以下幾點: ML系統學習如何組合輸入以產生對從未見過的資料的有用預測。 我們來探討基本的機器學習術語。 標籤 一個 標籤是我們預測物品的屬性, 比如變數y在簡單線性迴歸變數。標籤可以是小麥的未來價格,圖片中顯示的動物的種類,音訊剪輯的

【黎明傳數==>機器學習速成寶典】模型篇05——樸素貝葉斯【Naive Bayes】(附python代碼)

pytho res tex 機器學習 樸素貝葉斯 spa 什麽 之一 類別 目錄   先驗概率與後驗概率   什麽是樸素貝葉斯   模型的三個基本要素   構造kd樹   kd樹的最近鄰搜索   kd樹的k近鄰搜索   Python代碼(sklearn庫) 先

【Spark機器學習速成寶典】推薦引擎——協同過濾

屬性 寶典 系統 ont 宋體 logs images 機器 back 目錄   推薦模型的分類   條目2   條目3   條目4   條目5   條目6   條目7   條目8   條目9 推薦模型的分類   最為流行的兩種方法是基於內容的過濾、協

吳恩達《機器學習課程總結(7)正則化

額外 分享 哪些 TP 回歸 分享圖片 表現 例子 兩個 7.1過擬合的問題 訓練集表現良好,測試集表現差。魯棒性差。以下是兩個例子(一個是回歸問題,一個是分類問題) 解決辦法: (1)丟棄一些不能幫助我們正確預測的特征。可以使用工選擇保留哪些特征,或者使用一些模型選擇

吳恩達《機器學習課程總結(15)異常檢測

是否 5.6 問題 com 結果 平移 分享 出現問題 計算過程 15.1問題的動機 將正常的樣本繪制成圖表(假設可以),如下圖所示: 當新的測試樣本同樣繪制到圖標上,如果偏離中心越遠說明越可能不正常,使用某個可能性閾值,當低於正常可能性閾值時判斷其為異常,然後做進一步的

機器學習速成筆記(二): 訓練與損失

訓練模型通過有標籤樣本來學習(確定)所有的權重和偏差的理想值。 損失是對槽糕預測的懲罰,損失是一個數值,模型的預測完全正確,則損失為零,反之,模型的預測越槽糕,損失越大。 平方損失:一種常見的損失函式,線性迴歸模型就是使用該平方損失 均方誤差:每個樣本的平均平方損失,計算均方誤差,要算出

機器學習速成筆記(一): 主要術語

機器學習研究如何通過計算的方式,利用資料集來改善系統自身的效能。 而深度學習是屬於機器學習的一個子分支。 機器學習的通用的兩種型別: 無監督學習:事先並沒有任務訓練資料的樣本,需要直接對資料進行建模型。 監督學習:通過已經有的訓練樣本(即輸入資訊和對應的輸出)來訓練,得到一個

(180923)通過正則化降低特徵組合過度 模型過於複雜---機器學習速成

問題提出及正則化的引入 正則化的提出同樣是解決模型過擬合問題,之前提出的特徵組合來訓練模型,當訓練次數足夠多時,損失會降低到非常的低,但卻會出現過擬合問題。如圖 迭代次數足夠多,模型的複雜度也越高。可見一個好的模型和損失、模型的複雜度都有關。 所以,訓練優化演

Google釋出機器學習平臺Tensorflow遊樂場~帶你玩神經網路

昨天,Google釋出了Tensorflow遊樂場。Tensorflow是Google今年推出的機器學習開源平臺。而有了Tensorflow遊樂場,我們在瀏覽器中就可以訓練自己的神經網路,還有酷酷的影象讓我們更直觀地瞭解神經網路的工作原理。今天,就讓矽谷周邊帶你一起去Tensorflow遊樂

臺灣大學林軒田機器學習技法課程學習筆記1 -- Linear Support Vector Machine

關於臺灣大學林軒田老師的《機器學習基石》課程,我們已經總結了16節課的筆記。這裡附上基石第一節課的部落格地址: 本系列同樣分成16節課,將會介紹《機器學習基石》的進階版《機器學習技法》,更深入地探討機器學習一些高階演算法和技巧。 Large-Marg

臺灣大學林軒田機器學習基石課程學習筆記8 -- Noise and Error

上一節課,我們主要介紹了VC Dimension的概念。如果Hypotheses set的VC Dimension是有限的,且有足夠多N的資料,同時能夠找到一個hypothesis使它的Ein≈0Ein≈0,那麼就能說明機器學習是可行的。本節課主要講了資料集

吳恩達斯坦福大學機器學習 CS229 課程學習筆記(一)

說到機器學習總繞不過幾個鼎鼎大名的人物,他們都創造了不少的機器學習資料,斯坦福吳恩達Andrew Ng的公開課CS229;Google李飛飛的CS231、周志華的、李航的《統計學習方法》、林軒田的《機器學習基石》、Peter Harringtond 的《機器學習實戰》、周志華

機器學習技法課程學習筆記11 -- Gradient Boosted Decision Tree

上節課我們主要介紹了Random Forest演算法模型。Random Forest就是通過bagging的方式將許多不同的decision tree組合起來。除此之外,在decision tree中加入了各種隨機性和多樣性,比如不同特徵的線性組合等。RF還可以使用O

吳恩達《機器學習課程筆記——第一章:緒論 初識機器學習

【重要提示】:本人機器學習課程的主要學習資料包括:吳恩達教授的機器學習課程和黃廣海博士的中文學習筆記。感謝吳恩達教授和黃廣海博士的知識分享和無私奉獻。作為機器學習小白,計劃每週末記錄一週以來的學習內容,總結回顧。希望大家多多挑錯,也願我的學習筆記能幫助到有需要的人。 1.1 什麼是機器學習 卡內基梅隆大學