深度学习——练习
对于深度学习的基础,线性回归以及逻辑回归,下面针对这两个方面做一个练习。
例子主要参考http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=DeepLearning
一、线性回归
下载数据http://openclassroom.stanford.edu/MainFolder/courses/DeepLearning/exercises/ex2materials/ex2Data.zip
数据中给出了2-8岁小孩的升高数据,y中代表的是测量的升高(米),x对应的年龄
这样每一个对应的(x,y)构成一个训练集,在这个数据中共有50个训练集,我们的目标就是利用这50个数据构建线性模型。
解决这个问题我们使用梯度下降法,这个在前面已经有介绍。
初始准备:
1、导入数据
x = load('ex2x.dat');
y = load('ex2y.dat');
这个问题的输入变量就只有年龄,也就是这个问题是一个一维线性问题,具体的表达h=ax+b,规范化了也就是为下面可以方便的转向量矩阵计算表达式如下:

这里
;
这样,上述表达式可以写成
,这里的x为
为了形象性的了解整个数据的分别,将怎么数据的分别画出来,

在解决这个问题之前,我们先把所有样本计算模型时的
设为1,具体操作如下:
m = length(y);
x = [ones(m,1),x];
具体解决过程
下面针对这个问题实现线性回归。线性回归的模型:

批量梯度下降迭代规则是:

在我们目前这个问题当中,j=0或者1,theta的初始值为0,即
,
在这里我们对于学习率
,在Matlab中,索引是从1开始的,因此我们写的时候要通过theta(1) and theta(2) 来代表
和
.
重复上述迭代规则,直到收敛,这样最终求得的
和
就是我们要求得的值,这边迭代次数设为1500。
这边说一下代价函数:

前面加了1/2为了方便计算,便于求导.通过对代价函数求到计算梯度,得到上述过程。
具体代码:
>> theta = zeros(size(x(1,:)))';>> thetatheta =00>> MAX_ITR = 1500;>> alpha = 0.07;>> for num_iterations = 1:MAX_ITRgrad = (1/m).* x' * ((x * theta) - y);theta = theta - alpha .* grad;end>> thetatheta =0.75020.0639>> plot(x(:,2),y,'o');>> hold on>> plot(x(:,2), x*theta, '-')>> legend('Training data', 'Linear regression')
最终结果如下图:

最后根据得到的模型来预测3.5岁和7岁小孩的身高,则代码如下:
>> predict1 = [1,3.5] * theta
predict1 =
0.9737
>> predict2 = [1, 7] * theta
predict2 =
1.1973
为了更形象的理解整个线性回归,对代价函数进行可视化分析,具体代码如下:
>> J_vals = zeros(100, 100); % initialize Jvals to 100x100 matrix of 0's>> theta0_vals = linspace(-3, 3, 100);>> theta1_vals = linspace(-1, 1, 100);>> for i = 1:length(theta0_vals)for j = 1:length(theta1_vals)t = [theta0_vals(i); theta1_vals(j)];J_vals(i,j) = (0.5/m) .* (x * t - y)' * (x * t - y);endend>> J_vals = J_vals';>>figure;>> surf(theta0_vals, theta1_vals, J_vals);>>xlabel('\theta_0');>> ylabel('\theta_1')
得到如下图:

通过这个图,我们可以看出最小J值得时候,theta0跟theta1的大小。
另外我们可以绘制等高线,通过等高线也可以很好的理解一下。
具体效果如下图:

