【机器学习】分而知变,积而见道:微积分中的世界之思

news2024/12/22 5:06:28

文章目录

    • 微积分基础:理解变化与累积的数学
    • 前言
    • 一、微积分概述与基础概念
      • 1.1 微积分的定义与重要性
        • 1.1.1 微积分的基本组成
        • 1.1.2 微积分在机器学习中的应用
      • 1.2 微积分的历史与发展
    • 二、极限与连续性
      • 2.1 极限的定义与计算
        • 2.1.1 极限的直观理解
        • 2.1.2 极限的数学定义
        • 2.1.3 极限的计算方法
        • 2.1.4 实例:计算极限
      • 2.2 连续性的定义与性质
        • 2.2.1 连续函数的定义
        • 2.2.2 间断点的类型
        • 2.2.3 连续性的性质
        • 2.2.4 实例:连续性判断
      • 2.3 实战项目:使用Python绘制函数的极限与连续性示意图
        • 2.3.1 项目目标
        • 2.3.2 Python代码实现
        • 2.3.3 运行结果
        • 2.3.4 结果解读
    • 三、导数的概念与计算
      • 3.1 导数的定义
        • 3.1.1 导数的几何意义
        • 3.1.2 导数的物理意义
        • 3.1.3 导数的数学定义
      • 3.2 导数的计算规则
        • 3.2.1 基本导数法则
        • 3.2.2 乘积法则与商法则
        • 3.2.3 链式法则(Chain Rule)
      • 3.3 实例:简单导数计算
        • 3.3.1 示例 1:多项式函数的导数
        • 3.3.2 示例 2:指数函数的导数
        • 3.3.3 示例 3:商函数的导数
      • 3.4 实战项目:使用SymPy库进行符号导数计算并绘制导数曲线
        • 3.4.1 项目目标
        • 3.4.2 Python代码实现
        • 3.4.3 运行结果
        • 3.4.4 结果解读
    • 四、导数的应用:优化与变化
      • 4.1 优化问题的数学表述
        • 4.1.1 优化问题的标准形式
        • 4.1.2 导数在优化中的作用
      • 4.2 梯度下降法
        • 4.2.1 梯度的定义
        • 4.2.2 梯度下降的更新规则
        • 4.2.3 梯度下降的类型
      • 4.3 实例:梯度下降法在简单模型中的应用
        • 4.3.1 项目目标
        • 4.3.2 Python代码实现
        • 4.3.3 运行结果
        • 4.3.4 结果解读
    • 五、总结与展望

微积分基础:理解变化与累积的数学

💬 欢迎讨论:如果你在阅读过程中有任何疑问或想要进一步探讨的内容,欢迎在评论区留言!我们一起学习、一起成长。

👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏并分享给更多想了解机器学习的朋友!

🚀 开启微积分之旅:微积分是理解变化和累积的数学工具,是机器学习中的重要基础。让我们一起深入探索微积分的核心概念,打好数学基础,为后续的机器学习学习做好准备。


前言

在机器学习的学习旅程中,微积分作为支撑理论之一,是理解模型优化与变化规律的关键。无论是在梯度下降、损失函数优化,还是在复杂模型的训练过程中,微积分都有着举足轻重的作用。在之前的博客中,我们已经介绍了线性代数概率论的基础,这些都为进一步的学习奠定了基础。今天,我们将深入讲解微积分基础,特别是在机器学习中的应用。

如果你是机器学习的初学者,或者希望加强自己在微积分方面的基础知识,今天的内容将帮助你理解一些核心概念,并为后续更复杂的学习打下坚实的基础。


一、微积分概述与基础概念

1.1 微积分的定义与重要性

微积分是数学的一个分支,主要研究变化率(微分)和累积量(积分)。它在科学、工程、经济学以及机器学习等领域中有广泛的应用。

1.1.1 微积分的基本组成
  1. 微分学(Differential Calculus):研究函数的变化率,主要涉及导数的概念。
  2. 积分学(Integral Calculus):研究函数的累积量,主要涉及积分的概念。
1.1.2 微积分在机器学习中的应用
  • 梯度下降优化:利用导数计算损失函数的梯度,以更新模型参数。
  • 损失函数的最小化:通过微积分方法找到损失函数的最小值,从而优化模型性能。
  • 概率密度函数的积分:在概率模型中,积分用于计算概率分布的期望值和方差。

