当前位置: 首页 > news >正文

深度学习:从线性模型到深度神经网络的演进概述

深度学习基础概念:从线性模型到深度神经网络

在探索深度学习的浩瀚世界之前,我们必须先打好地基。无论是简单的线性预测,还是复杂的图像生成,机器学习的本质都可以归结为“寻找一个函数”。本文将带你从最基础的概念出发,一步步推演至深度神经网络的核心机理。


1. 机器学习的三大核心任务类型

在寻找目标函数 (Looking for function) 之前,我们需要明确任务的类型。常见的机器学习任务可以划分为以下三种:

  • 回归 (Regression):输出是一个标量 (scalar)。这是一种监督学习任务,其最终目标是基于输入的特征来预测一个连续的数值。
  • 分类 (Classification):给定多个离散的选项,函数的作用是输出其中正确的那一个类别。
  • 结构化学习 (Structured learning):旨在创造具有特定结构的事物,例如生成一篇文档或一张图像。

2. 寻找函数的“三步曲”

如何找到那个完美的函数 (how to find a function?) 所有的机器学习算法几乎都遵循以下三个标准步骤:

Step 1: 构建带有未知参数的模型

首先,我们需要基于领域知识 (domain knowledge) 设定一个包含未知参数的初始函数结构。
最经典的例子是线性模型:
$$y = b + wx$$

  • $x$: 代表输入的特征 (feature),这是已知的客观数据。
  • $w$: 权重 (weight),代表特征的影响程度。
  • $b$: 偏置 (bias)。

⚠️ 痛点:模型偏差 (Model bias)
模型偏差是指像线性模型这样简单的模型家族,为了简化假设而带来的固有误差。即使你拥有无限的数据和完美的训练过程,它也无法准确逼近真实的底层函数。这从本质上反映了该模型缺乏足够的表达能力 (lack of expressive power)。为了减少模型偏差 (reduce model bias),我们需要引入更复杂的结构。

Step 2: 定义损失函数 (Loss Function)

损失函数是从训练数据中定义出来的,它同样也是一个关于参数 $b$ 和 $w$ 的函数。
损失函数 $L(b,w)$ 用于衡量当前这一组参数值到底有多好(或多坏)。我们通常会用模型的预测值 $\hat{y}$ 与真实的标签 $y$ (label) 进行对比。常见的损失函数包括:

  • MAE (Mean Absolute Error, 平均绝对误差):公式为 $|y-\hat{y}|$。
  • MSE (Mean Square Error, 均方误差):公式为 $(y-\hat{y})^2$。

Step 3: 优化 (Optimization)

优化的目标是找到一组能让损失函数最小的极佳参数。
$$w^, b^ = \arg\min_{w,b} L$$

最主流的优化算法是梯度下降 (Gradient descent)。这是一种用于最小化函数的优化算法,它通过在梯度(导数)的相反方向上迭代移动参数,从而逐渐寻找到函数的最小值。

  • 具体步骤
    1. 随机挑选一个初始值 $w^0$。
    2. 计算当前位置的梯度 $\frac{\partial L}{\partial w}|_{w=w^0}$。
    3. 通过迭代不断更新参数:$w^1 \leftarrow w^0 - \eta \frac{\partial L}{\partial w}|_{w=w^0}$。
  • 在优化图景中,模型可能会陷入局部最小值 (Local minima) 的陷阱,而不一定能达到全局最小值 (Global minima)。

3. 突破线性枷锁:激活函数的引入

为了打破线性模型的限制,我们需要构造复杂的曲线。任何复杂的分段线性曲线 (Piecewise linear curves) 都可以被拆解为一个常数,加上一组不同形状的函数 (hard functions) 的求和。

但由于带有折角的函数难以进行梯度计算,我们引入了更加平滑的非线性函数。

3.1 Sigmoid 函数

我们可以用 Sigmoid 函数来代替生硬的折线函数。复杂的红色曲线可以表示为常数加上一组 Sigmoid 函数的求和。
$$y = c \frac{1}{1+e^{-(b+wx_1)}} = c \text{ sigmoid}(b+wx_1)$$

在这个公式中,参数有着极其直观的几何意义:

  • 改变 $w$:可以改变中心曲线的斜率 (Change slopes)。
  • 改变 $b$:可以控制曲线在横轴上的平移 (Shift)。
  • 改变 $c$:可以直接改变曲线的整体高度 (Change height)。

3.2 ReLU 函数 (Rectified Linear Unit)

另一种被广泛使用的函数是线性整流函数 (ReLU)。
$$y = c \max(0, b+wx_1)$$
在表达能力上,我们通常需要组合两个 ReLU 函数,才能替代一个 Sigmoid 函数的效果。

[Image comparing Sigmoid and ReLU activation functions side by side]

💡 核心概念:激活函数 (Activation Function)
ReLU 和 Sigmoid 统称为激活函数。激活函数是应用于神经网络神经元输出的非线性函数。它决定了神经元是否“激活”以及激活的强度。正是因为它引入了非线性,才使得神经网络能够学习并表示出远远超越简单线性关系的复杂数据模式。


4. 迈向深水区:构建深度神经网络

