『數學 ╳ 深度學習 ╳ Python 三效合一』
深度學習用一句話就可以講完:『用訓練的方式找出一個數學函數,將輸入的資料映射到正確的答案』。重點就在於你如何找出那個對的數學函數!本書將深度學習的數學模型與運算式推導出來之後,還能實際執行 Python 程式幫助瞭解整個運算的過程。
『打開機器學習的黑箱,才發現裏面全都是數學!』
我們常在機器學習 / 深度學習的文章或書中看到線性迴歸、二元分類、多類別分類、和深度學習等名詞,好像要學很多東西!當然,對不懂數學的人確實如此。不過,一旦您理解深度學習底層的數學原理,就會發現原來架構稍微變一下,函數換一下,其實都是系出同門,一通百通啊。
要具備這種能力,你必須會微積分、向量/矩陣運算、多變數函數偏微分、指數/對數函數、以及機率/統計。這些在學校都要花很長的時間學習,然而本書考量到您並非想成為數學家或統計學家,因此從中摘取對深度學習最重要的部分濃縮在前半部,幫助您用最短的時間快速掌握數學能力。
本書是由施威銘研究室監修,適時加上「編註」補充內容幫助理解。如果您行有餘力,還可以繼續閱讀《機器學習的數學基礎:AI、深度學習打底必讀》一書,裏面有更詳細的數學公式推導。
『真正循序漸進,不會一下跳太快』
本書的一大特色就是每一步只增加一點差異,不會跳得太快。從線性迴歸模型開始,加入 Sigmoid 激活函數 (啟動函數) 就變成二元分類模型,然後將 Sigmoid 換成 Softmax 函數就擴展到多類別分類模型。然後在深度學習,先從一層隱藏層開始推導與實作,並因應需要調整學習率、改用 ReLU 函數等方法改善準確率。並進而擴展到兩層隱藏層,讓模型更加準確。小編真心認為,這樣的編排方式,讓讀者從既有的基礎逐步墊高實力,相當有利於學習,等您跟著本書走過一遍,自然就能心領神會。
本書隨附『數學快查學習地圖』彩色拉頁,將書中用到的各項數學基礎之間的關係整理成表,幫助您用一張圖看懂本書架構,甚至可裁剪下來隨時參考。作者在 Github 提供 Jupyter Notebook 格式的範例程式,另外您也可以從旗標官網下載 Python 範例程式。
本書特色:
1. 用 Python 實作迴歸模型、二元分類、多類別分類、一層隱藏層、二層隱藏層的數學模型。
2. 本書由施威銘研究室監修,適時加上「編註」補充內容幫助理解。
3. 隨書附『數學快查學習地圖』彩色拉頁。內文採用套色,更利於圖表呈現。
作者簡介:
Masanori Akaishi
1985 年畢業於東京大學工學院數學工程系,並於 1987 年於東京大學取得電腦工程碩士之後加入日本 IBM 公司。1993 年調至 SE 部門負責開放系統的基礎設施設計。2013 年至 Smart City 事業部,並於 2016 年再到 Watson 事業單位直到現在。自加入 IBM 二十餘年來,經過 IT 和 AI 各個領域的歷練,從 IT 架構設計、資料庫 SQL 調校、應用開發、程式設計、Watson、以及機器學習等都相當在行。除本書之外,他也著有《實用 Python 自然語言處理入門》、《機器學習與深度學習從 Watson Studio開始》。
目錄
[導入篇 機器學習快速指引]
第 1 章 機器學習入門
1.1 何謂機器學習
1.1.1 何謂機器學習模型
1.1.2 機器學習的訓練方法
1.1.3 監督式學習的迴歸、分類模型
1.1.4 訓練階段與預測階段
1.1.5 損失函數與梯度下降法
1.2 第一個機器學習模型:簡單線性迴歸模型
1.3 本書討論的機器學習模型
1.4 數學是深度學習的核心
1.5 本書架構
[理論篇 數學速學課程]
第 2 章 微分、積分
2.1 函數
2.1.1 函數運作行為
2.1.2 函數的圖形
2.2 合成函數與反函數
2.2.1 合成函數
專欄 合成函數的表示法
2.2.2 反函數
2.3 微分與極限
2.3.1 微分的定義
2.3.2 函數值增量與微分的關係
2.3.3 切線方程式
專欄 切線方程式與訓練階段、預測階段的關係
2.4 極大值與極小值
2.5 多項式的微分
2.5.1 x^n 的微分(n 是正整數)
2.5.2 微分計算的線性關係與多項式的微分
2.5.3 x^r 的微分(r 是實數)
專欄 組合(Combination)與二項式定理
2.6 兩個函數相乘的微分
2.7 合成函數的微分
2.7.1 用鏈鎖法則做合成函數微分
2.7.2 反函數的微分
2.8 兩個函數相除的微分
2.9 積分
專欄 積分符號的意思
第 3 章 向量、矩陣
3.1 向量入門
3.1.1 何謂向量
3.1.2 向量的標記法
3.1.3 向量的分量
3.1.4 往多維擴展
3.1.5 分量的符號
3.2 向量和、向量差、純量乘積
3.2.1 向量和
3.2.2 向量差
3.2.3 向量與純量的乘積
3.3 向量的長度(絕對值)與距離
3.31 向量的長度(絕對值)
3.3.2 Σ 可整合冗長的加法算式
3.3.3 向量間的距離
3.4 三角函數
3.4.1 三角比 : 三角函數的基本定義
3.4.2 單位圓上的座標
3.4.3 三角函數的圖形
3.4.4 用三角函數表示直角三角形的邊長
3.5 向量內積
3.5.1 向量內積的幾何定義
3.5.2 用分量來表示內積公式
3.6 餘弦相似性
3.6.1 兩個二維向量的夾角
3.6.2 n 維向量的餘弦相似性
專欄 餘弦相似性的應用範例
3.7 矩陣運算
3.7.1 一個輸出節點的內積表示法
3.7.2 三個輸出節點的矩陣相乘
第 4 章 多變數函數的微分
4.1 多變數函數
4.2 偏微分
4.3 全微分
4.4 全微分與合成函數
4.5 梯度下降法(GD)
專欄 梯度下降法與局部最佳解
第 5 章 指數函數、對數函數
5.1 指數函數
5.1.1 連乘的定義與公式
5.1.2 連乘觀念的推廣
5.1.3 將連乘寫成指數函數形式
5.2 對數函數
專欄 對數函數的意義
5.3 對數函數的微分
專欄 用 Python 來計算尤拉數 e
5.4 指數函數的微分
專欄 以 e 為底的指數函數也可用 exp 表示
5.5 Sigmoid 函數
5.6 Softmax 函數
專欄 Sigmoid 和 Softmax 函數的關係
第 6 章 機率、統計
6.1 隨機變數與機率分佈
6.2 機率密度函數與累積分佈函數
專欄 Sigmoid 函數的機率密度函數
6.3 概似函數與最大概似估計法
專欄 為何概似函數的極值是求最大值,而不是最小值?
[實踐篇 機器學習、深度學習實作]
第 7 章 線性迴歸模型(迴歸)
7.1 損失函數的偏微分與梯度下降法
7.2 範例問題設定
7.3 訓練資料與預測值的數學符號標示法
7.4 梯度下降法的概念
7.5 建立預測模型
7.6 建立損失函數
7.7 損失函數的微分
7.8 梯度下降法之運用
7.9 程式實作
專欄 使用 NumPy
7.10 推廣到多元線性迴歸模型
專欄 學習率與迭代運算次數的調整方法
第 8 章 邏輯斯迴歸模型(二元分類)
81 範例問題設定
8.2 線性迴歸模型與分類模型的差異
8.3 針對預測模型之討論
專欄 將預測值轉換成機率的意義
8.4 損失函數(交叉熵 Cross entropy)
8.5 損失函數的微分計算
8.6 梯度下降法的運用
8.7 程式實作
專欄 scikit-learn 三種模型的比較
專欄 交叉熵以及熱愛足球的國王們的煩惱
第 9 章 邏輯斯迴歸模型(多類別分類)
9.1 範例問題設定
9.2 建立模型的基本概念
9.3 權重矩陣
9.4 Softmax 函數
9.5 損失函數
9.6 損失函數的微分計算
9.7 梯度下降法的運用
9.8 程式實作
專欄 聚合函數 axis 參數的作用
第 10 章 深度學習
10.1 範例問題設定
10.2 模型的架構與預測函數
10.3 損失函數
10.4 損失函數的微分
10.5 反向傳播
10.6 梯度下降法的運用
10.7 程式實作一:原始版本
10.8 程式實作二:調整權重矩陣初始值的版本
10.9 程式實作三:更換激活函數為 ReLU 的版本
10.10 程式實作四:隱藏層增加為 2 層的版本
[發展篇 實務上的解決方法]
第11 章 以實用的深度學習為目標
11.1 善用開發框架
11.2 卷積神經網路(CNN)
11.3 循環神經網路(RNN)與長短期記憶(LSTM)
11.4 數值微分
11.5 優化的學習法
11.6 過度配適解決方法
11.7 每次訓練的資料量(批量)
11.8 權重矩陣的初始化
11.9 目標下一座山頭
附錄 Jupyter Notebook 開發工具
A.1 啟動 Jupyter Notebook
A.2 試寫一個程式
A.3 將檔案輸出成單純的 Python 檔
[導入篇 機器學習快速指引]
第 1 章 機器學習入門
1.1 何謂機器學習
1.1.1 何謂機器學習模型
1.1.2 機器學習的訓練方法
1.1.3 監督式學習的迴歸、分類模型
1.1.4 訓練階段與預測階段
1.1.5 損失函數與梯度下降法
1.2 第一個機器學習模型:簡單線性迴歸模型
1.3 本書討論的機器學習模型
1.4 數學是深度學習的核心
1.5 本書架構
[理論篇 數學速學課程]
第 2 章 微分、積分
2.1 函數
2.1.1 函數運作行為
2.1.2 函數的圖形
2.2 合成函數與反函數
2.2.1 合成函數
專欄 合成函數的表示法
2.2.2 反函數
2.3 微分與極限
2...