浅谈梯度算法

目录

1、概念

2、梯度下降算法

2.1场景

2.2梯度概念

3、梯度算法

3.1基本思路:

3.2 length:

3.3正负梯度:

4、代码实现:

4.1Python

 4.2C++

5、结尾


1、概念

梯度下降在机器学习中应用十分广泛,可以运用到线性拟合等领域里。本文采用下山的方法来帮助大家理解梯度算法的原理。

2、梯度下降算法

2.1场景

我们需要从山上到山谷。但此时山上的浓雾很大,导致可视度很低;因此,下山的路径就无法确定,必须利用自己周围的信息一步一步地找到下山的路。这个时候,便可利用梯度下降算法来帮助自己下山。怎么做呢,首先以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着下降方向走一步,然后又继续以当前位置为基准,再找最陡峭的地方,再走直到最后到达最低处。

2.2梯度概念

在高等数学中梯度是这样定义的:梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。

一元函数中梯度是:

而多元函数(以二元函数为列)梯度是:

3、梯度算法

3.1基本思路:

        通过迭代求出最小值,基本公式如下:

 梯度算法需要的参数:length(η):步长、accuracy:精确度(误差所容忍的值)、x0:初始值

3.2 length:

       length在梯度下降算法中被称作为学习率或者步长,意味着我们可以通过 来控制每一步走的距离,步长太大 走的就容易偏离路线,其实就是不要走太快,错过了最低点。同时也要保证不要走的太慢,导致太阳下 山了,还没有走到山下。所以 的选择在梯度下降法中往往是很重要的! 不能太大也不能太小,太小的 话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点!

3.3正负梯度:

        由梯度的知识点我们很容易知道当我们要上山时就应该是正号,而我们下山时应该时负号。因为梯度是函数变化最快快的方向。

4、代码实现:

4.1Python

def f(x):
    return (x*x)/2-2*x
def f_1(x):
    return x-2
length,accuracy,x =eval(input("请输入步长和精确度已经初始位置:"))
# length=0.9
# accuracy=0.01
# x=-4
i =0
while (-1)*(length * f_1(x))>accuracy:
    i=i+1
    x=x-length*f_1(x)
    print("第%d次迭代\nx=%f\ny=%f\n"%(i,x,f(x)))

运行结果:

        

 

 4.2C++

#include<iostream>
using namespace std;
//定义初始函数
double fun(double x){
    return (x*x)/2-2*x;
}
//定义初始函数的导数
double der_fun(double x){
    return x-2.0;
}
int main(){
    //取三个变量分别为步长、精确度和初始位置(此处可以是任意值)
    double length,accuracy,x0;
    cout<<"请输入步长以及精确度和初始值"<<endl;
    cin>>length>>accuracy>>x0;
    cout<<"初始时的位置为x:"<<x0<<"\ty:"<<fun(x0)<<endl;
    int i=0;//记录迭代次数
    while((-1)*length*der_fun(x0)>accuracy){
        x0-=length*der_fun(x0);
        i++;
        cout<<"第"<<i<<"次迭代时的位置为x:"<<x0<<"\ty:"<<fun(x0)<<endl;
    }
    return 0;
}

运行结果如下:

5、结尾

        其实梯度算法并没有我写的这么简单,我的知识简单的介绍了梯度算法的原理。梯度算法可以进行直线拟合等操作。大家可以参考这位大佬如何求直线拟合的方法链接如下:https://blog.csdn.net/qq_41800366/article/details/86583789

强化学习是一种通过试错来学习最优决策的机器学习方法。其主要应用于智能控制、机器人控制、游戏等领域。下面我将简单介绍强化学习的方法和学习路线。 一、强化学习的方法 1. 基于价值的方法:该方法主要是通过学习价值函数,来为每个状态或动作分配一个值,以便在未来更好地预测收益。常见的方法包括Q-learning和SARSA等。 2. 策略梯度方法:该方法主要是通过学习策略函数,来直接生成最优决策。常见的方法包括REINFORCE和Actor-Critic等。 3. 模型预测方法:该方法主要是通过学习环境模型,来预测不同决策的结果。常见的方法包括Model-based RL和Dynammic Programming等。 二、强化学习的学习路线 1. 数学基础:强化学习需要一定的数学基础,包括概率论、线性代数和微积分等。 2. 学习基本算法:学习Q-learning、SARSA、REINFORCE和Actor-Critic等基本算法,并熟悉它们的实现方式和应用场景。 3. 深入学习:了解强化学习的深入理论,包括策略梯度方法、值函数近似方法和模型预测方法等。 4. 实践项目:通过实践项目来巩固自己的知识,例如使用强化学习算法来训练机器人进行任务,或者使用强化学习来玩游戏等。 5. 发展应用:探索强化学习在不同领域的应用,例如智能控制、自动驾驶、游戏AI等,并尝试将其应用于实际项目中。 以上是强化学习的方法和学习路线的简单介绍,希望对你有所帮助。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值