無監督學習得到資料特徵,可以在最高層加入乙個分類器並通過監督學習進行微調。
輸入層神經元個數等於輸出層神經元的個數。
sigmoid
其他以方差代價為例,單個樣本的損失函式為: j(
w,b;
x,y)
=12|
|hw,
b(x)
−y||
2 對包含m
個樣本的資料集,訓練的目標函式為 j(
w,b)
=[1m
∑i=1
mj(w
,b;x
(i),
y(i)
)]+λ
2∑l=
1nl−
1∑i=
1sl∑
j=1s
l+1w
i,j(
l)=[
1m∑i
=1m1
2||h
w,b(
x(i)
)−y(
i)||
2]+λ
2∑l=
1nl−
1∑i=
1sl∑
j=1s
l+1w
i,j(
l)(1)上式中第一項表示所有樣本的平均損失,第二項是乙個規則化項(或稱為權值衰減項),防止過擬合。
如果只有最小化重構誤差這個限制,那麼autoencoder可能不會抽取到最有效的特徵,致使隱藏層的結點個數大於輸入神經元的數目,解決這個問題有多種不同的方式。如增加稀疏性限制、增加雜訊。
當隱藏層的神經元較多時,則希望盡可能多的隱藏神經元被抑制。如果啟用函式為sigmoid,則神經元輸出接近1時為啟用狀態,接近0時為抑制狀態。
在給定輸入
x 的情況下,神經元
j的啟用度為aj
(x) ,則
j 的平均啟用度為ρ^
j=1m
∑i=1
maj(
x(i)
)給自編碼器增加稀疏性限制ρ^
=ρ其中
ρ 為稀疏性係數,取接近0的值,如0.001。
可以使用相對熵(kl divergence)來表示ρ^
和ρ的接近程度,∑j
=1s2
kl(ρ
||ρ^
j)=∑
j=1s
2ρlogρρ^
j+(1
−ρ)log1−
ρ1−ρ
^j(2) 其中s
2 表示隱藏層神經元的個數。將相對熵加入式(1)的目標函式中得js
pars
e=j(
w,b)
+β∑j
=1s2
kl(ρ
||ρ^
j)(3)
這樣發展為當隱藏層的神經元的數目較少時,即少於輸入神經元的數目,可以得到原始資料的壓縮表示。
在特徵學習過程中增加隨機雜訊,這就是denoise autoencoder,這樣得到的隱藏層更具有魯棒性。通常的做法是對輸入資料進行一定的「破壞」,比如隨機選取一些輸入項並將其他的項置為0.(注意對比rbm的cd訓練演算法中對輸入資料的隨機破壞)
參考
神經網路,預訓練
神經網路 最易懂最清晰的一篇文章 深度神經網路結構以及pre training的理解 深度信念網路 有乙個 預訓練 pre training 的過程,這可以方便的讓神經網路中的權值找到乙個接近最優解的值,之後再使用 微調 fine tuning 技術來對整個網路進行優化訓練。這兩個技術的運用大幅度減...
深度學習5 使用預訓練模型(1)
如果資料集太小的話不管怎麼去加工處理,總會出現過擬合問題,使得精度不會那麼的高,所以就要引入預訓練過的模型了,預訓練的模型通常是大數量的資料訓練過的,而且特點就在於挑選的預訓練模型是和現有問題有著相似性的。這裡使用的是乙個簡單且老的模型vgg16,這個模型和我們之前使用的架構很相似。使用預訓練的網路...
Pytorch 修改預訓練網路結構
我們以 inceptionv3 為例 pytorch裡我們如何使用設計好的網路結構,比如inceptionv3 import torchvision.models as models inception models.inception v3 pretrained true pytorch提供了個叫...