1. 程式人生 > >深度學習和神經網路——第二週筆記

深度學習和神經網路——第二週筆記

邏輯迴歸的損失函式:
J(θ)=-(ylogy^+(1-y)log(1-y^)) ,(這裡省略了連加求和,事實上這是loss function)
當y=1時,J(θ)=-logy^,為了使得J(θ)更接近0,我們需要使得y^更接近於1,由於y^是在sigmoid函式作用之後得來的,它最大不會超過1,所以我們需要使y^儘可能的大。
同理,y=0時,J(θ)=-log(1-y^),所以為了使得J(θ)更接近0,我們需要使得y^更接近0,所以,我們需要讓y^儘可能的小。

loss function損失函式是衡量單一訓練樣例的效果
cost function成本函式用於衡量引數w和b在全部訓練集上的效果

那麼如何使得成本函式變的更小呢,這裡就需要提到梯度下降演算法,由於我們的成本函式是一個凸函式(這也是我們為什麼使用它而放棄使用1/2(y-y^)^2的原因),所以梯度下降演算法會有很好的效果。

這裡我們需要拋棄機器學習中J(θ)的設定,改為J(w,b),為什麼這麼做呢,我們可以更直觀的理解“梯度下降演算法”,梯度下降演算法是如何使得J變小呢? 這裡我們需要明白,w和b是如何變小的,當w和b變小J自然變小了,w:=w-αdJ/dw, b:=b-αdJ/db,這裡我們就明白了,為什麼J是變小的。(其實這裡應該使用偏導符號 ∂,因為函式J有兩個以上的變數,但是有點難打,所以理解就好)。

為何要向量化,向量化的好處是什麼?
在python中,若不將w、x等向量化,那麼需要進行大量迴圈操作,這無疑會減慢速度,例如對z=wx+b來說:
for i int range(n-x)
z+=wi*xi
z+=b
這樣的程式碼是不好的程式碼 ,而作為對比
numpy .dot函式
z=np.dot(w,x)+b

對比