深度学习——练习

对于深度学习的基础,线性回归以及逻辑回归,下面针对这两个方面做一个练习。

例子主要参考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,:)))‘;
>> theta
theta =
0
0
>> MAX_ITR = 1500;
>> alpha = 0.07;
>> for num_iterations = 1:MAX_ITR
grad = (1/m).* x‘ * ((x * theta) - y);
theta = theta - alpha .* grad;
end
>> theta
theta =
0.7502
0.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);
end
end
>> 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开始慢慢变大,可以画出类似等高线,这样就可以清楚越往中间,代价函数值越小。

这样基本的线性回归就解决了。下面开始学习多变量的线性回归。

深度学习——练习,布布扣,bubuko.com

时间: 2024-10-15 20:57:16

深度学习——练习的相关文章

TensorFlow【机器学习】:如何正确的掌握Google深度学习框架TensorFlow(第二代分布式机器学习系统)?

本文标签:   机器学习 TensorFlow Google深度学习框架 分布式机器学习 唐源 VGG REST   服务器 自 2015 年底开源到如今更快.更灵活.更方便的 1.0 版本正式发布,由 Google 推出的第二代分布式机器学习系统 TensorFlow一直在为我们带来惊喜,一方面是技术层面持续的迭代演进,从分布式版本.服务框架 TensorFlow Serving.上层封装 TF.Learn 到 Windows 支持.JIT 编译器 XLA.动态计算图框架 Fold 等,以及

【深度学习学习记录】之一:开篇闲扯一些话

深度学习的历史可谓是一波三折,而就在最近阿尔法狗战胜李世乭,让深度学习再次回到人们的视线. 我对深度学习的真正意义上的认识,还得从2016.05.26日的一节课上说起. 讲课老师是信科软工所的李戈老师,他是一位较年轻的副教授,讲课风趣幽默,看上去很健谈,喜欢笑. 这位老师在三个小时的课程中,带领我们从只是听说过深度学习到对深度学习有个大致了解.全程我都非常认真的听了,这种感受已经在大三之后都几乎没有过了,我认为一方面是老师讲课的方式非常吸引人,另一方面是兴趣使然,我对人工智能方面还是非常感兴趣的

深度学习与自然语言处理之四:卷积神经网络模型(CNN)

/* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 大纲如下: 1.CNN基础模型 2.单CNN模型的改进    2.1对输入层的改进    2.2Convolution层的改进    2.3Sub-Sampling层的改进    2.4全连接层的改进 3.多CNN模型的改进 4.探讨与思考 扫一扫关注微信号:"布洛卡区" ,深度学习在自然语言处理等智能应用的技术研讨与科普公众号.

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 Spark MLlib Deep Learning工具箱,是根据现有深度学习教程<UFLDL教程>中的算法,在SparkMLlib中的实现.具体Spark MLlib Deep Learning(深度学习)目录结构: 第一章Neural Net(NN) 1.源码 2.源码解析 3.实例 第二章D

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2

3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 第三章Convolution Neural Network (卷积神经网络) 2基础及源码解析 2.1 Convolution Neural Network卷积神经网络基础知识 1)基础知识: 自行google,百度,基础方面的非常多,随便看看就可以,只是很多没有把细节说得清楚和明白: 能把细节说清

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3

3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.3 http://blog.csdn.net/sunbow0 第三章Convolution Neural Network (卷积神经网络) 3实例 3.1 测试数据 按照上例数据,或者新建图片识别数据. 3.2 CNN实例 //2 测试数据 Logger.getRootLogger.setLevel(Level.WARN) valdata_path="/use

重磅︱文本挖掘深度学习之word2vec的R语言实现

笔者寄语:2013年末,Google发布的 word2vec工具引起了一帮人的热捧,大家几乎都认为它是深度学习在自然语言领域的一项了不起的应用,各种欢呼"深度学习在自然语言领域开始发力 了". 基于word2vec现在还出现了doc2vec,word2vec相比传统,考虑单词上下文的语义:但是doc2vec不仅考虑了单词上下文的语义,还考虑了单词在段落中的顺序. 如果想要了解word2vec的实现原理,应该读一读官网后面的三篇参考文献.显然,最主要的应该是这篇: Distributed

Deep Learning(深度学习)学习笔记整理系列七

Deep Learning(深度学习)学习笔记整理系列 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除. 3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢. 4)阅读本文需要机器学习.计算机视觉.神经网络等等基础(如果没有也没关系了,没

GitChat&#183;人工智能 | 除了深度学习,机器翻译还需要啥?

本文开始要写作的时候,翻译圈里出了一个"爆炸性"的事件.6月27日下午,一个同传译员在朋友圈里爆料:某AI公司请这位译员去"扮演"机器同传,制造人工智能取代人工同传的"震撼"效果. 这个事件瞬间在译员群体的朋友圈.微博.微信群引爆了隐忍已久的火药桶.因为过去几个月来,隔三差五就冒出一个号称要取代同声传译的翻译机,尤其是一篇题为<刚刚宣告:同声传译即将消亡!>的微信文章,在六月下旬铺天盖地的充满了一堆有关的或者无关的公众号,不知道带来了

TensorFlow和深度学习新手教程(TensorFlow and deep learning without a PhD)

前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络.并把其PPT的參考学习资料给了我们, 这是codelabs上的教程:<TensorFlow and deep learning,without a PhD> 当然登入须要FQ,我也顺带巩固下,做个翻译.不好之处请包括指正. 当然须要安装python,教程推荐使用python3.假设是Mac,能够參考博主的另外两片博文,Mac下升级python2.7到python3.6, Mac安装tensorflow1.0 好多专业词