Neural Network:
1Non-linear Hypotheses:
在计算机视觉中的例子中,假设判断一个50*50像素的图像是否为一辆汽车,在逻辑回归中所构成的维数是2500个,那么他的一次项为2500个,二次项的数量为2500^2/2。导致了过于庞大的计算量。
2Model representation:
神经网络的逻辑单元:x0---x3为输入,theta被称为权重或者参数。
![](https://i-blog.csdnimg.cn/blog_migrate/983bbbfd17a99dc57430ca356d69da49.png)
途中layer1为输入层,layer2为隐蔽层,layer3为输出层。在一个神经网络中可能会有多个隐蔽层。a(j)iai(j)
![](https://i-blog.csdnimg.cn/blog_migrate/5bc114fcf1641c2f3b0ad99827467bb5.png)
其中a(j)i为第j层第i个激励单元,它通过上一层的激励单元或输入与权重运算得到如:
3 Examples and intuitions
在课程中举例了一个同或运算的例子,将同或运算拆分成与运算和非与运算进行或操作。
与运算通过h(x)=g(x0*-30+x1*20+x2*20)表示。运算结果如图所示:
同样可以得到非与运算:h(x)=g(-30*x0+20*x1+20*x2)
在第二层神经网络中得到与运算与非与运算的值。
或运算:h(x)=g(-10*x0+20*x1+20*x2)
得到第三层神经网络完成同或运算。
4 Multiclass Classification
对于多分类问题,我们可以通过设置多个输出值来实现。具体在程序中,可以通过每个输出值 取最大值来判断属于哪一类。
5 编程作业
lrCostFunction.m:
function [J, grad] = lrCostFunction(theta, X, y, lambda)
m = length(y); % number of training examples
% You need to return the following variables correctly
J = 0;
grad = zeros(size(theta));
J=1/m*(-y'*log(sigmoid(X*theta))-(1-y)'*log(1-sigmoid(X*theta)))+lambda/(2*m)*sum(theta(2:end).^2);
%J = 1/m * (-y' * log(sigmoid(X*theta)) - (1 - y')* log(1-sigmoid(X*theta))) +
%lambda/2/m*sum(theta(2:end) .^ 2);
grad(1,:)=1/m*(X(:,1)'*(sigmoid(X*theta)-y));
grad(2:end, :) = 1/m * (X(:,2:end)'* (sigmoid(X*theta) - y)) + lambda/m*theta(2:end, :);
grad = grad(:);
end
oneVsAll.m:
function [all_theta] = oneVsAll(X, y, num_labels, lambda)
m = size(X, 1);
n = size(X, 2);
% You need to return the following variables correctly
all_theta = zeros(num_labels, n + 1);
X = [ones(m, 1) X];
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
end
predictOneVsAll.m:
function p = predictOneVsAll(all_theta, X)
m = size(X, 1);
num_labels = size(all_theta, 1);
% You need to return the following variables correctly
p = zeros(size(X, 1), 1);
% Add ones to the X data matrix
X = [ones(m, 1) X];
temp = all_theta * X';
[maxx, pp] = max(temp);
p = pp';
end