
- 機器學習基礎
- ML - 首頁
- ML - 簡介
- ML - 入門
- ML - 基本概念
- ML - 生態系統
- ML - Python 庫
- ML - 應用
- ML - 生命週期
- ML - 必備技能
- ML - 實現
- ML - 挑戰與常見問題
- ML - 限制
- ML - 真實案例
- ML - 資料結構
- ML - 數學
- ML - 人工智慧
- ML - 神經網路
- ML - 深度學習
- ML - 獲取資料集
- ML - 分類資料
- ML - 資料載入
- ML - 資料理解
- ML - 資料準備
- ML - 模型
- ML - 監督學習
- ML - 無監督學習
- ML - 半監督學習
- ML - 強化學習
- ML - 監督學習 vs. 無監督學習
- 機器學習資料視覺化
- ML - 資料視覺化
- ML - 直方圖
- ML - 密度圖
- ML - 箱線圖
- ML - 相關矩陣圖
- ML - 散點矩陣圖
- 機器學習統計
- ML - 統計
- ML - 均值、中位數、眾數
- ML - 標準差
- ML - 百分位數
- ML - 資料分佈
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假設
- 機器學習中的迴歸分析
- ML - 迴歸分析
- ML - 線性迴歸
- ML - 簡單線性迴歸
- ML - 多元線性迴歸
- ML - 多項式迴歸
- 機器學習中的分類演算法
- ML - 分類演算法
- ML - 邏輯迴歸
- ML - K近鄰演算法 (KNN)
- ML - 樸素貝葉斯演算法
- ML - 決策樹演算法
- ML - 支援向量機
- ML - 隨機森林
- ML - 混淆矩陣
- ML - 隨機梯度下降
- 機器學習中的聚類演算法
- ML - 聚類演算法
- ML - 基於質心的聚類
- ML - K均值聚類
- ML - K中心點聚類
- ML - 均值漂移聚類
- ML - 層次聚類
- ML - 基於密度的聚類
- ML - DBSCAN 聚類
- ML - OPTICS 聚類
- ML - HDBSCAN 聚類
- ML - BIRCH 聚類
- ML - 親和傳播
- ML - 基於分佈的聚類
- ML - 凝聚聚類
- 機器學習中的降維
- ML - 降維
- ML - 特徵選擇
- ML - 特徵提取
- ML - 向後剔除法
- ML - 前向特徵構建
- ML - 高相關性過濾器
- ML - 低方差過濾器
- ML - 缺失值比率
- ML - 主成分分析
- 強化學習
- ML - 強化學習演算法
- ML - 利用與探索
- ML - Q學習
- ML - REINFORCE 演算法
- ML - SARSA 強化學習
- ML - 演員-評論家方法
- 深度強化學習
- ML - 深度強化學習
- 量子機器學習
- ML - 量子機器學習
- ML - 使用 Python 的量子機器學習
- 機器學習雜項
- ML - 效能指標
- ML - 自動工作流程
- ML - 提升模型效能
- ML - 梯度提升
- ML - 自舉匯聚 (Bagging)
- ML - 交叉驗證
- ML - AUC-ROC 曲線
- ML - 網格搜尋
- ML - 資料縮放
- ML - 訓練和測試
- ML - 關聯規則
- ML - Apriori 演算法
- ML - 高斯判別分析
- ML - 成本函式
- ML - 貝葉斯定理
- ML - 精確率和召回率
- ML - 對抗性
- ML - 堆疊
- ML - 輪
- ML - 感知器
- ML - 正則化
- ML - 過擬合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 資料洩露
- ML - 機器學習的商業化
- ML - 資料型別
- 機器學習 - 資源
- ML - 快速指南
- ML - 速查表
- ML - 面試問題
- ML - 有用資源
- ML - 討論
機器學習 - 快速指南
機器學習 - 簡介
如今的人工智慧 (AI) 已經遠遠超越了區塊鏈和量子計算的炒作。這是因為巨大的計算資源很容易為普通人所用。開發人員現在利用這一點來建立新的機器學習模型,並重新訓練現有模型以獲得更好的效能和結果。高效能計算 (HPC) 的易用性導致對擁有機器學習技能的 IT 專業人員的需求突然增加。
在本教程中,您將詳細瞭解:
機器學習的核心是什麼?
機器學習有哪些不同型別?
開發機器學習模型有哪些不同的演算法?
開發這些模型有哪些工具?
程式語言選擇有哪些?
哪些平臺支援機器學習應用程式的開發和部署?
有哪些可用的 IDE(整合開發環境)?
如何快速提升你在這個重要領域的技能?
機器學習 - 如今的 AI 能做什麼?
當你在 Facebook 照片中標記面部時,背後執行的是 AI,它可以識別圖片中的人臉。面部標記現在已在許多顯示有人臉的圖片的應用程式中普遍存在。為什麼只有人臉?有許多應用程式可以檢測物體,例如貓、狗、瓶子、汽車等。我們的道路上行駛著自動駕駛汽車,它們可以即時檢測物體以操縱汽車。當您出行時,您會使用 Google 地圖來了解即時的交通狀況,並遵循 Google 在那時建議的最佳路線。這是另一種即時物體檢測技術的實現。
讓我們考慮一下我們通常在訪問外國時使用的 Google 翻譯應用程式的例子。您手機上的 Google 線上翻譯應用程式可以幫助您與說您不懂的語言的當地人交流。
我們今天實際上使用了許多 AI 應用程式。事實上,我們每個人都在生活的許多方面使用 AI,甚至在我們不知情的情況下。如今的 AI 可以以極高的準確性和速度執行極其複雜的工作。讓我們討論一個複雜任務的例子,以瞭解您今天將為客戶開發的 AI 應用程式中需要哪些功能。
示例
我們在日常通勤或城際旅行中,都會在城市中的任何地方旅行時使用 Google 地圖。Google 地圖應用程式會建議當時到達目的地的最快路線。當我們遵循這條路線時,我們觀察到 Google 的建議幾乎 100% 正確,我們節省了寶貴的旅行時間。
您可以想象開發這種應用程式所涉及的複雜性,因為到達目的地有多條路線,並且應用程式必須判斷每條可能路線的交通狀況,才能為您提供每條路線的行程時間估計。此外,請考慮 Google 地圖覆蓋全球的事實。毫無疑問,此類應用程式的幕後使用了大量的 AI 和機器學習技術。
考慮到對開發此類應用程式的持續需求,您現在就會理解為什麼對擁有 AI 技能的 IT 專業人員的需求突然增加。
在下一章中,我們將學習開發 AI 程式需要什麼。
機器學習 - 傳統 AI
AI 的歷程始於 20 世紀 50 年代,當時的計算能力只是如今的一小部分。AI 最初是透過機器進行預測,方式與統計學家使用計算器進行預測的方式相同。因此,最初的 AI 開發主要基於統計技術。
在本章中,讓我們詳細討論這些統計技術。
統計技術
如今的 AI 應用程式的開發始於使用古老的傳統統計技術。您肯定在學校裡使用過直線插值來預測未來值。還有許多其他此類統計技術已成功地應用於開發所謂的 AI 程式。我們之所以說“所謂的”,是因為我們今天擁有的 AI 程式要複雜得多,並且使用的技術遠遠超出了早期 AI 程式使用的統計技術。
以下列出了一些在當時用於開發 AI 應用程式並且仍在實踐中的統計技術的示例:
- 迴歸
- 分類
- 聚類
- 機率論
- 決策樹
這裡我們只列出了一些入門 AI 的主要技術,足以讓您開始學習 AI,而不會因為 AI 的廣闊性而感到害怕。如果您基於有限的資料開發 AI 應用程式,則可以使用這些統計技術。
但是,如今資料豐富。對於我們擁有的海量資料,統計技術並沒有太大幫助,因為它們本身也有一些侷限性。因此,開發了更先進的方法,例如深度學習,以解決許多複雜的問題。
隨著我們繼續學習本教程,我們將瞭解什麼是機器學習以及如何將其用於開發此類複雜的 AI 應用程式。
機器學習 - 什麼是機器學習?
考慮下圖,該圖顯示了房屋價格與其面積(平方英尺)的關係圖。