当特征变得越来越多(如 $x_1, x_2, x_3$),我们的模型也会随之膨胀。多个特征组合多个激活函数,其数学表达式会演变为:
$$y = b + \sum_i c_i \text{sigmoid}\left(b_i + \sum_j w_{ij} x_j\right)$$

  • $j$: 代表特征的索引 (feature index)。
  • $i$: 代表激活函数 (sigmoid) 的索引。
  • $w_{ij}$: 代表在第 $i$ 个 sigmoid 中,针对第 $j$ 个特征 $x_j$ 的权重。

为了处理成百上千的特征,我们利用矩阵 (Matrix) 来极大地简化表达:
$$r = b + Wx$$
$$a = \sigma(r)$$
$$y = b + c^T a$$

我们将上述矩阵中所有未知的权重、偏置等参数(如 W, b, c),统一表示为一个参数向量 $\theta$。优化的核心就变成了计算梯度 $g = \nabla L(\theta)$ 并迭代更新 $\theta \leftarrow \theta - \eta g$。

4.1 训练的核心参数控制

在训练过程中,有两类非常重要的超参数 (Hyperparameter):学习率 (learning rate, 对应 $\eta$) 和批量大小 (batch size)。
与模型内部自行学习的参数不同,超参数是在训练过程开始之前由人工设定的值。它们直接控制着整个训练过程的走向和模型的架构。

  • Batch 与 Epoch:训练数据会被划分为多个 Batch。每处理完一个 Batch,模型就会进行一次参数更新 (update)。当模型将所有的 Batch 都完整看过一遍后,我们就称之为一个 Epoch。

4.2 深度学习与过拟合警报

在神经网络中,神经元 (Neuron) 相互连接形成了隐藏层 (hidden layer)
当我们在网络中堆叠了大量的隐藏层时,这就意味着模型变得很“深” (Many layers means Deep),这也就是我们常说的深度学习 (Deep Learning) 的由来。

然而,伴随着网络变深、表达能力变强,我们需要高度警惕过拟合 (Overfitting)
过拟合是一种极其致命的建模错误,它表现为模型把训练数据中的噪声和随机波动学习得“太好了”。这会导致模型在面对全新、未见过的数据时表现极差,因为它已经完全丧失了泛化能力 (fails to generalize)。


声明:本博客由gemini基于laobie本地obsidian笔记转写,意在将obsidian内置图片转化为了纯文本或表格描述,便于博客上传

http://www.jsqmd.com/news/529895/

相关文章:

  • 3. GPIO
  • ENVI5.3实战:如何用landsat_gapfill工具一键去除Landsat影像的讨厌条纹(附工具下载)
  • CoPaw模型服务监控与告警体系搭建教程
  • [知识自由获取]:智能适配技术驱动的内容访问优化解决方案
  • 次元画室一键部署后403怎么办?详细排查步骤与解决方案
  • 凌晨三点的 Bug 惊魂:DeepCode 救了我一命,还是只是个噪音制造机?
  • 别再死记硬背了!用PLC+伺服电机做个‘会思考’的小车,5分钟搞懂位置环、速度环、电流环
  • Agent智能体架构设计:让AI Agent具备长文本理解与任务分解能力
  • 别再手动轮询了!用STM32的UART DMA+环形缓冲区处理不定长数据(附状态机解析代码)
  • 从Firebase迁移到Supabase:一个前端开发者的真实踩坑与平滑过渡指南
  • 前端Excel处理避坑指南:xlsx.core.min.js vs xlsx.full.min.js 怎么选?附导入导出实战
  • 分数阶扩展卡尔曼滤波器、分数阶中心差分卡尔曼滤波器、分数阶无迹卡尔曼滤波器和分数阶粒子滤波器的状态估计附matlab代码
  • 如何快速构建企业级管理系统?全栈框架解决方案解析
  • 语音识别Pipeline搭建:SenseVoice-Small ONNX+Punctuation+SpeakerDiarization
  • FlowState Lab与Kafka集成:构建实时波动数据流处理管道
  • 告别网络折磨:手把手教你为STM32F4搭建MicroROS开发环境(含国内镜像与代理全攻略)
  • OCR文字识别镜像实测:复杂背景、手写体都能准确识别,效果惊艳
  • RMBG-2.0效果案例分享:珠宝反光表面、玻璃器皿、半透明材质处理
  • 【IEEE CPS出版】2026年人工智能、智能系统与信息安全国际学术会议(AISIS 2026)
  • 浅析Python中常见错误的自动化排查
  • umamusume-localify 技术优化指南:从问题诊断到性能提升的全流程解决方案
  • LightOnOCR-2-1B实现.NET平台文档自动化处理方案
  • 前阵子帮实验室师兄搭了个三相断路器电磁加热的仿真模型,折腾了快一周总算把发热曲线跑通了,今天碎碎念一下整个过程,顺便把踩过的坑和偷懒技巧分享给大家
  • R语言新手必看:CellChat安装与配置全攻略(附常见报错解决方案)
  • 前端加密必备:window.crypto.getRandomValues()全浏览器兼容方案(含IE11降级策略)
  • 撩开那层神秘面纱:Agent中的ReAct究竟是什么?(上篇)
  • Win11Debloat:Windows系统深度优化与隐私保护终极指南
  • 基于ABAQUS模型的CEL算法在桩入土粒子示踪技术中的应用:流固耦合模拟与土体流动分析
  • AnimateDiff在教育领域的应用:交互式课件自动生成
  • Bazzite开源系统故障排查指南