首页 > 其他分享 >神经网络学习记录(一):前向传播过程与损失计算

神经网络学习记录(一):前向传播过程与损失计算

时间:2024-10-27 10:48:27浏览次数:3  
标签:得分 记录 模型 损失 神经网络 前向 计算 类别

本文记录了我在学习 BP 神经网络过程中的一些认识。在逐步学习的过程中,难免会对某些内容产生理解偏差,如有不当之处,恳请指正,感谢。

前向传播过程(Forward_Propagation)

前向传播(Forward Propagation)是神经网络的核心计算过程,它的主要目的是计算神经网络的输出,即给定输入后经过一系列计算得到模型的预测值。

前向传播来源

前向传播的概念和来源可以追溯到生物神经元的工作方式和线性代数中的计算流程。神经网络模型的基本单元——神经元,接收输入信号,通过加权和偏置计算出一个输出。这个过程模拟了生物神经元接收和处理信号的过程,而前向传播则是对这种信号传递和计算过程的抽象和简化。

从数学角度来看,前向传播来源于线性变换和非线性激活函数的组合。在每一层神经元的计算中,输入向量和权重矩阵相乘,加上偏置后通过激活函数处理,最终传递到下一层。这个计算过程在整个网络中一层层传播,称为“前向传播”。

为什么要进行前向传播?

前向传播是神经网络计算的基础步骤,它的主要作用包括:

  • 输出预测值:前向传播将输入数据逐层传递,通过神经网络的权重和激活函数,最终输出预测结果。这是进行分类、回归等任务时获得预测值的必要步骤。
  • 计算损失:在训练过程中,前向传播的结果会与真实标签进行对比,计算损失(例如均方误差或交叉熵损失)。损失函数的值是衡量预测值与真实值差距的依据,为网络的优化提供目标。
  • 为反向传播做准备:反向传播依赖于前向传播的计算结果,通过反向传播调整权重以最小化损失。因此,前向传播是训练过程中不可或缺的一部分。

传播流程

单神经元的前向流程图

  1. 输入层处理
  • 输入层将图像数据转换为一个向量作为输入。(按列从上到下依次转换)
  1. 计算线性变换
  • 将输入x与权重矩阵W相乘,并加上偏置项b,得到每个类别的原始得分。
  1. 激活函数
  • 在某些神经网络模型中,会对z应用一个激活函数(如ReLU或Softmax)。如果是分类任务,通常使用Softmax,这个步骤将原始得分转化为每个类别的概率。
  1. 输出层
  • 最终输出是一个向量,每个元素代表输入图像属于该预测类别的概率或得分。
  1. 损失计算
  • 通过损失函数来量化模型预测结果与真实标签之间的差距。对于分类任务,通常使用交叉熵损失。

当传入一张图片时,首先需要判断其尺寸和像素大小。然后根据这些信息,将输入图像的所有像素值按列展开成一个一维向量,这个向量就是模型的输入特征向量x,其中每个值都反映了原图片中对应像素点的亮度或颜色信息。这一步完成了输入层的处理。

在这里插入图片描述

接下来,对该一维特征向量x进行线性变换。模型会结合每个类别的权重矩阵W和偏置项b,通过矩阵乘法和加法计算出每个类别的原始得分。这些原始得分反映了模型对各个类别的初步判断。通过比较得分,我们可以初步推断出模型的预测结果:得分最高的类别即为模型识别出的类别。这一步标志着线性变换处理的完成。

在这里插入图片描述

在这里插入图片描述

然而,此时得到的仅仅是数值分数,并不具有直观的概率意义。为了更清晰地表示模型对各类别的置信度,我们需要将这些分数转换为概率值。为此,使用Softmax函数,它能将所有类别的原始分数进行指数化并归一化,将其映射到0到1之间的概率值,并且保证所有类别的概率之和为1。这样,模型不仅给出了最可能的类别,还以概率的形式反映了其预测的信心程度,从而完成了更为可靠的分类判断。

在这里插入图片描述

在这里插入图片描述

然后输出初步运算的结果向量,代表了各类别的概率值。

但是其预测结果不一定正确,为了能够量化这种不正确的程度以便于后续优化,还要进一步处理,从而提出损失的概念,即通过计算损失函数值来衡量模型预测的结果与真实标签之间的差距并为模型优化提供方向。损失的计算是针对单次预测的,而不是特征向量之间的直接比较。损失越大说明识别效果越差或不够自信,需要进一步优化。

在这里插入图片描述

通过++反向传播和梯度下降不断减少损失++,模型可以更准确地学习数据中的模式,提高分类结果的准确性和鲁棒性。

