吴恩达机器学习第四周测验及编程作业

代码:https://github.com/LiuZhe6/AndrewNGMachineLearning

测验:Neural Networks: Representation

第一题

在这里插入图片描述
答案
AD
分析:
B:错误,XOR需要三层。
C:输出结果并不是概率,不一定和为1。

第二题

在这里插入图片描述
答案
A
分析:画出真值表

x1 x2 真值
0 0 1
0 1 1
1 0 1
1 1 0

第三题

在这里插入图片描述
答案
A

第四题

在这里插入图片描述
在这里插入图片描述
答案
A
分析:
x为3 x 1的列向量,theta1为3 x 3 的矩阵,故做乘法时为 theta1 * x,并且sigmoid()不会改变乘法结果的大小,即a^(2)为3*1列向量,符合神经网络的定义。

第五题

在这里插入图片描述
答案
A
分析:交换了Layer2的两个节点,同时将theta1两行交换,并将theta2最后两列交换,相当于对应参数都没有发生变换,故值不变。


编程作业:

作业一:Regularized Logistic Regression

注意点:
注意CostFunction计算时,后部的theta平方里面theta(0)是不参与的,故在程序中theta(1)是不参与的。
注意gradient descent时,grad(0)是不正则化的!

lrCostFunction.m

% theta(0)不参与
J = 1 / m * ( -y' * log(sigmoid( X * theta )) - (1 - y)' * log(1 - sigmoid( X * theta ))) + lambda/(2*m)*(theta'*theta -theta(1)^2);

grad = 1 / m * (X' * (sigmoid(X*theta) - y));
temp = theta;
temp(1) = 0;
grad = grad + lambda/m * temp; 

作业二:One-vs-All Classifier Training

oneVsAll.m

initial_theta = zeros(n + 1, 1);
options = optimset('GradObj', 'on', 'MaxIter', 50);

for c = 1:num_labels
    all_theta(c,:) =  fmincg(@(t)(lrCostFunction(t,X,(y==c),lambda)),initial_theta,options);
end

作业三:One-vs-All Classifier Prediction

predictOneVsAll.m

% 罗辑回归预测结果
A = sigmoid( X * all_theta') ;
% 获得每一行最大值与下标
[x,index] = max (A,[],2);
% 将下标置给p,代表预测结果
p = index;

作业四:Neural Network Prediction Function

使用已经训练好的Theta1 和 Theta2,直接可以通过神经网络计算得到假设函数的结果,找到最大概率对应的下标,即为预测手写图片对应的数字。

% a1加一列,值全为1
a1 = [ones(m,1) X];

z2 = a1 * Theta1';

% 计算a2
a2 = sigmoid(z2);

% a2添加一列,值全为1
a2 = [ones(size(z2,1),1) a2];

z3 = a2 * Theta2';

% 计算a3 
a3 = sigmoid(z3);


[value ,index] = max(a3, [] , 2);

p = index;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章