共轭梯度下降及matlab简单实现
2016-08-26 17:32
706 查看
考虑问题:
min f(x)=12xTAx+bTx+c
具体求解的方法如下:
首先,任意给定一个初始点x(1),计算出目标函数f(x)在这个点的梯度,若||g1||=0,则停止计算,否则,令
d(1)=−▽f(x(1))=−g1
沿着d(1)的搜索,得到x(2),计算x(2)处的梯度,若||g2||=0,则停止计算,否则利用若-g2和d(1)构造第二个搜索方向d(2),再沿着d(2)搜索。
一般地,若已知x(k)和d(k),则从x(k)出发,沿d(k)进行搜索,可得:
x(k+1)=x(k)+λkd(k)
令:
ϕ(λ)=f(x(k)+λd(k))
求ϕ(λ)的极小值点:
ϕ′(λ)=▽f(x(k+1))Td(k)=0
带▽f(x(k+1))=Ax(k+1)+b得
(Ax(k+1)+b)Td(k)=0
带x(k+1)=x(k)+λkd(k),并展开得:
(gk+λkAd(k))Td(k)=0
求得:
λk=−gTkd(k)d(k)TAd(k)
如果还没有满足终止条件:
d(k+1)=−gk+1+βkd(k)
左乘d(k)TA
d(k)TAd(k+1)=−d(k)TAgk+1+βkd(k)TAd(k)=0
得:
βk=d(k)TAgk+1d(k)TAd(k)
求 min x21+12x22+12x23
min f(x)=12xTAx+bTx+c
具体求解的方法如下:
首先,任意给定一个初始点x(1),计算出目标函数f(x)在这个点的梯度,若||g1||=0,则停止计算,否则,令
d(1)=−▽f(x(1))=−g1
沿着d(1)的搜索,得到x(2),计算x(2)处的梯度,若||g2||=0,则停止计算,否则利用若-g2和d(1)构造第二个搜索方向d(2),再沿着d(2)搜索。
一般地,若已知x(k)和d(k),则从x(k)出发,沿d(k)进行搜索,可得:
x(k+1)=x(k)+λkd(k)
令:
ϕ(λ)=f(x(k)+λd(k))
求ϕ(λ)的极小值点:
ϕ′(λ)=▽f(x(k+1))Td(k)=0
带▽f(x(k+1))=Ax(k+1)+b得
(Ax(k+1)+b)Td(k)=0
带x(k+1)=x(k)+λkd(k),并展开得:
(gk+λkAd(k))Td(k)=0
求得:
λk=−gTkd(k)d(k)TAd(k)
如果还没有满足终止条件:
d(k+1)=−gk+1+βkd(k)
左乘d(k)TA
d(k)TAd(k+1)=−d(k)TAgk+1+βkd(k)TAd(k)=0
得:
βk=d(k)TAgk+1d(k)TAd(k)
求 min x21+12x22+12x23
A = [2 0 0; 0 1 0; 0 0 1]; x(:,1) = [1;1;1]; g(:,1)=A*x(:,1); d(:,1) = [-1;-2;0]; n = 1; lambda = []; beta = []; while norm(g(:,n)) > 0.01 lambda(n) = -(g(:,n)'*d(:,n))/(d(:,n)'*A*d(:,n)); x(:,n+1) = x(:,n)+lambda(n)*d(:,n); g(:,n+1) = A*x(:,n+1); beta(n) = (d(:,n)'*A*g(:,n+1))/(d(:,n)'*A*d(:,n)); d(:,n+1) = -g(:,n+1)+beta(n)*d(:,n); n = n+1; end
相关文章推荐
- 随机梯度下降和批量梯度下降的简单代码实现
- 基于matlab的梯度下降法实现线性回归
- 线性回归与梯度下降(附Matlab实现)
- 梯度下降法实现softmax回归MATLAB程序
- 梯度下降(Gradient Descent)简析及matlab实现
- 机器学习小组知识点4&5:批量梯度下降法(BGD)和随机梯度下降法(SGD)的代码实现Matlab版
- 梯度下降Gradient Descent matlab实现
- 斯坦福机器学习3:线性回归、梯度下降和正规方程组的matlab实现
- 线性回归梯度下降matlab实现
- 利用梯度下降法实现线性回归的算法及matlab实现
- 基于MATLAB和C#编程实现二元函数梯度下降法求极小值
- 梯度下降法及matlab实现
- 梯度下降法的matlab实现
- 利用梯度下降法实现简单的线性回归
- 线性回归、梯度下降以及运用TensorFlow进行简单实现
- Matlab梯度下降及正规方程实现多变量的线性回归
- 运用TensorFlow进行简单实现线性回归、梯度下降示例
- 在matlab中实现梯度下降法
- 批量梯度下降和随机梯度下降matlab 实现
- 图像缩放插值算法以及matlab简单实现(最近邻法、双线性插值法、三次卷积法)