吳恩達機器學習第五周測驗及程式設計作業

2021-09-22 10:00:05 字數 3059 閱讀 8619

**:

程式設計練習: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...

吳恩達機器學習筆記

為了解決實際生活中的問題,我們通常需要乙個數學模型。比如,小明有乙個房子 他想賣掉房子 為了知道房子的 小明收集了該地區近兩年的房屋交易 他發現房屋 與房屋大小呈正相關,所以他畫了了一幅圖 小明的房屋大小用紅色的 代替。可見和小明房屋一樣大小的房子並不存在,而類似的房屋 又有很大差別,如此小明決定用...