首先,可以通過向量化的方式來消除遍歷所有引數時使用的迴圈
然後,集中精力使用向量化技術消除另乙個迴圈,即用來遍歷所有訓練樣本的迴圈
第一步,將線性變換過程改寫為向量化
第二步,將啟用過程改寫為向量化
第三步,做偏導數的向量化
第四步,求出梯度中權值w的向量化表示
第五步,求出梯度中偏置b的向量化表示
第六步,對梯度dw和db做平均
第七步,根據全域性梯度dw和db來更新引數w和b
對於每乙個樣本有z(i)=wtx(i)+b,其中z表示線性組合的結果(計算過程中的中間值),wt表示乙個權重向量,x表示
乙個輸入樣本的特徵向量,b表示偏置。當把視角放到所有樣本的時候,就可以把公式改寫為:z=wx+b,其中,
z=(z(1),z(2)…,z(i),…z(n))是乙個向量,其中的每個分量是乙個樣本線性組合後的結果(計算過程中的中間值),
w=( wt(1),wt(2)…,wt(i),…wt(n))是乙個矩陣,其中的每個向量是乙個輸入樣本特徵向量對應的權重向量,
x=( x(1),x(2)…,x(i),…x(n))是乙個矩陣,其中的每個向量是乙個輸入樣本特徵向量,
b=( b(1),b(2)…,b(i),…b(n))是乙個向量,其中的每個分量是乙個線性變換運算過程中的偏置。
在完成了線性變換後,進行非線性變換。對於每乙個樣本有a(i)=sigmoid(z(i)),其中a(i)表示該樣本的**值。當把
視角放到所有樣本的時候,就可以把公式改寫為a=sigmoid(z),其中a=( a(1),a(2)…,a(i),…a(n))表示乙個向量其中
的每乙個分量是乙個輸入值對應的**值。這樣通過一行**就能實現所有樣本的啟用過程。
如果只考慮乙個樣本,那麼公式dz(i)=a(i)-y(i)成立。
當需要同時考慮所有樣本時,可以將多個dz向量組成乙個矩陣
dz= ( dz(1),dz(2)…,dz(i),…dz(n))。
同樣的道理,將每個樣本的真實值拿出組成乙個向量y=( y(1),y(2)…,y(i),…y(n))。
那麼dz就可以用a和y來表示了,dz=a-y=( a(1)- y(1), a(2)- y(2),…,a(i)- y(i),…a(n)- y(n))。
這也就是說,完全可以通過向量a和向量y來計算dz。在**實現的層面來看,只要構造出a和y這兩個向量,就可以
通過一行**直接計算出dz,而不需要通過for迴圈逐個計算。
再回顧之前關於梯度dw和db的計算,他們的實際計算過程分別如下:
通過觀察可知道,上述的計算過程完全可以使用向量操作替代。
dw的計算過程其實就是樣本矩陣x與梯度矩陣dz的轉置矩陣相乘,將計算結果除以訓練樣本數m得到平均值,這樣就得到
了全域性梯度值dw,所以將計算過程表示如下:
再觀察db的計算過程,其實更為簡單,將每個訓練樣本的dz相加後,再除以m,即可得到全域性梯度值db。
在python**中,只需要使用numpy庫提供的np.sum(dz),一行簡單**就可以完成db的計算
在python中將向量dw和向量db分別除以m即可,
即 dw/=m和db/m,
python會自動使用廣播機制,令向量dw中的值統一除以m。
在python中可以直接方便地使用向量化操作w=w-udw以及b=b-udb來更新引數,其中u代表學習率。
以上七個步驟便是logistic回歸梯度下降演算法的向量化實現,通過向量化的方式不僅提公升了效率,還從直觀上看起來簡
潔易懂了許多。
Logistic回歸模型
一 logistic回歸模型 線性回歸模型要求因變數是連續型正態變數。當因變數是分類變數時,logistic回歸模型是最好的回歸模型。由於y只能取兩個值1或0,y的條件數學期望 e y xi 1 p y 1 xi 0 p y 0 xi p y 1 xi 選擇乙個函式,p y 1 x f x logi...
logistic回歸 logistic回歸
logistic回歸 logistic回歸分析可用於估計某個事件發生的可能性,這是乙個分類模型而不是乙個回歸模型!它的基本思想是利用一條直線將平面上的點分為兩個部分,即兩個類別,要解決的問題就是如何擬合出這條直線,這個擬合的過程就稱之為 回歸 logistic模型 假設你有乙個需要 的內容,要通過三...
logistic分類(logistic回歸 LR)
幾乎所有的教材都是從logistic分類開始的,因為logistic分類實在太經典,而且是神經網路的基本組成部分,每個神經元 cell 都可以看做是進行了一次logistic分類。所謂logistic分類,顧名思義,邏輯分類,是一種二分類法,能將資料分成0和1兩類。logistic分類的流程比較簡單...