一、机器学习和深度学习
机器学习和深度学习作为人工智能关键技术备受关注。机器学习包含监督学习、无监督学习和强化学习,分别适用于不同场景。深度学习基于深度神经网络,在图像、语言处理等多领域成果显著。线性回归用于预测连续值,神经网络可处理复杂数据。损失函数衡量模型预测与真实值的差距,梯度下降等优化算法用于寻找最佳模型参数。回归预测连续值,分类预测离散类别,Softmax回归是常用多分类模型。
二、卷积神经网络
通过对比全连接层与CNN在处理图像数据上的差异,全连接层处理图像时因忽略空间结构信息导致参数量大,而CNN借助共享参数和池化方法降低参数量,且遵循平移不变性与局部性原则。图像卷积运算通过卷积核在图像上滑动并进行元素相乘与求和来提取特征 。卷积层由多个卷积核组成,能自动学习权重,实现对图像不同层次特征的提取。填充在图像边缘添加像素,可保持图像尺寸,让边缘像素得到充分利用;步幅决定卷积核滑动间隔,影响输出特征图尺寸和计算量。多通道处理时,卷积核通道数与输入图像一致,各通道分别运算后相加得到特征图。平均池化层将特征图划分为区域,减少计算量和参数数量,在保留主要特征的同时降低数据维度。
LeNet用于手写数字识别,由卷积编码器和全连接层组成。ImageNet数据集包含多种图像。AlexNet架构比LeNet更深更大,采用ReLU激活函数等技术。VGG网络有更细的卷积和更多的层,通过重复VGG块构建,如VGG16、VGG19等。三者层层递进,反映了卷积神经网络从浅层到深层的发展历程。
三、PyTorch神经网络工具箱
PyTorch神经网络工具箱包含神经网络核心组件及构建工具。核心组件有层、模型、损失函数和优化器。构建工具中,nn.Module适用于多种层,可自动提取参数;nn.functional适用于激活函数等。二者在实例化、参数管理和dropout操作上存在差异。构建模型方式多样,如继承nn.Module基类,像Model_Seq类的构建;使用nn.Sequential按层顺序构建,包括利用可变参数、add_module方法和OrderedDict方法等 。
自定义网络模块,如两种残差块及由其组成的RetNet18网络结构。训练模型时,首先要进行数据加载,借助如PyTorch的 torchvision 等工具,对源数据进行下载、预处理,并构建数据迭代器,为后续训练提供合适的数据格式。接着定义损失函数和优化方法,损失函数用于衡量模型预测与真实值的差异,像分类任务常用 nn.CrossEntropyLoss ,回归任务常用 nn.MSELoss ;优化方法则负责调整模型参数,如常见的梯度下降法及其变种,在PyTorch中可通过 torch.optim 封装的优化器实现,如 torch.optim.SGD 。在模型训练阶段,将模型设为训练模式,按批次读取数据,进行正向传播计算预测值,用损失函数计算损失,反向传播求梯度,优化器更新参数;训练过程中可动态调整学习率。
utils.data 中, Dataset 类用于定义数据集,通过 __init__ 、 __getitem__ 和 __len__ 方法实现数据初始化、按索引获取样本和返回数据大小; DataLoader 可批量处理数据,其参数丰富,如 batch_size 控制批大小、 shuffle 决定是否打乱数据,但它并非迭代器,需转换 。
torchvision的transforms可对PIL Image和Tensor对象操作,还能通过Compose拼接多个操作;ImageFolder类能读取不同目录图像数据并结合transforms预处理,用于模型训练。可视化工具类型多样,可从多方面观察模型训练和数据特征,如可视化神经网络、损失值和特征图等。
四、图像分类项目
图像分类旨在将图像划分到不同类别标签以降低分类误差。评估指标包括混淆矩阵衍生的精确率、准确率、召回率、F1_Score,以及P - R曲线、ROC曲线等,可从不同角度衡量模型性能。网络深度是模型重要属性,指最长路径的卷积层与全连接层数量。针对样本量过少问题,可采用迁移学习(利用预训练模型)和数据增强(有监督的平移、旋转等操作与无监督的GAN网络生成样本)两种方法解决。
五、卷积神经网络在PyTorch中实现CIFAR10多分类的过程
CIFAR-10数据集包含10个类别的60000张32x32彩色图像,利用torchvision工具加载数据并进行预处理,将图像转为张量并归一化。构建特定的卷积神经网络,依据是否有CUDA选择设备,定义卷积层、池化层和全连接层,确定学习率、损失函数和优化器。训练模型时,按批次读取数据,进行正向和反向传播,更新权重参数,每2000个批次打印一次损失值,完成10个epoch的训练 。
六、CIFAR10多分类任务
训练模型时,遍历测试数据,展示图像、真实标签与预测标签。测试模型时,计算整体和各类别准确率评估性能。采用全局平均池化改进模型,定义网络结构、设置优化器和损失函数并训练。最后,通过定义函数注册钩子收集前向传播信息,实现类似Keras显示各层参数的功能,辅助模型分析。
七、集成算法
集成算法是机器学习的重要部分,包含集成学习简介和分类(Bagging、随机森林、Boosting、Stacking)。集成学习基于综合多个专家判断更优的理念,构建多个学习器,经结合模块输出结果。结合策略有简单平均法和加权平均法,结果常通过投票法产生,且存在集成提升性能、不起作用和起负作用三种情况。
八、手写数字识别项目
训练模型涵盖加载数据集、定义损失函数与优化方法、循环训练和测试模型以及可视化结果等步骤。在实例中,以MNIST数据集为基础,利用PyTorch和torchvision进行数据下载、预处理并建立数据迭代器,构建含两个隐含层的神经网络模型,实例化模型后定义损失函数和优化器。训练过程中记录损失和准确率,动态调整学习率,训练结束后可对结果分析并可视化。
感悟:
图像识别技术融合多领域知识,从机器学习到深度学习不断革新。机器学习的多元学习方式与深度学习的神经网络架构相辅相成,卷积神经网络突破传统,以独特运算和结构优化性能。PyTorch工具箱提供便捷开发途径,在图像分类、CIFAR10多分类及手写数字识别等任务中成效显著。集成算法也为提升模型表现提供新思路。这一技术的发展既体现技术创新,也表明跨领域融合的重要性,激励着人们持续探索创新 。