《深度学习入门-基于Python的理论与实现》第四章带读 – 神经网络的学习

article/2025/9/16 14:16:52

在这里插入图片描述

文章目录

      • 4.1 从数据中学习
      • 4.2 损失函数
        • a.均方误差
        • b.交叉熵误差
        • c.mini-batch学习
        • d.为何要设定损失函数
      • 4.3 梯度
        • 梯度法
      • 4.4 神经网络的学习步骤


  • 开篇介绍:《深度学习入门-基于Python的理论与实现》书籍介绍
  • 第一章:《深度学习入门-基于Python的理论与实现》第一章带读
  • 第二章:《深度学习入门-基于Python的理论与实现》第二章带读 – 感知机
  • 第三章:深度学习入门-基于Python的理论与实现》第三章带读 – 神经网络

上一章我们介绍了什么是神经网络,本章我们接着介绍神经网络的学习,这里的“学习”是指从训练数据中“自动”获取最优权重参数的过程。

4.1 从数据中学习

  • 数据驱动

通常要解决某个问题时,人们习惯以自己的经验和直觉来分析问题找出规律,然后反复试验推进。机器学习在前期收集问题的各项特征数据,用模型从数据中发现答案,争取避免人为介入。深度学习在数据收集上(比如选/不选哪些特征的数据)较之机器学习更能避免人为介入。

举例来说,我们如何能实现从一堆手写数字中区别出是不是“5”呢?

图片

如果让我们自己设计一个程序能将“5”正确分类,会发现虽然人可以很容易识别出“5”,但是却很难说明自己是基于何种特征规律识别出的。而且从图4-1可以看到,每个人各有自己的书写习惯,要确定其中的规律非常困难。

如果我们引入机器学习技术似乎可以实现是否是“5”的分类问题。先从图像中提取特征量(SIFT、SURF和HOG等),用向量的形式表示。然后使用机器学习中的SVM、KNN等分类器对这些特征向量进行学习,获得分类器的最优参数。只是,我们需要注意的是,针对不同的问题,合适的特征量提取方式和机器学习模型的选择都需要不同的人工考量的参与。

除了上面介绍的两种方法外,这里如果用深度学习方法的话,上面第二种方法中的特征量的设计可以省去人工的参与而完全由机器来学习。三种方法的比较,如图4-2所示。

图片

4.2 损失函数

神经网络的学习目标是寻找权重参数的最优值,在学习的过程需要有数值类指标来表示当前的状态。通常,我们用损失函数来作为这个指标。损失函数表示神经网络当前的性能与最优目标的差距,一般用均方误差和交叉熵误差等。

a.均方误差

公式如下:

图片

yk表示神经网络的输出,tk表示训练数据,k表示数据的维度。

b.交叉熵误差

公式如下:

图片

log表示以e为底数的自然对数(log e)。yk是神经网络的输出,tk是正确解标签。并且,t k中只有正确解标签的索引为1,其他均为0(one-hot表示)。因此,式(4.2)实际上只计算对应正确解标签的输出的自然对数。

c.mini-batch学习

不管是机器学习还是神经网络学习,在遇到要处理的训练数据量在万级以上的时候,如果以全部数据为对象求损失函数的和,计算过程太长。因此,从全部数据中随机选出多个小批量数据,作为全部数据的近似,然后对这几个批次的数据进行训练,这种方式称为mini-batch学习。

d.为何要设定损失函数

以手写数字识别任务为例,学习的目标是获得使识别精度尽可能高的神经网络,为什么不直接把识别精度作为指标,而是要另外引入损失函数呢?这里需要考虑导数的连续性问题。假设某个神经网络正确识别出了100个训练数据中的32个,识别精度为32%,以识别精度为指标的话,微调参数,识别精度不会有反应,即使有反应也是不连续地、突然地变化(类似于阶跃函数)。在参数变化而精度不变的阶段,参数的导数为0,神经网络无法进行学习。

在神经网络的学习中,寻找最优参数(权重和偏置)时,要寻找使损失函数的值尽可能小的参数。为此需要计算参数的导数,并以这个导数为指引,逐步更新参数的值。