在 XY 圖上繪製各種資料點後,我們繪製一條最佳擬合線來預測任何其他房屋的價格,前提是知道其面積。您將向機器提供已知資料,並要求它找到最佳擬合線。一旦機器找到最佳擬合線,您將透過輸入已知房屋面積(即上述曲線中的 Y 值)來測試其適用性。現在,機器將返回估計的 X 值,即房屋的預期價格。該圖可以外推以找出面積為 3000 平方英尺或更大的房屋的價格。這在統計學中稱為迴歸。特別是,這種迴歸稱為線性迴歸,因為 X 和 Y 資料點之間的關係是線性的。
在許多情況下,X 和 Y 資料點之間的關係可能不是直線,而可能是具有複雜方程的曲線。您的任務現在是找出最佳擬合曲線,該曲線可以外推以預測未來值。下圖顯示了一個這樣的應用程式圖。

來源
https://upload.wikimedia.org/wikipedia/commons/c/c9/
您將使用統計最佳化技術來找出此處最佳擬合曲線的方程式。這就是機器學習的真正含義。您使用已知的最佳化技術來找到問題的最佳解決方案。
接下來,讓我們看看機器學習的不同類別。
機器學習 - 類別
機器學習大致分為以下幾類:

機器學習如上圖所示從左到右發展。
最初,研究人員從監督學習開始。這就是前面討論的房屋價格預測的情況。
接下來是無監督學習,機器在沒有監督的情況下自主學習。
科學家們進一步發現,當機器以預期的方式完成工作時給予獎勵可能是個好主意,於是強化學習誕生了。
很快,如今可用的資料變得如此龐大,以至於迄今為止開發的傳統技術無法分析大資料併為我們提供預測。
於是,深度學習出現了,它在我們的二進位制計算機中建立的人工神經網路 (ANN) 中模擬人腦。
現在,機器利用當今可用的強大計算能力和巨大的記憶體資源自主學習。
現在觀察到,深度學習已經解決了許多以前無法解決的問題。
透過為深度學習網路提供獎勵作為激勵,這項技術得到了進一步發展,最終產生了深度強化學習。
現在讓我們更詳細地研究這些類別中的每一個。
監督學習
監督學習類似於訓練孩子走路。你會牽著孩子的手,給他示範如何向前邁步,自己走給他看,直到孩子學會自己走路。
迴歸
同樣,在監督學習中,你會向計算機提供具體的已知示例。你會說,對於給定的特徵值 x1,輸出為 y1,對於 x2,輸出為 y2,對於 x3,輸出為 y3,等等。基於這些資料,你讓計算機找出 x 和 y 之間的經驗關係。
一旦機器透過足夠數量的資料點以這種方式訓練完畢,你就可以要求機器預測給定 X 的 Y。假設你已知此給定 X 的 Y 的真實值,你將能夠推斷出機器的預測是否正確。
因此,你將使用已知的測試資料來測試機器是否已經學習。一旦你確信機器能夠以所需的精度(例如 80% 到 90%)進行預測,你就可以停止進一步訓練機器。
現在,你可以安全地使用機器對未知資料點進行預測,或者要求機器預測你不知道 Y 的真實值的給定 X 的 Y。這種訓練屬於我們之前談到的迴歸。
分類
你也可以將機器學習技術用於分類問題。在分類問題中,你將性質相似的物件分類到單個組中。例如,在一組 100 名學生中,你可能希望根據他們的身高將他們分成三組——矮、中等和高。測量每個學生的身高,你將把他們放在合適的組中。
現在,當一個新學生進來時,你將透過測量他的身高將他放入合適的組中。透過遵循迴歸訓練中的原則,你將訓練機器根據他的特徵(身高)對學生進行分類。當機器學習到組是如何形成的時,它將能夠正確地對任何未知的新學生進行分類。再次,你將使用測試資料來驗證機器是否已經學習你的分類技術,然後再將開發的模型投入生產。
監督學習是人工智慧真正開始其旅程的地方。這項技術已成功應用於多個案例。你在機器上進行手寫識別時就使用了此模型。已經為監督學習開發了幾種演算法。你將在接下來的章節中學習它們。
無監督學習
在無監督學習中,我們不會向機器指定目標變數,而是問機器“關於 X 你能告訴我什麼?”。更具體地說,我們可能會問諸如給定一個巨大的資料集 X,“我們可以從 X 中做出五個最佳組?”或“哪些特徵在 X 中最常一起出現?”之類的問題。為了得到這些問題的答案,你可以理解機器需要推斷策略的資料點數量將非常大。在監督學習的情況下,機器甚至可以用幾千個資料點進行訓練。然而,在無監督學習的情況下,合理接受用於學習的資料點數量從幾百萬開始。如今,資料通常非常充足。理想情況下,資料需要整理。然而,在社交網路中持續流動的許多資料中,資料整理在大多數情況下是不可能的任務。
下圖顯示了由無監督機器學習確定的黃色和紅色點之間的邊界。你可以清楚地看到,機器能夠以相當高的精度確定每個黑點的類別。