实际上,在处理图片数据时,图像被拆解为一个个像素点,这些像素值构成了输入特征向量。在前向传播过程中,模型会结合带标签图片的像素信息,分析出不同类别的特征模式。通过权重矩阵的加权求和(即矩阵乘法)和偏置项的微调,模型能够捕捉图像中的复杂模式。随着模型训练的深入,权重矩阵不断优化,逐步学习到哪些像素区域对不同类别具有更强的区分力。最终,模型可以准确识别新输入的图像,并进行可靠的分类预测。++整个特征提取和分类的过程保证了每个像素点的数值都被纳入模型分析,从而提升了分类的准确性和泛化能力。++

总之,前向传播的关键在于得分的计算及损失计算,便于后续不断优化合适的特征权重矩阵和偏置项,使模型能够捕捉数据中对不同类别具有区分度的关键模式(有区分力的像素区域),以更好地适应各类别的特征,提高预测的精度和稳定性。

而参数调整过程则要利用损失来进行,即以最小化损失为目标,优化调整权重矩阵及偏置项,在后续的反向传播中利用梯度下降法进行。

损失的计算

公式适用场景作用
Softmax(非损失)多分类任务将原始得分 (z_k) 转换为概率
交叉熵损失分类任务(与 Softmax 配合使用)衡量预测概率与真实标签的差距
Hinge Loss支持向量机 (SVM) 或二分类任务强调正确类别与错误类别之间的边界

交叉熵损失

在这里插入图片描述

可以看出,交叉熵的计算基于 Softmax 处理后的数据。在 Softmax 中,首先对每个类别的得分取自然指数(e),以放大不同类别之间的差异,然后进行归一化,使所有概率值分布在0到1之间,并保证总和为 1,从而赋予这些得分以概率的意义

计算交叉熵损失时,利用交叉熵公式进行求解。在这个过程中,交叉熵损失(L)实际上是针对真实类别的预测概率的负对数。计算对数的目的是:预测概率越接近1,损失越小,模型越准确;而对于错误的预测,损失会更大,从而反映出明显的区分效果。取负则是为了保证损失值为非负数,使其符合优化目标。

Hinge Loss

在这里插入图片描述

在这里插入图片描述

公式中的(m)被称为损失安全边界值,用于规定正确类别的预测得分与其他类别的预测得分之间的最低差距。即,只有当正确类别的得分比其他类别的得分至少高于(m)时,才认为模型没有损失;否则,即使正确类别的得分稍高于错误类别,仍会产生损失。这一机制的作用在于防止模型在得分接近的情况下误认为预测效果良好

例如,如果正确类别的预测得分为4,而某个错误类别的得分为3.9,那么在没有安全边界(m)的情况下,模型会认为这次预测是成功的。但实际上,这种微小的差距可能是偶然造成的,并不能反映出模型具备良好的识别能力和泛化性能。因此,设置损失安全边界(m)是为了确保模型在不同类别之间形成明确的区分,提高预测的可靠性和泛化能力

正则项的引入

在这里插入图片描述

在这里插入图片描述

需要注意的是,前面计算的损失值仅基于模型的初步预测得分,而未考虑模型的复杂度。这可能存在不同复杂度的模型在计算中获得相同的损失值的情况。

例如,一个简单模型和一个过于复杂的模型在同一数据集上可能产生相同的损失值,但复杂模型可能过拟合了训练数据,缺乏良好的泛化能力。因此,在优化过程中,除了计算损失值外,还需要引入正则化项,以衡量模型的复杂度,防止模型因过于复杂而影响泛化性能。正则化通过对模型参数的约束,有助于在模型性能与复杂度之间取得平衡,提高模型的鲁棒性。

从图12中可以看到,模型A的变异程度较大(仅关注一类数据,表现为过拟合),而模型B基本无变异,但二者计算得到的损失值却相同。这表明,仅通过损失值来衡量模型的性能存在局限性,因为两者的预测效果在表面上看似相同,但实际表现却大相径庭。模型A可能过度拟合于特定数据,而模型B则可能具备更好的泛化能力。

为了弥补这种损失结果的不准确性,我们引入了正则项。正则项通过对模型参数(如权重矩阵(W))施加约束,惩罚模型过度复杂的结构,以防止过拟合。正则化帮助模型在性能和复杂度之间取得平衡,从而提高其在新数据上的泛化能力,使评估结果更加准确。

正则惩罚项

  • 概念

    • 正则惩罚项是一种添加在损失函数中的附加项,用于限制模型的复杂度,避免模型对训练数据的过拟合。它通过对模型参数施加约束,鼓励模型保持权重较小或稀疏化。
  • 意义:

    • 正则项的主要目的是提高模型的泛化能力,使其在测试集上的表现更为稳定。通过控制模型的权重大小,避免过度拟合训练数据的细节,并平衡模型的复杂度和性能。

在这里插入图片描述

