0
点赞
收藏
分享

微信扫一扫

梯度下降算法在最小化目标函数F的搜索轨迹

Hyggelook 2022-03-31 阅读 55

一、问题描述

考虑一元目标函数 。
(1)写出目标函数F的 。
(2)初始值w=0, 请画出梯度下降算法在最小化目标函数F的搜索轨迹。初始值w=2 呢?
在这里插入图片描述

二、实验目的

梯度下降算法在最小化目标函数F的搜索轨迹。

三、实验内容

3.1数据导入

自动生成的数据。

3.2数据预处理

目标函数

3.3算法描述

假定目标函数可微,算法从空间中的任一给定初始点开始进行指定轮数的搜索,在每一轮的搜索中,都计算目标函数的在当前的梯度,并沿着与梯度相反的方向按照一定步长移动到下一个可行点。

for t in range(N):
    # 数据的处理
    w = w - eta * (2 * w - 1 )
    y[t] = w
    X[t] = w * w - w + 1

3.4主要代码

import numpy as np
import matplotlib.pyplot as plt

def addLine(X):
    length = X.shape[0]
    num = np.ones((length, 1))
    for i in range(0, length):
        num[i] = i + 1
    X = np.c_[num, X]
    return X


def printLine(x_name, y_name, title, X):
    plt.figure(1)
    plt.plot(X[:, 0], X[:, 1], 'bo', ms=3)
    plt.plot(X[:, 0], X[:, 1], 'b', ms=3, label='line1')
    plt.show()
    return 0

#N为搜索的轮数
#eta为学习速率
N, eta = 20, 0.1
w = 0
y = np.ones((N, 1))
X = np.ones((N, 1))

for t in range(N):
    # 数据的处理
    w = w - eta * (2 * w - 1 )
    y[t] = w
    X[t] = w * w - w + 1
y = addLine(y)
X = addLine(X)
# W与N的关系图
printLine('N', 'W', '', y)
# F(W)函数图
printLine('N', 'F(W)', '', X)
print(w)

四、实验结果及分析
W=0时,
在这里插入图片描述
W与N(搜索的轮数)的关系图
W = 0.49423539247696574
在这里插入图片描述

F(W)函数图
分析:w从0,在每次循环中沿着梯度反方向更新w的值,最终得到w = 0.494。
W=2时,
在这里插入图片描述

W与N(搜索的轮数)的关系图
W = 0.5172938225691027

在这里插入图片描述

F(W)函数图
分析:w从0,在每次循环中沿着梯度反方向更新w的值,最终得到w = 0.517。
越接近最小值时,下降速度越慢。收敛: 当前后两次迭代的差值小于某一值时,迭代结束。

代码下载

在这里插入图片描述

点击这里

https://download.csdn.net/download/m0_61504367/85040283

举报

相关推荐

0 条评论