來源
https://chrisjmccormick.files.wordpress.com/2013/08/approx_decision_boun dary.png
無監督學習在許多現代人工智慧應用中取得了巨大成功,例如人臉檢測、物體檢測等等。
強化學習
考慮訓練寵物狗,我們訓練寵物將球帶給我們。我們將球扔到一定距離,然後讓狗把它撿回來。每次狗做對時,我們都會獎勵它。慢慢地,狗學會了正確地完成工作會得到獎勵,然後狗將來每次都會以正確的方式完成工作。正是這個概念應用於“強化”型別的學習中。這項技術最初是為機器玩遊戲而開發的。機器會得到一個演算法來分析遊戲每個階段的所有可能移動。機器可能會隨機選擇其中一個移動。如果移動正確,則獎勵機器,否則可能會受到懲罰。慢慢地,機器將開始區分正確和錯誤的移動,並且在多次迭代後將學會以更高的精度解決遊戲難題。隨著機器玩的遊戲越來越多,獲勝的準確性也會提高。
整個過程可以用下圖表示:

這種機器學習技術與監督學習的不同之處在於,你不需要提供標記的輸入/輸出對。重點在於在探索新解決方案和利用已學習的解決方案之間取得平衡。
深度學習
深度學習是基於人工神經網路 (ANN),更具體地說,是基於卷積神經網路 (CNN) 的模型。深度學習中使用了多種架構,例如深度神經網路、深度信念網路、迴圈神經網路和卷積神經網路。
這些網路已成功應用於解決計算機視覺、語音識別、自然語言處理、生物資訊學、藥物設計、醫學影像分析和遊戲等問題。深度學習積極應用的領域還有很多。深度學習需要巨大的處理能力和海量資料,而如今這些通常很容易獲得。
我們將在接下來的章節中更詳細地討論深度學習。
深度強化學習
深度強化學習 (DRL) 結合了深度學習和強化學習的技術。現在將 Q 學習等強化學習演算法與深度學習相結合,以建立一個強大的 DRL 模型。這項技術在機器人技術、電子遊戲、金融和醫療保健領域取得了巨大成功。許多以前無法解決的問題現在都透過建立 DRL 模型得到了解決。這方面的研究很多,並且正被各個行業積極地追求。
到目前為止,你已經對各種機器學習模型有了一個簡短的介紹,現在讓我們更深入地探討這些模型下可用的各種演算法。
機器學習 - 監督學習
監督學習是機器學習中重要的模型之一。本章詳細討論了這一點。
監督學習演算法
監督學習有多種演算法可用。一些廣泛使用的監督學習演算法如下所示:
- k 近鄰演算法
- 決策樹
- 樸素貝葉斯
- 邏輯迴歸
- 支援向量機
在本章的後續內容中,讓我們詳細討論每種演算法。
k 近鄰演算法
k 近鄰演算法,簡稱為 kNN,是一種統計技術,可用於解決分類和迴歸問題。讓我們討論使用 kNN 對未知物件進行分類的情況。考慮如下影像中所示的物件分佈:

