【深度学习】3-1 神经网络的学习- 学习基础/损失函数

news2024/11/27 0:26:10

学习基础

神经网络的学习。这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程
神经网络的特征就是可以从数据中学习。所谓“从数据中学习”,是指可以由数据自动决定权重参数的值

数据驱动
数据是机器学习的命根子。从数据中寻找答案、从数据中发现模式
机器学习的方法则极力避免人为介人,尝试从收集数据中发现答案(模式)。神经网络或深度学习则比以往的机器学习更加避免人为介人。

在实现数字“5”的识别问题中,神经网络直接学习图像本身,而在神经网络中,图像中包含的重要特征量也都是由机器来学习的。这里所说的“特征量”是指可以输入数据(输人图像)中准确地提取本质数据(重要的数据)的转换器。

深度学习有时也称为端到端机器学习。这里所说的端到端是指从一端到另一端的意思从**原始数据(输入)中获得目标结果(输出)**的意思。

训练数据和测试数据
机器学习中,一般将数据分为训练数据和测试数据两部分
首先,使用训练数据进行学习,寻找最优的参数
然后,使用测试数据评价训练得到的模型的实际能力。
之所以要将数据分为训练数据和测试数据,是因为追求的是模型的泛化能力。因此训练数据也可以称为监督数据

泛化能力是指处理未被观察过的数据(不包含在训练数据中的能力)。获得泛化能力是机器学习的最终目标。如果系统只能正确识别已有的训练数据,那有可能是只学习到了训练数据中的个人习惯写法。这样会导致可以顺利地处理某个数据集,但无法处理其他数据集的情况。此外,只对某个数据集过度拟合的状态称为过拟合(over fitting)。在机器学习中要尽量避免过拟合

损失函数

神经网络以某个指标为线索寻找最优权重参数。神经网络的学习中所用的指标称为损失函数。这个损失函数可以使用任意函数但一般用均方误差交叉熵误差

损失函数是表示神经网络性能的“恶劣程度”的指标,即当前的神经网络对监督数据在多大程度上不拟合,在多大程度上不一致。如果给损失函数乘上一个负值,就可以解释为“在多大程度上不坏”, 即“性能有多好”。

均方误差
均方误差如下式所示:
在这里插入图片描述
yk表示神经网络的输出,tk表示监督数据, k表示数据的维数
在手写数字识别的例子中,yk, tk是由如下10个元素构成的数据

>>> y = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0]
>>> t = [0,0,1,0,0,0,0,0,0,0]

神经网络的输出y时softmax函数的输出,softmax函数的输出可以理解为概率。t是监督数据,将正确解标签设为1,其他均设为0。这种将正确的标签表示为1,其他标签表示为0的表示方法称为one-hot表示
用Python的实现如下:

def mean_squared_error(y, t):
    return 0.5 * np.sum((y-t)**2)

交叉熵误差
交叉熵误差如下式所示:
在这里插入图片描述
tk还是用one-hot表示

实际上上面式子只计算对应正确解标签的输出的自然对数。(错误解是0)
交叉熵误差的值是由正确解标签所对应的输出结果决定的
在这里插入图片描述

如图所示,x等于1时,y为0;随着x向0靠近,y逐渐变小,正确解标签对应的输出越大,公式的值越接近0; 当输出为1时,交叉熵误差为0。如果正确解标签对应的输出较小,则公式的值较大(误差越大)。

Python的实现如下

def cross_entropy_error(y,t):
	delta=le-7
	return -np.sum(t*np.log(y + delta))

这里加上了微小值delta,是因为当出现np.log(0)时,np.log(0)会变成负无穷大-inf,这样导致后面无法计算,为了避免出现这样的情况,所以添加这个微小值

为何要设定损失函数

这里有一个问题就是既然目标是为了获得精度尽可能高的神经网络,为什么不把识别精度作为指标,而要导入损失函数?
对于这一疑问,可以根据“导数”在神经网络学习中的作用来回答。在神经网络的学习中,寻找最优参数(权重和偏置)时,要寻找使损失函数的值尽可能小的参数。为了找到使损失函数的值尽可小的地方,需要计算参数的导数(确切地讲是梯度),然后以这个导数为指引逐步更新参数的值

