深度学习在图像算法领域应用广泛,相关知识是深度学习面试的重点。下面围绕神经网络、CNN、RNN 等关键内容,梳理核心知识点,为面试备考提供清晰指引。
一、神经网络基础
(一)激活函数与梯度问题
ReLU 因计算量小、能避免梯度消失、缓解过拟合且有助于随机梯度下降收敛,在神经网络中应用广泛。梯度消失和爆炸由隐藏层层数过多、激活函数不合适或权重初始化值过大引起。可通过换用 ReLU 等激活函数、使用 BatchNormalization、引入 ResNet 残差结构、采用 LSTM 结构、预训练加微调、梯度剪切、权重正则化等方法解决。判断梯度爆炸可依据模型不稳定、梯度快速变大、权重变成 NaN 值、误差梯度值持续超 1.0 等现象。
(二)正则化与优化算法
神经网络正则化技术包括 L2 和 L1 正则化、权重衰减、丢弃法、批量归一化、数据增强和早停法等。批量归一化通过对 mini-batch 数据归一化,可使用更高学习率、减少 dropout、降低 L2 权重衰减系数,解决反向传播中的梯度问题。权值共享在 CNN 中表现为卷积核参数共享,减少了参数数量。
SGD 每次用一个样本更新模型,适合在线学习;Adam 结合一阶和二阶动量,自适应调整学习率,收敛快,适用于稀疏数据。学习率太大导致梯度震荡、无法收敛,太小则收敛缓慢,可通过经验手动调整或基于策略动态调整。神经网络多采用梯度下降而非拟牛顿法,因梯度下降时间复杂度低、对初始值要求不高,更适合非凸问题。
(三)其他关键要点
Dropout 通过随机停用神经元,减少神经元间共适应关系,防止过拟合,训练时使用,测试时关闭,概率一般 input 设为 0.8,hidden layer 设为 0.5。fine-tuning 利用预训练模型权重提取特征,修改最后几层权重可适配新数据集,减少过拟合风险。神经网络数据预处理包括中心化、归一化等,权重初始化常用随机初始化、Xavier 初始化、何氏初试法等,不合适的初始化会导致信号消失或梯度消失问题。构建深度学习模型使用 GPU,因其能并行计算矩阵乘法,大幅缩短训练时间。
前馈神经网络在向量内部维度交互信息,CNN 逐次扫描局部交互,RNN 在时间维度展开交互。神经网络可解决图像识别、语音识别、自然语言处理等多领域问题。小型网络可通过模型蒸馏技术和 AutoML 优化网络结构提升精度。常见损失函数有欧氏距离、交叉熵、对比损失、合页损失等 。卷积核设计为奇数尺寸,可保证像素点中心位置不变,填充时保持原矩阵对称。
二、卷积神经网络(CNN)
(一)网络结构与经典网络
CNN 由输入层、卷积层、激励层、池化层、全连接层构成。输入层预处理数据,卷积层提取局部特征,激励层引入非线性,池化层降维并缓解过拟合,全连接层用于分类或回归。
LeNet 用于数字识别,AlexNet 用多层小卷积替代大卷积,VGG 使用小卷积核加深网络,Inception 增加网络宽度并降维,ResNet 解决网络退化问题,DenseNet 实现层间密集连接,各有特点和优势。
(二)卷积层与池化层
卷积层基本参数包括卷积核大小、步长、填充方式、输入和输出通道数。输出大小可根据公式计算,参数量由卷积核相关参数决定 。池化方法有最大池化和平均池化,用于降低特征维度。1*1 卷积可加入非线性函数、对通道数降维和升维 。卷积层有参数,提取局部关联特征,改变节点矩阵深度;池化层无参数,提取泛化特征,缩小节点矩阵大小 。卷积核并非越大越好,大卷积核计算量大,小卷积核可通过堆叠替代大卷积核,减少参数量且增加非线性变换。
空洞卷积增大感受野且保持输出特征映射大小不变。减少卷积层参数量可采用堆叠小卷积核、分离卷积操作、添加 1×1 卷积、在卷积层前使用池化等方法。标准卷积同时考虑通道和区域,通道分离卷积网络先对各通道卷积,再进行 1×1 跨通道卷积 。宽卷积使输出维度与输入一致,窄卷积舍弃边缘信息。反卷积用于上采样,近似重构输入数据。
(三)CNN 的应用与优化
在 NLP 和 CV 领域,CNN 处理的数据和操作维度不同。全连接层汇总全局信息,局部连接层减少参数规模,全卷积和局部卷积在局部连接基础上,分别通过参数共享和特定连接方式,在减少参数量的同时提取特定模式特征 。提高 CNN 泛化能力可通过增加数据、使用更大批次、调整数据分布、调整目标函数和网络结构、数据增强、权值正则化、使用 dropout 等方法。BN、LN、IN、GN 和 SN 分别在不同维度对数据进行归一化,适用于不同场景。
三、循环神经网络(RNN)及其变体
(一)RNN 基础
RNN 具有记忆能力,将前一次输出作为下一次隐藏层输入,但存在短期记忆问题和训练成本高的缺点。RNN 训练和传统 ANN 都用 BP 算法,但 RNN 参数共享,输出依赖之前网络状态。训练时 Loss 波动大,因梯度时大时小,可通过设置临界值截断梯度解决。RNN 出现梯度消失是因为激活函数导数累乘导致梯度变小,可选用 ReLU 等激活函数、加入 BN 层或改变传播结构(如使用 LSTM)解决。
(二)LSTM 与 RNN 扩展
LSTM 通过遗忘门、输入门和输出门以及细胞状态和隐层状态,解决了 RNN 的长期依赖问题。LSTM 中 sigmoid 用于门控,tanh 用于处理数据。两层双向 LSTM 可结合前后信息,使预测更准确 。
RNN 的扩展包括 Bidirectional RNNs、CNN - LSTMs、Bidirectional LSTMs 和 GRU。Bidirectional RNNs 由两个 RNN 叠加,结合前后序列信息;CNN - LSTMs 中 CNN 提取特征,LSTMs 进行预测;Bidirectional LSTMs 用两层 LSTM 分别处理前后信息;GRU 改进了 RNN,减少了门控,参数更少。LSTM 和 GRU 结构复杂度不同,在不同数据集大小下表现有差异 。
四、生成式对抗网络(GAN)与超参数调整
(一)GAN 原理与训练
GAN 由生成器和判别器组成,生成器将随机向量转换为图像,判别器区分真实和生成图像。训练时,生成器试图欺骗判别器,判别器努力识别真假图像 。训练技巧包括输入规范化、使用合适的激活函数(如生成器用 tanh)、采用 wassertein GAN 损失函数、利用标签(或反转标签、标签平滑)、使用 mini - batch norm 等归一化方法、避免使用 ReLU 和 pooling 层、选择 ADAM 优化器并合理设置学习率、给 D 的网络层增加高斯噪声 。
(二)超参数调整策略
神经网络超参数分为网络参数、优化参数、正则化参数三类。超参数调优旨在平衡模型优化和正则化,寻找最优解。学习率和损失函数可调参数最重要,批样本数量和动量优化器参数次之,Adam 优化器超参数、权重衰减系数、dropout 比率和网络参数通常按建议值设置 。
极端批样本数量下,batch size 过小时,可冻结预训练网络的 batchnorm 参数或用 groupnorm 代替;batch size 过大时,可采用 LARS 算法。微调是迁移学习的一种,利用预训练模型参数,在新数据集上以小学习率训练。微调方法有全模型训练和分多步训练,先冻结底层训练顶层可防止顶层初始化干扰底层已学习的特征 。不同数据集特性下,微调策略不同。目标检测中使用预训练模型可加快训练,但存在任务差异问题;从零开始训练需注意数据集增强、batch size 等问题 。自动化超参数搜索方法有网格搜索、随机搜索和基于模型的超参优化(如贝叶斯超参优化) 。