具体代码:
contour(theta0_vals, theta1_vals, J_vals, logspace(-2, 2, 15))
xlabel('\theta_0'); ylabel('\theta_1')
等高线不好理解的话,可以考虑一个简单的圆的方程,令半径从1开始慢慢变大,可以画出类似等高线,这样就可以清楚越往中间,代价函数值越小。
这样基本的线性回归就解决了。下面开始学习多变量的线性回归。
深度学习——练习的更多相关文章
- 【深度学习Deep Learning】资料大全
最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books by Yoshua Bengio, Ian Goodfellow and Aaron C ...
- DeepMind背后的人工智能:深度学习原理初探
去年11月,一篇名为<Playing Atari with Deep Reinforcement Learning>的文章被初创人工智能公司DeepMind的员工上传到了arXiv网站.两 ...
- 【转】TensorFlow练习20: 使用深度学习破解字符验证码
验证码是根据随机字符生成一幅图片,然后在图片中加入干扰象素,用户必须手动填入,防止有人利用机器人自动批量注册.灌水.发垃圾广告等等 . 验证码的作用是验证用户是真人还是机器人:设计理念是对人友好,对机 ...
- 整理:深度学习 vs 机器学习 vs 模式识别
http://www.csdn.net/article/2015-03-24/2824301 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等) http://developer ...
- [深度学习大讲堂]从NNVM看2016年深度学习框架发展趋势
本文为微信公众号[深度学习大讲堂]特约稿,转载请注明出处 虚拟框架杀入 从发现问题到解决问题 半年前的这时候,暑假,我在SIAT MMLAB实习. 看着同事一会儿跑Torch,一会儿跑MXNet,一会 ...
- 手把手教你搭建深度学习平台——避坑安装theano+CUDA
python有多混乱我就不多说了.这个混论不仅是指整个python市场混乱,更混乱的还有python的各种附加依赖包.为了一劳永逸解决python的各种依赖包对深度学习造成的影响,本文中采用pytho ...
- 深度学习框架搭建之最新版Python及最新版numpy安装
这两天为了搭载深度学习的Python架构花了不少功夫,但是Theano对Python以及nunpy的版本都有限制,所以只能选用版本较新的python和nunpy以确保不过时.但是最新版Python和最 ...
- 机器学习&深度学习资料
机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1) 机器学习(Machine Learning)&深度学习(Deep Lea ...
- 【转载】如何自学深度学习技术,大神Yann LeCun亲授建议
编者按:Quora 上有网友提问:自学机器学习技术,你有哪些建议?(What are your recommendations for self-studying machine learning), ...
- 深度学习 - DL
雷锋网 - 2016 | 人工智能在深度学习领域的前世今生(原文链接) Deep Learning - DL,深度学习是机器学习的一种. 深度学习最重要的作用:表示学习 深度学习实践的四个关键要素 计 ...
随机推荐
- mysql 判断null 和 空字符串
1.在mysql中null 不能使用任何运算符与其他字段或者变量(函数.存储过程)进行运算.若使用运算数据就可能会有问题. 2.对null 的判断: 创建一个user表:id 主健 name 可以为空 ...
- 在action中将字符串、对象、list集合保存到值栈中,在jsp页面中获取的方法
转自:csdn 封装对象User,属性有id,username,email等1.1:在action中将字符串保存到值栈中 1.1.1 获取值栈对象 ValueStack stack ...
- jQuery.ajax() 设置 Headers 中的 Accept 内容
jQuery.ajax() 如何设置 Headers 中的 Accept 内容 其实很简单,首先如果是常见类型,则请直接设置 dataType 属性 $.ajax({ dataType: &quo ...
- Asp.Net MVC之 自动装配、动态路径(链接)等
一.Model层 using System; using System.Collections.Generic; using System.Linq; using System.Web; namesp ...
- Windows live writer 2012 测试
升级到win10,居然Windows live writer不能用了,装了好久就是装不上去,wlsetup-web.exe 在线安装失败,wlsetup-all.exe离线安装也失败了. 安装Blog ...
- IP、CIDR、广播地址、子网掩码、MAC地址--这些是什么鬼
继续学习趣谈网络协议中的内容,认识几个专有名词,IP.CIDR.广播地址.子网掩码.MAC地址,这些都是什么鬼? 一.IP IP地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码 (1) ...
- Beam Search
Q: 什么是Beam Search? 它在NLP中的什么场景里会⽤到? 传统的广度优先策略能够找到最优的路径,但是在搜索空间非常大的情况下,内存占用是指数级增长,很容易造成内存溢出,因此提出了beam ...
- MRC转ARC
转载请注明出处:http://blog.csdn.net/cywn_d/article/details/18222671 1.删除所有retain,release和autorelease. 2.把原来 ...
- ie兼容的解决办法,6,7、8、9、10
在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 <!Doctype html> ...
- 浅谈树套树(线段树套平衡树)&学习笔记
0XFF 前言 *如果本文有不好的地方,请在下方评论区提出,Qiuly感激不尽! 0X1F 这个东西有啥用? 树套树------线段树套平衡树,可以用于解决待修改区间\(K\)大的问题,当然也可以用 ...