假设有一个神经网络,现在我们来关注这个神经网络中的某一个权重数。此时,对该权重参数的损失函数求导,表示的是“如果稍微改变这个权重参数的值,损失函数的值会如何变化”。如果导数的值为负,通过使该权重参数向正方向改变,可以减小损失函数的值;反过来,如果导数的值为正,则通过使该权重参数向负方向改变,可以减小损失函数的值。不过导数的值为0时,无论权重参数向哪个方向变化,损失函数的值都不会改时该权重参数的更新会停在此处
之所以不能用识别精度作为指标,是因为这样一来绝大多数地方的导数都会变为0,导致参数无法更新

为什么用识别精度作为指标时,参数的导数在绝大多数地方都会变为0?

那么看一个具体的例子:
假设某个神经网络正确识别出了100笔训练数据中的32笔,此时识别精度为32%。如果以识别精为指标,即使稍微改变权重参数的值,识别精度也仍将保持在32%,不会出现变化。也就是说,仅仅微调参数,是无法改善识别精度的。即便识别精度有所改善,它的值也不会像32.0123…%这样连续变化,而是变为33%,34%这样的不连续的、离散的值。
而如果把损失函数作为指标,则当前损函数的值可以表示为0.92543···这样的值。并且,如果稍微改变一下参数值,对应的损失函数也会像0.93432···这样发生连续性的变化。

识别精度对微小的参数变化基本上没有什么反应,即便有反应,它的值是不连续地、突然地变化。
作为激活函数的阶跃函数也有同样的情况。出于相同的原因,如果使用阶跃函数作为激活函数,神经网络的学习将无法进行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

接口测试框架之APIAutoTest框架

目录 前言 框架简介 框架介绍 框架技术栈图 框架组件图 框架执行流程图 测试用例设计 测试报告 结语 前言 APIAutoTest框架是一款基于Python语言和unittest框架的API自动化测试框架。它可以帮助测试人员快速搭建API测试环境,并通过代码自动化实现API的测试…

每年降本100万元+!企业研发管理可以这样做....

随着市场的定制化需求越来越多,非标设计越来越多;订单交付周期要求短,导致设计人员的设计周期进一步压缩,设计准确率的重要性进一步提升,这些都对企业研发管理提出了更严峻的挑战。 本期干货内容分享 装备制造企业研发…

计算机网络基础学习指南

前言 计算机网络基础是研发/运维工程师都需掌握的知识,但往往会被忽略。 今天,我将对计算机网络基础学习进行详细阐述,涵盖 TCP / UDP协议、Http协议、Socket等,希望你们会喜欢。 1、计算机网络体系结构 1.1 简介 定义 计算机…

Linux基础学习之目录结构、ls命令

1、win系统可能有多个盘,那么就会对应多个文件树,但是Linux系统只有一个文件树,对应的也只有一个根目录,叫做 / 。 2、win与Linux表示层级关系的斜杠的方向不同,一个是斜杠,一个是反斜杠,Linux…

Three.js3D可视化介绍,以及本地搭建three.js官网

一、什么是Three.js three.js官网:https://threejs.org/ Three.js是一个基于WebGL的JavaScript 3D图形库,它可以轻松地在浏览器中创建3D场景和动画。同时,它支持外部模型和纹理的导入,让开发者可以更加便捷地创建出震撼的3D场景…

详细的聊一聊如何使用响应式图片,提升网页加载速度

开篇 确保图片在所有屏幕尺寸上都能良好显示是一项困难的任务,因为你需要考虑图片的大小、图片的放置位置、显示图片的比例、用户连接的速度等等众多因素。结果是,大多数开发者只会为所有屏幕尺寸使用同一张图片,并让浏览器调整图片的大小以适…

【SCI征稿】仅1个月22天录用,极速录用见刊,可接受智能交通,自动驾驶汽车,新型智能算法,智能交通系统,安全运输,交通拥堵等领域

智能算法类SCIE&EI ◆ 影响因子:4.0-5.0 ◆ 期刊分区:JCR2区,中科院3区 ◆ 检索情况:SCIE&EI 双检,正刊 ◆ 征稿领域:智能算法在智能交通中的应用,包括自动驾驶汽车、新型智能算法、…