1.2 微积分的历史与发展

微积分的发展历史悠久,主要由艾萨克·牛顿(Isaac Newton)和戈特弗里德·莱布尼茨(Gottfried Wilhelm Leibniz)在17世纪独立发展起来。

  • 牛顿:主要用于物理学中的运动和力的研究。
  • 莱布尼茨:发展了微积分的符号表示法,如积分符号 ∫ \int 和微分符号 d d d

随着时间的推移,微积分在数学中的地位不断提升,并成为现代科学和工程的基础工具之一。


二、极限与连续性

2.1 极限的定义与计算

极限是微积分的基石,描述了函数在某一点附近的行为。

2.1.1 极限的直观理解

当变量趋近于某个值时,函数的输出趋近于一个特定的数值,这个数值就是函数在该点的极限。

2.1.2 极限的数学定义

函数 f ( x ) f(x) f(x) x = a x = a x=a 处的极限是 L L L,记作:
lim ⁡ x → a f ( x ) = L \lim_{x \to a} f(x) = L xalimf(x)=L

2.1.3 极限的计算方法
  1. 直接代入法
    如果 f ( x ) f(x) f(x) x = a x = a x=a 处连续,则:
    lim ⁡ x → a f ( x ) = f ( a ) \lim_{x \to a} f(x) = f(a) xalimf(x)=f(a)

  2. 因式分解法
    用于消除分母中的零,或约去公因式。

  3. 洛必达法则(L’Hospital’s Rule)
    当极限形式为 0 0 \frac{0}{0} 00 ∞ ∞ \frac{\infty}{\infty} 时,可以对分子和分母分别求导,然后再求极限。

2.1.4 实例:计算极限

示例 1:计算 lim ⁡ x → 2 x 2 − 4 x − 2 \lim_{x \to 2} \frac{x^2 - 4}{x - 2} limx2x2x24

解答
直接代入 x = 2 x = 2 x=2 得到 0 0 \frac{0}{0} 00 的不定形式,需进行因式分解:
x 2 − 4 x − 2 = ( x − 2 ) ( x + 2 ) x − 2 = x + 2 \frac{x^2 - 4}{x - 2} = \frac{(x - 2)(x + 2)}{x - 2} = x + 2 x2x24=x2(x2)(x+2)=x+2
因此:
lim ⁡ x → 2 ( x + 2 ) = 4 \lim_{x \to 2} (x + 2) = 4 x2lim(x+2)=4

示例 2:计算 lim ⁡ x → 0 sin ⁡ ( x ) x \lim_{x \to 0} \frac{\sin(x)}{x} limx0xsin(x)

解答
使用洛必达法则:
lim ⁡ x → 0 sin ⁡ ( x ) x = lim ⁡ x → 0 cos ⁡ ( x ) 1 = 1 \lim_{x \to 0} \frac{\sin(x)}{x} = \lim_{x \to 0} \frac{\cos(x)}{1} = 1 x0limxsin(x)=x0lim1cos(x)=1

2.2 连续性的定义与性质

连续性描述了函数在某一点没有“跳跃”或“断裂”的性质。

2.2.1 连续函数的定义

函数 f ( x ) f(x) f(x) x = a x = a x=a 处连续,当且仅当满足以下三个条件:

  1. f ( a ) f(a) f(a) 存在。
  2. lim ⁡ x → a f ( x ) \lim_{x \to a} f(x) limxaf(x) 存在。
  3. lim ⁡ x → a f ( x ) = f ( a ) \lim_{x \to a} f(x) = f(a) limxaf(x)=f(a)
2.2.2 间断点的类型
  1. 可去间断点(Removable Discontinuity)
    极限存在但不等于函数值,或函数值未定义。

  2. 跳跃间断点(Jump Discontinuity)
    左右极限存在但不相等。

  3. 无穷间断点(Infinite Discontinuity)
    极限为正无穷或负无穷。