4.3 梯度

由全部变量的偏导数汇总而成的向量称为梯度。

梯度法

神经网络寻求的最优参数(权重和偏置)是指损失函数取最小值时的参数。

虽然梯度的方向并不一定指向最小值(可能指向局部极小值或者鞍点),但是沿着梯度方向能够最大限度地减小损失函数的值,所以以梯度信息为线索,作为最小值位置的寻找方向。函数的取值沿着梯度方向前进一定距离后重新计算梯度,再沿着新梯度方向前进的过程就是梯度法。

4.4 神经网络的学习步骤

前提

神经网络存在合适的权重和偏置,调整权重和偏置以便拟合训练数据的过程称为“学习”。神经网络的学习分成下面4个步骤。

  • 步骤1(mini-batch)

    • 从训练数据中随机选出一部分数据,这部分数据称为mini-batch。我们的目标是减小mini-batch的损失函数的值。
  • 步骤2(计算梯度)

    • 为了减小mini-batch的损失函数的值,需要求出各个权重参数的梯度。梯度表示损失函数的值减小最多的方向。
  • 步骤3(更新参数)

    • 将权重参数沿梯度方向进行微小更新。
  • 步骤4(重复)

    • 重复步骤1、步骤2、步骤3。


书籍下载链接:https://pan.baidu.com/s/1goHhf2GZt0gxxbLXa42CmA
密码: 4vi2


欢迎关注微信公众号【布道NLP】获取更多AI相关知识。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/YiyVHHTP.shtml

相关文章

机器学习与深度学习入门篇

一、机器学习 1.机器学习是什么? 机器学习是将无序数据转换为价值的方法。 2.机器学习的价值 从数据中抽取规律,并预测未来。 3.机器学习的应用 (1)分类问题 图像识别、垃圾邮件识别。 (2)回归问题 股…

深度学习入门:基于Python的理论与实现①

深度学习入门:基于Python的理论与实现① 机器学习的三大要素第一章python入门1.Numpy1.1.numpy的N维数组1.2.numpy广播1.3访问元素 2.Matplotlib 第二章感知机1.感知机是什么2.感知机的实现2.1简单的实现2.2导入权重和偏置 3.多层感知机 第三章神经网络1.从感知机到…

深度学习入门与实战

数学基础 线性代数 深度学习背后的核心是标量、向量、矩阵和张量这 4 种数据结构,通过使用这些数据结构,以编程的方式解决所有基本的线性代数问题。 标量 标量,实际上就是一个单独的数。 向量及其运算 一个向量表示一组有序排列&#x…

深度学习入门:基于Python的理论与实现——第一章Python入门

本文为深度学习入门:基于Python的理论与实现的学习笔记,由于笔者已有matalb、c\c,java相关语言基础,故只记录不同之处需要注意的地方,供给有其他有语言基础,没学过python但研究方向为机器学习等分支方向的同…

《深度学习入门-基于Python的理论与实现》书籍介绍

写在开头,为什么要写这个专题 深度学习入门知识,无非就是神经网络、CNN、RNN等。很早之前就想出一个专题,用于梳理深度学习入门知识,方便形成更好的系统。 经过多方调研、思考,最终决定通过带读经典书籍的方式展开。…

深度学习入门(鱼书)学习笔记

