《Scikit-Learn與TensorFlow機器學(xué)習實用指南》 第06章 決策樹


(第一部分 機器學(xué)習基礎(chǔ))
第01章 機器學(xué)習概覽
第02章 一個完整的機器學(xué)習項目(上)
第02章 一個完整的機器學(xué)習項目(下)
第03章 分類
第04章 訓(xùn)練模型
第05章 支持向量機
第06章 決策樹
第07章 集成學(xué)習和隨機森林
第08章 降維
(第二部分 神經(jīng)網(wǎng)絡(luò)和深度學(xué)習)
第9章 啟動和運行TensorFlow
第10章 人工神經(jīng)網(wǎng)絡(luò)
第11章 訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)(上)
第11章 訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)(下)
第12章 設(shè)備和服務(wù)器上的分布式 TensorFlow
第13章 卷積神經(jīng)網(wǎng)絡(luò)
第14章 循環(huán)神經(jīng)網(wǎng)絡(luò)
第15章 自編碼器
第16章 強化學(xué)習(上)
第16章 強化學(xué)習(下)


和支持向量機一樣, 決策樹是一種多功能機器學(xué)習算法, 即可以執(zhí)行分類任務(wù)也可以執(zhí)行回歸任務(wù), 甚至包括多輸出(multioutput)任務(wù).

它是一種功能很強大的算法,可以對很復(fù)雜的數(shù)據(jù)集進行擬合。例如,在第二章中我們對加利福尼亞住房數(shù)據(jù)集使用決策樹回歸模型進行訓(xùn)練,就很好的擬合了數(shù)據(jù)集(實際上是過擬合)。

決策樹也是隨機森林的基本組成部分(見第7章),而隨機森林是當今最強大的機器學(xué)習算法之一。

在本章中,我們將首先討論如何使用決策樹進行訓(xùn)練,可視化和預(yù)測。

然后我們會學(xué)習在 Scikit-learn 上面使用 CART 算法,并且探討如何調(diào)整決策樹讓它可以用于執(zhí)行回歸任務(wù)。

最后,我們當然也需要討論一下決策樹目前存在的一些局限性。

決策樹的訓(xùn)練和可視化

為了理解決策樹,我們需要先構(gòu)建一個決策樹并親身體驗它到底如何進行預(yù)測。

接下來的代碼就是在我們熟知的鳶尾花數(shù)據(jù)集上進行一個決策樹分類器的訓(xùn)練。

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
iris = load_iris()
X = iris.data[:, 2:] # petal length and width y = iris.target
    tree_clf = DecisionTreeClassifier(max_depth=2)
    tree_clf.fit(X, y)

你可以通過使用export_graphviz()方法,通過生成一個叫做iris_tree.dot的圖形定義文件將一個訓(xùn)練好的決策樹模型可視化。

from sklearn.tree import export_graphviz
    export_graphviz(
            tree_clf,
            out_file=image_path("iris_tree.dot"),
            feature_names=iris.feature_names[2:],
            class_names=iris.target_names,
            rounded=True,
            filled=True
        )

然后,我們可以利用graphviz package [1] 中的dot命令行,將.dot文件轉(zhuǎn)換成 PDF 或 PNG 等多種數(shù)據(jù)格式。例如,使用命令行將.dot文件轉(zhuǎn)換成.png文件的命令如下:

[1] Graphviz是一款開源圖形可視化軟件包,http://www.graphviz.org/

$ dot -Tpng iris_tree.dot -o iris_tree.png

我們的第一個決策樹如圖 6-1。

圖6-1. 鳶尾花決策樹

開始預(yù)測

現(xiàn)在讓我們來看看在圖 6-1 中的樹是如何進行預(yù)測的。假設(shè)你找到了一朵鳶尾花并且想對它進行分類,你從根節(jié)點開始(深度為 0,頂部):該節(jié)點詢問花朵的花瓣長度是否小于 2.45 厘米。如果是,您將向下移動到根的左側(cè)子節(jié)點(深度為 1,左側(cè))。 在這種情況下,它是一片葉子節(jié)點(即它沒有任何子節(jié)點),所以它不會問任何問題:你可以方便地查看該節(jié)點的預(yù)測類別,決策樹預(yù)測你的花是 Iris-Setosa(class = setosa)。