來源
https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
該圖顯示了三種類型的物件,分別標記為紅色、藍色和綠色。當你在上述資料集上執行 kNN 分類器時,每種型別的物件的邊界將如下所示:

來源
https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
現在,考慮一個你想將其分類為紅色、綠色或藍色的新未知物件。這在下圖中顯示。

正如你直觀地看到的那樣,未知資料點屬於藍色物件的一類。在數學上,這可以透過測量該未知點與資料集中每個其他點的距離來得出結論。當你這樣做時,你會知道它的許多鄰居都是藍色的。到紅色和綠色物件的平均距離肯定大於到藍色物件的平均距離。因此,這個未知物件可以被分類為屬於藍色類別。
kNN 演算法也可以用於迴歸問題。kNN 演算法在大多數 ML 庫中都可隨時使用。
決策樹
下面顯示了流程圖格式的簡單決策樹:

你會編寫程式碼來根據此流程圖對輸入資料進行分類。流程圖是不言自明的並且很簡單。在這種情況下,你試圖對傳入的電子郵件進行分類以決定何時閱讀它。
實際上,決策樹可能很大且很複雜。有幾種演算法可用於建立和遍歷這些樹。作為機器學習愛好者,你需要理解和掌握建立和遍歷決策樹的這些技術。
樸素貝葉斯
樸素貝葉斯用於建立分類器。假設你想從一個水果籃中分類不同的水果。你可以使用水果的顏色、大小和形狀等特徵,例如,任何顏色為紅色、形狀為圓形且直徑約為 10 釐米的水果都可以被認為是蘋果。因此,為了訓練模型,你將使用這些特徵並測試給定特徵匹配所需約束的機率。然後將不同特徵的機率組合起來,得出給定水果是蘋果的機率。樸素貝葉斯通常只需要少量訓練資料即可進行分類。
邏輯迴歸
請看下圖。它顯示了 XY 平面中資料點的分佈。

從圖中,我們可以直觀地檢查紅點與綠點的分離。你可以畫一條邊界線來分隔這些點。現在,要對新的資料點進行分類,你只需要確定該點位於線的哪一側。
支援向量機
請看以下資料的分佈。這裡三類資料不能線性分離。邊界曲線是非線性的。在這種情況下,找到曲線的方程將變得非常複雜。

支援向量機 (SVM) 在確定此類情況下的分離邊界方面非常有用。
機器學習 - Scikit-learn 演算法
幸運的是,大多數情況下,你不需要編寫上一課中提到的演算法程式碼。許多標準庫提供了這些演算法的現成實現。一個常用的工具包是 scikit-learn。下圖說明了該庫中可供你使用的演算法型別。

來源:https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
這些演算法的使用非常簡單,而且經過充分的現場測試,你可以安全地將它們用於你的 AI 應用程式。大多數這些庫即使用於商業目的也是免費使用的。
機器學習 - 無監督學習
到目前為止,你所看到的是讓機器學習找出我們目標的解決方案。在迴歸中,我們訓練機器預測未來的值。在分類中,我們訓練機器將未知物件分類到我們定義的類別之一中。簡而言之,我們一直在訓練機器,以便它可以根據我們的資料 X 預測 Y。給定一個巨大的資料集並且沒有估計類別,我們將很難使用監督學習來訓練機器。如果機器可以查詢和分析高達幾吉位元組和幾太位元組的大資料,並告訴我們這個資料包含這麼多不同的類別,那該怎麼辦呢?
例如,考慮選民資料。透過考慮每個選民的一些輸入(在 AI 術語中稱為特徵),讓機器預測有多少選民會投票給 X 黨,有多少會投票給 Y 黨,等等。因此,一般來說,我們是在向機器詢問給定大量資料點 X,“你能告訴我關於 X 的什麼資訊?”或者它可能是一個類似這樣的問題:“我們可以從 X 中劃分出五個最佳組嗎?”或者它甚至可能類似於“在 X 中哪些三個特徵最常同時出現?”
這正是無監督學習的核心。
無監督學習演算法
現在讓我們討論一種廣泛用於無監督機器學習分類的演算法。
k 均值聚類
美國 2000 年和 2004 年的總統大選都很接近——非常接近。任何候選人獲得的最高得票率為 50.7%,最低為 47.9%。如果一定比例的選民改變立場,選舉結果就會不同。有一些小型選民群體,如果適當爭取,就會改變立場。這些群體可能並不龐大,但在如此接近的選情下,它們可能足以改變選舉結果。你如何找到這些群體?你如何用有限的預算來爭取他們?答案是聚類。
讓我們瞭解它是如何完成的。
首先,你收集有關人們的資訊,無論是否經過他們的同意:任何可能提供有關他們重視什麼以及什麼會影響他們投票方式的線索的資訊。
然後,你將這些資訊放入某種聚類演算法中。
接下來,對於每個叢集(最好先選擇最大的叢集),你都會設計一條能夠吸引這些選民的資訊。
最後,你開展競選活動並進行衡量以檢視其是否有效。
聚類是一種無監督學習,它會自動形成相似事物的叢集。它就像自動分類。你幾乎可以對任何事物進行聚類,叢集中的專案越相似,叢集就越好。在本章中,我們將學習一種稱為 k 均值的聚類演算法。之所以稱為 k 均值,是因為它找到了“k”個獨特的叢集,並且每個叢集的中心是該叢集中值的平均值。
叢集識別
叢集識別告訴演算法:“這是一些資料。現在將相似的事物組合在一起,並告訴我關於這些組的資訊。”與分類的關鍵區別在於,在分類中,你知道你在尋找什麼。而聚類並非如此。
聚類有時被稱為無監督分類,因為它會產生與分類相同的結果,但無需預定義的類別。
現在,我們對監督學習和無監督學習都感到滿意。為了理解其餘的機器學習類別,我們必須首先了解人工神經網路 (ANN),我們將在下一章學習。
機器學習 - 人工神經網路
人工神經網路的想法源於人腦中的神經網路。人腦非常複雜。透過仔細研究大腦,科學家和工程師們提出了一種能夠適應我們二進位制計算機數字世界的架構。下圖顯示了這樣一個典型的架構:

