新手必懂的过拟合与欠拟合
新手必懂的过拟合与欠拟合 大家好!欢迎来到我的技术博客。 如果你刚开始接触机器学习,你可能会遇到一个令人困惑的现象:为什么我的模型在训练数据上表现得近乎完美,但一旦遇到新的、没见过的数据,准确率就暴跌? 这就好比一个学生,平时做练习题全对,一到高考考场就大脑一片空白。在机器学习的世界里,我们把这种现象称为**“过拟合”**。今天,我们就来聊聊机器学习中最核心的问题之一:如何让模型真正学会“举一反三”,而不是死记硬背。 🎓 1. 我们的目标:发现规律,而不是背答案 首先,我们要明确一个核心概念:机器学习的目标是发现泛化的模式(Pattern)。 想象一下,我们要训练一个AI来预测患者的健康风险。我们手里有一堆病历数据(训练集)。 错误的做法(死记硬背): AI记住了“鲍勃”这个人,他有痴呆症。当AI看到鲍勃的新病历时,它能答对。但如果来了一个新病人“汤姆”,AI就傻眼了,因为它只会背名字。 正确的做法(发现规律):...
为什么深度学习如此强大
深度学习凭什么这么强? 在当今人工智能浪潮中,深度神经网络几乎无处不在——从图像识别到自然语言处理,从医疗诊断到自动驾驶。但你是否曾好奇:为什么一个由简单计算单元堆叠而成的“黑箱”,竟能学会如此复杂的任务? 答案并非魔法,而是建立在一系列深刻而优美的数学与计算原理之上。本文将带你深入理解深度学习强大表达能力的核心来源,尤其聚焦于最基础却最关键的模型之一:多层感知机(MLP)。 一、从线性模型的局限说起 回想一下线性回归或 softmax 回归:它们通过一个仿射变换(线性组合 +...
从线性回归到深度学习
从线性回归到深度学习:揭开机器学习的“Hello World” 引言:机器学习的“Hello World” 在线性代数的矩阵运算与概率统计的正态分布假设中,线性回归如同一座桥梁,连接着经典统计学与现代深度学习。作为机器学习领域最基础的算法,它不仅是预测连续值(如房价、销售额)的核心工具,更是理解神经网络的起点。本文将从数学原理、优化方法到神经网络视角,带你深入剖析线性回归的本质。 一、线性回归的核心思想:寻找最优拟合 线性回归的本质是通过特征的线性组合来预测目标值。假设我们有一个包含 $d$ 个特征的样本 $x=(x_1,x_2,…,x_d)$,线性模型的预测函数可表示为: $f(x)=w^Tx+b$ 其中: $w=(w_1,w_2,…,w_d)$ 是权重向量,决定每个特征对预测结果的影响程度; $b$ 是偏置项(截距),表示所有特征为0时的基准预测值。 以房价预测为例:若房屋面积($x_1$)和房龄($x_2$)是特征,则模型可能学习到 $w_1=4.03$(面积每增加1平米,房价上涨4.03万)、$w_2=-1.5$(房龄每增加1年,房价下降1.5万),而...
从零开始手写 Softmax 回归
从零开始手写 Softmax 回归:理解多分类背后的魔法 你有没有想过,像 Gmail 自动把邮件分到“社交”、“促销”或“论坛”这样的功能,背后是怎么实现的?或者手机相册如何自动识别照片里是“猫”还是“狗”?这些都属于多分类问题——而 Softmax 回归,正是解决这类问题最基础、最重要的工具之一。 今天,我们就抛开现成的深度学习框架(比如 torch.nn.Linear + CrossEntropyLoss),从零开始一行行实现一个完整的 Softmax 回归模型,用它来识别 Fashion-MNIST 数据集中的衣服图片(T恤、裤子、鞋子等10类)。这不仅是一次编程练习,更是一次深入理解机器学习核心机制的旅程。 🧩 为什么叫 “Softmax”?它和“硬预测”有什么关系? 想象一下,模型对一张图片的判断是: T恤: 10% 裤子: 5% 套头衫: 80% 连衣裙: 3% 凉鞋: 2% 虽然模型内心有“偏好”,但最终我们必须给用户一个明确答案:“这是套头衫”。这种必须选一个类别的决策,叫做 硬预测(Hard Prediction)。 而 Softmax...
标量向量和张量的区别
标量、向量、张量:深度学习中的“数据基石” 写在前面: 学习深度学习时,我们常听到“张量”这个词——PyTorch 的 tensor、TensorFlow 的 Tensor……但你是否曾疑惑: 标量是张量吗?向量和矩阵有什么本质区别?为什么神经网络总说“输入是一个张量”? 本文将从数学本质出发,用直观语言厘清标量、向量、张量的区别与联系,并揭示它们在深度学习中的实际意义。 一、从“一个数”说起:什么是标量? 标量(Scalar) 是最简单的数学对象——它只是一个数值,没有方向,也没有结构。 ✅ 数学定义:属于实数集或复数集的单个元素,如 $ a = 3.14 $,$ b = -2 $。 🌰 生活例子:室温 25°C、模型损失值 loss = 0.68、学习率 lr = 0.001。 🔍 关键特性:在坐标变换下保持不变。 比如你把坐标系旋转 90°,温度不会因此改变——它不依赖于“方向”。 在深度学习中,标量常作为超参数、标量输出或归约结果出现: 1loss = torch.mean((y_pred - y_true)**2) # loss...
深度学习中的批次讲解
深度学习中的批次大小(Batch Size)完全指南 在深度学习训练中,批次大小(Batch Size)是一个至关重要的超参数,它不仅影响训练速度,更直接决定了模型的最终性能。本文将深入探讨批次大小的选择策略和最佳实践。 什么是 Batch Size? Batch Size 指的是每次前向传播和反向传播时处理的样本数量。它是连接单样本训练(随机梯度下降 SGD)和全批量训练(Batch Gradient Descent)的桥梁。 训练方式 Batch Size 特点描述 SGD 1 优点:梯度方向随机性强,易于跳出局部最优。缺点:训练不稳定,收敛速度慢。 Mini-batch 2-几百 优点:在训练稳定性和计算效率之间取得了良好平衡。缺点:需要进行参数调优。 Batch GD 全部样本 优点:梯度计算最准确,收敛路径稳定。缺点:内存消耗巨大,容易过拟合,且可能收敛到尖锐的极小值。 Batch Size 的核心影响因素 1....
理解Softmax回归与交叉熵
从预测到压缩:理解 Softmax 回归与交叉熵背后的直觉 “分类不是问‘多少’,而是问‘哪一个’。” 在机器学习的世界里,线性回归教会我们如何预测连续值——房价、温度、胜场数。但现实中的许多问题本质上是离散选择:这封邮件是垃圾邮件吗?这张图是猫还是狗?用户会点击这个广告吗? 这就是分类任务的舞台,而 Softmax 回归,正是处理多类别分类问题最基础、也最优雅的工具之一。然而,Softmax 不只是一个数学技巧;它的背后,深植于信息论与概率建模的坚实土壤。本文将带你从直觉出发,一步步揭开 Softmax 与交叉熵损失的神秘面纱。 一、为什么不能直接用线性输出做分类? 假设我们有一个图像分类任务,类别为 {猫, 鸡, 狗}。我们可以构建一个线性模型,对每个类别输出一个“得分”(logit): $$ \begin{aligned} o_1 &= \mathbf{w}_1^\top \mathbf{x} + b_1 \quad (\text{猫}) \ o_2 &= \mathbf{w}_2^\top \mathbf{x} + b_2 \quad...
用 PyTorch 手动实现线性回归
在深度学习的世界里,线性回归常被视为“Hello World”级别的入门算法。虽然它看起来很简单,但它包含了深度学习的核心思想:参数化模型、损失函数、优化算法。 今天,我将带领大家使用 PyTorch,不依赖高级 API,从零开始手动实现线性回归。 1. 生成人造数据 为了验证我们的代码是否正确,我们需要一个已知答案的数据集。我们将根据公式 $y = Xw + b + \text{noise}$ 生成数据。 我们设定真实的参数为: 权重 (w): [2, -3.4] 偏置 (b): 4.2 1234567891011121314import randomimport torchfrom d2l import torch as d2ldef synthetic_data(w, b, num_examples): """生成 y = Xw + b + 噪声""" X = torch.normal(0, 1, (num_examples, len(w))) y = torch.matmul(X, w)...
线性代数速览
📚 线性代数速览:从标量到张量,为深度学习打基础 “没有线性代数,就没有现代深度学习。” 本文用最直观的方式,带你快速掌握深度学习中必备的线性代数核心概念。 🔢 1. 基本数学对象:标量 → 向量 → 矩阵 → 张量 类型 数学表示 形状(shape) 例子 标量 $x \in \mathbb{R}$ 0 维 3.0, -2 向量 $\mathbf{x} \in \mathbb{R}^n$ 1 维(长度 = $n$) [1, 2, 3, 4] 矩阵 $\mathbf{A} \in \mathbb{R}^{m \times n}$ 2 维($m$ 行 × $n$ 列) [[1,2],[3,4]] 张量 $\mathsf{X}$ ≥3 维(如图像:H×W×C) (2,3,4) 的三维数组 ✅ 关键点: 标量是“单个数字”; 向量是“一串数字”,默认是列向量; 矩阵是“表格”,行×列; 张量是高维推广——深度学习中图像、批量数据都用它表示 🧮 2. 常见运算(附代码) ✅...