Logistic分类函数
作者:chen_h
微信號 & QQ:862251340
微信公眾號:coderpai
我的博客:請點擊這里
這篇教程是翻譯Peter Roelants寫的神經網絡教程,作者已經授權翻譯,這是原文。
該教程將介紹如何入門神經網絡,一共包含五部分。你可以在以下鏈接找到完整內容。
- (一)神經網絡入門之線性回歸
- Logistic分類函數
- (二)神經網絡入門之Logistic回歸(分類問題)
- (三)神經網絡入門之隱藏層設計
- Softmax分類函數
- (四)神經網絡入門之矢量化
- (五)神經網絡入門之構建多層網絡
Logistic分類函數
這部分教程將介紹兩部分:
* Logistic函數
* 交叉熵損失函數
如果我們利用神經網絡進行分類,對于二分類問題,t=1或者t=0,我們能在logistic回歸中使用logistic函數。對于多分類問題,我們使用softmax函數來處理多項式logistic回歸。本教程我們先解釋有關logistic函數的知識,后續教程會介紹softmax函數的知識。
我們先導入教程需要使用的軟件包。
from __future__ import print_functionimport numpy as np import matplotlib.pyplot as plt復制代碼Logistic函數
假設我們的目標是根據輸入的z去預測分類t。概率方程P(t=1|z)表示輸出y根據logisitc函數y=σ(z)得到的值。σ被定義為:
根據函數分類的概率t=1或者t=0,我們能得到以下公式:
注意一下,其實z就是P(t=1|z)與P(t=0|z)的比值求對數。
logistic函數在下面的代碼中logistic(z)實現,并且可視化了logistic函數。
# Define the logistic function def logistic(z):return 1 / (1 + np.exp(-z))復制代碼# Plot the logistic function z = np.linspace(-6,6,100) plt.plot(z, logistic(z), 'b-') plt.xlabel('$z$', fontsize=15) plt.ylabel('$\sigma(z)$', fontsize=15) plt.title('logistic function') plt.grid() plt.show()復制代碼Logistic函數求導
因為神經網絡一般使用梯度下降來優化,所以我們需要先求出y對于z的倒數,即?y/?z可以表示為:
因為1?σ(z))=1?1/(1+e^?z)=e?z/(1+e^?z),所以我們又可以把上式簡化為:
logistic_derivative(z)函數實現了Logistic函數的求導。
# Define the logistic function def logistic_derivative(z):return logistic(z) * (1 - logistic(z))復制代碼# Plot the derivative of the logistic function z = np.linspace(-6,6,100) plt.plot(z, logistic_derivative(z), 'r-') plt.xlabel('$z$', fontsize=15) plt.ylabel('$\\frac{\\partial \\sigma(z)}{\\partial z}$', fontsize=15) plt.title('derivative of the logistic function') plt.grid() plt.show()復制代碼對于logistic函數的交叉熵損失函數
模型的輸出結果y=σ(z)可以被表示為一個概率y,如果t=1,或者概率1-y,如果t=0。我們把這個記為P(t=1|z)=σ(z)=y。
在神經網絡中,對于給定的一組參數θ,我們可以使用最大似然估計來優化參數。參數θ將輸入的樣本轉化成輸入到Logistic函數中的參數z,即z = θ * x。最大似然估計可以寫成:
因為對于給定的參數θ,去產生t和z,根據聯合概率我們又能將似然函數L(θ|t,z)改寫成P(t,z|θ)。由于P(A,B) = P(A|B) ? P(B),我們又可以簡化聯合概率:
因為我們不關心有關z的概率,所以我們可以把原來的似然函數改寫成:
因為t服從伯努力分布,而且如果給定參數θ,那么P(t|z)=y就是一個確定的值,因此我們又可以改寫概率方程:
由于對數函數是單調遞增函數,我們可以依此優化對數似然函數
該函數的最大值和常規的似然函數的最大值一樣,所以我們計算對數似然函數如下,
我們最小化這個負對數似然函數,等價于最大化似然函數。一個典型的誤差函數可以設計為如下交叉熵誤差函數:
這個函數可能看起來比較復雜,但是如果我們把它拆分開來看,就會比較簡單。
從上式中我們可以發現,如果樣本被正確分類,那么損失函數L(t,y)和負對數概率函數在表達式上面是一樣的,即
因為t只能取值0或者1,所以我們能將L(t, y)寫為:
如果你要分析每一個訓練數據,那么就是下式:
另一個我們使用交叉熵函數的原因是,在簡單Logistic回歸中,交叉熵函數是一個凸損失函數,全局最小值很容易找到。
對于logistic函數的交叉熵損失函數的求導
對于損失函數?ξ/?y求導,計算如下:
現在,我們對輸入參數z進行求導將變得很容易。
至此,完整求導完成。
完整代碼,點擊這里
CoderPai 是一個專注于算法實戰的平臺,從基礎的算法到人工智能算法都有設計。如果你對算法實戰感興趣,請快快關注我們吧。加入AI實戰微信群,AI實戰QQ群,ACM算法微信群,ACM算法QQ群。詳情請關注 “CoderPai” 微信號(coderpai) 。
總結
以上是生活随笔為你收集整理的Logistic分类函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sublime text3装入插件Ana
- 下一篇: PowerBI从Exchange跟踪日志