【深度学习】Pytorch基础

目录

  • [梯度下降算法(Gradient Descent)](#梯度下降算法(Gradient Descent))

梯度下降算法(Gradient Descent)

梯度下降算法在机器学习中应用十分的广泛,不论是在线性回归还是Logistic回归中,它的主要目的是通过迭代找到目标函数的最小值,或者收敛到最小值。

求下面函数的极值
y = x s i n ( x ) y=xsin(x) y=xsin(x)

可以发现在当前这个区间范围内这个函数有两个极小值点,如果我们想寻找当前函数在这个区间内的最小值点,那么当然是第二个极小值点更合适一些,可是并不一定能够如我们所愿顺利地找到第二个极小值点,这时候只能够通过多次尝试。

  • 梯度的概念:梯度就是函数对它的各个自变量求偏导后,由偏导数组成的一个向量。
    接着来看下一个函数

    既然算法是"梯度下降法",所以先求一下这个函数的梯度,当前的函数f(x)的梯度就是他的导数,这很简单
    f ( x ) ′ = 2 x − 2 f(x)' = 2x - 2 f(x)′=2x−2
    图上小红点的坐标是(6,f(6)),那么可以得到 f ( 6 ) ′ = 10 f(6)'=10 f(6)′=10
    现在用导数值的正负来表示方向 如果导数的值是正数,那么就代表x轴的正方向。如果导数的值是负数就代表x轴的负方向。那么就会发现知道了这个方向之后也就知道了应该让x往哪个方向变化f(x)的值减小。那么就让 朝着导数告诉我们的方向的反方向变化就好啦。
  • 梯度下降法的目标:搜索出来一个能让函数值尽可能小的位置,所以让x朝着红色箭头的方向走。
    代码中有一个eta变量,专业称为"学习率 "。使用数学表达式来更新x的过程那就是:
    x ← x − e t a ∗ d f ( x ) d x x \leftarrow x -eta*\frac{df(x)}{dx} x←x−eta∗dxdf(x)
    意思是让x减去eta乘以函数的导数。其中eta是为了控制x更新的幅度,将eta的值设置小一点,那么每一次的更新的幅度就会小一点。

代码实现

py 复制代码
import numpy as np
import matplotlib.pyplot as plt
# 定义 x 的范围
x = np.linspace(-7, 9, 400)  # 从 -7 到 9,总共 400 个点
y = (x - 1)**2 + 1  # 函数 y = (x-1)^2 + 1
# 计算 x = 6 时的 y 值
cur_x = 6
cur_y = (cur_x - 1)**2 + 1
eta = 0.05
iter = 1000
all_x = []# 记录迭代过程中的 x 值
all_y = []# 记录迭代过程中的 y 值
for i in range(iter):
    # 记录迭代过程
    all_x.append(cur_x)
    all_y.append(cur_y)
    # 计算导数
    dy = 2*cur_x - 2
    # 更新 x 和 y
    cur_x = cur_x - eta*dy
    cur_y = (cur_x - 1)**2 + 1
# 绘图
plt.figure(figsize=(10, 6))  # 设置图形大小
plt.plot(x, y, label=r'$y = (x-1)^2 + 1$', color='blue')  # 绘制函数曲线
plt.title('Plot of $y = (x-1)^2 + 1$')  # 图形标题
plt.xlabel('x')  # x 轴标签
plt.ylabel('y')  # y 轴标签
plt.axhline(0, color='black', linewidth=0.5, ls='--')  # 添加 x 轴
plt.axvline(0, color='black', linewidth=0.5, ls='--')  # 添加 y 轴
plt.grid(True)  # 添加网格
plt.legend()  # 添加图例
plt.scatter(np.array(all_x), np.array(all_y), color='red')# 绘制迭代过程
plt.show()  # 显示图形


相关推荐
远洋录2 分钟前
Vue 开发者的 React 实战指南:表单处理篇
前端·人工智能·react
亲持红叶5 分钟前
Chapter5.3 Decoding strategies to control randomness
人工智能·python·gpt·深度学习·算法·机器学习
大模型之路5 分钟前
微软震撼发布:Phi-4语言模型登陆Hugging Face
人工智能·microsoft·语言模型·大模型·llm·phi-4
蚝油菜花44 分钟前
FlowiseAI:Star!集成多种模型和100+组件的 LLM 应用低代码开发平台,拖拽组件轻松构建程序
人工智能·开源
CM莫问1 小时前
python实战(十四)——Bert-BiLSTM-CRF命名实体识别
人工智能·python·深度学习·算法·bert·实体识别·crf
ZZZXXE1 小时前
GLM: General Language Model Pretraining with Autoregressive Blank Infilling论文解读
人工智能·语言模型·自然语言处理
martian6651 小时前
深入详解人工智能语音识别之声学模型与语言模型:掌握HMM、CTC等方法
人工智能·语言模型·语音识别·声学模型
2401_899104112 小时前
适合与简约设计搭配的复古符号推荐
人工智能·数码相机
Crazy learner2 小时前
从语音识别到语音合成:一步步构建智能语音交互系统
人工智能·交互·语音识别
985小水博一枚呀2 小时前
【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍训练网络的时候如何判断过拟合和欠拟合?
人工智能·深度学习·神经网络·自然语言处理·面试·cnn