2.2.3 连续性的性质
  • 四则运算:若 f ( x ) f(x) f(x) g ( x ) g(x) g(x) x = a x = a x=a 处连续,则 f ( x ) + g ( x ) f(x) + g(x) f(x)+g(x) f ( x ) − g ( x ) f(x) - g(x) f(x)g(x) f ( x ) × g ( x ) f(x) \times g(x) f(x)×g(x) f ( x ) g ( x ) \frac{f(x)}{g(x)} g(x)f(x)(当 g ( a ) ≠ 0 g(a) \neq 0 g(a)=0)在 x = a x = a x=a 处连续。
  • 复合函数:若 f ( x ) f(x) f(x) x = a x = a x=a 处连续,且 g ( x ) g(x) g(x) y = f ( a ) y = f(a) y=f(a) 处连续,则 g ( f ( x ) ) g(f(x)) g(f(x)) x = a x = a x=a 处连续。
2.2.4 实例:连续性判断

示例 1:判断函数 f ( x ) = x 2 − 1 x − 1 f(x) = \frac{x^2 - 1}{x - 1} f(x)=x1x21 x = 1 x = 1 x=1 处是否连续。

解答
简化函数:
f ( x ) = ( x − 1 ) ( x + 1 ) x − 1 = x + 1 (当  x ≠ 1  时) f(x) = \frac{(x - 1)(x + 1)}{x - 1} = x + 1 \quad \text{(当 } x \neq 1 \text{ 时)} f(x)=x1(x1)(x+1)=x+1(当 x=1 时)
x = 1 x = 1 x=1 处:
lim ⁡ x → 1 f ( x ) = 2 \lim_{x \to 1} f(x) = 2 x1limf(x)=2
若定义 f ( 1 ) = 2 f(1) = 2 f(1)=2,则 f ( x ) f(x) f(x) x = 1 x = 1 x=1 处连续;否则,是可去间断点。


2.3 实战项目:使用Python绘制函数的极限与连续性示意图

通过实战项目,我们将使用Python绘制函数在某一点的极限与连续性的示意图,帮助直观理解这些概念。

2.3.1 项目目标
  • 绘制函数 f ( x ) = x 2 − 4 x − 2 f(x) = \frac{x^2 - 4}{x - 2} f(x)=x2x24 x = 2 x = 2 x=2 处的极限示意图。
  • 标注函数在 x = 2 x = 2 x=2 处的连续性情况。
2.3.2 Python代码实现
import numpy as np
import matplotlib.pyplot as plt

# 定义函数 f(x) = (x^2 - 4)/(x - 2), x != 2
def f(x):
    return (x**2 - 4)/(x - 2)

# 定义简化后的函数 g(x) = x + 2, x != 2
def g(x):
    return x + 2

# 生成 x 值,避开 x = 2
x = np.linspace(1, 3, 400)
x = x[x != 2]
y = f(x)
y_simplified = g(x)

# 绘制函数
plt.figure(figsize=(8, 6))
plt.plot(x, y, label=r'$f(x) = \frac{x^2 - 4}{x - 2}$', color='blue')
plt.plot(x, y_simplified, '--', label=r'$g(x) = x + 2$', color='red')

# 标注 x = 2
plt.axvline(x=2, color='gray', linestyle='--')
plt.scatter(2, 4, color='green', zorder=5, label=r'$f(2) = 4$')

# 设置图例和标签
plt.legend(fontsize=12)
plt.xlabel(r'$x$', fontsize=12)
plt.ylabel(r'$f(x)$', fontsize=12)
plt.title(r'函数 $f(x)$ 和其简化形式 $g(x)$ 的示意图', fontsize=14)
plt.grid(True)

# 显示图表
plt.show()

2.3.3 运行结果

在这里插入图片描述

2.3.4 结果解读
  1. 函数 f ( x ) f(x) f(x):在 x = 2 x = 2 x=2 处存在一个可去间断点,函数值为4。
  2. 简化后的函数 g ( x ) = x + 2 g(x) = x + 2 g(x)=x+2:是 f ( x ) f(x) f(x) 的连续扩展,消除了分母为零的问题。
  3. 图中标注:绿色点表示 f ( 2 ) = 4 f(2) = 4 f(2)=4,显示了在 x = 2 x = 2 x=2 处函数的定义和值。

通过这个示意图,我们可以直观地看到函数在某一点的极限与连续性情况。


三、导数的概念与计算

3.1 导数的定义

导数是微积分的核心概念之一,描述了函数在某一点的瞬时变化率。

3.1.1 导数的几何意义

导数表示函数在某一点处的切线斜率,即函数在该点的瞬时变化率。

3.1.2 导数的物理意义

