本文的基本结构:
1. 基于梯度下降的线性回归
2. Mnist数据集的逻辑回归
3. Mnist数据集的神经网络
4. Mnist数据集的卷积神经网络
5. 总结
1. 基于梯度下降的线性回归
1.1 任务:给定一组数,X与Y,采用线性函数去拟合和预测
1.2 问题建模
线性实现最优拟合,自然想到通过最小化误差的最优化数学模型,假定最优化线性函数为y=ax+b,最优化问题求解:
这是一个凸优化问题,可以利用导数求解和梯度下降两种方法:
1)导数求解
求得闭环解
2)梯度下降迭代求解
a b step给一个初始值
For 迭代次数
1.3 求解实现Matlab
%样本
%Sample = rand(2,10);
%Sample = [1400 1600 1700 1875 1100 1550 2350 2450 1425 1700;245000 312000 279000 308000 199000 219000 405000 324000 319000 255000]./1000;
x = [108.0 , 19.0 , 13.0 , 124.0 , 40.0 , 57.0 , 23.0 , 14.0 , 45.0 , 10.0 , 5.0 , 48.0 , 11.0 , 23.0 , 7.0 , 2.0 , 24.0 , 6.0 , 3.0 , 23.0 , 6.0 , 9.0 , 9.0 , 3.0 , 29.0 , 7.0 , 4.0 , 20.0 , 7.0 , 4.0 , 0.0 , 25.0 , 6.0 , 5.0 , 22.0 , 11.0 , 61.0 , 12.0 , 4.0 , 16.0 , 13.0 , 60.0 , 41.0 , 37.0 , 55.0 , 41.0 , 11.0 , 27.0 , 8.0 , 3.0 , 17.0 , 13.0 , 13.0 , 15.0 , 8.0 , 29.0 , 30.0 , 24.0 , 9.0 , 31.0 , 14.0 , 53.0 , 26.0 ];
y = [392.5 , 46.2 , 15.7 , 422.2 , 119.4 , 170.9 , 56.9 , 77.5 , 214.0 , 65.3 , 20.9 , 248.1 , 23.5 , 39.6 , 48.8 , 6.6 , 134.9 , 50.9 , 4.4 , 113.0 , 14.8 , 48.7 , 52.1 , 13.2 , 103.9 , 77.5 , 11.8 , 98.1 , 27.9 , 38.1 , 0.0 , 69.2 , 14.6 , 40.3 , 161.5 , 57.2 , 217.6 , 58.1 , 12.6 , 59.6 , 89.9 , 202.4 , 181.3 , 152.8 , 162.8 , 73.4 , 21.3 , 92.6 , 76.1 , 39.9 , 142.1 , 93.0 , 31.9 , 32.1 , 55.6 , 133.3 , 194.5 , 137.9 , 87.4 , 209.8 , 95.5 , 244.6 , 187.5];
Len = length(x);
%变量初始化Para为a b迭代数组,delta De为迭代过程中的误差,f为目标函数值
Para = [0 0];
delta = 2;
De = [];
f = 0;
step = 0.0000001;
%梯度下降迭代
while delta>0.001
De = [De delta];
dao1 = sum((Para(1)*x+Para(2)-y).*x);
dao2 = sum((Para(1)*x+Para(2)-y));
Para(1) = Para(1) - step*dao1;
Para(2) = Para(2) - step*dao2;
delta = abs(sum((Para(1).*x+ Para(2)-y).^2)/2 - f);
f = sum((Para(1).*x+ Para(2)-y).^2)/2;
end
z = Para(1)*x + Para(2);
Para
%闭环解
a = (Len*sum(x.*y)-sum(x)*sum(y))/(Len*sum(x.^2)-sum(x)^2)
b = (sum(y)-a*sum(x))/Len
figure(1)
plot(x,y,'bo',x,a*x+b,'-',x,z,'*');
legend('样点','闭环解','梯度下降解');
figure(2);
plot(1:10,De(1:10));
legend('迭代收敛误差');
梯度解:Para =3.4206 19.6806
闭环解:a =3.4138 b =19.9945
从结果看,闭环解和梯度下降解一致,误差收敛速度10次基本已收敛。
1.3 梯度求解技巧
在梯度下降的求解过程中,发现a b的初始值,训练步长对于收敛产生重要影响。
1) a b初始值影响
a b的初始值对于收敛速率有一定影响,如果初值设为1000 1000,收敛结果如下,但是不至于不能收敛。
2) 调整步长的影响
调整步长设置不合适,有可能会错过最优点,造