有一個輸入層,它有許多感測器來收集來自外部世界的資料。在右側,我們有一個輸出層,它為我們提供網路預測的結果。在這兩者之間,隱藏著幾層。每一層額外的層都會增加訓練網路的複雜性,但在大多數情況下會提供更好的結果。現在我們將討論幾種型別的架構。
ANN 架構
下圖顯示了隨著時間推移而發展起來的幾種 ANN 架構,並且如今仍在實踐中使用。

來源
https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-explained-3fb6f2367464
每種架構都是針對特定型別的應用程式而開發的。因此,當你在機器學習應用程式中使用神經網路時,你必須使用現有架構之一或設計你自己的架構。你最終決定的應用程式型別取決於你的應用程式需求。沒有單一的指南告訴你使用特定的網路架構。
機器學習 - 深度學習
深度學習使用 ANN。首先,我們將檢視一些深度學習應用程式,這將使你瞭解其強大的功能。
應用
深度學習在機器學習應用的多個領域都取得了巨大的成功。
自動駕駛汽車 - 自動駕駛汽車使用深度學習技術。它們通常能夠適應不斷變化的交通狀況,並隨著時間的推移在駕駛方面越來越熟練。
語音識別 - 深度學習的另一個有趣的應用是語音識別。我們今天使用的許多移動應用程式都能夠識別我們的語音。蘋果的 Siri、亞馬遜的 Alexa、微軟的 Cortana 和谷歌的助手——所有這些都使用了深度學習技術。
移動應用程式 - 我們使用多個基於 Web 的和移動應用程式來整理我們的照片。人臉檢測、人臉 ID、人臉標記、識別影像中的物體——所有這些都使用了深度學習。
深度學習的未開發機會
在看到深度學習應用程式在許多領域取得的巨大成功之後,人們開始探索機器學習尚未廣泛應用的其他領域。深度學習技術已成功應用於多個領域,並且還有許多其他領域可以開發。這裡討論其中一些。
農業就是一個這樣的行業,人們可以在其中應用深度學習技術來提高作物產量。
消費金融是另一個領域,機器學習可以在其中極大地幫助及早發現欺詐並分析客戶的還款能力。
深度學習技術也應用於醫學領域,以創造新藥併為患者提供個性化處方。
可能性是無限的,人們必須不斷關注新的想法和發展。
使用深度學習取得更多成果需要什麼
要使用深度學習,超級計算能力是強制性要求。你需要記憶體和 CPU 來開發深度學習模型。幸運的是,今天我們很容易獲得 HPC——高效能計算。正因為如此,我們上面提到的深度學習應用程式的開發在今天成為現實,將來我們也可以看到其在前面討論的那些未開發領域的應用。
現在,我們將瞭解在機器學習應用程式中使用深度學習之前必須考慮的一些限制。
深度學習的缺點
在使用深度學習之前,你需要考慮的一些要點如下:
- 黑盒方法
- 開發時長
- 資料量
- 計算成本高
我們現在將詳細研究這些限制中的每一個。
黑盒方法
ANN 就像一個黑盒子。你給它一個特定的輸入,它會給你一個特定的輸出。下圖顯示了一個這樣的應用程式,你將動物影像饋送到神經網路,它會告訴你該影像是狗的影像。