在物理学中,导数用于描述速度、加速度等瞬时变化量。例如,位置函数的导数是速度函数,速度函数的导数是加速度函数。

3.1.3 导数的数学定义

函数 f ( x ) f(x) f(x) 在点 x = a x = a x=a 处的导数定义为:
f ′ ( a ) = lim ⁡ h → 0 f ( a + h ) − f ( a ) h f'(a) = \lim_{h \to 0} \frac{f(a + h) - f(a)}{h} f(a)=h0limhf(a+h)f(a)

如果这个极限存在,则称 f ( x ) f(x) f(x) x = a x = a x=a 处可导。

3.2 导数的计算规则

3.2.1 基本导数法则
  1. 常数法则
    d d x c = 0 \frac{d}{dx}c = 0 dxdc=0
    其中, c c c 是常数。

  2. 幂函数法则
    d d x x n = n x n − 1 \frac{d}{dx}x^n = n x^{n-1} dxdxn=nxn1
    其中, n n n 是常数。

  3. 指数函数法则
    d d x e x = e x \frac{d}{dx}e^x = e^x dxdex=ex
    d d x a x = a x ln ⁡ ( a ) \frac{d}{dx}a^x = a^x \ln(a) dxdax=axln(a)
    其中, a a a 是正数常数。

  4. 对数函数法则
    d d x ln ⁡ ( x ) = 1 x \frac{d}{dx}\ln(x) = \frac{1}{x} dxdln(x)=x1
    d d x log ⁡ a ( x ) = 1 x ln ⁡ ( a ) \frac{d}{dx}\log_a(x) = \frac{1}{x \ln(a)} dxdloga(x)=xln(a)1

  5. 三角函数法则
    d d x sin ⁡ ( x ) = cos ⁡ ( x ) \frac{d}{dx}\sin(x) = \cos(x) dxdsin(x)=cos(x)
    d d x cos ⁡ ( x ) = − sin ⁡ ( x ) \frac{d}{dx}\cos(x) = -\sin(x) dxdcos(x)=sin(x)
    d d x tan ⁡ ( x ) = sec ⁡ 2 ( x ) \frac{d}{dx}\tan(x) = \sec^2(x) dxdtan(x)=sec2(x)

3.2.2 乘积法则与商法则
  1. 乘积法则(Product Rule)
    d d x [ u ( x ) ⋅ v ( x ) ] = u ′ ( x ) ⋅ v ( x ) + u ( x ) ⋅ v ′ ( x ) \frac{d}{dx}[u(x) \cdot v(x)] = u'(x) \cdot v(x) + u(x) \cdot v'(x) dxd[u(x)v(x)]=u(x)v(x)+u(x)v(x)

  2. 商法则(Quotient Rule)
    d d x [ u ( x ) v ( x ) ] = u ′ ( x ) ⋅ v ( x ) − u ( x ) ⋅ v ′ ( x ) v ( x ) 2 \frac{d}{dx}\left[\frac{u(x)}{v(x)}\right] = \frac{u'(x) \cdot v(x) - u(x) \cdot v'(x)}{v(x)^2} dxd[v(x)u(x)]=v(x)2u(x)v(x)u(x)v(x)

3.2.3 链式法则(Chain Rule)

当函数是复合函数时,使用链式法则进行求导:
d d x f ( g ( x ) ) = f ′ ( g ( x ) ) ⋅ g ′ ( x ) \frac{d}{dx}f(g(x)) = f'(g(x)) \cdot g'(x) dxdf(g(x))=f(g(x))g(x)

3.3 实例:简单导数计算

3.3.1 示例 1:多项式函数的导数

问题:计算函数 f ( x ) = 3 x 4 − 5 x 2 + 6 x − 2 f(x) = 3x^4 - 5x^2 + 6x - 2 f(x)=3x45x2+6x2 的导数。

解答
应用幂函数法则:
f ′ ( x ) = 12 x 3 − 10 x + 6 f'(x) = 12x^3 - 10x + 6 f(x)=12x310x+6

3.3.2 示例 2:指数函数的导数

问题:计算函数 g ( x ) = e 2 x g(x) = e^{2x} g(x)=e2x 的导数。

解答
应用指数函数法则和链式法则:
g ′ ( x ) = 2 e 2 x g'(x) = 2e^{2x} g(x)=2e2x