現(xiàn)在假設(shè)你找到了另一朵花,但這次的花瓣長度是大于 2.45 厘米的。你必須向下移動到根的右側(cè)子節(jié)點(深度為 1,右側(cè)),而這個節(jié)點不是葉節(jié)點,所以它會問另一個問題:花瓣寬度是否小于 1.75 厘米? 如果是,那么你的花很可能是一個 Iris-Versicolor(深度為 2,左)。 如果不是,那很可能一個 Iris-Virginica(深度為 2,右),真的是太簡單了,對吧!

決策樹的眾多特性之一就是, 它不需要太多的數(shù)據(jù)預(yù)處理, 尤其是不需要進行特征的縮放或者歸一化。

節(jié)點的samples屬性統(tǒng)計出它應(yīng)用于多少個訓(xùn)練樣本實例。

例如,我們有一百個訓(xùn)練實例是花瓣長度大于 2.45 里面的(深度為 1, 右側(cè)),在這 100 個樣例中又有 54 個花瓣寬度小于 1.75cm(深度為 2,左側(cè))。

節(jié)點的value屬性告訴你這個節(jié)點對于每一個類別的樣例有多少個。

例如:右下角的節(jié)點中包含 0 個 Iris-Setosa,1 個 Iris-Versicolor 和 45 個 Iris-Virginica。

最后,節(jié)點的Gini屬性用于測量它的純度:如果一個節(jié)點包含的所有訓(xùn)練樣例全都是同一類別的,我們就說這個節(jié)點是純的(Gini=0)。

例如,深度為 1 的左側(cè)節(jié)點只包含 Iris-Setosa 訓(xùn)練實例,它就是一個純節(jié)點,Gini 指數(shù)為 0。

公式 6-1 顯示了訓(xùn)練算法如何計算第i個節(jié)點的 gini 分數(shù) G_i。例如, 深度為 2 的左側(cè)節(jié)點基尼指數(shù)為:1-(0/54)^2-(49/54)^2-(5/54)^2=0.68。另外一個純度指數(shù)也將在后文很快提到。

公式6-1. Gini分數(shù)
\ G_i = 1 - \sum _{k=1}^{n}P_{i, k}^2

  • p_{i,k} 是第i個節(jié)點中訓(xùn)練實例為的k類實例的比例

Scikit-Learn 用的是 CART 算法, CART 算法僅產(chǎn)生二叉樹:每一個非葉節(jié)點總是只有兩個子節(jié)點(只有是或否兩個結(jié)果)。然而,像 ID3 這樣的算法可以產(chǎn)生超過兩個子節(jié)點的決策樹模型。

圖 6-2 顯示了決策樹的決策邊界。粗的垂直線代表根節(jié)點(深度為 0)的決策邊界:花瓣長度為 2.45 厘米。由于左側(cè)區(qū)域是純的(只有 Iris-Setosa),所以不能再進一步分裂。然而,右邊的區(qū)域是不純的,所以深度為 1 的右邊節(jié)點在花瓣寬度為 1.75 厘米處分裂(用虛線表示)。又由于max_depth設(shè)置為 2,決策樹在那里停了下來。但是,如果將max_depth設(shè)置為 3,兩個深度為 2 的節(jié)點,每個都將會添加另一個決策邊界(用虛線表示)。

圖6-2. 決策樹的決策邊界

模型小知識:白盒與黑盒

正如我們看到的一樣,決策樹非常直觀,它的決策很容易解釋。這種模型通常被稱為白盒模型。相反,隨機森林或神經(jīng)網(wǎng)絡(luò)通常被認為是黑盒模型。他們能做出很好的預(yù)測,并且您可以輕松檢查它們做出這些預(yù)測過程中計算的執(zhí)行過程。然而,人們通常很難用簡單的術(shù)語來解釋為什么模型會做出這樣的預(yù)測。例如,如果一個神經(jīng)網(wǎng)絡(luò)說一個特定的人出現(xiàn)在圖片上,我們很難知道究竟是什么導(dǎo)致了這一個預(yù)測的出現(xiàn):

模型是否認出了那個人的眼睛? 她的嘴? 她的鼻子?她的鞋?或者是否坐在沙發(fā)上? 相反,決策樹提供良好的、簡單的分類規(guī)則,甚至可以根據(jù)需要手動操作(例如鳶尾花分類)。

估計分類概率

