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)
随机推荐
- REST --- Representational State Transfer --- 表现层状态转化
引用:阮一峰的网络日志 如果一个架构符合REST原则,就称它为RESTful架构. 要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组 ...
- leetcode第一刷_Rotate Image
这个题该怎么说呢.旋转又要求inplace.一般就是要找到某种规律了.这个还是非常明显的,画一下原来的.再画一下旋转之后的.看看原来的跑到什么位置了. 牵扯到四个位置按顺时针方向互换一下位置,发现仅仅 ...
- 《Python数据分析》笔记2——统计学与线性代数
统计学与线性代数 用Numpy进行简单的描述性统计计算 import numpy as np from scipy.stats import scoreatpercentile data=np.loa ...
- boost之实用工具
1.noncopyable用于禁止复制和拷贝的类继承.声明拷贝和赋值函数为私有,将运行时的错误转化为编译期的错误. #include <iostream> #include <boo ...
- python 使用pip install 手动安装本地包的方法
Installing pystan manually fixed the issue (otherwise it would just hang forever). ~/GitHub $ git cl ...
- 自制Javascript浮动广告
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb ...
- 用数据池来实现socket并发
最终目标:启动服务后可以有无数个访问,并且可以随时输入,服务端使用进程池. 服务端 from socket import * import os,time from concurrent.future ...
- PHP下使用Redis消息队列发布微博
phpRedisAdmin :github地址 图形化管理界面 git clone [url]https://github.com/ErikDubbelboer/phpRedisAdmin.git[ ...
- 每天一个Linux命令(41)iostat命令
iostat是I/O statistics(输入/输出统计)的缩写,对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况. (1)用法: ...
- linux下从源代码安装git的问题(install from source)
安装环境:centos7.2 安装依赖包: yum install -y gcc .el7..x86_64 openssl-devel.x86_64 yum install -y curl.x86_6 ...