第1章 Python入门 第2章 感知机 第3章 神经网络 3.2.激活函数 sigmoid函数: h ( x ) 1 1 exp ⁡ ( − x ) h(x)\frac{1}{1\exp(-x)} h(x)1exp(−x)1​ ReLU(Rectified Linear Unit)函数: h ( x ) { x , ( x > 0 ) 0 ,…

机器学习之深度学习入门

个人公众号 yk 坤帝 获取更多学习资料,学习建议 本文用浅显易懂的语言精准概括了机器学习的相关知识,内容全面,总结到位,剖析了机器学习的what,who,when, where, how,以及why等相关问题。从机器…

深度学习入门极简教程(一)

深度学习入门极简教程(一) 摘要: 当你和女朋友在路边手拉手一起约会的时候,你可曾想,你们之间早已碰撞出了一种神秘的智慧–深度学习。恋爱容易,相处不易,不断磨合,打造你们的默契&a…

简单易懂的讲解深度学习(入门系列之一)

摘要: 当你和女朋友在路边手拉手一起约会的时候,你可曾想,你们之间早已碰撞出了一种神秘的智慧–深度学习。恋爱容易,相处不易,不断磨合,打造你们的默契,最终才能决定你们是否在一起。深度学习也…

深度学习入门

一、什么是机器学习 人工智能是使一部机器像人一样进行感知、认知、决策、执行的人工程序或系统。其实现的一种方法是机器学习。而深度学习是机器学习的一种,也是近年来较为热门的方法。 人工智能主要有如下三个层面 计算智能能存能算感知智能能听会说&#xff0…

深度学习怎么入门?零基础快速入门深度学习

我根据自己的入门和工作经验,总结了一份超详细的保姆级深度学习从零入门路线,分享给大家; 整个路线分为五个部分: 基础知识;机器学习理论入门;机器学习竞赛实战;深度学习理论入门;深度学习竞赛实战; 1.基础知识学习 首先,我们来…

初学者如何快速入门深度学习?

随着人工智能热潮的再次袭来,深度学习也一度走进大家的视线。相信大家对于深度学习并不陌生,这是人工智能的核心技术之一。因此 要想学习人工智能,就必须要掌握好深度学习的内容。那么小白如何快速入门深度学习呢?下面我就来讲讲入门深度学习…

PyTorch 深度学习入门

💂 个人网站:【 海拥】【萌怪大冒险】【2048】🤟 风趣幽默的前端学习课程:👉28个案例趣学前端💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼大军】💬 免费且实用的计算机相关知识题库&…

深度学习入门(看了就会)

什么是深度学习呢? 简单来说就是当你拥有一个数据集的时候,若你想处理它,可能你的反应是for遍历一遍。但深度学习是不需要的。 首先介绍一下深度学习的一些基本概念。 对于一张图片的储存,是分为了三个二维数组,分别是…

深度学习知识点全面总结

👨‍💻作者简介:大数据专业硕士在读,CSDN人工智能领域博客专家,阿里云专家博主,专注大数据与人工智能知识分享,公众号:GoAI的学习小屋,免费分享书籍、简历、导图等资料&a…

爬虫 | 破解APP中阿里云滑动验证码

点击“Python编程与实战”,选择“置顶公众号” 第一时间获取 Python 技术干货! 考虑这样一个场景,当你在app端提交订单/登录的时候有一个滑动验证码怎么处理? 一般我们会采用自动化浏览器完成这样的抓取,但是效率太低。…

尝试修改smali码破解App

尝试修改smali码破解App 因需要访问某些网站,我下载了个App,可安装好后一打开我就惊呆了,我早应该想到的: 我哪会甘心?我找到App的安装包,用某软件打开后,在dex文件中找到了关键词“警告”&am…

一步步破解app协议第二步(审计代码)

根据上一篇文章(一步步破解app协议第一步(利用Fiddler搭建抓包环境))我们知道如何抓包,那么如何从抓取的数据包中获取有用的东西呢?请跟随我的脚步一步步走下去。 本文以前面爱流量的协议分析为例子 快速破…

APP逆向案例之(三)sign 参数破解

说明:某新闻APP sign 参数 抓包发现包含内容: url: https://124.*.*.*/api/categorynews/lists 参数: 其中 sign 参数是需要变化的否则访问失败,其余都是固定的 page: 3, size: 10, category: -2, from: -1, lng: 116.363…

逆向破解思路和获取app的代码,脱壳操作(三)

动态库的加载 其实动态库是缓存到我们手机的某个地方,但是他是怎样和我们的app进行链接的呢? 其实是通过这个 来进行链接的,其中他里面有动态编辑器和动态加载器,来进行链接 运用官方工具拆除出UIKit框架 1.具体的步骤我用一个图…