一、神经网络基础

1、神经元:深度学习的“细胞”

  输入:特征向量,比如一张图片的像素值、房价预测中的面积和房间数。

  权重:每个输入的重要程度,模型通过训练自动学习。如果所有权重初始化为 0,所有神经元对称,无法学习。

  偏置:让神经元可以平移决策边界,即使输入全为零,神经元仍可能被激活。

  加权和:将输入与权重相乘后求和,再加上偏置。

  激活函数:引入非线性,否则多层网络等效于单层线性模型,无法拟合复杂问题。

2、激活函数:让网络“活”起来

Sigmoid:输出 (0,1),适合表示概率。缺点是梯度消失(导数最大仅 0.25,深层网络梯度指数衰减);输出非零中心,收敛慢。

Tanh:输出 (-1,1),零中心化,比 Sigmoid 稍好,但依然存在梯度消失。

ReLU:计算快,正区间梯度恒为 1,缓解梯度消失。但会有神经元死亡(输入永远为负则不再更新)。我们可以通过Leaky ReLU(给负数一个微小斜率)、PReLU(斜率可学习)、ELU、Swish来改进这一缺点。

  CNN 多用 ReLU 及其变种;RNN 常用 tanh;输出层二分类用 sigmoid,多分类用 softmax,回归用线性。

3、前向传播与反向传播

  前向传播:数据从输入层逐层计算,最终得到预测结果。

  反向传播:基于链式法则,从输出层反向计算每个参数对损失的梯度,并用梯度下降更新参数。这是网络“学习”的核心。

二、模型训练与优化

1、损失函数:衡量预测与真实之间的差距

  均方误差(MSE):回归任务常用,放大大误差的惩罚。

  交叉熵损失:分类任务首选,与 softmax 结合时梯度形式优美,误差越大更新越快。

  为什么分类不用 MSE?因为 MSE 配合 sigmoid 时,梯度易饱和,收敛慢;且概率解释不匹配。还有多标签分类:用二值交叉熵(BCE),每个类别独立 sigmoid。

2、优化器:如何下山

  SGD:每次用一小批数据计算梯度,直接更新。容易震荡,收敛慢。

  SGD + 动量:累积历史梯度,加速在平坦区域的移动,减少震荡。

  Adam:自适应学习率 + 动量,收敛快,超参数鲁棒,是目前默认首选。

  偏差修正:初始时刻矩估计有偏,需校正。

  AdamW:解耦权重衰减,泛化更好。

  建议先选Adam 系列快速上手;SGD + 动量在图像分类上有时精度更高。

3、学习率

  学习率太大会损失震荡,不收敛。太小会收敛极慢,易陷入局部最优。学习率的衰减为初期大步探索,后期微调。

4、过拟合与正则化

  过拟合:模型死记硬背训练数据,泛化能力差。

  L1/L2 正则化:在损失中加权重惩罚。L2 让权重趋近于 0,L1 使权重稀疏。

  Dropout:训练时随机丢弃神经元,迫使网络学习冗余特征。测试时关闭,并缩放权重。

  数据增强:旋转、翻转、裁剪、颜色抖动、MixUp、CutMix 等,让模型见到更多样本来提升泛化。

  早停法:验证集损失不再下降时停止训练,最简单有效的正则化。

  标签平滑:将硬标签(0,1)变为软标签(0.05,0.95),防止模型过于自信。

5、归一化

  Batch Normalization:对小批量样本做归一化,再学习缩放和平移。加速收敛,轻微正则化。缺点:小 batch 效果差,不适用于 RNN。

  Layer Normalization:对单个样本所有特征归一化,适用于 Transformer 和 RNN。

  Instance Norm:每个样本每个通道独立归一化,用于风格迁移。

  Group Norm:折中方案,在小 batch 下比 Batch Norm 稳定。

三、卷积神经网络(CNN)与 YOLO

1、卷积操作

  卷积核:滑动手电筒,提取局部模式,参数共享,平移不变性。

  步长:控制输出尺寸,步长为 2 时尺寸减半。

  填充:Same 填充使输出尺寸不变,避免边缘信息丢失。

  空洞卷积:扩大感受野而不增参数。

2、池化层

  最大池化:保留最强特征。

  平均池化:平滑信息。

  池化层没有可学习参数,只下采样。

3、经典 CNN 架构

  LeNet-5:手写数字识别。

  AlexNet:ReLU、Dropout、GPU 并行。

  VGGNet:堆叠小卷积核(3×3),参数少,非线性强。

  ResNet:跳跃连接,解决退化问题,可训练极深网络。残差学习让网络至少不差于浅层。

  Inception:多尺度卷积核并行,1×1 降维。

  DenseNet:每层与所有前层连接,特征复用,显存大。

  EfficientNet:复合缩放深度、宽度、分辨率。