之所以被稱為黑盒方法,是因為你不知道網路為什麼得出某個結果。你不知道網路是如何得出結論說這是一隻狗的?現在考慮一個銀行應用程式,銀行希望決定客戶的信用度。網路肯定會為你提供這個問題的答案。但是,你能向客戶解釋嗎?銀行需要向客戶解釋為什麼貸款沒有批准嗎?
開發時長
訓練神經網路的過程如下圖所示:

你首先定義要解決的問題,為此建立規範,確定輸入特徵,設計網路,部署它並測試輸出。如果輸出不符合預期,則將其作為反饋來重構你的網路。這是一個迭代過程,可能需要多次迭代才能使網路充分訓練以產生所需的輸出。
資料量
深度學習網路通常需要海量資料進行訓練,而傳統的機器學習演算法即使只有幾千個資料點也能取得很大的成功。幸運的是,如以下圖表所示,資料量每年增長 40%,CPU 處理能力每年增長 20%。

計算成本高
訓練神經網路所需的計算能力是執行傳統演算法所需計算能力的數倍。成功訓練深度神經網路可能需要數週的訓練時間。
相比之下,傳統的機器學習演算法只需要幾分鐘/幾小時就能完成訓練。此外,訓練深度神經網路所需的計算能力在很大程度上取決於資料的規模以及網路的深度和複雜程度。
在概述了機器學習是什麼、它的能力、侷限性和應用之後,讓我們現在深入學習“機器學習”。
機器學習 - 技能
機器學習的廣度非常大,需要跨多個領域的技能。成為機器學習專家的所需技能列在下面:
- 統計學
- 機率論
- 微積分
- 最佳化技術
- 視覺化
機器學習各種技能的必要性
為了讓你對需要掌握的技能有一個大致瞭解,讓我們討論一些例子:
數學符號
大多數機器學習演算法都嚴重依賴於數學。你需要的數學水平可能只是入門級。重要的是,你應該能夠閱讀數學家在方程中使用的符號。例如 - 如果你能夠閱讀符號並理解其含義,你就可以開始學習機器學習了。如果不是,你可能需要複習一下你的數學知識。
$$f_{AN}(net-\theta)=\begin{cases}\gamma & if\:net-\theta \geq \epsilon\\net-\theta & if - \epsilon< net-\theta <\epsilon\\ -\gamma & if\:net-\theta\leq- \epsilon\end{cases}$$
$$ \displaystyle\max\limits_{\alpha}\begin{bmatrix}\displaystyle\sum\limits_{i=1}^m \alpha-\frac{1}{2}\displaystyle\sum\limits_{i,j=1}^m label^\left(\begin{array}{c}i\\ \end{array}\right)\cdot\:label^\left(\begin{array}{c}j\\ \end{array}\right)\cdot\:a_{i}\cdot\:a_{j}\langle x^\left(\begin{array}{c}i\\ \end{array}\right),x^\left(\begin{array}{c}j\\ \end{array}\right)\rangle \end{bmatrix} $$
$$f_{AN}(net-\theta)=\left(\frac{e^{\lambda(net-\theta)}-e^{-\lambda(net-\theta)}}{e^{\lambda(net-\theta)}+e^{-\lambda(net-\theta)}}\right)\;$$
機率論
這裡有一個例子來測試你當前的機率論知識:用條件機率進行分類。
$$p(c_{i}|x,y)\;=\frac{p(x,y|c_{i})\;p(c_{i})\;}{p(x,y)\;}$$
有了這些定義,我們可以定義貝葉斯分類規則:
- 如果 P(c1|x, y) > P(c2|x, y) ,則類別為 c1。
- 如果 P(c1|x, y) < P(c2|x, y) ,則類別為 c2。
最佳化問題
這是一個最佳化函式
$$ \displaystyle\max\limits_{\alpha}\begin{bmatrix}\displaystyle\sum\limits_{i=1}^m \alpha-\frac{1}{2}\displaystyle\sum\limits_{i,j=1}^m label^\left(\begin{array}{c}i\\ \end{array}\right)\cdot\:label^\left(\begin{array}{c}j\\ \end{array}\right)\cdot\:a_{i}\cdot\:a_{j}\langle x^\left(\begin{array}{c}i\\ \end{array}\right),x^\left(\begin{array}{c}j\\ \end{array}\right)\rangle \end{bmatrix} $$
受以下約束:
$$ \alpha\geq0,and\:\displaystyle\sum\limits_{i-1}^m \alpha_{i}\cdot\:label^\left(\begin{array}{c}i\\ \end{array}\right)=0 $$
如果你能閱讀並理解以上內容,你就準備好了。
視覺化
在許多情況下,你需要了解各種視覺化圖表,以瞭解你的資料分佈並解釋演算法輸出的結果。

