deep learning 学习笔记(三) 线性回归学习速率优化寻找
继续学习http://www.cnblogs.com/tornadomeet/archive/2013/03/15/2962116.html,上一节课学习速率是固定的,而这里我们的目的是找到一个比较好的学习速率。我们主要是观察 不同的学习速率对应的不同的损失值与迭代次数之间的函数曲线是怎么样的,找到那条最快达到收敛的函数曲线,其对应的学习速率就是我们要找的比较好的学习速率。在这里我们分别取速率值为:0.001,0.01,0.1,1,2,当我们选择完学习速率后,其余的都跟上一节课一样了。本文要解决的问题是给出了47个训练样本,训练样本的y值为房子的价格,x属性有2个,一个是房子的大小,另一个是房子卧室的个数。需要通过这些训练数据来学习系统的函数,从而预测房子大小为1650,且卧室有3个的房子的价格。
代码如下:
x = load('ex3x.dat');
y = load('ex3y.dat'); x = [ones(size(x,),) x];%每一行是一个样本,在这里每个样本增加一维1,原因在前面课说了(讲wx+b变成w'x齐次的)
meanx = mean(x);%求均值 接下来四行是让样本的每一维度(除第一维1外)的值标准化。
sigmax = std(x);%求标准偏差 但是前面不是说线性的不用进行feature scale吗(第一课讲的)
x(:,) = (x(:,)-meanx())./sigmax();
x(:,) = (x(:,)-meanx())./sigmax(); figure
itera_num = ; %尝试的迭代次数
sample_num = size(x,); %训练样本的个数
alpha = [0.01, 0.03, 0.1, 0.3, , 1.3];%因为差不多是选取每个3倍的学习率来测试,所以直接枚举出来
plotstyle = {'b', 'r', 'g', 'k', 'b--', 'r--'};%建了一个包,每一个值代表画出的曲线样式不同,b是blue蓝色,
%r是red ,g是green..b--是blue颜色--代表的是虚线,而前面那些不加的是实现。 theta_grad_descent = zeros(size(x(,:)));
for alpha_i = :length(alpha) %alpha_i是1,,...,表示的是学习速率向量和曲线格式向量的坐标:alpha(alpha_i),plotstyle(alpha_i)
theta = zeros(size(x,),); %theta是cost function的参数,初始值赋值为0向量(*1的向量,x有几维theta就是几维的参数向量)
Jtheta = zeros(itera_num, );%Jthete是个100*1的向量,第n个元素代表第n次迭代cost function的值(预测与真实y的总均方误差)
for i = :itera_num %计算出某个学习速率alpha下迭代itera_num次数后的参数
Jtheta(i) = (/(*sample_num)).*(x*theta-y)'*(x*theta-y);%Jtheta是个100*1的列向量。(x*theta-y)'*(x*theta-y)代表的就是
%cost function 公式的那个平方,因为在向量水平上平方没有直接平方,所以就是这种转置后内积的形式。并且得到的是
%一个标量,所以再与前面的系数相乘可以直接用*,而不用.* 还有一点是前面的系数 我还是不明白为什么
%是(/(*sample_num))
grad = (/sample_num).*x'*(x*theta-y);
theta = theta - alpha(alpha_i).*grad;
end
plot(:, Jtheta(:),char(plotstyle(alpha_i)),'LineWidth', )%此处一定要通过char函数来转换因为包用()索引后得到的还是包cell,
%所以才要用char函数转换,也可以用{}索引,这样就不用转换了。
%一个学习速率对应的图像画出来以后再画出下一个学习速率对应的图像。
hold on
if( == alpha(alpha_i)) %通过实验发现alpha为1时效果最好,则此时的迭代后的theta值为所求的值
theta_grad_descent = theta
end
end
legend('0.01','0.03','0.1','0.3','','1.3');
xlabel('Number of iterations')
ylabel('Cost function') %下面是预测公式
price_grad_descend = theta_grad_descent'*[1 (1650-meanx(2))/sigmax(2) (3-meanx(3)/sigmax(3))]'
实验结果:
deep learning 学习笔记(三) 线性回归学习速率优化寻找的更多相关文章
- 【Deep Learning读书笔记】深度学习中的概率论
本文首发自公众号:RAIS,期待你的关注. 前言 本系列文章为 <Deep Learning> 读书笔记,可以参看原书一起阅读,效果更佳. 概率论 机器学习中,往往需要大量处理不确定量,或 ...
- Deep Learning论文笔记之(一)K-means特征学习
Deep Learning论文笔记之(一)K-means特征学习 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(三) 补充 hector_slam
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Learning ROS for Robotics Programming Second Edition学习笔记(三) indigo rplidar rviz slam
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Deep Learning论文笔记之(三)单层非监督学习网络分析
Deep Learning论文笔记之(三)单层非监督学习网络分析 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感 ...
- 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 Convolution Neural Network (深度学习-卷积神经网络)3.2
3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 ...
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3
3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.3 http://blog.csdn.net/sunbow0 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
随机推荐
- Oracle 报 ORA-21561: OID generation failed 错误 mac 链接oracle
简单的说:在终端输入:sudo scutil --set HostName localhost
- .NET Framework 3.5-8 下载地址
https://dotnet.microsoft.com/download/dotnet-framework Version Released End of life .NET Framework 4 ...
- 字符串之strstr
功能:查找第二个字符串是否存在第一个字符串中. 输入:字符串1,字符串2 返回值:成功返回str1中的位置,失败返回NULL #include <iostream> using names ...
- nodejs的精简型和全栈型开发框架介绍
总体来说你可以将Node.js开发框架归结为两类: - 精简型框架 - 全栈型框架 下面我们就对这两种框架进行探讨. 精简型框架 精简型框架提供的是最基本的功能和APIs,这类框架本身就是被设计成用来 ...
- dataTables的用法
原地址:http://blog.csdn.net/mickey_miki/article/details/8240477 1.DataTables的默认配置 $(document).ready(fun ...
- a各种状态
hover 设置对象在其鼠标悬停时的样式表属性 active 设置对象在被用户激活(在鼠标点击与释放之间发生的事件)时的样式表属性.link 设置a对象在未被访问前的样式表属性.visited ...
- 前端 初级篇(CSS)
CSS 简介 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:styl ...
- 小程序学习第二天 认识框架WXML
一.初级小程序HelloWorld 心得: (1)progect.config.json :app的个性化设置 (2)一个小程序至少包括两个文件 (2.1)app.json 小程序全局配置 ...
- iOS 事件响应者链的学习(也有叫 UI连锁链)
当发生事件响应的时候,必须知道由谁来响应事件.在iOS中,由响应链来对事件进行响应,所有的事件响应的类都是继承于UIResponder的子类,响应链是一个由不同对象组成的层次结构,其中每个对象将依次获 ...
- 一个gpio 不受控制的bug
前几天调试一个flash灯的驱动程序,这可ic 有两个控制pin, 一个叫en1 一个叫en2, 根据spec的说明,不同的组合将产生不同的输出电流.但我发现,那个en1 这个pin 死活是拉不高的, ...