Tamam sürekli çıkış değişkeni için Sigmoid Aktivasyon Fonksiyonu, bu yüzden Andrew Ng's machine learning course on coursera ortasındayım ve atama Özellikle 4.Sinir Ağları:
, sinir ağı kapsamında tamamlanan sinir ağı adapte etmek istiyorum
- sigmoid aktivasyon fonksiyonu: atama bir parçası olarak aşağıdaki gibi doğru bir şekilde tamamlayan olan
g(z) = 1/(1+e^(-z))
- 10 çıkış birimleri, her biri, 0 veya 1
- 1 hi sürebilir dden tabaka
- Geri yayılma yöntemi maliyet fonksiyonunu minimize etmek için kullanılan
- Maliyet fonksiyonu:
L=number of layers
,s_l = number of units in layer l
,m = number of training examples
,K = number of output units
Şimdi egzersiz ayarlamak istediğiniz
böylece [0,1] ile arasında bir değer alan bir sürekli çıkış ünitesi var ve neyin değişmesi gerektiğini öğrenmek için çalışıyorum, yani f ar ı
- çıkış çıkış birimlerinin sayısını 0 ile 1 Güncellendi referanslar
- arka maliyet fonksiyonu Güncelleme sürekli değişken olacak şekilde, yani kendi veri Değiştirilen var -propagasyon algoritması:
a_3
, Burada, ileri yayılmadan belirlenen çıkış biriminin değeridir.
Degrade kontrol yönteminin geri yayılım tarafından belirlenen ve sayısal yaklaşımla artık eşleşmeyen gradyanı gösterdiği için başka bir şeyin değişmesi gerektiğinden eminim. Sigmoid gradyanı değiştirmedim; f(z)*(1-f(z))
'da, f(z)
'un sigmoid işlevi 1/(1+e^(-z)))
olduğu ve türev formülünün sayısal yaklaşımını güncellemediğim; sadece (J(theta+e) - J(theta-e))/(2e)
.
Başka hangi adımların atılması gerektiği konusunda tavsiyede bulunabilir mi?
Matlab Kodlu şöyle:
Bu soru ancak bu durumda kullandığım 0 ile 1 ve bu nedenle sürekli değişken olmak isteyen, @Mikhail Erofeev on StackOverflow tarafından sorulan benzer olduğunu fark etti beri var% FORWARD PROPAGATION
% input layer
a1 = [ones(m,1),X];
% hidden layer
z2 = a1*Theta1';
a2 = sigmoid(z2);
a2 = [ones(m,1),a2];
% output layer
z3 = a2*Theta2';
a3 = sigmoid(z3);
% BACKWARD PROPAGATION
delta3 = a3 - y;
delta2 = delta3*Theta2(:,2:end).*sigmoidGradient(z2);
Theta1_grad = (delta2'*a1)/m;
Theta2_grad = (delta3'*a2)/m;
% COST FUNCTION
J = 1/(2 * m) * sum((a3-y).^2);
% Implement regularization with the cost function and gradients.
Theta1_grad(:,2:end) = Theta1_grad(:,2:end) + Theta1(:,2:end)*lambda/m;
Theta2_grad(:,2:end) = Theta2_grad(:,2:end) + Theta2(:,2:end)*lambda/m;
J = J + lambda/(2*m)*(sum(sum(Theta1(:,2:end).^2)) + sum(sum(Theta2(:,2:end).^2)));
sigmoid işlevi.
Sürekli bir sonuç için çalıştınız mı? Koşturdum ama 40'ıncı iterasyon durur ve iyi bir sonuç vermez. Sonunda neler olduğunu paylaşırsan harika olur mu? –