当前位置: 首页 > news >正文

神经网络初步学习3——数据与损失

一、传统机器学习与神经网络

前言:该部分需要一定的机器学习与数学基础(很浅的基础),如果有不理解的地方可以自行查阅。 

(1)区别


这里不妨以图像识别为例子:
(1)在传统的机器学习视角中:我们需要人工手动去设置并提取我们的特征量,例如常见的SIFT、SURF和HOG等,随后需要我们选择合适的分类器(例如:SVM、KNN等分类器),接着把我们的参数训练出来。
(2)而在神经网络的视角中:我们只需要把图片喂给它即可,它自动帮助我们去提取特征量,自动训练找出参数,相较于传统的机器学习更加方便。

下面的这张图可以很好地反映出他们的关系:

三者区别


(2)数据

一般来说,无论是传统机器学习还是现在的深度学习,都需要三种常见的数据:

        1、训练集:即用来训练模型的数据,模型通过这些数据来不断优化和调整自己的参数

        2、验证集:通常从训练集中抽取部分作为验证集,主要用来观测模型,判断是否更换模型或者是否出现意外情况

        3、测试集:使用测试数据评价训练得到的模型的实际能力反映模型的泛化能力

此外,如果模型在一个数据集表现很好,但是在其他数据集(测试集或真实场景)面前很差,说明模型可能出现了过拟合的情况,如何消除过拟合的情况是一个值得思考的问题,这里不细讲。



二、损失函数

        顾名思义,就是反映这个模型“损失”了多少的函数,在高中的时候我们就遇见过它(最小二乘法相关知识),在这里损失函数是表示神经网络性能的“恶劣程度”的指标,即当前的 神经网络对监督数据在多大程度上不拟合,在多大程度上不一致。

(1)均方误差(mean squared error)

均方误差公式

其中y_{k}表示的是神经网络的输出,t_{k}表示的是监督数据。举个例子,手写数字识别案例中,神经网络总共有十个输出,属于前面我们提到的分类问题,下面是可能存在的一种情况

那么中间的值就是我们的y_{k} (概率值),右边的值是我们的t_{k} (由图可知6是我们的正确答案),我们就可以按照上面的运算进行求解

这里将正确解标签表示为1,其他标签表示为0的表示方法称 为one-hot表示


(2)交叉熵误差(cross entropy error)

其公式如下:

交叉熵误差

 

需要注意的是这里的log一般是指以e为底数的自然对数(\log_{e})。那么我们会发现,如果按照one-hot表示,那么最终的结果只是与我们的正确结果的 y_{k} 有关,即交叉熵误差的值是由正确解标签所对应的输出结果决定的

其python表达形式如下:

import numpy as npdef cross_entropy_error(y, t):a = 1e-7return -np.sum(t* np.log(y + a))

有人就会问了,为什么要加一个a呢?

——如果说 y_{k} = 0 ,那么结果会是负无穷大,为了解决这个问题,我们引入 a(很小)来进行调整,防止出现这种情况。


(3)批量处理

在真正的数据集面前,以手写数字识别为例,往往一个数据集就有几万张图片(一张图片的像素不会很高,不像我们手机里面的照片那样),那么我们能不能把所有的数据全部放进去学习呢?

当然不能,除非你的电脑有足够大的显存,而我们通常的解决方案就是把数据分批次放进去学习,例如一次放100张图片进去学习,那么我们这一批次的损失函数计算是把所有100张图片的损失函数加起来取平均:

以交叉熵为例



三、神经网络的输入与输出

在大部分的图像处理当中,我们一般是将图像的每一个像素作为我们的神经元的输入,将最终的预测分类数目作为输出。

以手写数字图像识别为例,如果图像像素是30*30,那么输入数据是一个30*30=900维达到数据。输出则是一个十维的输出。

 

http://www.lryc.cn/news/583588.html

相关文章:

  • 如何选择时序数据库:关键因素与实用指南
  • HCIP(综合实验)
  • 备受期待的 MMORPG 游戏《侍魂R》移动端现已上线 Sui
  • 【教程】基于GNN的药物相互作用网络中的链接预测
  • 200nl2sql
  • 安全管理协议(SMP):配对流程、密钥生成与防中间人攻击——蓝牙面试核心考点精解
  • python 在运行时没有加载修改后的版本
  • 自动驾驶决策与规划
  • 华为动态路由配置
  • 【Linux | 网络】socket编程 - 使用UDP实现服务端向客户端提供简单的服务
  • 分库分表之实战-sharding-JDBC水平分库+分表后:查询与删除操作实战
  • Android Notification 通过增加addAction 跳转回Service重新执行逻辑
  • 海信IP501H_GK6323处理器免拆卡刷包和线刷救砖包_当贝纯净版
  • LLM 在预测下一个词的时候是怎么计算向量的,说明详细过程
  • 数据库技术体系及场景选型方案
  • RNN及其变体的概念和案例
  • 数据一致性解决方案总结
  • 软件发布的完整流程梳理
  • brainstorm MEG处理流程
  • 【科研绘图系列】R语言绘制解剖图
  • 【leetcode】2235. 两整数相加
  • 本地Qwen中医问诊小程序系统开发
  • softmax
  • PyTorch数据准备:从基础Dataset到高效DataLoader
  • C#字符串相关库函数运用梳理总结 + 正则表达式详解
  • 基于物联网的智能家居控制系统设计与实现
  • 17-C#封装,继承,多态与重载
  • 【AIGC】讯飞长录音ASR转写,使用JAVA实现科大讯飞语音服务ASR转录功能:完整指南
  • JavaScript基础篇——第五章 对象(最终篇)
  • NLP革命二十年:从规则驱动到深度学习的跃迁