• 微课视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
微课江湖
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 微课视频
  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链
您的位置:首页 > 网络安全 >区块链 > 在Python实现梯度下降优化算法

在Python实现梯度下降优化算法

作者:区块网 字体:[增加 减小] 来源:互联网 时间:2018-11-03

区块网向大家分享了在Python实现梯度下降优化算法,其中包含Python,梯度下降等知识点,遇到此问题的同学们可以参考下
每一个机器学习工程师都在寻求改进他们的模型的性能。优化是机器学习中最重要的领域之一。优化使我们能够为我们的问题案例选择与机器学习算法或方法找到相关的最佳参数。优化算法有几种类型。也许最流行的是梯度下降优化算法。许多机器学习工程师第一次遇到梯度下降法是在他们对python网络的介绍中。在本教程中,我们将教你如何在python中从头实现梯度下降。首先,梯度下降法到底是什么?

什么是梯度下降法?

梯度下降法是一种通过重复步骤使机器学习模型收敛到最小值的优化算法。从本质上讲,梯度下降法是通过求出函数输出最小的值来最小化函数的。通常,这个函数通常是一个损失函数。损失函数衡量的是我们的模型与实际情况相比的糟糕程度。因此,我们只有减少这种损失才有意义。

一个简单的梯度下降算法如下:

·获得使F(x)最小化的函数
·初始化一个值x,从该值开始下降就进行优化
·指定一个学习率,该学习率将确定要下降多少步,或收敛到最小值的速度有多快
·得到x的导数(下降)
·继续下降,这个值的导数乘以学习速率
·不断更新x的值
·检查您的停止状态,看是否要停止
·如果条件满足,停止。如果没有,则使用新的x值继续第4步,并保持重复算法

在Python中实现梯度下降

在这里,我们将使用python实现梯度下降的简单表示。我们将创建一个任意的损失函数,并试图找到该函数的局部最小值。

我函数:- f(x)= x35 x2+ 7

我们将首先使用一组从-1到3的值(为了确保陡峭的曲线,任意进行选择)来视化这个函数


import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

creating the function and plotting it
function = lambda x: (x ** 3)-(3 *(x ** 2))+7
#Get 1000 evenly spaced numbers between -1 and 3 (arbitratil chosen to ensure steep curve)
x = np.linspace(-1,3,500)
#Plot the curve
plt.plot(x, function(x))
plt.show()


结果如下:

然后,我们将继续为梯度下降创建两个函数:

第一个是导数函数:这个函数接受x的值并根据我们指定的初始函数返回它的导数。如下图所示:

第二个是阶跃函数:这是实际梯度下降发生的函数。该函数接受x的初始值或先前值,根据通过学习率采取的步骤对其进行更新,并输出达到停止条件的x的最小值。对于停止条件,我们将使用精确停止。这意味着,当旧x和更新x之间的绝对差大于一个值时,算法应该停止。函数还会输出x的最小值,以及达到该值所需的步骤或下降次数。
该函数如下图所示:


def deriv(x):

'''
Description: This function takes in a value of x and returns its derivative based on the
initial function we specified.

Arguments:

x - a numerical value of x

Returns:

x_deriv - a numerical value of the derivative of x

'''

x_deriv = 3* (x**2) - (6 * (x))
return x_deriv
def step(x_new, x_prev, precision, l_r):

'''
Description: This function takes in an initial or previous value for x, updates it based on
steps taken via the learning rate and outputs the most minimum value of x that reaches the precision satisfaction.

Arguments:

x_new - a starting value of x that will get updated based on the learning rate

x_prev - the previous value of x that is getting updated to the new one

precision - a precision that determines the stop of the stepwise descent

l_r - the learning rate (size of each descent step)

Output:

1. Prints out the latest new value of x which equates to the minimum we are looking for
2. Prints out the the number of x values which equates to the number of gradient descent steps
3. Plots a first graph of the function with the gradient descent path
4. Plots a second graph of the function with a zoomed in gradient descent path in the important area

'''

# create empty lists where the updated values of x and y wil be

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 不到 50 行的 Python 代码构建最小的区块链
  • 如何使用Python编写一个简单且安全的区块链数据库API?
  • 用Python从零开始创建区块链
  • 在Python实现梯度下降优化算法

相关文章

  • 2018-11-03区块链-未来已来,只是尚未流行
  • 2018-11-03P网(poloniex)数字货币交易所使用教程
  • 2018-11-03比特币2.0:以太坊(智能合约简介)
  • 2018-11-03什么是分叉?什么是比特币分叉?
  • 2018-11-03数字货币和区块链技术名词汇表
  • 2018-11-03基于以太坊的联盟链?Quorum机制初探(中)
  • 2018-11-03数字货币与加密货币之间的关系
  • 2018-11-03蒲公英(Dandelion)隐私协议是什么
  • 2018-11-03解析比特币钱包工作原理
  • 2018-11-03关于区块链技术最重要的三要素

文章分类

  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链

最近更新的内容

    • 你们以为分片(Sharding)真的是什么新技术吗
    • 如何在IoT Chain(万物链)部署智能合约
    • 一文看懂比特币ETF
    • DPOS机制会比POW机制表现更好吗?
    • EMONT Frenzy一EMONT联盟的区块链游戏
    • 智能合约是什么及我们需要它们的原因是什么
    • 区块链简介-什么是联盟链
    • 加密货币的经济学市值问题(从零开始学区块链)
    • EOSForce超级节点部署与测试网搭建指南
    • 区块链是如何做到交易数据防篡改的

关于我们 - 联系我们 - 免责声明 - 网站地图

©2015-2018 All Rights Reserved. 微课江湖 版权所有