人工智能与机器学习——梯度下降法求函数极值

本文介绍了梯度下降法和牛顿法的基本原理,并通过实例展示了如何使用Excel和Python求解函数极值。探讨了这两种方法在店铺面积与营业额问题中的应用,同时对比了最小二乘法与梯度下降法的差异。
摘要由CSDN通过智能技术生成

一、原理介绍

1. 梯度下降法的原理

梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。

2. 梯度下降法求解过程

顾名思义,梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值)。

其迭代公式为在这里插入图片描述, 其中在这里插入图片描述代表梯度负方向,
在这里插入图片描述表示梯度方向上的搜索步长。梯度方向我们可以通过对函数求导得到,步长的确定比较麻烦,太大了的话可能会发散,太小收敛速度又太慢。一般确定步长的方法是由线性搜索算法来确定,即把下一个点的坐标看做是ak+1的函数,然后求满足f(ak+1)的最小值的ak+1即可。

因为一般情况下,梯度向量为0的话说明是到了一个极值点,此时梯度的幅值也为0.而采用梯度下降算法进行最优化求解时,算法迭代的终止条件是梯度向量的幅值接近0即可,可以设置个非常小的常数阈值。

3. 牛顿法原理

牛顿法(英语:Newton’s method)又称为牛顿-拉弗森方法(英语:Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数在这里插入图片描述的泰勒级数的前面几项来寻找方程在这里插入图片描述的根。

4. 牛顿法方法说明

在这里插入图片描述

二、用Excel完成函数极值的求解

1. 求解函数题目

用梯度法求二次函数的极小点及极小值,函数如下:二
已知初始点在这里插入图片描述,迭代精度在这里插入图片描述

2. 用excel计算

在这里插入图片描述

① ∂z/∂x1 计算方法

在这里插入图片描述

② ∂z/∂x2 计算方法

在这里插入图片描述

③ ⊿x1 计算方法

η*∂z/∂x1

④ ⊿x2 计算方法

η*∂z/∂x2

3. 计算结果

在这里插入图片描述
极小点(4,2) 极小值-8

三、用 Python编程完成函数极值的求解

1. 显示函数图像

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import math
from mpl_toolkits.mplot3d import Axes3D
import warnings
 
# 解决中文显示问题
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
%matplotlib inline
 

"""
二维原始图像
1、构建一个函数为 y = x1^2 + 2 x2^2 - 4 x1 - 2 x1 x2 的图像。
2、随机生成X1,X2点,根据X1,X2点生成Y点。
3、画出图像。
"""
def f2(x1,x2):
    return x1**2 + 2 * x2**2 - 4*x1 - 2 * x1 * x2 
 
X1 = np.arange(-4,4,0.2)
X2 = np.arange(-4,4,0.2)
X1, X2 = np.meshgrid(X1, X2) # 生成xv、yv,将X1、X2变成n*m的矩阵,方便后面绘图
Y = np.array(list(map(lambda t : f2(t[0],t[1]),zip(X1.flatten(),X2.flatten()))))
Y.shape = X1.shape # 1600的Y图还原成原来的(40,40)
 
%matplotlib inline
#作图
fig = plt.figure(facecolor='w')
ax = Axes3D(fig)
ax.plot_surface(X1,X2,Y,rstride=1,cstride=1,cmap=plt.cm.jet)
ax.set_title(u'$ y = x1^2 + 2 x2^2 - 4 x1 - 2 x1 x2 $')</
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值