吴恩达机器学习总结:第五课 神经网络-表示(大纲摘要及课后作业)

时间:2022-04-28 03:27:34

为了更好的学习,充分复习自己学习的知识,总结课内重要知识点,每次完成作业后

都会更博。

英文非官方笔记

总结

1.模型展示-1

    (1)神经元

        

       吴恩达机器学习总结:第五课 神经网络-表示(大纲摘要及课后作业)

    (2)人工神经网络

        a.在人工神经网络中,神经元是一个逻辑单元(通过输入线输入、逻辑单元进行计算、发送输出线条输出)

        b.该逻辑计算就像我们之前的逻辑回归假设计算

吴恩达机器学习总结:第五课 神经网络-表示(大纲摘要及课后作业)

        c.神经网络结构(第一层是输入层、第二层是隐藏层、第三层是输出层)

吴恩达机器学习总结:第五课 神经网络-表示(大纲摘要及课后作业)

    (3)神经网络——符号

        a.  ai(j) - 第i层中第j个单元

        b.  Ɵ(j) - 从第j层到第j+1层的权重函数

        c.一个例子

吴恩达机器学习总结:第五课 神经网络-表示(大纲摘要及课后作业)

        d. Ɵjil

2.模型展示-2

    (1)前向传播

        a. 定义一些额外的项(z12 = Ɵ101xƟ111xƟ121xƟ131x3)

        c. z22 和 z32 与z12 一样

        b. hƟ(x) = a3 = g(z3)

        吴恩达机器学习总结:第五课 神经网络-表示(大纲摘要及课后作业)

3.多分类问题(输出应该是互相正交的向量

吴恩达机器学习总结:第五课 神经网络-表示(大纲摘要及课后作业)

吴恩达机器学习总结:第五课 神经网络-表示(大纲摘要及课后作业)

作业

1.载入和可视化数据

input_layer_size  = 400;  % 20x20 输入像素点
num_labels = 10;          % 从1到10共10个标签                     
load('ex3data1.mat'); 
m = size(X, 1);
rand_indices = randperm(m);  %生成一个随机向量,得到一个打乱的列向量
sel = X(rand_indices(1:100), :); %获得重新排序的前100个x
displayData(sel);

2.向量化逻辑回归

theta_t = [-2; -1; 1; 2];
X_t = [ones(5,1) reshape(1:15,5,3)/10];
y_t = ([1;0;1;0;1] >= 0.5);
lambda_t = 3;
[J grad] = lrCostFunction(theta_t, X_t, y_t, lambda_t);

%代价和梯度函数
m = length(y); % number of training examples
J = 0;
grad = zeros(size(theta));
temp=[0;theta(2:end)];    % 先把theta(1)拿掉,不参与正则化
J =-(1/m)*(y'*log(sigmoid(X*theta))+((1-y)'*log(1-sigmoid(X*theta)))) +lambda/(2*m) * temp' * temp ;
grad = ( X' * (sigmoid(X*theta) - y ) )/ m +  lambda/m * temp;
grad = grad(:);
end

%One-vs-All 训练
lambda = 0.1;
[all_theta] = oneVsAll(X, y, num_labels, lambda);

%OVS函数
m = size(X, 1);
n = size(X, 2);
all_theta = zeros(num_labels, n + 1);
X = [ones(m, 1) X];
options = optimset('GradObj', 'on', 'MaxIter', 50);
initial_theta = zeros(n + 1, 1);
for c = 1:num_labels
all_theta(c,:) = fmincg (@(t)(lrCostFunction(t, X, (y == c), lambda)), ...
            initial_theta, options);
end