Python中从头开始实现神经网络 - 介绍
原文出處:
http://www.wildml.com/2015/09/implementing-a-neural-network-from-scratch/
Posted on September 3, 2015 by Denny Britz
這篇文章幫助我們用python實踐一下從零開始訓練一個神經網絡。
以下是中文翻譯:
獲取代碼
在這篇文章中,我們將從頭開始實現一個簡單的3層神經網絡。 我們不會推導出所有需要的數學運算,但是我會盡量直觀地解釋我們正在做什么。 我也會指點資源給你閱讀細節。
在這里,我假設你熟悉基本的微積分和機器學習的概念,例如 你知道什么是分類和正規化。 理想情況下,您也可以了解梯度下降等優化技術的工作原理。 但是,即使你不熟悉以上任何一點,這篇文章仍然會變得有趣;
但為什么從頭開始實施一個神經網絡呢? 即使您計劃在將來使用像PyBrain這樣的神經網絡庫,從頭開始至少實施一次網絡也是非常有價值的練習。 它可以幫助您了解神經網絡是如何工作的,這對于設計有效的模型是至關重要的。
有一點要注意的是,這里的代碼示例并不是非常有效。 他們的意思是很容易理解。 在即將發布的文章中,我將探討如何使用Theano編寫高效的神經網絡實現。 (更新:現在可用)
生成數據集
讓我們開始生成一個我們可以玩的數據集。 幸運的是,scikit-learn有一些有用的數據集生成器,所以我們不需要自己編寫代碼。 我們將使用make_moons函數。
我們生成的數據集有兩個類,繪制成紅色和藍色的點。 你可以把藍點看作是男性患者,將紅點看作是女性患者,x軸和y軸是醫學測量。
我們的目標是訓練一個機器學習分類器,預測給定x和y坐標的正確類別(女性的男性)。 請注意,數據不是線性可分的,我們不能繪制一條直線來分隔兩個類。 這意味著線性分類器(如Logistic回歸)將無法適用數據,除非您手動設計對于給定數據集非常有效的非線性特征(例如多項式)。
事實上,這是神經網絡的主要優勢之一。 您不需要擔心功能工程。 神經網絡的隱藏層將為您學習功能。
Logistic回歸
為了證明這一點,讓我們訓練一個Logistic回歸分類器。 它的輸入是x和y值,輸出是預測的類(0或1)。 為了讓我們的生活更輕松,我們使用scikit-learn的Logistic Regression類。
# Train the logistic rgeression classifier clf = sklearn.linear_model.LogisticRegressionCV() clf.fit(X, y)# Plot the decision boundary plot_decision_boundary(lambda x: clf.predict(x)) plt.title("Logistic Regression")該圖顯示了我們的Logistic回歸分類器學到的決策邊界。 它使用直線將數據盡可能分離,但無法捕捉數據的“月亮形狀”。
訓練一個神經網絡
現在我們來構建一個具有一個輸入層,一個隱藏層和一個輸出層的三層神經網絡。 輸入層中節點的數量取決于我們數據的維數2.類似地,輸出層中節點的數量是由我們所擁有的類的數量決定的,也是2.(因為我們只有2個類, 實際上只能有一個輸出節點預測為0或1,但有2個可以使網絡稍后擴展到更多類)。 網絡的輸入將是x和y坐標,其輸出將是兩個概率,一個是0級(“女性”),一個是1級(“男性”)。 它看起來像這樣:
我們可以選擇隱藏層的維數(節點數)。我們放入隱藏層的節點越多,我們就可以適應更復雜的功能。但更高的維度是有代價的。首先,需要更多的計算來進行預測并學習網絡參數。更多的參數也意味著我們更容易過擬合我們的數據。
如何選擇隱藏層的大小?雖然有一些一般的指導方針和建議,但它總是取決于你的具體問題,更多的是藝術而不是科學。稍后我們將使用隱藏的節點數來看看它是如何影響我們的輸出的。
我們還需要為隱藏層選擇一個激活函數。激活功能將圖層的輸入轉換為其輸出。非線性激活函數使我們能夠擬合非線性假設。用于激活功能的常見選擇是tanh,sigmoid函數或ReLU。我們將使用tanh,在許多場景中表現相當好。這些函數的一個很好的屬性是可以使用原始函數值來計算它們的派生值。例如,tanh x的導數是1- (tanh x)^2。這很有用,因為它可以讓我們計算一次tanh x并稍后重新使用它的值來得到導數。
因為我們希望我們的網絡輸出概率,輸出層的激活函數將是softmax,這只是將原始分數轉換為概率的一種方法。如果您熟悉邏輯功能,您可以將softmax視為對多個類的歸納
總結
以上是生活随笔為你收集整理的Python中从头开始实现神经网络 - 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 方舟怎么捡石头(方舟生存进化)
- 下一篇: 为什么苹果耳机插上还是外放(汉典为字的基