20个ArcGIS Pro 提示和技巧

ArcGIS Pro是最通用的GIS软件在当今的行业中。为了帮助你充分利用ArcGIS Pro,我们整理了一份20个提示和技巧。 这些技巧包括从基本的定制选项到高级地理空间分析和数据可视化技巧。 链接地图视图 在ArcGIS Pro中链接视图有助于同步显示一个项目中的多个地图或场景…

java项目之汉服文化平台网站(ssm+vue)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的汉服文化平台网站。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&…

2017年全国硕士研究生入学统一考试管理类专业学位联考写作试题

2017年1月真题 四、写作:第56~57小题,共65 分。其中论证有效性分析30 分,论说文35分。 56、论证有效性分析: 分析下述论证中存在的缺陷和漏洞,选择若干要点,写一篇600字左右的文章,对论证的有…

GPT提示词系统学习-第二课-使用GPT帮你“填表格”

开篇 前面我们说到了GPT的提示词使用的好不好对你可以得到精准的答案是至关重要的。今天我们来看看,GPT中如何使用提示词来帮助我们填一个表格。 参照样本让GPT制作可填表格 请阅读以下销售邮件。删除任何可用于识别个人身份的信息 (PII),并用相应的占位符替换它。 例如,…

BIO-NIO-AIO案例

BIO-NIO-AIO案例 1、BIO编程 BIO 有的称之为 basic(基本) IO,有的称之为 block(阻塞) IO,主要应用于文件 IO 和网络 IO, 这里不再说文件 IO, 大家对此都非常熟悉,本次课程主要讲解网络 IO。 在 JDK1.4 之前,我们建立网络连接的时…

endnotex9 在word中插入参考文献遇到的问题

添加超链接 在EndNote X9中点击如下按钮 勾选如图所示选项后确认即可 找到插入文献的上标,按住“Ctrl”后鼠标点击即可跳转到对应文献 修改文献添加位置 先使用endnote插入一篇文献,然后到达插入文献的位置,右键点击。 选择切换域代码 将其…

国内首个,Postcat 上线 AI 生成 API 功能,写接口动几下就行

近期AI风潮席卷全球,Postcat 作为新一代 API 生产力工具,从发布的第一天起就在思考如何通过AIAPI以及插件化架构来更好的满足开发者的需求。 今天我们很高兴的向大家宣布,Postcat.com 正式上线 AI 生成 API 的功能,并且是国内首个…

【GO】 32.pprof

一 . 添加引用启动项目访问指标页面 1.1 在main程序添加pprof引用,并启动网页 "net/http" _ "net/http/pprof" go func() {log.Println(http.ListenAndServe(":6060", nil)) }() 1.2 访问pprof页面 http://127.0.0.1:6060/debug/…

10.MyBatis逆向工程

MyBatis逆向工程 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java实体类Mapper接口M…

腾讯云服务器ping不通怎么解决?什么原因?

腾讯云服务器ping不通什么原因?ping不通公网IP地址还是域名?新手站长从云服务器公网IP、安全组、Linux系统和Windows操作系统多方面来详细说明腾讯云服务器ping不通的解决方法: 目录 腾讯云服务器ping不通原因分析及解决方法 安全组ICMP协…

CentOS7.9 k8s集群环境搭建

环境搭建 本次环境搭建需要安装三台Centos服务器(一主二从),k8s采用1.25.4版本 主机安装 安装虚拟机过程中注意下面选项的设置: 操作系统环境:CPU(2C) 内存(4G) 硬盘(50G)语言选择:English软件选择:基础设施服务器分区…

某乎评论数据

文章目录 声明目标网址加密参数分析与首页测试翻页逻辑实现通用的csv保存全部采集代码整合往期逆向文章推荐很久没有看评论接口了,最近运行了一下旧的脚本,发现不能用,应该是也加了X-Zse-96校验,本篇就试着解决评论采集问题。 声明 本文章中所有内容仅供学习交流,严禁用于…

个人简历电子版免费范文(合集)

个人简历电子版免费范文篇1 基本信息 姓名:__ 性别:__ 出生日期:__ 籍贯:__市 目前城市:__市 联系电话:__ E-mail:__ 应聘方向 求职行业:金融/投资/证券,银行&#xff0c…