前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >优化算法——梯度下降法

优化算法——梯度下降法

作者头像
felixzhao
发布2018-03-16 16:58:05
1.3K0
发布2018-03-16 16:58:05
举报
文章被收录于专栏:null的专栏null的专栏

一、优化算法概述

    优化算法所要求解的是一个问题的最优解或者近似最优解。现实生活中有很多的最优化问题,如最短路径问题,如组合优化问题等等,同样,也存在很多求解这些优化问题的方法和思路,如梯度下降方法。

    机器学习在近年来得到了迅速的发展,越来越多的机器学习算法被提出,同样越来越多的问题利用机器学习算法得到解决。优化算法是机器学习算法中使用到的一种求解方法。在机器学习,我们需要寻找输入特征与标签之间的映射关系,在寻找这样的映射关系时,有一条重要的原则就是使得寻找到的映射结果与原始标签之间的误差最小。机器学习问题归纳起来就是把一个学习的问题转化为优化的问题,机器学习算法的本质就是如何对问题抽象建模,使一个学习的问题变为一个可求解的优化问题。

    优化的算法有很多种,从最基本的梯度下降法到现在的一些启发式算法,如遗传算法(GA),差分演化算法(DE),粒子群算法(PSO)和人工蜂群算法(ABC)。

二、梯度下降法

1、基本概念

    梯度下降法又被称为最速下降法(Steepest descend method),其理论基础是梯度的概念。梯度与方向导数的关系为:梯度的方向与取得最大方向导数值的方向一致,而梯度的模就是函数在该点的方向导数的最大值。对于一个无约束的优化问题:

例如

2、算法流程

梯度下降法的流程:

代码语言:javascript
复制
1、初始化:随机选取取值范围内的任意数
2、循环操作:
       计算梯度;
       修改新的变量;
       判断是否达到终止:如果前后两次的函数值差的绝对值小于阈值,则跳出循环;否则继续;
3、输出最终结果

与梯度下降法对应的是被称为梯度上升的算法,主要的区别就是在梯度的方向上,一个方向是下降最快的方向,相反的就是梯度上升最快的方法。主要用来求解最大值问题:

梯度的更新公式为:

下面以

为例,给出一下的Java程序:

代码语言:javascript
复制
public class SteepestDescend {
	public static double alpha = 0.5;// 迭代步长
	public static double e = 0.00001;// 收敛精度

	public double x0;
	public double y0;

	public double getY(double x) {
		return (x * x - 3 * x + 2);
	}

	public double getDerivative(double x) {
		return (2 * x - 3);
	}

	public void init() {
		x0 = 0;
		y0 = this.getY(x0);
	}

	public double getSteepestDescend() {
		double min = 0;
		double x = x0;
		double y = y0;
		double y1;
		double temp = 0;
		/*
		 * 做梯度运算
		 */
		while (true) {
			temp = this.getDerivative(x);
			x = x - alpha * temp;
			y1 = this.getY(x);
			if (Math.abs(y1 - y) <= e) {
				break;
			}
			y = y1;
			min = y;
		}
		return min;
	}
}

主函数:

代码语言:javascript
复制
public class TestMain {
	public static void main(String args[]) {
		double min;
		SteepestDescend sd = new SteepestDescend();
		sd.init();
		min = sd.getSteepestDescend();
		System.out.println("最小值:"+ min );
	}

}     
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、优化算法概述
  • 二、梯度下降法
    • 1、基本概念
      • 2、算法流程
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档