Leanpub Header

Skip to main content

解剖深度學習原理

從0實現深度學習庫

市面上的深度學習書要么晦澀難懂,要么是平台使用說明書,只講理論缺少實現或者只有編程缺少原理講解,都很難讓人理解深度學習的基本原理,本書採用理論講解與代碼實現的方式深入淺出地剖析了深度學習的技術原理和實現細節,教會讀者如何從零編寫一個深度學習庫。內容包含了:梯度下降法、回歸學習、前饋神經網絡、卷積神經網絡、循環神經網絡、生成網絡。
Free With Membership

With Membership

Free!

$29.00

You pay

$29.00

Author earns

$23.20
$

...Or Buy With Credits!

You can get credits with a paid monthly or annual Reader Membership, or you can buy them here.

Buying multiple copies for your team? See below for a discount!

PDF
About

About

About the Book

本書深入淺出地介紹了深度學習的基本原理和實現過程,用python的numpy庫從底層而不是藉助於現有的深度學習庫從零構建了自己的深度學習庫。在介紹基本的Python編程、微積分和概率統計知識基礎上,按照深度學習的發展脈絡依次介紹了回歸模型、神經網絡、卷積神經網絡、循環神經網絡、生成網絡等深度學習的核心基礎知識,在深入淺出地剖析原理的同時給出了詳細的代碼實現過程。如同不是教你如何使用武器、手機而是教你如何自己製造武器、手機,本書不是已有深度學習庫的使用教程而是剖析如何從0開發深度學習庫。這種從0開始的原理與代碼實現結合的方式可以使讀者更好地理解深度學習的基本原理和流行的深度學習庫的設計思想。

Team Discounts

Team Discounts

Get a team discount on this book!

  • Up to 3 members

    Minimum price
    $24.00
    Suggested price
    $72.00
  • Up to 5 members

    Minimum price
    $39.00
    Suggested price
    $116.00
  • Up to 10 members

    Minimum price
    $69.00
    Suggested price
    $203.00
  • Up to 15 members

    Minimum price
    $99.00
    Suggested price
    $290.00
  • Up to 25 members

    Minimum price
    $148.00
    Suggested price
    $435.00

Author

About the Author

hwdong

C9本科,高考数学物理1小时交卷、超出清华分数线20多分. Texas A&M、休斯顿大学访问学者. 曾从事计算机图形学、视觉等科研,目前主要从事计算机编程等网络课程的工作,写了3本书:C++17从入门到精通、Python3从入门到实战、解剖深度学习原理-从0实现深度学习库。在YouTube频道hwdong上发布免费计算机相关的教学课程。

Contents

Table of Contents