決策樹還可以估計某個實例屬于特定類k的概率:首先遍歷樹來查找此實例的葉節(jié)點,然后它返回此節(jié)點中類k的訓(xùn)練實例的比例。

例如,假設(shè)你發(fā)現(xiàn)了一個花瓣長 5 厘米,寬 1.5 厘米的花朵。相應(yīng)的葉節(jié)點是深度為 2 的左節(jié)點,因此決策樹應(yīng)該輸出以下概率:Iris-Setosa 為 0%(0/54),Iris-Versicolor 為 90.7%(49/54),Iris-Virginica 為 9.3%(5/54)。當然,如果你要求它預(yù)測具體的類,它應(yīng)該輸出 Iris-Versicolor(類別 1),因為它具有最高的概率。我們了測試一下:

>>> tree_clf.predict_proba([[5, 1.5]])
array([[ 0. , 0.90740741, 0.09259259]])
>>> tree_clf.predict([[5, 1.5]])
array([1])

完美!請注意,估計概率在任何地方都是相同的, 除了圖 6-2 中右下角的矩形部分,例如花瓣長 6 厘米和寬 1.5 厘米(盡管在這種情況下它看起來很可能是 Iris-Virginica)。

CART 訓(xùn)練算法

Scikit-Learn 用分類回歸樹(Classification And Regression Tree,簡稱 CART)算法訓(xùn)練決策樹(也叫“增長樹”)。這種算法思想真的非常簡單:

首先使用單個特征k和閾值 t_k(例如,“花瓣長度≤2.45cm”)將訓(xùn)練集分成兩個子集。它如何選擇kt_k 呢?它尋找一對 (k, t_k),能夠產(chǎn)生最純粹的子集(通過子集大小加權(quán)計算)。算法嘗試最小化的損失函數(shù),如公式 6-2所示。

公式6-2. CART進行分類的損失函數(shù)

當它成功的將訓(xùn)練集分成兩部分之后, 它將會繼續(xù)使用相同的遞歸式邏輯繼續(xù)的分割子集,然后是子集的子集。當達到預(yù)定的最大深度之后將會停止分裂(由max_depth超參數(shù)決定),或者是它找不到可以繼續(xù)降低不純度的分裂方法的時候。幾個其他超參數(shù)(之后介紹)控制了其他的停止生長條件(min_samples_splitmin_samples_leafmin_weight_fraction_leafmax_leaf_nodes)。

警告
正如所見,CART 算法是一種貪婪算法:它貪婪地搜索最高級別的最佳分割方式,然后在每個深度重復(fù)該過程。 它不檢查分割是否能夠在幾個級別中的全部分割可能中找到最佳方法。貪婪算法通常會產(chǎn)生一個相當好的解決方法,但它不保證這是全局中的最佳解決方案。

不幸的是,找到最優(yōu)樹是一個 NP 完全問題:它需要 O(exp^m) 時間,即使對于相當小的訓(xùn)練集也會使問題變得棘手。 這就是為什么我們必須設(shè)置一個“合理的”(而不是最佳的)解決方案。

計算復(fù)雜度

在建立好決策樹模型后, 做出預(yù)測需要遍歷決策樹, 從根節(jié)點一直到葉節(jié)點。決策樹通常近似左右平衡,因此遍歷決策樹需要經(jīng)歷大致 O(log_2(m)) 個節(jié)點。由于每個節(jié)點只需要檢查一個特征的值,因此總體預(yù)測復(fù)雜度僅為 O(log_2(m)),與特征的數(shù)量無關(guān)。 所以即使在處理大型訓(xùn)練集時,預(yù)測速度也非常快。

然而,訓(xùn)練算法的時候(訓(xùn)練和預(yù)測不同)需要比較所有特征(如果設(shè)置了max_features會更少一些)。這就使得訓(xùn)練復(fù)雜度為 O(n×m log(m)) 。對于小訓(xùn)練集(少于幾千例),Scikit-Learn 可以通過預(yù)先設(shè)置數(shù)據(jù)(presort = True)來加速訓(xùn)練,但是這對于較大訓(xùn)練集來說會顯著減慢訓(xùn)練速度。

Gini不純度或信息熵

通常,算法使用 Gini 不純度來進行檢測, 但是你也可以通過將標準超參數(shù)設(shè)置為"entropy"來使用熵不純度進行檢測。這里熵的概念是源于熱力學(xué)中分子混亂程度的概念,當分子井然有序的時候,熵值接近于 0。

熵這個概念后來逐漸被擴展到了各個領(lǐng)域,其中包括香農(nóng)的信息理論,這個理論被用于測算一段信息中的平均信息密度(熵的減少通常稱為信息增益)。當所有信息相同的時候熵被定義為零。

在機器學(xué)習中,熵經(jīng)常被用作不純度的衡量方式,當一個集合內(nèi)只包含一類實例時, 我們稱為數(shù)據(jù)集的熵為 0。

公式 6-3 顯示了第i個節(jié)點的熵的定義,例如,在圖 6-1 中, 深度為 2 左節(jié)點的熵為 -49/54log(49/54)-5/54log(5/54)=0.31

公式6-3. 熵

那么我們到底應(yīng)該使用 Gini 指數(shù)還是熵呢? 事實上大部分情況都沒有多大的差別:它們會生成類似的決策樹。

基尼指數(shù)計算稍微快一點,所以這是一個很好的默認值。但是,也有的時候它們會產(chǎn)生不同的樹,基尼指數(shù)會趨于在樹的分支中將最多的類隔離出來,而熵指數(shù)趨向于產(chǎn)生略微平衡一些的決策樹模型。

正則化超參數(shù)

決策樹幾乎不對訓(xùn)練數(shù)據(jù)做任何假設(shè)(與此相反的是線性回歸等模型,這類模型通常會假設(shè)數(shù)據(jù)是符合線性關(guān)系的)。

如果不添加約束,樹結(jié)構(gòu)模型通常將根據(jù)訓(xùn)練數(shù)據(jù)調(diào)整自己,使自身能夠很好的擬合數(shù)據(jù),而這種情況下大多數(shù)會導(dǎo)致模型過擬合。

這一類的模型通常會被稱為非參數(shù)模型,這不是因為它沒有任何參數(shù)(通常也有很多),而是因為在訓(xùn)練之前沒有確定參數(shù)的具體數(shù)量,所以模型結(jié)構(gòu)可以根據(jù)數(shù)據(jù)的特性自由生長。

與此相反的是,像線性回歸這樣的參數(shù)模型有事先設(shè)定好的參數(shù)數(shù)量,所以自由度是受限的,這就減少了過擬合的風險(但是增加了欠擬合的風險)。

DecisionTreeClassifier類還有一些其他的參數(shù)用于限制樹模型的形狀: min_samples_split(節(jié)點在被分裂之前必須具有的最小樣本數(shù)),min_samples_leaf(葉節(jié)點必須具有的最小樣本數(shù)),min_weight_fraction_leaf(和min_samples_leaf相同,但表示為加權(quán)總數(shù)的一小部分實例),max_leaf_nodes(葉節(jié)點的最大數(shù)量)和max_features(在每個節(jié)點被評估是否分裂的時候,具有的最大特征數(shù)量)。增加min_* hyperparameters或者減少max_* hyperparameters會使模型正則化。

筆記
一些其他算法的工作原理是在沒有任何約束條件下訓(xùn)練決策樹模型,讓模型自由生長,然后再對不需要的節(jié)點進行剪枝。
當一個節(jié)點的全部子節(jié)點都是葉節(jié)點時,如果它對純度的提升不具有統(tǒng)計學(xué)意義,我們就認為這個分支是不必要的。
標準的假設(shè)檢驗,例如卡方檢測,通常會被用于評估一個概率值 -- 即改進是否純粹是偶然性的結(jié)果(也叫原假設(shè))
如果 p 值比給定的閾值更高(通常設(shè)定為 5%,也就是 95% 置信度,通過超參數(shù)設(shè)置),那么節(jié)點就被認為是非必要的,它的子節(jié)點會被刪除。
這種剪枝方式將會一直進行,直到所有的非必要節(jié)點都被刪光。

圖 6-3 顯示了對moons數(shù)據(jù)集(在第 5 章介紹過)進行訓(xùn)練生成的兩個決策樹模型,左側(cè)的圖形對應(yīng)的決策樹使用默認超參數(shù)生成(沒有限制生長條件),右邊的決策樹模型設(shè)置為min_samples_leaf=4。很明顯,左邊的模型過擬合了,而右邊的模型泛用性更好。

圖6-3. 使用min_samples_leaf正則化

回歸

決策樹也能夠執(zhí)行回歸任務(wù),讓我們使用 Scikit-Learn 的DecisionTreeRegressor類構(gòu)建一個回歸樹,讓我們用max_depth = 2在具有噪聲的二次項數(shù)據(jù)集上進行訓(xùn)練。

from sklearn.tree import DecisionTreeRegressor
tree_reg = DecisionTreeRegressor(max_depth=2)
tree_reg.fit(X, y)

結(jié)果如圖 6-4 所示

圖6-4. 用決策樹進行回歸

這棵樹看起來非常類似于你之前建立的分類樹,它的主要區(qū)別在于,它不是預(yù)測每個節(jié)點中的樣本所屬的分類,而是預(yù)測一個具體的數(shù)值。例如,假設(shè)你想對 x_1 = 0.6的新實例進行預(yù)測。從根開始遍歷樹,最終到達預(yù)測值等于 0.1106 的葉節(jié)點。該預(yù)測僅僅是與該葉節(jié)點相關(guān)的 110 個訓(xùn)練實例的平均目標值。而這個預(yù)測結(jié)果在對應(yīng)的 110 個實例上的均方誤差(MSE)等于 0.0151。

在圖 6-5 的左側(cè)顯示的是模型的預(yù)測結(jié)果,如果你將max_depth=3設(shè)置為 3,模型就會如 6-5 圖右側(cè)顯示的那樣.注意每個區(qū)域的預(yù)測值總是該區(qū)域中實例的平均目標值。算法以一種使大多數(shù)訓(xùn)練實例盡可能接近該預(yù)測值的方式分割每個區(qū)域。

譯者注:圖里面的紅線就是訓(xùn)練實例的平均目標值,對應(yīng)上圖中的value

圖6-5. 兩個決策樹回歸模型的預(yù)測

CART 算法的工作方式與之前處理分類模型基本一樣,不同之處在于,現(xiàn)在不再以最小化不純度的方式分割訓(xùn)練集,而是試圖以最小化 MSE 的方式分割訓(xùn)練集。

公式 6-4 顯示了該算法試圖最小化的損失函數(shù)。

和處理分類任務(wù)時一樣,決策樹在處理回歸問題的時候也容易過擬合。如果不添加任何正則化(默認的超參數(shù)),你就會得到圖 6-6 左側(cè)的預(yù)測結(jié)果,顯然,過度擬合的程度非常嚴重。而當我們設(shè)置了min_samples_leaf = 10,相對就會產(chǎn)生一個更加合適的模型了,就如圖 6-6 所示的那樣。

圖6-6. 正則化一個決策樹回歸器

不穩(wěn)定性

我希望你現(xiàn)在了解了決策樹到底有哪些特點:

它很容易理解和解釋,易于使用且功能豐富而強大。然而,它也有一些限制,首先,你可能已經(jīng)注意到了,決策樹很喜歡設(shè)定正交化的決策邊界,(所有邊界都是和某一個軸相垂直的),這使得它對訓(xùn)練數(shù)據(jù)集的旋轉(zhuǎn)很敏感,例如圖 6-7 顯示了一個簡單的線性可分數(shù)據(jù)集。在左圖中,決策樹可以輕易的將數(shù)據(jù)分隔開,但是在右圖中,當我們把數(shù)據(jù)旋轉(zhuǎn)了 45° 之后,決策樹的邊界看起來變的格外復(fù)雜。盡管兩個決策樹都完美的擬合了訓(xùn)練數(shù)據(jù),右邊模型的泛化能力很可能非常差。

解決這個難題的一種方式是使用 PCA 主成分分析(第八章),這樣通常能使訓(xùn)練結(jié)果變得更好一些。

圖6-7. 對訓(xùn)練集數(shù)據(jù)旋轉(zhuǎn)的敏感性

更加通俗的講,決策時的主要問題是它對訓(xùn)練數(shù)據(jù)的微小變化非常敏感,舉例來說,我們僅僅從鳶尾花訓(xùn)練數(shù)據(jù)中將最寬的 Iris-Versicolor 拿掉(花瓣長 4.8 厘米,寬 1.8 厘米),然后重新訓(xùn)練決策樹模型,你可能就會得到圖 6-8 中的模型。正如我們看到的那樣,決策樹有了非常大的變化(原來的如圖 6-2),事實上,由于 Scikit-Learn 的訓(xùn)練算法是非常隨機的,即使是相同的訓(xùn)練數(shù)據(jù)你也可能得到差別很大的模型(除非你設(shè)置了隨機數(shù)種子)。