3.3.3 示例 3:商函数的导数

问题:计算函数 h ( x ) = sin ⁡ ( x ) x h(x) = \frac{\sin(x)}{x} h(x)=xsin(x) 的导数。

解答
应用商法则:
h ′ ( x ) = cos ⁡ ( x ) ⋅ x − sin ⁡ ( x ) ⋅ 1 x 2 = x cos ⁡ ( x ) − sin ⁡ ( x ) x 2 h'(x) = \frac{\cos(x) \cdot x - \sin(x) \cdot 1}{x^2} = \frac{x \cos(x) - \sin(x)}{x^2} h(x)=x2cos(x)xsin(x)1=x2xcos(x)sin(x)

3.4 实战项目:使用SymPy库进行符号导数计算并绘制导数曲线

通过实战项目,我们将使用Python的SymPy库进行符号导数计算,并绘制函数及其导数的曲线,帮助直观理解导数的概念。

3.4.1 项目目标
  • 计算函数 f ( x ) = x 3 − 4 x + 1 f(x) = x^3 - 4x + 1 f(x)=x34x+1 的导数。
  • 绘制函数 f ( x ) f(x) f(x) 和其导数 f ′ ( x ) f'(x) f(x) 的曲线。
  • 标注导数在不同点的值,展示函数的增长与减少趋势。
3.4.2 Python代码实现
import numpy as np
import matplotlib.pyplot as plt
import sympy as sp

# 定义符号变量
x = sp.symbols('x')

# 定义函数 f(x) = x^3 - 4x + 1
f = x**3 - 4*x + 1

# 计算导数 f'(x)
f_prime = sp.diff(f, x)

# 将符号表达式转换为数值函数
f_func = sp.lambdify(x, f, 'numpy')
f_prime_func = sp.lambdify(x, f_prime, 'numpy')

# 生成 x 值
x_vals = np.linspace(-3, 3, 400)
y_vals = f_func(x_vals)
y_prime_vals = f_prime_func(x_vals)

# 绘制函数和导数曲线
plt.figure(figsize=(10,6))
plt.plot(x_vals, y_vals, label='f(x) = x³ - 4x + 1', color='blue')
plt.plot(x_vals, y_prime_vals, label="f'(x) = 3x² - 4", color='red', linestyle='--')

# 标注关键点
critical_points = sp.solve(f_prime, x)
for point in critical_points:
    y_cp = f_func(point)
    y_prime_cp = f_prime_func(point)
    plt.scatter(point, y_cp, color='green')
    plt.annotate(f'({point:.2f}, {y_cp:.2f})', (point, y_cp),
                 textcoords="offset points", xytext=(0,10), ha='center')

# 设置图例和标签
plt.legend()
plt.xlabel('x')
plt.ylabel('y')
plt.title('函数 f(x) 及其导数 f\'(x) 的曲线')
plt.grid(True)
plt.show()
3.4.3 运行结果

3.4.4 结果解读
  1. 函数 f ( x ) = x 3 − 4 x + 1 f(x) = x^3 - 4x + 1 f(x)=x34x+1

    • 蓝色实线表示原函数的曲线。
  2. 导数 f ′ ( x ) = 3 x 2 − 4 f'(x) = 3x^2 - 4 f(x)=3x24

    • 红色虚线表示函数的导数曲线,展示了函数在各点的变化率。
  3. 关键点标注

    • 绿色点表示函数的临界点,即导数为零的点。
    • 这些点对应函数的极大值和极小值,展示了函数的增长和减少趋势。

通过这个示意图,我们可以直观地看到函数在不同点的变化率,以及导数在优化中的重要作用。


四、导数的应用:优化与变化

4.1 优化问题的数学表述

在机器学习中,优化问题是核心任务之一。优化的目标是找到使得某个目标函数(如损失函数)最小化或最大化的参数值。

4.1.1 优化问题的标准形式

min ⁡ θ J ( θ ) \min_{\theta} J(\theta) θminJ(θ)

其中:

  • θ \theta θ 表示模型的参数。
  • J ( θ ) J(\theta) J(θ) 表示目标函数,通常是损失函数。
4.1.2 导数在优化中的作用

导数提供了目标函数在某一点的变化率信息,帮助我们理解目标函数的趋势,从而指导参数更新的方向和步长。

4.2 梯度下降法

