決心打底!Python 深度學習基礎養成 | 維持健康的好方法 - 2024年11月

決心打底!Python 深度學習基礎養成

作者:我妻幸長
出版社:旗標
出版日期:2020年07月07日
ISBN:9789863126331
語言:繁體中文
售價:545元

一步步拆解複雜的數學算式,一筆筆手工算給你看, 硬派學習才能紮穩根基!

  「想要學好深度學習,深入了解底層各種演算法的運算細節絕對有其必要!」相信不少初學者正抱持著相同的想法,希望好好熟悉 mini-batch 反向傳播、梯度下降等各種深度學習演算法的細節,但多數的情況卻可能一直碰壁...

  原因很簡單,當你深究神經網路的底層運算,會發現種種演算法的背後統統都是數學, 學寫程式還行,滿滿的數學算式卻很容易讓人打退堂鼓,但是,真有決心學好基礎千萬不要就此放棄!

  其實神經網路底層並沒用到多深的數學,只需要向量、矩陣等線性代數,以及偏微分、鏈鎖法則等微分技巧,掌握這些就綽綽有餘,但為什麼一堆數學算式總是讓人看了頭昏腦脹?因為數學光用看的是「無感」的!既然無法逃避,我們就帶你跟數學來個正面對決!當遇到看起來很複雜的數學算式時,我們會先一步步手工算給你看,再用 Python + NumPy 算一遍來驗證,完成這兩個步驟後保證清楚了解各種算式的涵義!

  而針對深度學習的精髓-mini-batch 反向傳播運算,我們也將硬派拆解背後的數學運算,你將清楚看到 DNN、CNN 神經網路所有「反」著算來進行優化的細節,這絕對是其他深度學習書籍少見的紮實內容。

  若你之前看了一大堆深度學習書籍或網路文章,始終對數學心存畏懼,也對底層的運算似懂非懂,請跟著本書潛心修練,一定可以紮實養成深度學習的基礎! 

本書特色

  Python 基礎紮根 ✕ 正面迎戰數學 ✕ 神經網路底層概念,該學的一次搞定!

  ‧惡補深度學習的數學基礎,手工算最清楚!
  對數/指數/向量/矩陣/矩陣乘積/微分/偏微分/全微分/鏈鎖法則

  ‧紮實打好 Python 與常用套件的基礎
  list/tuple/條件式/迴圈/函式/類別/reshape/transpose/NumPy/Matplotlib/scikit-learn

  ‧零框架!硬派拆解深度學習演算法背後的數學運算
  DNN 反向傳播/CNN 反向傳播/mini-batch SGD/Dropout/AdaGrad

  ‧詳細解說,流暢翻譯
  本書由【施威銘研究室】監修,書中針對原書進行大量補充,並適當添加註解,幫助讀者更加理解內容!

作者簡介

我妻幸長 Yukinaga Azuma (@yuky_az)

  R&D 工程師 / 技術書作者 / AI、程式設計講師
  物理學博士, 畢業於東北大學理學研究所,從事 AI 教育與研發工作。開發了 VR、遊戲、社群相關應用程式,同時為 Udemy 線上平台 AI 課程講師,學生累積近 4 萬人,另著有「世界第一的 iPhone App 開發」、「數學的教科書 - 機器學習、深度學習必要的基礎知識」等書。
  sai-lab.co.jp
  www.udemy.com/user/wo-qi-xing-chang/
 

Ch01 深度學習基礎養成指引

Ch02 深度學習需要的 Python 語法與運算套件
2-1 安裝 Python 環境
2-2 Python 的基本語法
2-2-1 資料型別 (Data Type) 與變數 (Variable)
2-2-2 算符 (Operator)
2-2-3 list 型別
2-2-4 tuple 型別
2-2-5 dict 型別
2-2-6 if 判斷式
2-2-7 for 迴圈
2-2-8 while 迴圈
2-2-9 串列生成式 (list Comprehensions)
2-2-10 函式 (Function)
2-2-11 變數的有效範圍 (Scope Rule)
2-2-12 類別 (Class)
2-2-13 繼承 (Inheritance)
2-3 NumPy 快速上手
2-3-1 匯入 NumPy 套件
2-3-2 NumPy 的陣列
2-3-3 其他建立陣列的方式
2-3-4 再以圖解看陣列的軸 (axis)
2-3-5 利用 reshape() 改變陣列形狀
2-3-6 陣列間對應元素 (element-wise) 的運算
2-3-7 擴張 (Broadcasting)
2-3-8 陣列元素的存取
2-3-9 切片 (Slicing)
2-3-10 陣列轉置 (transpose)
2-3-11 其他常用的 NumPy 函式
2-4 Matplotlib 快速上手
2-4-1 將一堆資料點繪成圖表
2-4-2 裝飾圖表內容
2-4-3 繪製散佈圖
2-4-4 將數值以圖像呈現

Ch03 深度學習需要的數學知識
3-1 數學符號與運算式
3-1-1 利用 sigma (Σ) 表示總和
3-1-2 自然底數
3-1-3 自然對數
3-2 線性代數
3-2-1 純量 (Scalar)
3-2-2 向量 (Vector)
3-2-3 矩陣 (Matrix)
3-2-4 張量 (Tensor)
3-2-5 純量與矩陣乘積
3-2-6 對應元素 (element wise) 的乘積
3-2-7 矩陣乘積 (Matrix multiplication)
3-2-8 矩陣轉置 (Transpose)
3-3 微分
3-3-1 常微分
3-3-2 微分的公式
3-3-3 鏈鎖法則 (Chain Rule)
3-3-4 偏微分
3-3-5 全微分
3-3-6 多變數的鏈鎖法則

