Andrew Ng 的 Machine Learning 课程学习 (week5) Neural Network Learning

这学期一直在跟进 Coursera上的 Machina Learning 公开课, 老师Andrew Ng是coursera的创始人之一,Machine Learning方面的大牛。这门课程对想要了解和初步掌握机器学习的人来说是不二的选择。这门课程涵盖了机器学习的一些基本概念和方法,同时这门课程的编程作业对于掌握这些概念和方法起到了巨大的作用。

课程地址 https://www.coursera.org/learn/machine-learning

笔记主要是简要记录下课程内容,以及MATLAB编程作业....

Neural Networks

Week4 编程作业核心代码

nnCostFunction.m

 1 %首先把原先label表示的y变成向量模式的output
 2 y_vect = zeros(m,num_labels);  %5000x10
 3 for i = 1:m,
 4     y_vect(i,y(i)) = 1;
 5 end;
 6
 7 a1 = [ones(m, 1) X];
 8 z2 = a1 * Theta1‘;
 9 a2 = sigmoid(z2);    % 5000 x 25
10 a2 = [ones(m,1) a2]; % 5000 x 26
11 z3 = a2 * Theta2‘;   % 5000 x 10
12 a3 = sigmoid(z3);    % 5000 x 10
13
14 for i = 1:m
15     J = J + sum(-1*y_vect(i,:).*log(a3(i,:))-(1-y_vect(i,:)).*log(1-a3(i,:)));
16 end
17 J = J/m;
18 J = J + lambda*(sum(sum(Theta1(:,2:end).^2))+sum(sum(Theta2(:,2:end).^2)))/2/m;
19
20 %backward propagation
21 Delta1 = zeros(size(Theta1));  %25x401
22 Delta2 = zeros(size(Theta2));  %10x26
23 for i=1:m
24     delta3 = a3(i,:)‘ - y_vect(i,:)‘;  %10x1
25     tempTheta2 = Theta2‘ * delta3; % 26x10x10x1 = 26x1
26     delta2 = tempTheta2(2:end) .* sigmoidGradient(z2(i,:)‘);  %25x1
27     Delta2 = Delta2 + delta3 * a2(i,:);   % 10x1x1x26
28     Delta1 = Delta1 + delta2 * a1(i,:);   %25x1x1x401
29 end;
30
31 Theta2_grad = Delta2/m;
32 Theta1_grad = Delta1/m;
33
34 %regularization gradient
35
36 Theta2_grad(:,2:end) = Theta2_grad(:,2:end) + lambda * Theta2(:,2:end) / m;
37 Theta1_grad(:,2:end) = Theta1_grad(:,2:end) + lambda * Theta1(:,2:end) / m;
38   

sigmoidGradient.m

1 g = sigmoid(z) .* ( 1 - sigmoid(z));
时间: 2024-10-13 11:49:17

Andrew Ng 的 Machine Learning 课程学习 (week5) Neural Network Learning的相关文章

[C5] Andrew Ng - Structuring Machine Learning Projects

About this Course You will learn how to build a successful machine learning project. If you aspire to be a technical leader in AI, and know how to set direction for your team's work, this course will show you how. Much of this content has never been

Deep Learning: Assuming a deep neural network is properly regulated, can adding more layers actually make the performance degrade?

Deep Learning: Assuming a deep neural network is properly regulated, can adding more layers actually make the performance degrade? I found this to be really puzzling. A deeper NN is supposed to be more powerful or at least equal to a shallower NN. I

Andrew Ng 的 Machine Learning 课程学习 (week4) Multi-class Classification and Neural Networks

这学期一直在跟进 Coursera上的 Machina Learning 公开课, 老师Andrew Ng是coursera的创始人之一,Machine Learning方面的大牛.这门课程对想要了解和初步掌握机器学习的人来说是不二的选择.这门课程涵盖了机器学习的一些基本概念和方法,同时这门课程的编程作业对于掌握这些概念和方法起到了巨大的作用. 课程地址 https://www.coursera.org/learn/machine-learning 笔记主要是简要记录下课程内容,以及MATLAB

Logistic回归Cost函数和J(θ)的推导----Andrew Ng【machine learning】公开课

最近翻Peter Harrington的<机器学习实战>,看到Logistic回归那一章有点小的疑问. 作者在简单介绍Logistic回归的原理后,立即给出了梯度上升算法的code:从算法到代码跳跃的幅度有点大,作者本人也说了,这里略去了一个简单的数学推导. 那么其实这个过程在Andrew Ng的机器学习公开课里也有讲到.现在回忆起来,大二看Andrew的视频的时候心里是有这么一个疙瘩(Andrew也是跳过了一步推导) 那么这里就来讲一下作者略去了怎样的数学推导,以及,怎么推导. 在此之前,先

【转帖】【面向代码】学习 Deep Learning(一)Neural Network

最近一直在看Deep Learning,各类博客.论文看得不少 但是说实话,这样做有些疏于实现,一来呢自己的电脑也不是很好,二来呢我目前也没能力自己去写一个toolbox 只是跟着Andrew Ng的UFLDL tutorial 写了些已有框架的代码(这部分的代码见github) 后来发现了一个matlab的Deep Learning的toolbox,发现其代码很简单,感觉比较适合用来学习算法 再一个就是matlab的实现可以省略掉很多数据结构的代码,使算法思路非常清晰 所以我想在解读这个too

跟着Andrew Ng挑战Machine Learning:第一周 —— 概念+单一变量线性回归

声明: 开个新坑,督促自己坚持学习.这个系列同样是学习心得以及总结,用到的资料都是从吴恩达大神在Coursera上的课程中摘下来的.另外,依照Coursera的要求,保证学员的学习质量,在这一系列心得中不会出现与Coursera习题答案有关的代码. 为了帮助自己更深刻的理解,除了一些人名.引用或者算法的缩写,比如'BFGS'.'L-BFGS'等等之外,尽量使用中文.这一系列的文章结构都是按照大神的课程来的,理解成翻译其实也没毛病. 什么是机器学习? 有很多种说法,大致意思都是:"机器学习是用数据

Deep Learning 论文笔记 (2): Neural network regularization via robust weight factorization

under review as a conference paper at ICLR 2015. Motivation: 本文提出来一种regularization的方法,叫做FaMe (Factored Mean training). The proposed FaMe model aims to apply a similar strategy, yet learns a factorization of each weight matrix such that the factors ar

Introduction ----- Stanford Machine Learning(by Andrew NG)Course Notes

最近学习了coursera上面Andrew NG的Machine learning课程,课程地址为:https://www.coursera.org/course/ml 在Introduction部分NG较为系统的概括了Machine learning的一些基本概念,也让我接触了一些新的名词,这些名词在后续课程中会频繁出现: Machine Learning Supervised Learning Unsupervised Learning Regression Problem Classifi

Neural Networks Representation ----- Stanford Machine Learning(by Andrew NG)Course Notes

Andrew NG的Machine learning课程地址为:https://www.coursera.org/course/ml 神经网络一直被认为是比较难懂的问题,NG将神经网络部分的课程分为了两个星期来介绍,可见Neural Networks内容之多.言归正传,通过之前的学习我们知道,使用非线性的多项式能够帮助我们建立更好的分类模型.但当遇特征非常多的时候,需要训练的参数太多,使得训练非常复杂,使得逻辑回归有心无力. 例如我们有100个特征,如果用这100个特征来构建一个非线性的多项式模