在这里插入图片描述

总之,通过在损失函数中添加正则项,模型在优化过程中不仅关注预测误差,还会考虑参数的大小,从而避免过拟合。

现在,我们已经得到了模型每次预测的结果以及各类别的原始得分分析,同时也计算了包含正则项的损失值,以此来衡量模型的预测效果。接下来的关键步骤是利用这些损失值优化模型的权重矩阵和偏置项,从而提升模型的性能。

这一过程通过反向传播(Backpropagation)来实现,即通过链式法则计算损失对模型参数的梯度。利用这些梯度,模型采用梯度下降法或其他优化算法更新权重和偏置项。通过不断地优化参数,模型能够逐渐增强对各类别之间的区分能力,特别是在输入图像中能够识别出更具区分力的像素区域,从而提高分类的准确性和泛化能力。
在这里插入图片描述

下面则来说说梯度下降与反向传播法,如何进行参数更新。

标签:得分,记录,模型,损失,神经网络,前向,计算,类别
From: https://blog.csdn.net/2303_79373693/article/details/143265321

相关文章

  • Anaconda Pytorch 深度学习入门记录
    环境我这里用的是Anaconda最新的版本24.9.2,创建的pyton版本是3.9,虚拟环境名叫pytorch,下载的pytorch版本是12.1初步配置创建虚拟环境首先进入Anaconda的终端,然后运行condacreate-nxxxpython=3.9创建一个虚拟环境,这里xxx是虚拟环境的名字,后面跟着的是python的版本然后用con......
  • MySQL_踩坑记录
    ===MySQL_踩坑记录===本文的所有解决方案并非万能,只是记录本人遇到的情况。Authenticationplugin'mysql_native_password'cannotbeloaded初始问题及解决方案Windows环境下使用MySQLConnector/C++远程访问Linux中的MySQL服务,下面是测试代码。//测试是否可以访问......
  • 神经架构搜索:自动化设计神经网络的方法
    在人工智能(AI)和深度学习(DeepLearning)快速发展的背景下,神经网络架构的设计已成为一个日益复杂而关键的任务。传统上,研究人员和工程师需要通过经验和反复试验来手动设计神经网络,耗费大量时间和计算资源。随着模型规模的不断扩大,这种方法显得愈加低效和不够灵活。为了解决这一挑......
  • 用户对某条账单记录的删除操作
    1.数据获取与处理StringbillId=request.getParameter("billId");首先,从客户端请求中获取账单的ID是删除操作的第一步。这里使用request.getParameter()方法来提取传入的账单ID。2.DAO模式的使用BillDAObillDAO=newBillDAO();使用DAO模式的主要目的是将数据库操......
  • (神经网络和卷积入门)Pytorch小土堆跟练代码(第8天)
    本系列为跟练小土堆每集代码,然后进入李宏毅机器学习教程。在系列中会敲完所有视频中代码,并且在注释详细写出感悟和易错点。欢迎大家一起交流!最前面的神经网络和卷积,可以移步我的另一个帖子池化层只提取一部分特征,可以大大的加快训练速度最后输出类似于马赛克的效果'池......
  • 【Atcoder训练记录】AtCoder Beginner Contest 377
    训练情况赛后反思D题差一点点吧?可能不去乐跑就能写出来了A题我们发现ABC是字典序单调递增的,字符串先排序再判断是否为ABC即可。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;voidsolve(){ strings;cin>>s; sort(s.begin(),s.end()); i......
  • Python 潮流周刊#74:创下吉尼斯世界记录的 Python 编程课(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。本期分享了12篇文章,12个开源项目,2则音视频,全文2300字。好消息:即日起至......
  • 0-petalinux2018.3 摸索记录 - 快速亮机
    一、环境搭建1、环境要求①需要注意petalinux、vivado、vitis、linux之间的版本对应关系,在ug1144上可以找到②需要注意linux的硬件要求,运存8G以上不然会报错等等2、环境依赖配置2018.3_PetaLinux_Package_List.xlsx①安装包sudoapt-getinstalltofrodos......
  • 记录no.12
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>;//intmain()//{//0表示假非0表示真//   intage=10;//age=10<18,if不输出//   if(age>18)//if函数为真,输出结果 为假不输出//   {//      printf("成年\n");//   }//   el......
  • 搞清楚这个老六的真面目!逐层‘剥开’人工智能中的卷积神经网络(CNN)
    第三章:超越基础——图像中的特征检测上一篇《揭开计算机视觉的神秘面纱,原来机器是这样“看图”的!》本篇序言:上一篇我们实现并训练了一个神经网络,成功让计算机“看懂”了图像。可以说,我们已经一只脚跨进了AI研发的大门。不过,虽然我们迈入了AI这个神秘的领域,实际上,我们还只是......