圖6-8. 對訓(xùn)練集細節(jié)的敏感性

我們下一章中將會看到,隨機森林可以通過多棵樹的平均預(yù)測值限制這種不穩(wěn)定性。

練習

  1. 在 有100 萬個實例的訓(xùn)練集上訓(xùn)練(沒有限制)的決策樹的深度大概是多少?

  2. 節(jié)點的基尼指數(shù)比起它的父節(jié)點是更高還是更低?它是通常情況下更高/更低,還是永遠更高/更低?

  3. 如果決策樹過擬合了,減少最大深度是一個好的方法嗎?

  4. 如果決策樹對訓(xùn)練集欠擬合了,嘗試縮放輸入特征是否是一個好主意?

  5. 如果對包含 100 萬個實例的數(shù)據(jù)集訓(xùn)練決策樹模型需要一個小時,在包含 1000 萬個實例的培訓(xùn)集上訓(xùn)練另一個決策樹大概需要多少時間呢?

  6. 如果你的訓(xùn)練集包含 100,000 個實例,設(shè)置presort=True會加快訓(xùn)練的速度嗎?

  7. moons數(shù)據(jù)集進行決策樹訓(xùn)練并優(yōu)化模型。

    1. 通過語句make_moons(n_samples=10000, noise=0.4)生成moons數(shù)據(jù)集

    2. 通過train_test_split()將數(shù)據(jù)集分割為訓(xùn)練集和測試集。

    3. 進行交叉驗證,并使用網(wǎng)格搜索法尋找最好的超參數(shù)值(使用GridSearchCV類的幫助文檔)

      提示: 嘗試各種各樣的max_leaf_nodes

    4. 使用這些超參數(shù)訓(xùn)練全部的訓(xùn)練集數(shù)據(jù),并在測試集上測量模型的表現(xiàn)。你應(yīng)該獲得大約 85% 到 87% 的準確度。

  8. 生成森林

    1. 接著前邊的練習,現(xiàn)在,讓我們生成 1,000 個訓(xùn)練集的子集,每個子集包含 100 個隨機選擇的實例。提示:你可以使用 Scikit-Learn 的ShuffleSplit類。

    2. 使用上面找到的最佳超參數(shù)值,在每個子集上訓(xùn)練一個決策樹。在測試集上測試這 1000 個決策樹。由于它們是在較小的集合上進行了訓(xùn)練,因此這些決策樹可能會比第一個決策樹效果更差,只能達到約 80% 的準確度。

    3. 見證奇跡的時刻到了!對于每個測試集實例,生成 1,000 個決策樹的預(yù)測結(jié)果,然后只保留出現(xiàn)次數(shù)最多的預(yù)測結(jié)果(您可以使用 SciPy 的mode()函數(shù))。這個函數(shù)使你可以對測試集進行多數(shù)投票預(yù)測。

    4. 在測試集上評估這些預(yù)測結(jié)果,你應(yīng)該獲得了一個比第一個模型高一點的準確率,(大約 0.5% 到 1.5%),恭喜,你已經(jīng)弄出了一個隨機森林分類器模型!


(第一部分 機器學(xué)習基礎(chǔ))
第01章 機器學(xué)習概覽
第02章 一個完整的機器學(xué)習項目(上)
第02章 一個完整的機器學(xué)習項目(下)
第03章 分類
第04章 訓(xùn)練模型
第05章 支持向量機
第06章 決策樹
第07章 集成學(xué)習和隨機森林
第08章 降維
(第二部分 神經(jīng)網(wǎng)絡(luò)和深度學(xué)習)
第9章 啟動和運行TensorFlow
第10章 人工神經(jīng)網(wǎng)絡(luò)
第11章 訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)(上)
第11章 訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)(下)
第12章 設(shè)備和服務(wù)器上的分布式 TensorFlow
第13章 卷積神經(jīng)網(wǎng)絡(luò)
第14章 循環(huán)神經(jīng)網(wǎng)絡(luò)
第15章 自編碼器
第16章 強化學(xué)習(上)
第16章 強化學(xué)習(下)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容