梯度下降法是最常用的优化算法之一,旨在通过迭代更新参数,逐步逼近目标函数的最小值。

4.2.1 梯度的定义

梯度是目标函数对参数的偏导数组成的向量,表示目标函数在参数空间中的上升最快方向。

∇ J ( θ ) = [ ∂ J ∂ θ 1 , ∂ J ∂ θ 2 , … , ∂ J ∂ θ n ] \nabla J(\theta) = \left[ \frac{\partial J}{\partial \theta_1}, \frac{\partial J}{\partial \theta_2}, \dots, \frac{\partial J}{\partial \theta_n} \right] J(θ)=[θ1J,θ2J,,θnJ]

4.2.2 梯度下降的更新规则

θ : = θ − α ∇ J ( θ ) \theta := \theta - \alpha \nabla J(\theta) θ:=θαJ(θ)

其中:

  • α \alpha α 是学习率,控制每次更新的步长。
  • ∇ J ( θ ) \nabla J(\theta) J(θ) 是目标函数在当前参数 θ \theta θ 处的梯度。
4.2.3 梯度下降的类型
  1. 批量梯度下降(Batch Gradient Descent)

    • 使用整个训练集计算梯度,适用于小型数据集。
  2. 随机梯度下降(Stochastic Gradient Descent, SGD)

    • 每次使用一个样本计算梯度,适用于大型数据集。
  3. 小批量梯度下降(Mini-Batch Gradient Descent)

    • 每次使用一小部分样本计算梯度,结合了批量和随机梯度下降的优点。

4.3 实例:梯度下降法在简单模型中的应用

通过实战项目,我们将实现一个简单的线性回归模型,并使用梯度下降法优化模型参数。

4.3.1 项目目标
  • 建立一个线性回归模型 y = θ 0 + θ 1 x y = \theta_0 + \theta_1 x y=θ0+θ1x
  • 使用梯度下降法最小化均方误差(Mean Squared Error, MSE)。
  • 可视化损失函数的下降过程。
4.3.2 Python代码实现
import numpy as np
import matplotlib.pyplot as plt

# 生成模拟数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)  # y = 4 + 3x + Gaussian noise

# 添加 x0 = 1 到每个实例(截距项)
X_b = np.c_[np.ones((100, 1)), X]  # X_b.shape = (100, 2)

# 初始化参数 theta = [theta0, theta1]
theta = np.random.randn(2, 1)

# 梯度下降参数
learning_rate = 0.1
n_iterations = 1000
m = 100  # 样本数量

# 存储损失值
loss_history = []

for iteration in range(n_iterations):
    # 计算梯度
    gradients = 2 / m * X_b.T.dot(X_b.dot(theta) - y)
    # 更新参数
    theta = theta - learning_rate * gradients
    # 计算当前的损失(均方误差)
    loss = (1 / m) * np.sum((X_b.dot(theta) - y) ** 2)
    loss_history.append(loss)

# 输出优化后的参数
print(f"优化后的 theta0(截距): {theta[0][0]:.2f}")
print(f"优化后的 theta1(斜率): {theta[1][0]:.2f}")

# 绘制损失函数下降曲线
plt.figure(figsize=(8, 6))
plt.plot(range(n_iterations), loss_history, color='purple')
plt.xlabel('迭代次数', fontsize=12)
plt.ylabel('均方误差 (MSE)', fontsize=12)
plt.title('梯度下降优化过程中的损失变化', fontsize=14)
plt.grid(True)
plt.show()

# 绘制数据与回归线
plt.figure(figsize=(8, 6))
plt.scatter(X, y, color='blue', label='数据点')
plt.plot(X, X_b.dot(theta), color='red', label='拟合的回归线')
plt.xlabel('x', fontsize=12)
plt.ylabel('y', fontsize=12)
plt.title('线性回归模型与数据点', fontsize=14)
plt.legend(fontsize=12)
plt.grid(True)
plt.show()

4.3.3 运行结果
优化后的theta0(截距): 4.22
优化后的theta1(斜率): 2.97
4.3.4 结果解读
  1. 优化后的参数

    • θ 0 ≈ 4.22 \theta_0 \approx 4.22 θ04.22
    • θ 1 ≈ 2.97 \theta_1 \approx 2.97 θ12.97

    这接近于数据生成时的真实参数 θ 0 = 4 \theta_0 = 4 θ0=4 θ 1 = 3 \theta_1 = 3 θ1=3,表明梯度下降法成功地最小化了损失函数。

  2. 损失函数下降曲线

    • 显示了均方误差随着迭代次数的增加而逐步下降,最终趋于稳定,表明优化过程收敛。

