这里趁着脑子还清醒就把代码敲出来了:
亲测是没有bug的,欢迎大家来找虫。
梯度下降法及matlab实现 - yangqiang200608的博客
11-20 6020
梯度下降法又称为最速下降法,是求解无约束优化问题最简单和最古老的方法之一。对无约束最优化问题:... 来自: yangqiang200608的博客
这里趁着脑子还清醒就把代码敲出来了:
亲测是没有bug的,欢迎大家来找虫。
clear all
close all
clc
%% initialization
% input x & y
x1 = [1 3 2104]; y1 = 400;
x2 = [1 3 1600]; y2 = 330;
x3 = [1 3 2400]; y3 = 369;
x4 = [1 2 1416]; y4 = 232;
x5 = [1 4 3000]; y5 = 540;
X = [x1;x2;x3;x4;x5];
Y = [y1;y2;y3;y4;y5];
N = 5; % the number of sample
% parameter
theta_new = zeros(length(x1),1);
% iteration number
itn = 2e2;
% tolerance
tol = 1e-20;
% learning rate(stepsize)
alpha_BGD = 0.00000001;
alpha_SGD = 0.0000001;
%% main function
i = 1; %itn index
theta_old = theta_new;
error = 1.0;
k = 1; % SGD sample index
enenrgy = zeros(itn,1);
option = input('Enter the case(number) you want: \n 1 -> BGD. \n 2 -> SGD.\n ' )
while((i <= itn) && (error >= tol))
switch option
case 1
% BGD
sum_temp = 0;
for jj = 1:N
sum_temp = sum_temp + ( Y(jj) - X(jj,:)*theta_old )*X(jj,:)';
end
theta_new = theta_old + alpha_BGD*sum_temp;
case 2
% SGD
theta_new = theta_old + alpha_SGD*( Y(k) - X(k,:)*theta_old )*X(k,:)';
if k == 5
k = 1;
else
k = k+1;
end
end
error = norm(X*theta_new-Y)^2;
theta_old = theta_new;
energy(i) = error;
i = i + 1;
end
figure,plot(1:length(energy),energy),title('error(energy)');
itn = i-1
theta = theta_new
如果输出图的话,大家会看到SGD误差振荡下降。说明了SGD的噪音太多然而BGD却一路向下。
如果为凸函数,则目标值为全局最优值,否则,会陷入局部最优的情况
…
11-20 6020
梯度下降法又称为最速下降法,是求解无约束优化问题最简单和最古老的方法之一。对无约束最优化问题:... 来自: yangqiang200608的博客
【Machine Learning实验1】batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
上面是…
来自: carrierlxksuper的专栏
梯度下降法的三种解释(BGD,SGD,MBGD). - kevin_123c的博客
07-11
8922
机器学习里面,梯度下降法可以说是随处可见,虽然它不是什么高大上的机器学习算法,但是它却是用来解决机器学习算法的良药。我们经常会用到梯度下降法来对机器学习算法进行训练。
在很多介绍梯度下降的书籍里…
来自: kevin_123c的博客
梯度下降来龙去脉附matlab代码 - 开心妙妙屋
12-29
1731
本文会讲到:
(1)线性回归的定义
(2)单变量线性回归
(3)cost function:评价线性回归是否拟合训练集的方法
(4)梯度下降:解决线性回归的方法之一
(5)f…
来自: 开心妙妙屋
随机梯度下降算法 matlab - na_jssd的专栏
09-29
1219
x=[1 1;1 2;1 3; 1 4];
y=[1.1;2.2;2.7;3.8];
rate=0.001;
w = zeros(1,size(x,2));
iter = 100;
while(ite…
来自: na_jssd的专栏
手把手教你用matlab做深度学习(三)-SGD - caokaifa的博客
08-02
363
前面已经举了一个CNN例子讲解matlab实现深度学习,现在来从细节上面讲解:
首先SGD详细原理网上一大堆,自己可以百度一下,不懂的一起可以交流一下,现在这里也会给出部分原理和例子实现。
这里考…
来自: caokaifa的博客
随机梯度下降(SGD) - Duplan的专栏
07-22
7481