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编程作业....

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-08-26 05:43:15

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

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

这学期一直在跟进 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也是跳过了一步推导) 那么这里就来讲一下作者略去了怎样的数学推导,以及,怎么推导. 在此之前,先

[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

今天开始学Pattern Recognition and Machine Learning (PRML),章节5.2-5.3,Neural Networks神经网络训练(BP算法)

转载请注明出处:Bin的专栏,http://blog.csdn.net/xbinworld 这一篇是整个第五章的精华了,会重点介绍一下Neural Networks的训练方法--反向传播算法(backpropagation,BP),这个算法提出到现在近30年时间都没什么变化,可谓极其经典.也是deep learning的基石之一.还是老样子,下文基本是阅读笔记(句子翻译+自己理解),把书里的内容梳理一遍,也不为什么目的,记下来以后自己可以翻阅用. 5.2 Network Training 我们可

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

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

机器学习(Machine Learning)&amp;深度学习(Deep Learning)资料

机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep Learning. <Deep Learning in Neural Networks: An Overview> 介绍:这是瑞士人工智能实验室Jurgen Schmidhuber写的最新版本

机器学习(Machine Learning)&amp;深入学习(Deep Learning)资料

<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost 到随机森林.Deep Learning. <Deep Learning in Neural Networks: An Overview> 介绍:这是瑞士人工智能实验室 Jurgen Schmidhuber 写的最新版本<神经网络与深度学习综述>本综述的特点是以时间排序,从 1940 年开始讲起,到

Learning and Transferring Mid-Level Image Representations using Convolutional Neural Networks

一.主要思想 CNN在计算机视觉领域取得了非常优异的成绩,但是训练CNN的模型需要大量的数据,小数据集上面无法体现出出CNN的优势.针对这个问题作者提出了通过Transferring CNN weights来解决这个问题.首先在imagenet等大数据集上面训练传统的CNN模型,然后在针对特定的任务就行fine-tuning(可能不准确),但是和以往fine-tuning不同的是:改变了整个pre-training的CNN的框架,在VOC2007和VOC2012上面取得了很好的结果. 二.基本框

Coursera课程《Machine Learning》学习笔记(week1)

这是Coursera上比较火的一门机器学习课程,主讲教师为Andrew Ng.在自己看神经网络的过程中也的确发现自己有基础不牢.一些基本概念没搞清楚的问题,因此想借这门课程来个查漏补缺.目前的计划是先看到神经网络结束,后面的就不一定看了. 当然,看的过程中还是要做笔记做作业的,否则看了也是走马观花.此笔记只针对我个人,因此不会把已经会了的内容复述一遍,相当于是写给自己的一份笔记吧.如果有兴趣,可以移步<Machine Learning>仔细学习. 接下来是第一周的一些我认为需要格外注意的问题.