在这里插入图片描述

  1. 线性回归模型与数据点
    • 红色回归线很好地拟合了蓝色数据点,验证了模型的有效性。

在这里插入图片描述

通过这个实战项目,我们深入了解了梯度下降法在优化模型参数中的应用,以及如何通过可视化手段监控优化过程。


五、总结与展望

本篇,我们从微积分的视角重新审视了变化与累积的关系。通过对极限、连续性、导数的深入讲解,以及梯度下降法在优化中的应用,我们不仅掌握了微积分的基本概念和计算方法,还理解了微积分在机器学习中的关键作用。微积分,是我们理解模型优化与变化规律的数学基石,它为我们在后续学习更复杂的机器学习算法提供了坚实的理论支持。

小结

  • 极限与连续性帮助我们理解函数在某一点的行为与性质。
  • 导数描述了函数的瞬时变化率,是优化算法中的关键工具。
  • 梯度下降法利用导数信息,指导模型参数的优化过程。

展望
在接下来的博客中,我们将继续深入学习微积分的其他重要概念,如积分,并探讨其在机器学习中的具体应用。通过系统化的学习,你将逐步构建起扎实的数学知识体系,为后续的机器学习算法与模型的理解与实现打下坚实的基础。希望通过本系列的学习,你能逐步掌握微积分的核心知识,提升在机器学习领域的分析与建模能力。


以上就是关于【机器学习】分而知变,积而见道:微积分中的世界之思的内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力!❤️
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2263582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【嵌入式开发笔记】OpenOCD到嵌入式调试

最近在把玩一块Risc-V的开发板,使用开发板调试时,需要用到专门的下载器和OpenOCD进行调试。 为了连接这个板子,费了九牛二虎之力。 这里简单记录一下自己的折腾经过吧。 0x00 环境准备 0x0001 调试背景 系统:Virtual Box Ub…

知网研学 | 知网文献(CAJ+PDF)批量下载

知网文献(CAJPDF)批量下载 一、知网研学安装二、插件及脚本安装三、CAJ批量下载四、脚本下载及PDF批量下载浏览器取消拦截窗口 一、知网研学安装 批量下载知网文件,格式为es6文件,需使用知网研学软件打开,故需先安装该…

ScottPlot学习的常用笔记-02

ScottPlot学习的常用笔记-02 写在前面Why&Target:这里记一些杂项。上下文&背景 先记一下这几个小时的新收获先说一下,为什么可开发可视工具缩放的问题ScottPlot5.0起步.net Core: WinExe.Net Framework也是可以的 写在前面 Why&Target&…

uniapp使用腾讯地图接口的时候提示此key每秒请求量已达到上限或者提示此key每日调用量已达到上限问题解决

要在创建的key上添加配额 点击配额之后进入分配页面,分配完之后刷新uniapp就可以调用成功了。

【Harmony Next】多个图文配合解释DevEco Studio工程中,如何配置App相关内容,一次解决多个问题?

解决App配置相关问题列表 1、Harmony Next如何配置图标? 2、Harmony Next如何配置App名称? 3、Harmony Next如何配置版本号? 4、Harmony Next如何配置Bundle ID? 5、Harmony Next如何配置build号? 6、Harmony Next多语言配置在哪…

vue3实现打印table订单表格