twan_01 toc
  • 第1章 編程和數學基礎

    • 1.1 Python快速入門

      • 1.1.1 Python安裝

        • Python解釋器的安裝
        • jupyter notebook編程環境
        • Anaconda安裝工具
      • 1.1.2 對象、print()函數、類型轉換、註釋、變量、input()函數

        • 1. 對象

        • 2. 打印函數print()

        • 3. 類型轉換

        • 4. 註釋

        • 5. 變量

        • 6. input()函數

          • 1.1.3 運算
        • [下標運算符[]](#下標運算符)

        • 字符串的格式化

      • 1.1.4 控制語句

        • 1. if 語句
        • 2. while語句
        • 3. for語句
      • 1.1.5 Python常用容器類型

        • 1. list(列表)
        • 索引
        • 切片
        • for 遍歷所有元素
        • 2. tuple(元組)
        • 3. set(集合)
        • 4. dict(字典)
      • 1.1.6 函數

  • math數學包 - 全局變量和局部變量 - Anonymous/Lambda Function(匿名/lambda函數) - 嵌套函數、閉包 - yield和生成器

    • 1.1.7 類和對象

    • 1.1.8 Matplotlib入門

      • subplot()
      • Axes objects
      • mplot3d
      • 顯示圖像
    • 1.2 張量庫numpy

      • 1.2.1 什麼是張量?

        • 1 向量
        • 向量的範數
        • 2 矩陣
        • 3 三維張量
      • 1.2.2 創建ndarray對象

        • 1. array()
        • 2. 多維數組類型ndarray
        • 3. asarray()
        • 4. ndarray的tolist()方法
        • 5. astype()和reshape()
        • 6. arange()和linspace()
        • 7. full()、empty()、zeros()、ones()、eye()
        • 8. 創建隨機值張量的常用函數
  • 9. 添加、重複與鋪設、合併與分裂、邊緣填充、添加軸與交換軸 - 重複repeat() - 鋪設tile() - 合併concatenate() - 疊加stack() - column_stack()、hstack()、vstack() - 分裂split() - 邊緣填充 - 添加軸 - 交換軸

    • 1.2.3 ndarry數組的索引和切片

    • 1.2.4 張量的計算

      • 1. 逐元素計算
      • Hadamard乘積
      • 2. 累積計算
      • 3. 點積
      • 4 廣播Broadcasting
    • 1.3 微積分

      • 1.3.1 函數

      • 1.3.2 四則和復合運算

        • 四則運算
        • 複合
      • 1.3.3 極限、導數

        • 1. 數列的極限
        • 2. 函數的極限與連續性
        • 3. 函數的導數
      • 1.3.4 導數的四則運算和鍊式求導法則

      • 1.3.5 計算圖、正向計算、反向傳播求導

  • 1.3.6 多變量函數的偏導數與梯度

    • 1.3.7 向量值函數的導數與Jacobian矩陣

    • 1.3.8 積分

    • 1.4 概率基礎

      • 1.4.1 概率

      • 1.4.2 條件概率、聯合概率、全概率公式、貝葉斯公式

      • 1.4.3 隨機變量

      • 1.4.4 離散型隨機變量的概率分佈列

      • 1.4.5 連續性隨機變量的概率密度

      • 1.4.6 隨機變量的分佈函數

      • 1.4.7 期望、方差、協方差、協變矩陣

        • 1. 均值和期望
        • 2. 方差、標準差
        • 3. 協方差、協變矩陣
  • 第2章 梯度下降法

    • 2.1 函數極值的必要條件

    • 2.2 梯度下降法(gradient descent)

    • 2.3 梯度下降法的參數優化策略

      • 2.3.1 Momentum動量法
      • 2.3.2 Adagrad法
      • 2.3.3 Adadelta法
      • 2.3.4 RMSprop法
      • 2.3.5 Adam法
    • 2.4 梯度驗證

      • 2.4.1 比較數值梯度和分析梯度
  • 2.4.2 通用的數值梯度

    • 2.5 分離梯度下降算法與參數優化策略
    • 2.5.1 參數優化器
    • 2.5.2 接受參數優化器的梯度下降法
  • 第3章 線性回歸、邏輯回歸和softmax回歸

    • 3.1 線性回歸

      • 3.1.1 餐車利潤問題
    • 3.1.2 機器學習與人工智能

      • 1. 機器學習
      • 2. 機器學習與人工智能的關係
      • 3. 機器學習的分類
    • 3.1.3 什麼是線性回歸?

      • 3.1.4 正規方程求解線性回歸問題
    • 3.1.5 梯度下降法求解線性回歸問題

    • 3.1.6 調試學習率

    • 3.1.7 梯度驗證

    • 3.1.8 預測

    • 3.1.9 多特徵的線性回歸

      • 1. 多特徵線性回歸
      • 2. 擬合平面
      • 3. 溫度與壓強問題
    • 3.1.10 數據的規範化

    • 3.2 模型的評估

      • 3.2.1 欠擬合和過擬合
      • 3.2.2 驗證集、測試集
      • 3.2.3 學習曲線
      • 3.2.4 預測大壩出水量
  • 3.2.5 偏差和方差(Bias-Variance)

    • 3.3 正則化(Regularization) - 增加正則項的損失函數變為

    • 3.5 邏輯回歸

      • 3.5.1 邏輯回歸

      • 3.5.2 邏輯回歸的numpy實現

        • 1. 生成數據
        • 2. 梯度下降法的代碼實現
        • 3. 計算損失函數值
        • 4. 決策曲線
        • 5. 預測的準確性
        • 6. Scikit-Learn庫的邏輯回歸
      • 3.5.3 實戰:鳶尾花分類的numpy實現

    • 3.6 softmax回歸

      • 3.6.1 spiral數據集

      • 3.6.2 softmax函數

      • 3.6.3 softmax回歸

        • 多樣本形式
      • 3.6.4 多分類交叉熵損失

      • 3.6.5 通過加權和計算交叉熵損失

      • 3.6.6 softmax回歸的梯度計算

        • 1. 交叉熵損失關於加權和的梯度
        • 2. 交叉熵損失關於權值參數的梯度
      • 3.6.7 softmax回歸的梯度下降法的實現

  • 2.6.8 spiral數據集的softmax回歸

    • 3.7 批梯度下降法和隨機梯度下降法

      • 3.7.1 MNIST 手寫數字集

      • 3.7.2 用部分訓練樣本訓練邏輯回歸

      • 3.7.3 批梯度下降法及實現

        • Fasion MNIST訓練集的softmax回歸
      • 3.7.4 隨機梯度下降法

        • 總結
  • 第4章 神經網絡

    • 4.1 神經網絡(Neural Network)

      • 4.1.1 感知機和神經元

        • 1. 感知機
        • 2. 神經元
      • 4.1.2 激活函數

        • 1. 階躍函數sign(x)
        • 2. tanh函數
        • 4. ReLU函數
      • 4.1.3 神經網絡和深度學習

      • 4.1.4 多個樣本的正向計算

      • 4.1.5 輸出

      • 4.1.6 損失函數

        • 1. 均方差損失
        • 2. 二分類交叉熵損失
        • 3. 多分類交叉熵損失
      • 4.1.7 基於數值梯度的神經網絡訓練

      • 4.1.8 深度學習

    • 4.2 反向求導

  • 4.2.1正向計算和反向求導

    • 4.2.2 計算圖

    • 4.2.3 損失函數關於輸出的梯度

      • 1. 二分類交叉熵損失函數關於輸出的梯度
      • 2. 均方差損失函數關於輸出的梯度
      • 3. 多分類的交叉熵損失函數關於輸出的梯度
    • 4.2.4 2層神經網絡的反向傳播求導

      • 1. 單樣本的反向求導
      • 2. 反向求導的多樣本向量化表示
      • 3. 列向量形式的梯度計算公式
    • 4.2.5 2層神經網絡的python實現

    • 4.2.6 任意層神經網絡的反向傳播求導

    • 4.3 實現一個簡單的深度學習框架

      • 4.3.1 神經網絡的訓練過程

      • 4.3.2 網絡層的代碼實現

      • 4.3.3 網絡層的梯度檢驗

      • 4.3.4 神經網絡類

      • 4.3.5 神經網絡的梯度檢驗

      • 4.3.6 基於深度學習框架的MNIST數據手寫數字識別

      • 4.3.7 改進的通用神經網絡框架:分離加權和與激活函數

        • 梯度驗證
      • 4.3.8 獨立的參數優化器

  • 4.3.9 fashion-mnist的分類訓練

    • 4.3. 9 讀寫模型參數
  • 第5章 改進神經網絡性能的基本技巧

    • 5.1 數據處理

      • 5.1.1 數據增強

      • 5.1.2 規範化

      • 5.1.3 特徵工程

        • 1. 數據降維與主元分析法
      • 2 白化(Whitening)

    • 5.2 參數調試

      • 5.2.1 權重初始化
      • 5.2.2 優化參數
    • 5.3 批規範化

      • 5.3.1 什麼是批規範化?
      • 5.3.2 批規範化的反向求導
      • 5.3.3 批規範化的代碼實現
    • 5.4 正則化Regularization

      • 5.4.1 權重正則化
      • 5.4.2 Dropout
      • 5.4.3 早停法(Early stopping)
  • 第6章 卷積神經網絡CNN

    • 6.1 卷積

      • 6.1.1 什麼是卷積?

        • 跨度
      • 6.1.2 一維信號的捲積

      • 6.1.3 二維卷積

      • 跨度

      • 6.1.4 多輸入通道和多輸出通道

      • 6.1.5 池化

  • 6.2 卷積神經網絡

    • 6.2.1 全連接神經元和卷積神經元

    • 6.2.2 卷積層和卷積神經網絡

    • 6.2.3 卷積層和池化層的反向求導及代碼實現

    • 卷積層的反向求導

      • 池化層的反向求導
    • 6.2.4 卷積神經網絡的實現

    • 6.3 卷積的矩陣乘法

      • 6.3.1 1D樣本卷積的矩陣乘法
      • 6.3.2 2D樣本卷積的矩陣乘法
      • 6.3.3 1D卷積反向求導的矩陣乘法
      • 6.3.4 2D卷積反向求導的矩陣乘法
    • 6.4 基於坐標索引的快速卷積

      • 梯度檢驗
      • 與非加速卷積的時間比較
    • 6.5 典型的捲積神經網絡結構

      • 6.5.1 LeNet-5
      • 6.5.2 AlexNet
      • 6.5.3 VGG
      • 6.5.4 深度神經網絡的梯度爆炸和消失問題
      • 6.5.5 殘差網絡(Residual Networks (ResNets))
      • 6.5.6 谷歌 Inception 網絡
      • 6.5.7 Network in Network (NiN)
  • 第7章 循環神經網絡RNN

    • 7.1 序列問題和模型

      • 7.1.1 股票價格預測問題

      • 7.1.2 概率序列模型、語言模型

        • 1. 概率序列模型
        • 2. 語言模型
      • 7.1.3 自回歸模型

      • 7.1.4 生成自回歸數據

      • 7.1.5 時間窗方法

      • 7.1.6 時間窗採樣

      • 7.1.7 時間窗方法建模和訓練

      • 7.1.8 長期預測和短期預測

      • 7.1.9 股票價格預測

      • 7.1.10 k-gram 語言模型

    • 7.2 循環神經網絡

      • 7.2.1 無記憶功能的非循環神經網絡
      • 7.2.2 具有記憶功能的循環神經網絡
    • 7.3 穿過時間的反向傳播(Backpropagation through time)

    • 7.4 單層循環神經網絡的實現

      • 7.4.1 初始化模型參數
      • 7.4.2 正向計算
      • 7.4.3 損失函數
      • 7.4.4 反向求導
      • 7.4.5 梯度驗證
      • 7.4.6 梯度下降訓練
  • 7.4.7 序列數據的採樣

    • 7.4.8 序列數據的RNN訓練和預測

      • 序列數據的訓練
      • 預測
      • 股票數據的訓練和預測
    • 7.5 RNN語言模型和文本生成

      • 7.5.1 字符表

      • 7.5.2 字符序列樣本的採樣

      • 7.5.3 RNN模型的訓練和預測

        • 預測
    • 7.6 RNN網絡的梯度爆炸和梯度消失

    • 7.7 長短期記憶網絡(LSTM)

      • 7.7.1 LSTM的神經元:元胞(cell)

      • 7.7.2 LSTM的反向求導

      • 7.7.3 LSTM的代碼實現

        • 梯度檢驗
        • 文本生成
        • 預測
      • 7.7.4 LSTM的變種

    • 7.8 門控循環單元(GRU)

      • 7.8.1 GRU的工作原理
      • 7.8.2 GRU的代碼實現
    • 7.9 循環神經網絡的類表示與實現

      • 7.9.1 用類實現循環神經網絡
      • 7.9.2 循環神經網絡單元的類實現
      • 7.10 多層、雙向循環神經網絡
  • 7.10.1 多層循環神經網絡

    • 7.10.2 多層循環神經網絡的訓練和預測

    • 7.10.3 雙向循環神經網絡

    • 7.11 序列到序列(seq2seq)模型

      • 機器翻譯

      • 7.11.1 Seq2Seq模型的實現

      • 7.11.2 字符級機器翻譯的Seq2Seq

        • 1. 字符單詞表
        • 2. 讀取訓練樣本、構建字符單詞表
        • 3. 訓練字符級的Seq2Seq模型
      • 7.11.3 基於Word2Vec的Seq2Seq機器翻譯

        • 1. 單詞向量化 Word2Vec的skip-gram方法
      • 7.11.4 基於詞嵌入層的Seq2Seq模型

        • 1. 詞嵌入層
        • 2. 採用詞嵌入層的Seq2Seq模型
      • 7.11.5 注意力機制

  • 第8章 生成模型

    • 8.1 生成模型

    • 8.2 自動編碼器

      • 8.2.1 自動編碼器
      • 8.2.2 稀疏編碼器
      • 8.2.3 自動編碼器的實現
    • 8.3 變分自動編碼器

      • 8.3.1 什麼是變分自動編碼器?
  • 8.3.2 損失函數

    • 8.3.3 參數重採樣

    • 8.3.4 反向求導

    • 8.3.5 變分自動編碼器的實現

    • 8.4 生成對抗網絡

      • 8.4.1 GAN原理

        • 1. 鑑別器和生成器
        • 2. 損失函數
        • 3. 訓練過程
      • 8.4.2 GAN 訓練過程的代碼實現

    • 8.5 GAN建模實例

      • 8.5.1 一組實數的GAN建模

        • 1. 真實數據:一組實數
        • 2. 定義鑑別器和生成器函數
        • 3. 真實數據迭代器、噪聲數據迭代器
        • 4. 中間結果繪製函數
        • 5. 訓練GAN
      • 8.5.2 二維坐標點的GAN建模

        • 1. 真實數據:橢圓曲線上採樣的坐標點
        • 2. 真實數據迭代器、噪聲迭代器
        • 3. 定義GAN模型的生成器和鑑別器
        • 4. 訓練GAN模型
      • 8.5.3 MNIST數據集的GAN建模

        • 1. 讀取訓練數據
        • 2. 定義數據迭代器
        • 3. 定義生成器和鑑別器及其優化器
  • 4. 訓練模型

    • 8.5.4 GAN訓練技巧

    • 8.6 GAN損失函數及其概率解釋

      • 8.6.1 GAN的損失函數的全局最優解
      • 8.6.2 Kullback–Leibler散度和Jensen–Shannon散度
      • 8.6.3 GAN的最大似然解釋
    • 8.7 改進的損失函數:Wasserstein GAN(WGAN)

      • 8.7.1 Wasserstein GAN的原理
      • 8.7.2 WGAN的代碼實現
    • 8.8 深度卷積對抗網絡 DCGAN

      • 8.8.1 1D向量的轉置卷積
      • 8.8.2 2D轉置卷積
      • 8.8.3 卷積對抗網絡DCGAN的實現
      • 參考文獻

 

Get the free sample chapters

Click the buttons to get the free sample in PDF or EPUB, or read the sample online here

The Leanpub 60 Day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.

You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!

So, there's no reason not to click the Add to Cart button, is there?

See full terms...

Earn $8 on a $10 Purchase, and $16 on a $20 Purchase

We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earned over $14 million writing, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub