之前看的那個本深度學習書太難啃了,好多概念都不懂,真就從入門到放棄唄,於是我換了本從基礎講的,先補一補再回去看吧(笑哭)。
訓練集和測試集內部包含的資料型別都是相同的,即(x,y),x代表輸入資料,特徵向量,是個n維的向量;y代表輸出值,標籤。
當我們想把訓練集變得更緊湊是時,可以用x乙個矩陣把所有的特徵向量放到一起,第乙個特徵向量放在第一列,第二個放在第二列,依次第m個放在m列。所以這個矩陣有m列,m為樣本個數。
這樣好像就有點能明白之前演算法中矩陣是怎麼突然出現的了。
這裡的例子是二元分類的,你進行一次輸入想讓演算法輸出**,稱之為?^,代表著真實輸出y的一種情況的可能性。x是n維的特徵向量,即是輸入,用w代表邏輯回歸的引數,也是乙個n維向量,引數中還有乙個b,乙個實數代表偏差。
y =w
tx+b
y=w^tx+b
y=wtx+
b這是個線性函式,和線性回歸的函式好像。
不過二元分類要的是出現的概率,答案的數值只能在0到1之間,線性函式明顯超出了這個範圍,要把這個函式當中sigmoid函式的引數,y=w^tx+b記為z。
sigmod的函式樣式和公式如下:
不過其實這種方法只是極限值為0和1且變換曲線太慢了,作為啟用函式已經有了更好的替代。
了解代價函式前,需要知道損失函式,損失函式是根據單個訓練樣本的表現的定義的,代價函式則是對整體的表現,可以設為m個樣本的損失函式求和然後除以m,損失函式和代價函式都是為了調整引數w與b而設定的。
在邏輯回歸中損失函式可以設為:
l (y
−,y)
=−yl
og(y
−)−(
1−y)
log(
1−y−
)l(y^-,y)=-ylog(y^-)-(1-y)log(1-y^-)
l(y−,y
)=−y
log(
y−)−
(1−y
)log
(1−y
−)代價函式則為:
j (w
,b)=
1m∑1
ml(y
−(i)
,y(i
))j(w,b)=\sum_1^ml(y^,y^)
j(w,b)
=m1
1∑m
l(y−
(i),
y(i)
)有了代價函式,就可以通過最小化代價函式對引數w、b進行訓練了。
上面給出的代價函式是乙個凸函式,只需要在這個函式中找到w,b使得代價函式的值最小即可。
其更新引數的方法為:
w :=
w−aδ
j(w,
b)δw
w:=w-a
w:=w−a
δwδj
(w,b
)b :=
b−aδ
j(w,
b)δb
b:=b-a
b:=b−a
δbδj
(w,b
)a代表學習率,後面分式是代價函式的偏導數,代表在某一方向的斜率,通過調整學習率可以控制w,b接近最低點的速度。
PyTorch學習之神經網路
神經網路可以通過torch.nn包來構建,它是基於自動梯度來構建一些模型,乙個nn.module包括層和乙個方法forward input 同時也會返回乙個輸出 output 下圖是乙個簡單的前饋神經網路lenet,乙個簡單的神經網路包括一下幾點 super net,self 首先找到 net 的父...
pytorch實現神經網路
import torch import torch.nn as nn import torch.nn.functional as f import inspect import torch.optim as optim 自動求導機制 對乙個標量用backward 會反向計算在計算圖中用到的葉節點的梯...
PyTorch分類神經網路
這次我們也是用最簡單的途徑來看看神經網路是怎麼進行事物的分類.我們建立一些假資料來模擬真實的情況.比如兩個二次分布的資料,不過他們的均值都不一樣.import torch import matplotlib.pyplot as plt 假資料 n data torch.ones 100,2 資料的基...