今日学习

今天系统学习了深度学习入门的第一课——神经网络。作为深度学习的核心算法,神经网络通过学习权重(Weights)和偏置(Bias),将我们人类眼中的原始数据(图片、文字、表格)转化为计算机能够理解的特征表达。

为了更好地理解神经网络是如何“思考”的,推荐大家配合这个超赞的可视化工具一起阅读:
👉 ConvNetJS 2D Classification Demo
(在这个网页里,你可以实时看到神经网络如何通过增加层数和改变激活函数,把杂乱的数据点完美分开。)


一、 神经网络的基本结构

神经网络模拟了生物神经元的传递过程,其结构主要分为三层:

  1. 输入层 (Input Layer):负责接收原始数据。

  2. 隐层 (Hidden Layer):

    • 这是模型最核心的部分。

    • 通过全连接(Fully Connected)结构和激活函数提取特征。

    • 视觉直觉:在上面的 ConvNetJS 演示中,隐层其实是在对坐标空间进行“扭曲”,直到能用一条线把不同颜色的点分开。

  3. 输出层 (Output Layer):将提取到的特征映射到最终的分类概率或数值结果上。


二、 训练机制:前向传播与反向传播

神经网络的“学习”本质上是一个不断纠错、寻找最优参数的过程:

  • 前向传播 (Forward Propagation):数据从输入层出发,经过每一层权重的加权求和与非线性变换,最终计算出预测值。

  • 损失函数 (Loss Function):

    • 利用 Softmax 算法将输出转化为预测概率。

    • 通过 对数损失/交叉熵 来量化预测值与真实标签之间的差距(即“损失”值)。

  • 反向传播 (Backpropagation):

    • 这是神经网络的“纠错灵魂”。利用链式法则计算损失对每个权重的偏导数,确定每个参数该为错误负多少责。

  • 梯度下降 (Gradient Descent):

    • 根据反向传播计算出的梯度,更新权重。

    • 学习率决定了修正的步长。学习率太大会跳过最优解(演示页面中你会看到色块剧烈跳动),太小则会导致训练异常缓慢。


三、 激活函数:打破线性禁锢

如果没有激活函数,再多层的网络也只是在做简单的线性运算,无法处理复杂的曲线边界。

  • Sigmoid:早期的主流,但容易导致深层网络梯度消失。

  • ReLU (Rectified Linear Unit):目前最常用的激活函数。它计算极其简单,且能有效缓解梯度消失问题,是隐层的首选。

  • Softmax:主要用于输出层,将结果归一化为概率分布(总和为1)。


四、 实战优化:如何让模型更健壮?

在实际训练中,我们经常会遇到过拟合(Overfitting)——即模型在训练集上表现完美,但在新数据上翻车。常用的解决方法包括:

  1. 正则化惩罚 (Regularization):通过 L1/L2 惩罚项限制权重过大,防止模型走极端。

  2. Dropout (随机失活):训练时随机让部分神经元“休息”,迫使网络学习更稳健的特征,而不是死记硬背。

  3. 数据预处理与初始化:

    • 标准化:将数据缩放到统一量级,加快收敛。

    • 参数初始化:绝对不能全设为0!合理的随机初始化(如 He 初始化)能让模型有一个良好的开端。


💡 个人感悟:神经网络到底是什么?

学习完今天的课程,并玩了 Karpathy 的 Demo 后,我对手中的神经网络有了新的认识:

  • 它是一个万能拟合器:只要给它足够多的神经元和正确的数据,它可以拟合现实世界中任何复杂的逻辑。

  • 它把“直觉”量化了:以前我们很难告诉计算机为什么这张图是猫,现在神经网络通过数以亿计的参数,把这种模糊的“视觉直觉”变成了一场精确的矩阵运算。


📅 下次课预告

掌握了全连接神经网络的基础后,接下来我们将学习:

  • 卷积神经网络 (CNN):专为图像而生的结构。

  • Transformer:目前大模型(LLM)时代最耀眼的架构。


如果你也正在学习深度学习,强烈建议去那个 Demo 链接 动手点一点,观察一下增加 Layer 后分类边界的变化!

欢迎在评论区一起讨论学习心得!点赞收藏不迷路,我们下期见!

更多推荐