Ch04 神經網路的基礎
4-1 認識人類神經網路
4-2 單一神經元的人工神經網路
4-3 多層神經網路架構
4-4 再從實作認識「激活函數」
4-4-1 階梯函數 (Step function)
4-4-2 Sigmoid 函數
4-4-3 tanh 函數
4-4-4 ReLU 函數
4-4-5 Leaky ReLU
4-4-6 恆等函數
4-4-7 Softmax 函數
4-5 神經網路最廣泛的應用:迴歸與分類
4-6 實戰演練 (一):實作「單一神經元 + 單一輸出」的神經網路
4-6-1 單一神經元的架構
4-6-2 程式內容說明
4-6-3 實驗:看看權重與偏值對輸出值的影響
4-7 實戰演練 (二):實作「多層 + 單一輸出」的神經網路
4-7-1 神經網路的架構
4-7-2 程式內容說明
4-7-3 權重與偏值對輸出的影響
4-8 實戰演練 (三):實作「多層 + 多個輸出」的神經網路
4-8-1 神經網路的架構
4-8-2 程式內容說明
4-8-3 利用輸出結果替輸入資料做分類

Ch05 訓練神經網路
5-1 訓練神經網路的基本概念
5-2 用損失函數 (Loss Function) 計算誤差
5-2-1 均方誤差 (Mean-Square Error, MSE)
5-2-2 交叉熵 (Cross Entropy)
5-3 認識修正權重的方法 - 梯度下降法 (Gradient Descent)
5-3-1 梯度下降法的基本概念
5-3-2 利用「梯度下降法」找到誤差值最低點所對應的權重
5-4 計算梯度 (Gradient), 了解權重參數對誤差的影響
5-4-1 用「反向傳播法 (Back Propagation)」計算各層間單一權重的梯度
5-4-2 四組單一權重梯度算式的微分推導
5-4-3 梯度下降法的數學算式
5-5 訓練前的資料準備工作
5-5-1 將資料切割成「訓練資料集」與「測試資料集」
5-5-2 分批訓練的概念
5-6 將分批訓練概念引入梯度計算
5-6-1 將輸入資料、預測結果轉換成矩陣形式
5-6-2 將輸入矩陣傳入神經網路, 進行前向傳播運算
5-6-3 權重矩陣的梯度計算 (反向傳播運算)
5-7 實作演練:模擬數據讓神經網路訓練

Ch06 深度學習實戰演練
6-1 訓練神經網路常遇到的問題
6-1-1 陷入局部最小值 (Local minimum)
6-1-2 過度配適 (Overfitting) 的問題
6-1-3 梯度消失 (Vanishing gradient)
6-2 避免過度配適的方法
6-2-1 找出最佳的層數與神經元數
6-2-2 減少訓練週期
6-2-3 資料擴張 (Data Augmentation)
6-2-4 常規化 (Regularization)
6-2-5 丟棄法 (Dropout)
6-3 避免發生局部最小值的方法
6-3-1 Momentum 優化演算法
6-3-2 AdaGrad 優化演算法
6-3-3 RMSProp 優化演算法
6-3-4 Adam 優化演算法
6-4 實作演練 (一):使用神經網路替鳶尾花分類
6-4-1 範例概要說明
6-4-2 載入資料集並做前置處理
6-4-3 設定神經網路各初始值
6-4-4 用 Python 類別定義各層的運算
6-4-5 將前向傳播、反向傳播、修正權重、計算誤差等運算撰寫成函式
6-4-6 開始訓練神經網路
6-4-7 執行程式, 看看訓練成果
6-5 實作演練 (二):解決訓練成效不佳的問題
6-5-1 導入 Adagrad 演算法
6-5-2 導入丟棄法 (Dropout)
6-5-3 導入 Adagrad + Dropout
6-5-4 驗證 4 種組合的訓練成果
6-5-5 實際拿神經網路模型預測全新資料

Ch07 卷積神經網路 (CNN)
7-1 卷積神經網路 (CNN) 的基本概念
7-1-1 為什麼使用 CNN?
7-1-2 卷積神經網路 (CNN) 的基本架構
7-1-3 卷積層 (Convolution Layer) 的運算
7-1-4 池化層 (Pooling Layer) 的運算
7-1-5 池化層 → 密集層 (Dense Layer) 的運算
7-1-6 填補 (Padding) 與步長 (Stride) 的概念
7-1-7 訓練 CNN 網路的方法
7-1-8 整理本節使用的變數
7-2 認識 im2col 與 col2im 演算法
7-3 卷積層的程式實作
7-4 池化層的程式實作
7-5 密集層的程式實作
7-6 實戰演練 (一):實作卷積神經網路
7-6-1 載入手寫數字資料集
7-6-2 CNN 網路的結構
7-6-3 開始訓練 CNN 神經網路
7-6-4 執行程式, 看看訓練成果
7-6-5 實際拿 CNN 模型預測資料
7-6-6 回頭檢視卷積層的功用
7-7 實戰演練 (二):實作層數更多的 CNN 網路

Ch08 RNN、LSTM、GRU、GAN、VAE、DRL、DQN...各種深度學習技術
8-1 循環神經網路 (RNN)
8-1-1 RNN 的基本概要
8-1-2 LSTM (長短期記憶神經網路)
8-1-3 LSTM 的改良版 - GRU
8-2 生成模型與 GAN、VAE
8-2-1 GAN
8-2-2 VAE
8-3 深層強化學習 (Deep reinforcement learning)
8-3-1 強化式學習
8-3-2 深層強化學習


 


相關書籍