4、YOLO:实时目标检测

1、核心思想

  You Only Look Once:将检测视为回归问题,一次前向传播得到所有框。

  网格划分:输入图划分为 S×S 网格,每个网格负责预测中心落在此网格的物体。

  每个网格输出:B 个边界框(x, y, w, h, confidence) + C 个类别概率。

  损失函数:坐标误差(权重高)、置信度误差、类别误差。

2、演进

  YOLOv2:引入 BatchNorm、锚点框、多尺度训练、联合训练(YOLO9000)。

  YOLOv3:Darknet-53 骨干,多尺度预测(三个尺度),用二元交叉熵实现多标签分类。

  YOLOv4/v5:集成各种 trick(Mish、SPP、PANet、Mosaic 等),工程优化。

  YOLOv8:无锚点设计,更强骨干,支持实例分割。

  YOLO系列的优点是处理速度极快,全局感受野,背景误检少,但是对小物体检测差,密集物体易漏检。

四、循环神经网络与序列模型

1、RNN

  循环神经网络(RNN)通过隐藏状态在时间步之间传递信息,形成对过往序列的记忆,因此特别适合处理文本、语音等序列数据。然而,在长序列训练中,梯度消失或梯度爆炸问题会严重削弱模型对远距离依赖关系的捕捉能力,使其难以有效关联前后相距较远的信息。

2、LSTM

  长短时记忆网络通过精巧设计的遗忘门、输入门和输出门,构建出独立的细胞状态,让信息能在长序列中稳定传递,有效缓解了传统RNN的长距离依赖问题。门控循环单元则是其简化版本,将门结构合并,在参数量更少、计算更高效的同时,性能与LSTM相当。

3、梯度裁剪

  梯度裁剪是一种常用的优化技巧,通过预设一个阈值,在反向传播时计算梯度的范数;若范数超过该阈值,则按比例缩放梯度,使其幅度被限制在可控范围内。这种方法能有效防止梯度爆炸,避免参数更新步长过大导致训练不稳定,从而保障模型在长序列或深层网络中平稳收敛。

五、Transformer 与 BERT

1、Transformer 基础

  Transformer的核心是自注意力机制,通过将输入映射为查询、键、值三个矩阵,计算每对位置的相关性,并以缩放点积形式加权聚合,实现全局依赖的并行建模。多头注意力让模型从不同表示子空间联合关注信息。为弥补序列顺序的缺失,引入正弦位置编码或可学习嵌入。每个位置通过独立的前馈网络增强表达,配合残差连接与层归一化,有效稳定了深层网络的训练。

2、BERT:双向编码器表示

1、模型输入

  模型输入由三部分相加构成:Token Embeddings通过WordPiece分词将词元映射为向量,Segment Embeddings用于区分不同句子,Position Embeddings采用可学习方式注入位置信息。此外,输入序列中会加入特殊标记——[CLS]用于聚合整体语义以支持分类任务,[SEP]用于分隔句子对,[MASK]则作为掩码语言建模的预测目标。

2、预训练任务

  掩码语言模型随机选取15%的词元进行预测,其中80%替换为[MASK],10%替换为随机词元,10%保持不变,以此缓解预训练与微调之间的输入不匹配。下一句预测则通过判断两段文本是否为连续片段,使模型学习句子间的语义关系。两者共同构成了BERT的预训练任务。

3、微调

  微调阶段通常取[CLS]标记的输出向量作为序列的整体表示,在其上方接入分类层,并对整个预训练模型进行端到端的参数更新。这种方式能使模型快速适配分类、序列标注、问答等多种下游任务,充分利用预训练学到的语言知识。

4、BERT vs GPT

  BERT基于编码器架构实现双向上下文建模,通过掩码语言模型与下一句预测进行预训练,擅长分类、序列标注等理解类任务;而GPT采用解码器架构进行自回归生成,仅关注左侧上下文,适用于文本生成场景。在面试中常问:BERT选择双向而非自回归,是因为理解任务更需要全局信息;掩码时不全用[MASK]是为了避免预训练与微调间的输入差异;受位置嵌入限制,模型通常处理512长度以内的文本,更长时可借助滑动窗口或分层策略。

维度	    BERT	                GPT
架构	编码器(双向)	        解码器(单向)
预训练	掩码语言模型 + NSP	    自回归语言模型
适用	理解类任务	            生成类任务
上下文	同时看左右	            只看左边

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