均方誤差損失函式:
l (i
)(w,
b)=1
2(y^
(i)−
y(i)
)2
,l^(\mathbf, b) = \frac \left(\hat^ - y^\right)^2,
l(i)(w
,b)=
21(
y^(
i)−y
(i))
2,小批量隨機梯度下降(mini-batch stochastic gradient descent):
( w,
b)←(
w,b)
−η∣b
∣∑i∈
b∂(w
,b)l
(i)(
w,b)
(\mathbf,b) \leftarrow (\mathbf,b) - \frac|} \sum_} \partial_,b)} l^(\mathbf,b)
(w,b)←
(w,b
)−∣b
∣ηi
∈b∑
∂(w,
b)l
(i)(
w,b)
softmax運算子(softmax operator)解決了以上兩個問題。它通過下式將輸出值變換成值為正且和為1的概率分布:
y ^1
,y^2
,y^3
=softmax(o
1,o2
,o3)
\hat_1, \hat_2, \hat_3 = \text(o_1, o_2, o_3)
y^1,
y^2
,y^
3=
softmax(o
1,o
2,o
3)其中
y ^1
=exp(
o1)∑
i=13
exp(o
i),y
^2
=exp(
o2)∑
i=13
exp(o
i),y
^3
=exp(
o3)∑
i=13
exp(o
i)
.\hat1 = \frac^3 \exp(o_i)},\quad \hat2 = \frac^3 \exp(o_i)},\quad \hat3 = \frac^3 \exp(o_i)}.
y^1=∑
i=13
exp(o
i)exp(o
1)
,y^
2=∑i
=13
exp(oi
)exp(o2
),
y^3
=∑i=
13exp(o
i)exp(o
3)
.交叉熵(cross entropy):
h (y
(i),
y^(i
))=−
∑j=1
qyj(
i)
logy^
j(i)
,h\left(\boldsymbol y^, \boldsymbol ^\right ) = -\sum_^q y_j^ \log \hat y_j^,
h(y(i)
,y^
(i))
=−j=
1∑q
yj(i
)logy^
j(i)
,最小化交叉熵損失函式等價於最大化訓練資料集所有標籤類別的聯合**概率。
pytorch中的gather函式:
y_hat = torch.tensor([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]])
y = torch.longtensor([0, 2])
y_hat.gather(1, y.view(-1, 1))
輸出:
tensor([[0.1000],
[0.5000]])
連線層只是對資料做仿射變換(affine transformation),而多個仿射變換的疊加仍然是乙個仿射變換。解決問題的乙個方法是引入非線性變換,例如對隱藏變數使用按元素運算的非線性函式進行變換,然後再作為下乙個全連線層的輸入。這個非線性函式被稱為啟用函式(activation function)。
常見的啟用函式:relu,sigmoid,tanh函式。
h =ϕ
(xwh
+bh)
,o=h
wo+b
o,
\begin \boldsymbol &= \phi(\boldsymbol \boldsymbol_h + \boldsymbol_h),\\ \boldsymbol &= \boldsymbol \boldsymbol_o + \boldsymbol_o, \end
ho=ϕ(
xwh
+bh
),=h
wo+
bo,
動手學深度學習 打卡02
分詞時用到了split函式 split 通過指定分隔符對字串進行切片,如果引數 num 有指定值,則分隔 num 1 個子字串 str split str num string.count str 為方便模型處理,我們需要將字串轉換為數字。因此我們需要先構建乙個字典,其中的內容將每個詞對映到乙個唯一...
動手學深度學習打卡筆記1
資料基礎 張量和梯度 tensor 張量 可以看成是乙個多維陣列。標量是0維張量,向量是1維張量,矩陣則是2維張量。在深度學習中涉及到大量的矩陣和向量的相互計算 向量計算的速度更快 在pytorch中,torch.tensor是儲存和變換資料的主要工具。除了基本的矩陣向量 同形 的計算之外,對於不同...
動手學深度學習 task01
task 1 線性回歸 多層感知機 softmax函式 1 線性回歸作為基本的機器學習演算法,實現較簡單,應用廣泛。以下為用pytorch編寫的線性回歸類 import torch.nn as nn import torch from torch.autograd import variable f...