除了機器學習的上述理論方面,你還需要良好的程式設計技能來編寫這些演算法。
那麼實現機器學習需要什麼?讓我們在下一章中探討這個問題。
機器學習 - 實現
要開發機器學習應用程式,你必須確定開發平臺、IDE 和語言。有幾種選擇可用。大多數這些選擇都能輕鬆滿足你的需求,因為它們都提供了迄今為止討論過的 AI 演算法的實現。
如果你自己正在開發機器學習演算法,則需要仔細理解以下幾個方面:
你選擇的語言 - 這實際上是你對機器學習開發中支援的一種語言的熟練程度。
你使用的 IDE - 這取決於你對現有 IDE 的熟悉程度和你的舒適度。
開發平臺 - 有多個平臺可用於開發和部署。其中大多數是免費使用的。在某些情況下,超過一定的使用量後,你可能需要支付許可費。以下列出了一些語言、IDE 和平臺供你參考。
語言選擇
以下是支援機器學習開發的語言列表:
- Python
- R
- Matlab
- Octave
- Julia
- C++
- C
此列表並非完全全面;但是,它涵蓋了機器學習開發中使用的許多流行語言。根據你的舒適程度,選擇一種語言進行開發,開發你的模型並進行測試。
IDEs
以下是支援機器學習開發的 IDE 列表:
- R Studio
- Pycharm
- iPython/Jupyter Notebook
- Julia
- Spyder
- Anaconda
- Rodeo
- Google Colab
以上列表並非完全全面。每個 IDE 都有其自身的優缺點。建議讀者在縮小到單個 IDE 之前嘗試這些不同的 IDE。
平臺
以下是可部署機器學習應用程式的平臺列表:
- IBM
- Microsoft Azure
- Google Cloud
- Amazon
- Mlflow
同樣,此列表並不詳盡。鼓勵讀者註冊上述服務並自行嘗試。
機器學習 - 總結
本教程向你介紹了機器學習。現在,你知道機器學習是一種訓練機器執行人類大腦可以執行的活動的技術,儘管它比普通人的速度更快、更好。今天我們看到機器可以在象棋、AlphaGo 等被認為非常複雜的遊戲中擊敗人類冠軍。你已經看到機器可以被訓練來執行各個領域的人類活動,並可以幫助人類過上更好的生活。
機器學習可以是有監督的或無監督的。如果你有較少的資料和清晰標記的訓練資料,請選擇監督學習。無監督學習通常會為大型資料集提供更好的效能和結果。如果你有大量易於獲得的資料集,請選擇深度學習技術。你還學習了強化學習和深度強化學習。你現在知道什麼是神經網路、它們的應用和侷限性。
最後,在開發你自己的機器學習模型時,你研究了各種開發語言、IDE 和平臺的選擇。接下來你需要做的就是開始學習和練習每種機器學習技術。這個主題很廣泛,這意味著它有廣度,但是如果你考慮深度,每個主題都可以在幾個小時內學習。每個主題都是相互獨立的。你需要一次考慮一個主題,學習它,練習它,並使用你選擇的語言來實現其中的演算法。這是開始學習機器學習的最佳方法。一次練習一個主題,很快你就會獲得機器學習專家最終需要的廣度。
祝你好運!