**:
程式設計練習:neural network learning
答案
答案
答案
答案
ad分析:
a:使用梯度檢驗來檢查反向傳播是否正確,正確。
b:梯度檢驗要比反向傳播計算損失函式的梯度慢的多,錯誤。
c:梯度檢驗對梯度下降演算法來說非常有用,錯誤。
d:為了保證效率,在使用反向傳播演算法前關閉梯度檢驗,正確。
答案
bc分析:
a:權重為1不能打破堆成,錯誤。
b:正確。
c:訓練結果可能是到達區域性最小值,而不是全域性的,正確。
d:一層的權重都是一樣的數字不能打破對稱,錯誤。
hint:根據文件一步一步來做,注意對y向量的轉換
nncostfunction.m
% part1
% 計算假設函式
a1 = [ones(m,1) x];
z2 = a1 * theta1';
a2 = sigmoid(z2);
a2 = [ones(size(a2,1),1) a2];
z3 = a2 * theta2';
a3 = sigmoid(z3);
h = a3; % 5000 x 10
% y是m x 1向量,需要變成m x 10矩陣
u = eye(num_labels);
% 這條語句有點難理解,大概意思是選出每一行的y值作為u的行標,將這行u替換對應行的y
y = u(y,:);
j = 1/m * sum(sum(-y .* log(h) - (1 - y) .* log(1 - h)));
% 對x新增一列
x = [ones(m,1) x];
hint:注意雙重求和的向量化,注意theta求和時的下標,不正則化0號!
nncostfunction.m
下面採用 非向量化和向量化兩種方式實現
先看一下效率比較
非向量化用時:ans = 0.0012472
向量化**用時:ans = 0.00015712
可以看出非向量化**用時是向量化**用時的近十倍。
非向量形式的**,不推薦
sum1 = 0;
sum2 = 0;
for i = 1 : size(theta1,1)
sum1 += theta1(i,:) * theta1'(:,i) - theta1(i,1)^2;
end;
for i = 1 : size(theta2,1)
sum2 += theta2(i,:) * theta2'(:,i) - theta2(i,1)^2;
end;
j += lambda/(2*m) * (sum1 + sum2);
正則化形式的**,推薦
% 正則化 (向量化形式)
regularization = lambda / (2*m) * (sum(sum(theta1(:, 2:end).^2))+ sum(sum(theta2(: , 2:end).^2 )));
j += regularization;
sigmoidgradient.m
g = sigmoid(z) .* (1 - sigmoid(z));
nncostfunction.m
我是按照步驟一步一步來做的,老師上課說推薦第一次使用for迴圈,我實在沒有get到這個意思,大概可能就是說一步一步來做吧!
% part2
delta3 = a3 - y; % 5000 x 10
delta2 = delta3 * theta2; % 5000 x 26
delta2 = delta2(:,2:end); % 5000 x 25
delta2 = delta2 .* sigmoidgradient(z2); % 5000 x 25
delta1 = zeros(size(theta1));
delta2 = zeros(size(theta2));
delta1 = delta1 + delta2' * a1; % 26 x 400
delta2 = delta2 + delta3' * a2; % 10 x 25
nncostfunction.m
theta1_grad = 1 / m * delta1 + lambda / m * theta1 ;
theta2_grad = 1 / m * delta2 + lambda /m * theta2 ;
% 0號元素不用正則化
theta1_grad(:,1) -= lambda / m * theta1(:,1);
theta2_grad(:,1) -= lambda / m * theta2(:,1);
吳恩達機器學習 程式設計練習7
本練習的主題是k means clustering and principal component analysis,即k均值聚類演算法和主要成分分析。因此這篇文章也分兩部分來討論,根據作業檔案的步驟來分別對k均值聚類演算法和pca進行討論原理以及如何實現。k means clustering al...
吳恩達機器學習 程式設計練習8
假設特徵服從正態分佈,通過計算整體概率判斷是否小於某個值,從而判斷是不是正常的。estimategaussian.m estimate parameters mu sum x m m add zeros n 1,n mu tmp mu m add mu tmp ones m,n mu tmp sig...
吳恩達機器學習筆記
為了解決實際生活中的問題,我們通常需要乙個數學模型。比如,小明有乙個房子 他想賣掉房子 為了知道房子的 小明收集了該地區近兩年的房屋交易 他發現房屋 與房屋大小呈正相關,所以他畫了了一幅圖 小明的房屋大小用紅色的 代替。可見和小明房屋一樣大小的房子並不存在,而類似的房屋 又有很大差別,如此小明決定用...