`

各种导数(梯度)下降优化算法python实现

 
阅读更多

梯度下降算法总纲:

1:CS231

http://cs231n.github.io/neural-networks-3/

https://zhuanlan.zhihu.com/p/21798784?refer=intelligentunit

 

2:An overview of gradient descent optimization algorithms

http://ruder.io/optimizing-gradient-descent/index.html

 

 

ADADELTA: AN ADAPTIVE LEARNING RATE METHOD

https://arxiv.org/pdf/1212.5701.pdf

 

ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION

https://arxiv.org/pdf/1412.6980.pdf

 

 

一般的梯度下降法:

核心就是   learning_rate * gradient

def f(x):
        return x**3-2*x - 10 +x**2

def derivative_f(x):
         return 3*(x**2)+2*-2


x=0.0
y=0.0
learning_rate = 0.001
gradient=0

for i in range(1000000):
        print('x = {:6f}, f(x) = {:6f},gradient={:6f}'.format(x,y,gradient))

        if((abs(gradient)>0.00001) and (abs(gradient)<0.0001)):
            print("break at "+str(i))
            break
        else:
            gradient = derivative_f(x)
            x = x -  learning_rate*gradient
            y = f(x)

 

 ADAGRAD 实现(按照文档上的收敛很差,所以修改了分母)

核心是 learning_rate*gradient/(math.sqrt(sum/(i+1))+e)

 

import math
def f(x):
        return x**3-2*x - 10 +x**2

def derivative_f(x):
         return 3*(x**2)+2*-2


x=0.0
y=0.0
learning_rate = 0.001
gradient=0
e=0.00000001
sum = 0.0

for i in range(100000):

    print('x = {:6f}, f(x) = {:6f},gradient={:6f}'.format(x,y,gradient))
    if((abs(gradient)>0.00001) and (abs(gradient)<0.0001)):
            print("break at "+str(i))
            break
    else:
        gradient = derivative_f(x)
        sum += gradient**2;
        x=x-learning_rate*gradient/(math.sqrt(sum/(i+1))+e)
        y=f(x)


 

ADADELTA实现

import math
def f(x):
        return x**3-2*x - 10 +x**2

def derivative_f(x):
         return 3*(x**2)+2*-2


x=0.0
y=0.0
learning_rate = 0.001
gradient=0
e=0.00000001
sum = 0.0

d = 0.9

Egt=0
Edt = 0


delta = 0

for i in range(100000):

    print('x = {:6f}, f(x) = {:6f},gradient={:6f}'.format(x,y,gradient))
    if(abs(gradient)>0.00001 and (abs(gradient)<0.0001)):
        print("break at "+str(i))
        break
    else:

        gradient = derivative_f(x)

        Egt = d * Egt + (1-d)*(gradient**2)

        delta = math.sqrt(Edt + e)*gradient/math.sqrt(Egt + e)

        Edt = d*Edt+(1-d)*(delta**2)

        x=x-delta
        y = f(x)



 

RMSprop实现

import math
def f(x):
        return x**3-2*x - 10 +x**2

def derivative_f(x):
         return 3*(x**2)+2*-2


x=0.0
y=0.0
learning_rate = 0.001
gradient=0
e=0.00000001
sum = 0.0

d = 0.9

Egt=0
Edt = 0


delta = 0

for i in range(100000):

    print('x = {:6f}, f(x) = {:6f},gradient={:6f}'.format(x,y,gradient))
    if(abs(gradient)>0.00001 and (abs(gradient)<0.0001)):
        print("break at "+str(i))
        break
    else:

        gradient = derivative_f(x)

        Egt = d * Egt + (1-d)*(gradient**2)

        x=x-learning_rate*gradient/math.sqrt(Egt + e)

        y=f(x)



 

Adam 实现

import math
def f(x):
        return x**3-2*x - 10 +x**2

def derivative_f(x):
         return 3*(x**2)+2*-2


x=0.0
y=0.0
learning_rate = 0.001
gradient=0
e=0.00000001

b1 = 0.9
b2 = 0.995

m = 0
v = 0
t = 0

for i in range(10000):


    print('x = {:6f}, f(x) = {:6f},gradient={:6f}'.format(x,y,gradient))
    if(abs(gradient)>0.00001 and (abs(gradient)<0.0001)):
        print("break at "+str(i))
        break
    else:

        gradient = derivative_f(x)

        t=t+1

        'mt ← β1 · mt−1 + (1 − β1) · gt '
        m = b1*m + (1-b1)*gradient

        'vt ← β2 · vt−1 + (1 − β2) · g2'
        v = b2*v +(1-b2)*(gradient**2)

        'mt ← mt/(1 − βt1)'
        mt = m/(1-(b1**t))

        'vbt ← vt/(1 − βt2)'
        vt = v/(1-(b2**t))


        x = x- learning_rate * mt/(math.sqrt(vt)+e)

        y=f(x)



 

总体感觉RMSprop 最优

分享到:
评论

相关推荐

    梯度下降法原理与python实现.docx

    梯度下降法是一种优化算法,广泛应用于机器学习和深度学习中的参数优化,其核心思想是通过迭代更新模型参数,逐步逼近目标函数的最小值。在Python中实现梯度下降法通常涉及以下几个步骤: 1. 定义目标函数:首先,...

    工程优化算法python实现

    本文将详述几种常见的工程优化算法的Python实现,包括梯度下降法、共轭梯度法、牛顿迭代法以及拟牛顿法。 首先,我们来理解优化问题的核心:寻找一个函数的最小值或最大值。在机器学习中,这通常涉及到找到模型参数...

    梯度下降_梯度下降_

    梯度下降是一种优化算法,广泛应用于机器学习和深度学习领域,用于寻找函数的最小值。...在Python中,结合科学计算库如NumPy和Pandas,可以方便地实现梯度下降优化算法,进行有效的数据建模和预测。

    机器学习的优化程序库,用Python实现了梯度下降、LBFGS、rmsprop、adadelta 等算法。

    这个压缩包文件,名为"climin-master",显然包含了Python实现的一些优化算法,这些算法主要用于改进和加速机器学习模型的训练过程。下面我们将深入探讨其中提到的几个关键算法:梯度下降、LBFGS、RMSprop和Adadelta...

    梯度下降和梯度上升算法的实现

    梯度下降和梯度上升是两种在机器学习和优化问题中广泛应用的算法,它们主要用于寻找函数的局部极小值或极大值。理解这两种算法的工作原理及其实现至关重要,因为它们是许多机器学习模型(如线性回归、逻辑回归、神经...

    列文伯格-马夸尔特算法LM算法(基于Python编程语言实现)

    总的来说,列文伯格-马夸尔特算法在Python中实现为神经网络的参数优化提供了强大工具,它在处理非线性问题时表现出良好的性能和稳定性。了解并掌握这种算法对于深入理解和改进神经网络模型至关重要。通过深入学习LM...

    电子商务之价格优化算法:梯度下降:价格优化算法的实战案例研究.docx

    实战案例研究通过Python代码实现梯度下降价格优化。首先准备数据,然后定义利润函数、梯度函数和梯度下降算法本身。通过设置初始价格、学习率和迭代次数,梯度下降算法能够迭代更新价格,以找到最大化利润的最优价格...

    共轭梯度法与BFGS法Python实现

    在优化领域,共轭梯度法(Conjugate Gradient Method)和BFGS法(Broyden-Fletcher-Goldfarb-Shanno Algorithm)是两种广泛使用的无约束优化算法,尤其适用于解决大型线性或非线性优化问题。这两种方法都是迭代算法...

    基于梯度优化算法(GBO)整定PID参数

    本主题聚焦于如何利用梯度优化算法(GBO)来优化PID参数,以提升控制系统的性能。GBO是一种有效的数值优化方法,能够寻找使目标函数最小化的参数值。 首先,让我们详细了解一下PID控制器。PID控制器通过结合比例(P...

    机器学习线性回归梯度下降算法

    提到了吴恩达的机器学习视频、《Learn Python the Hard Way, 3rd Edition》、《Deep Learning》以及《统计学习》等,这些建议的学习资源可以帮助初学者建立起机器学习和深度学习的基础知识,并且掌握线性回归和梯度...

    电子商务之价格优化算法:梯度下降:持续学习与价格优化算法的未来.docx

    以一个简单的线性模型为例,我们可以通过Python编程语言实现梯度下降算法进行价格优化。在模型中,我们假设存在一个利润函数,该函数与商品价格的关系为二次函数。梯度下降算法从初始价格点开始,通过计算梯度,并用...

    Python-Nevergrad一个用于执行无梯度优化的Python工具箱

    与传统的梯度下降等方法不同,无梯度优化方法不依赖于目标函数的局部导数信息,而是通过其他策略,如模拟退火、遗传算法、随机搜索等来寻找全局最优解。 ### 2. Nevergrad库的核心特点 - **广泛的优化算法**:...

    梯度下降sg算法演示.zip

    code_resource_01可能是包含实现梯度下降算法的代码资源,可能包括Python或其他编程语言的实现,以及相应的数据集和可视化工具。通过分析和运行这些代码,我们可以更直观地理解SGD的工作原理,并可以调整超参数,如...

    基于python实现非线性优化算法.zip

    Python中的Scipy库提供了许多这些算法的实现,如`scipy.optimize.minimize`函数,它可以接受各种优化方法作为参数,如'Nelder-Mead'(简单梯度法)、'BFGS'(拟牛顿法)等。 1. **梯度下降法**:梯度下降是最基本的...

    python实现非线性优化算法

    本主题将深入探讨如何使用Python实现四种不同的非线性优化算法,并讨论学习率在优化过程中的重要性。 首先,我们要理解非线性优化的目标是找到一个函数的全局最优解,这个函数可能包含一个或多个变量,且不具有简单...

    电子商务之价格优化算法:梯度下降在动态定价中的应用.docx

    为了更好地理解梯度下降在动态定价中的应用,文中提供了一个简单的成本函数示例,并用Python代码演示了梯度下降算法的迭代过程。通过代码可以观察到,随着迭代次数的增加,价格逐步逼近最优值,从而实现成本函数的...

    电子商务之价格优化算法:梯度下降与消费者行为分析.docx

    为了说明梯度下降算法在价格优化中的应用,文档提供了一个基于Python的示例。在这个例子中,利用了一个简单的利润函数模型,并通过编写代码来实现梯度下降。代码中定义了利润函数和梯度函数,并通过一个梯度下降算法...

    电子商务之价格优化算法:梯度下降在需求预测模型中的应用.docx

    文章提供了使用梯度下降优化需求预测模型的代码示例。通过Python和Numpy库实现梯度下降算法,优化线性回归模型参数。数据集包含不同价格下的需求量,通过初始化参数、定义损失函数和梯度下降函数,循环迭代更新参数...

    Logistic 回归梯度下降法和牛顿法的 Python 实现.zip

    在这个主题中,我们将深入探讨两种优化算法——梯度下降法和牛顿法,它们在实现Logistic回归时经常被用到。这两种方法都是寻找函数最小值的有效手段,尤其在机器学习中用于参数拟合。 首先,我们来讨论梯度下降法。...

    电子商务之价格优化算法:梯度下降法的参数调整.docx

    电子商务中的价格优化算法涉及多方面的技术和策略,其中梯度下降法是一种被广泛应用的参数调整技术。梯度下降法是一种迭代优化算法,主要用于求解最小化问题,比如在电子商务中,通过该算法调整商品价格以最大化利润...

Global site tag (gtag.js) - Google Analytics