废话少说,直接上代码! /utils/commonFunction.ts 把数字转换成繁体中文封装函数 export default function () {// 把数字转换成繁体中文function convertCurrency(money: any) {//汉字的数字var cnNums new Array("零","壹",&quo…

VSCode:Markdown插件安装使用 -- 最简洁的VSCode中Markdown插件安装使用

VSCode:Markdown插件安装使用 1.安装Marktext2.使用Marktext 本文,将在Visual Studio Code中,安装和使用Markdown插件,以Marktext插件为例。 1.安装Marktext 打开VSCode,侧边栏中找到扩展模块(或CtrlShiftX快捷键)&am…

五十个网络安全学习项目——(九)无线网络安全分析

五十个网络安全学习项目——(九)无线网络安全分析 这个系列灵感来源是:50个网络安全项目创意:覆盖新手至专家级,本人打算把这些项目都做一遍,做好记录,也算是对自己的提升。 本文将对WAPI 协议…

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导 Sigrity System Explorer Snip Via Pattern From Layout模式支持从其它设计中截取过孔模型用于仿真分析,同样以差分模板为例 具体操作如下 双击打开System Explorer软件…

【Java基础面试题025】什么是Java的Integer缓存池?

回答重点 Java的Integer缓存池(Integer Cache)是为了提升性能和节省内存。根据实践发现大部分的数据操作都集中在值比较小的范围,因此缓存这些对象可以减少内存分配和垃圾回收的负担,提升性能 在 -128到127范围内的Integer对象会…

AI广告爆发元年,心动网络能否成下一个Applovin?

如果说2023年标志着AI大模型技术的崛起,那么2024年无疑是AI广告应用爆发的元年。 大洋彼岸的Applovin凭借着智能广告分发引擎完成彻底翻身,股价上涨超过30倍。一跃成为AI领域乃至整个美股市场的明星。 与此同时,心动网络作为同样深耕于游戏…

基于Python3编写的Golang程序多平台交叉编译自动化脚本

import argparse import os import shutil import sys from shutil import copy2from loguru import loggerclass GoBuild:"""一个用于构建跨平台执行文件的类。初始化函数,设置构建的主文件、生成的执行文件名称以及目标平台。:param f: 需要构建的…

java全栈day20--Web后端实战(Mybatis基础2)

一、Mybatis基础 1.1辅助配置 配置 SQL 提示。 默认在 mybatis 中编写 SQL 语句是不识别的。可以做如下配置: 现在就有sql提示了 新的问题 产生原因: Idea 和数据库没有建立连接,不识别表信息 解决方式:在 Idea 中配置 MySQL 数…

MacOS下PostIn安装配置指南

PostIn是一款开源免费的接口管理工具, 下面介绍私有部署版本的MacOS下安装与配置。私有部署版本更适合有严格数据安全要求的企业,实现对数据和系统的完全控制。   1、MacOS服务端安装 Mac安装包下载地址:下载Mac安…

【Apache Doris】周FAQ集锦:第 26 期

SQL问题 Q1 doris 3.0存算分离模式下,建表的时是否需要指定表的副本数 不需要,指定了也会忽略;存算分离模式下,数据副本由远端存储去管控。 Q2 doris 通过dbeaver查询时报错:[SXXXX]… doris的错误码通常都是EXXXX&…

【Mongo工具】Mongo迁移工具之Mongo-shake

Mongo-Shake 简介 Mongo-Shake 是一个基于 MongoDB 操作日志(oplog)的通用服务平台。它从源 MongoDB 数据库中获取操作日志,并在目标 MongoDB 数据库中重放,或者通过不同的隧道发送到其他终端。如果目标端是 MongoDB 数据库&…

【Unity基础】AudioSource 常用方法总结

在 Unity 中,AudioSource 组件用于控制音频的播放和管理。以下是常用的 AudioSource 控制方法及其说明。 1. 播放和暂停音频 Play():开始播放音频,如果是从暂停的地方继续播放,可以直接调用。Pause():暂停当前播放的…

flink SQL实现mysql source sink

接上文:一文说清flink从编码到部署上线 环境说明:MySQL:5.7;flink:1.14.0;hadoop:3.0.0;操作系统:CentOS 7.6;JDK:1.8.0_401。 1.代码实现 1.1 E…

知乎 PB 级别 TiDB 数据库集群管控实践

以下文章来源于知乎技术专栏 ,作者代晓磊 导读 在现代企业中,数据库的运维管理至关重要,特别是面对分布式数据库的复杂性和大规模集群的挑战。作为一款兼容 MySQL 协议的分布式关系型数据库,TiDB 在高可用、高扩展性和强一致性方…

SpringBoot+Vue3实现阿里云视频点播 实现教育网站 在上面上传对应的视频,用户开会员以后才能查看视频

要使用阿里云视频点播(VOD)实现一个教育网站,其中用户需要成为会员后才能查看视频,这个过程包括上传视频、设置权限控制、构建前端播放页面以及确保只有付费会员可以访问视频内容。 1. 视频上传与管理 创建阿里云账号&#xff…