彻底理解BP之手写BP图像分类你也行

彻底理解BP之手写BP图像分类你也行

转自:https://zhuanlan.zhihu.com/p/397963213

第一节:用矩阵的视角,看懂BP的网络图

1.1、什么是BP反向传播算法

  • BP(Back Propagation)误差反向传播算法,使用反向传播算法的多层感知器又称为BP神经网络。BP是当前人工智能主要采用的算法,例如你所知道的CNN、GAN、NLP中的Bert、Transformer,都是BP体系下的算法框架。
  • 理解BP对于理解网络如何训练很重要
  • 在这里我们采用最简单的思路理解BP。确保能够理解并且复现

1.2、矩阵乘法

  • 参考:https://www.cnblogs.com/ljy-endl/p/11411665.html

img

1.3、感知机

  • 感知机模拟了神经元突触的信息传递

img

1.4、感知机-矩阵表示

  • 用矩阵的视角来定义感知机结构

img

1.5、感知机-多个样本

  • 当a、b是第一个,x、y是第二个样本时

img

1.6、感知机-增加偏置

  • 关于偏置的存在,考虑y = kx + b直线公式,若b=0,则退化为y = kx,此时表达的直线必定过0点,无法表达不过0点的直线,所以偏置在这里非常重要

img

1.7、感知机-多个样本,并增加偏置(样本维度增加)

img

1.8、感知机-多个输出,同一个样本(输出维度增加)

  • 讨论增加一个输出时的样子

img

1.9、感知机-多个样本,多个输出(样本、输出维度同时增加)

  • 当样本维度,和输出维度同时增加时

img

1.10、关于广播机制

  • 对于矩阵A和B的元素操作(点乘、点加、点除等等)。广播机制约定了,假设A是1x5,B是3x5,则约定把A在行方向复制3份后,再与B进行元素操作,同理可以发生在列上,或发生在B上

img

1.11、以下是动画

  • 解释维度增加时,矩阵表示的差异

img


img


img


img

1.12、锻炼一下

  • 注意这里没有考虑激活的存在
  • 是否和你想的一样?

img


img


  • 再回过头看BP的图,你看懂了吗?学会了用矩阵的视角看这种了吗?
  • 这种图通常省略了偏置和激活,实际中都存在偏置和激活

img

第二节:BP在干嘛,到,函数的最小化

  • BP到底干了嘛,函数最小化是什么?

2.1 实际例子,理解样本书、特征数

img

2.2 理解BP的意义

  • 当我们明白了,特征可以逐层映射到结论时,输入特征和结论可以收集得到。权重该怎么来呢?对,BP就是在给定输入特征和输出结论后,告诉你中间权重应该取值多少是合适的

img

2.3 样本1

  • 这里分析了单位带来的问题

img

2.4 样本2

img

2.5 发生误差

  • 这里着重强调输入特征、推测结果、结论之间的关系

img


img

- 通过推测结果和真实情况之间的误差,反向传递到模型中,促使模型做出调整,使得推测结果更接近真实情况。用到的方法即误差反向传播算法(BP,Back Propagation)

2.6 定义误差度量方式

  • 注意,分类问题二元交叉熵更合适,这里为了简化

img

2.7 转换为函数最小化问题

  • 归根结底是为了知道误差最小时, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YuRuTYw4-1657805811986)(https://www.zhihu.com/equation?tex=%5Ctheta)] 的取值,如何得到最合适的权重?
  • 这里提到,BP告诉我们,采用 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HfClaXwG-1657805811986)(https://www.zhihu.com/equation?tex=%5Ctheta)] 的负梯度方向,关于负梯度方向,请看后面分析

img

2.8 函数最小化举例1

img

2.9 函数最小化举例2

  • 为什么是适当的很小步长,因为梯度方向告诉我们函数上升最快的方向,但是并没有人告诉我们,距离最小值有多远,那么我们只能走很小的一步。然后再看看梯度方向,继续走很小一步。多次迭代后,找到最小值。如果步长太大,其结果是在中间震荡,无法收敛。所以是超参数,经验值

img

第三节:矩阵求导的推导和结论

  • 既然BP可以用矩阵描述,那么反向求导时,则需要处理矩阵求导。这是简化BP理解的一个关键,一定不要用单个值的方式去理解他,太绕了,还难以实现

3.1 导数定义

  • 资料:https://www.cnblogs.com/lingjiajun/p/9895753.html

img

3.2 f(x)=ax时的导数

img

3.3 f(x)=x^2时的导数

img

3.4 使用梯度下降求解sqrt(a)

img

- 有了导数值,我们可以使用梯度下降(负梯度方向更新)法,迭代找到误差函数的极小值位置,今儿找到我们想要的解


  • 步骤如下:

img


  • 代码部分如下:

img

3.5 扩展阅读,使用牛顿法求解sqrt(a)

  • 牛顿法更新时,采用的是x = x - 一阶导/二阶导,速度比梯度下降法快不少,但是他要求解二阶导很难计算

img

3.6 矩阵求导,定义操作

  • 定义基本操作,模拟误差计算函数,使用矩阵表达

img

3.7 定义误差函数error

img

3.8 汇总error的定义

img

3.9 error对A的偏导数

img

3.10 error对B的偏导数

img

3.11 矩阵求导结论

img

第四节:代码实现

4.1 介绍

  • 对于C++
  1. 既然是基于矩阵操作,则首先要实现基于C++的矩阵类。这里matrix.hpp解决矩阵操作问题(矩阵的元素操作、广播等)
  2. 由于C++矩阵乘法效率问题,可以考虑引用OpenBLAS库
  3. 工程实现代码请访问:https://github.com/shouxieai/bp-cpp
  • 对于Python
  1. 直接利用Numpy可以轻易实现矩阵操作、广播、元素乘法
  2. Python中Numpy的矩阵操作,已经进行了优化

IDE采用VSCode,编译采用Makefile,若要配置Makefile和vscode的开发环境,请访问:使用Makefile配置标准工程环境

4.2 图像矩阵化

img

img


4.3 训练逻辑

  1. 加载mnist数据集为矩阵,分别有:
  • 训练集图像:50000 x 784
  • 训练集标签:50000 x 1
  • 测试集图像:10000 x 784
  • 测试集标签:10000 x 1

\2. 预处理数据

    • 将训练集图像转换为浮点数,并做归一化
      • 将训练集标签转换为onehot热独编码,变为50000 x 10
      • 将测试集图像转换为浮点数,并做归一化
      • 将测试集标签转换为onehot热独编码,变为10000 x 10

\3. 初始化部分

    • 初始化超参数,隐藏层数量定为1024,迭代次数10轮,动量0.9,批次大小256

      • 定义4个权重,分别是

        • 输入映射到隐层(input_to_hidden):784 x 1024
          • 隐层偏置(hidden_bias):1 x 1024
          • 隐层到输出层(hidden_to_output):1024 x 10
          • 输出层偏置(output_bias):1 x 10
      • 初始化权重,使用凯明初始化fan_in + fan_out,偏置初始化为0

\4. 前向部分 - forward

    • 从训练集中,随机选择batch个样本记为x(batch x 784)。选择对应的onehot标签记为y(batch x 10)

      • 以x乘以映射矩阵(input_to_hidden),然后加上隐层偏置,再对结果做激活。作为隐层输出,这里采用relu函数为激活

        • hidden_act = (x @ input_to_hidden + hidden_bias).relu()
      • 以hidden_act乘以映射矩阵(hidden_to_output),然后加上输出层偏置,再对结果做激活。作为输出层的输出值。这里采用sigmoid函数做激活

        • probability = (hidden_act @ hidden_to_output + output_bias).sigmoid()
      • 使用probability和y计算交叉熵损失,并打印损失

\5. 反向部分 - backward

    • 计算loss对所有权重的梯度,例如先计算对括号内的导数,然后链式求导往前递推直至所有权重梯度计算出来,这里利用矩阵求导
      • 对所有权重,和其梯度值,执行SGDMomentum算法更新权重。该算法相比前面讲的增加了动量因素。稍微公式不一样

\6. 循环迭代,直至迭代次数满足定义次数后结束并储存模型

PPT课件下载

点击下载

原稿地址

彻底理解,BP反向传播算法,矩阵思维你更好懂 | 手写AI

视频讲解

崔更,规划中,B站主页地址:https://space.bilibili.com/1413433465/

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

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

相关文章

梯度下降法和牛顿法计算开根号

梯度下降法和牛顿法计算开根号 本文将介绍如何不调包,只能使用加减乘除法实现对根号x的求解。主要介绍梯度下降和牛顿法者两种方法,并给出 C 实现。 梯度下降法 思路/步骤 转化问题,将 x\sqrt{x}x​ 的求解转化为最小化目标函数&#xff…

汇博工业机器人码垛机怎么写_全自动码垛机器人在企业生产中的地位越来越重要...

全自动码垛机器人在企业生产中的地位越来越重要在智能化的各种全自动生产线中,全自动码垛机器人成了全自动生产线的重要机械设备,在各种生产中发挥着不可忽视的作用。全自动码垛机器人主要用于生产线上的包装过程中,不仅能够提高企业的生产率…

小说中场景的功能_《流浪地球》:从小说到电影

2019年春节贺岁档冒出一匹黑马:国产科幻片《流浪地球》大年初一上映后口碑、票房双丰收:截至9日下午,票房已破15亿,并获得9.2的高评分。著名导演詹姆斯卡梅隆通过社交媒体对我国春节期间上映的科幻影片《流浪地球》发出的祝愿&…

线性回归与逻辑回归及其实现

线性回归与逻辑回归及其实现 回归与分类 预测值定性分析,即离散变量预测时,称之为分类;预测值定量分析,即连续变量预测时,称之为回归。 如预测一张图片是猫还是狗,是分类问题;预测明年的房价…

hbase 页面访问_HBase

HBase 特点 海量存储 Hbase 适合存储 PB 级别的海量数据,在 PB 级别的数据以及采用廉价 PC 存储的情况下,能在几十到百毫秒内返回数据。这与 Hbase 的极易扩展性息息相关。正式因为 Hbase 良好的扩展性,才为海量数据的存储提供了便利。 2&…

深入理解L1、L2正则化

深入理解L1、L2正则化 转自:【面试看这篇就够了】L1、L2正则化理解 一、概述 正则化(Regularization)是机器学习中一种常用的技术,其主要目的是控制模型复杂度,减小过拟合。正则化技术已经成为模型训练中的常用技术&a…

机器学习中的概率模型

机器学习中的概率模型 转自:https://zhuanlan.zhihu.com/p/164551678 机器学习中的概率模型 概率论,包括它的延伸-信息论,以及随机过程,在机器学习中有重要的作用。它们被广泛用于建立预测函数,目标函数,以…

max std value 宏_Rust Macro/宏 新手指南

Rust语言最强大的一个特点就是可以创建和利用宏/Macro。不过创建 Rust宏看起来挺复杂,常常令刚接触Rust的开发者心生畏惧。这片文章 的目的就是帮助你理解Rust Macro的基本运作原理,学习如何创建自己的 Rust宏。相关链接:在线学编程 - 汇智网…

农林资金 大数据审计案例_大数据审计:现状与发展

大数据审计:现状与发展【摘要】传统手工环境下,审计人员常用的审计方法包括检查法、观察法、重新计算法、外部调查法、分析法、鉴定法等。随着信息技术的发展,被审计单位的运行越来越依赖于信息化环境。信息化环境下审计工作发生了巨大的变化…

angularjs sill 创建项目_开源项目——博客项目MyBlogs.Core,基于.NET 5

个人博客站项目源码,高性能低占用的博客系统,这也许是我个人目前写过的性能最高的web项目了 。目前日均处理请求数80-120w次,同时在线活跃用户数30-100人,数据量累计已达到100多万条,数据库Redis网站主程序同时运行在一…

怀旧服推荐配置_【怀旧服】狂暴战P4毕业装备推荐

在怀旧服开启P4阶段之后,狂暴战玩家的输出也得到了进一步的提升。当然,狂暴战想要打出足够的伤害离不开对应的装备,现在就给大家介绍下狂暴战P4阶段的BIS装备。散件装备狂暴战在这一阶段依旧有非常不错的散件装备,个人建议玩家入手…

高斯混合模型GMM及EM迭代求解算法(含代码实现)

高斯混合模型GMM及EM迭代求解算法(含代码实现) 高斯分布与高斯混合模型 高斯分布 高斯分布大家都很熟悉了,下面是一元高斯分布的概率密度函数(Probability Density Function,PDF): P(x)N(μ,…

十个模块_专栏 | ABAQUS Part模块的十个小技巧

作者介绍星辰_北极星2012年开始从事Abaqus仿真相关工作,服务大小课题逾百项; 主要仿真领域:石油工程、岩土工程和金属加工工艺; 重点研究方向:ABAQUS GUI二次开发、固体力学、断裂以及损伤等。Abaqus有部件(Part)和装配体(Assembl…

深度学习时代的视频理解综述

深度学习时代的视频理解综述 本文为b站bryanyzhu老师四期视频理解相关论文解读的汇总图文笔记。 我们先精读深度学习时代视频理解领域最为重要的两篇论文:双流网络和 I3D。它们分别是领域内两大类方法双流(利用光流)网络和 3D CNN 网络的代…

typec扩展坞hdmi没反应_typec扩展坞转hdmi/vga多功能网口usb转换器苹果华为电脑matebook6元优惠券券后价26.8元...

★typec扩展坞转hdmi/vga多功能网口usb转换器苹果华为电脑matebook,6元拼多多优惠券★券后价26.8元★★★typec扩展坞转hdmi/vga多功能网口usb转换器苹果华为电脑matebook¥26.8元¥32.8元已拼5097件点击抢购猜你喜欢[速发]喵喵机P1热敏打印机手…

NLP任务概览

NLP任务概览 本文为台湾大学李宏毅老师视频课程笔记。本课程介绍了 (2020年)NLP 领域常见的 17 种任务。本文只会从输入输出的角度概览多种 NLP 任务,并简介它们的常见做法,并不会细致地介绍每个任务模型的具体细节。 两种模式与…

大物实验总结模板_期中总结大会amp;期末动员大会

在逐渐降温的双创周麦包坊的期中总结暨期末动员大会来啦在学长团和小麦包的分享下希望大家重新启航奋斗期末板块一学长团经验分享面对本学期十二门科目,作为过来人的前辈们给出很多对本学期各科目的针对性建议,可谓是干货满满,快来瞧瞧吧&…

PTMs:NLP预训练模型的全面总结

PTMs:NLP预训练模型的全面总结 转自:https://zhuanlan.zhihu.com/p/115014536 预训练模型(Pre-trained Models,PTMs) 的出现将NLP带入了一个全新时代。2020年3月18日,邱锡鹏老师发表了关于NLP预训练模型的综述《Pre-trained Models for Natur…

python中提取几列_Python一键提取PDF中的表格到Excel(实例50)

从PDF文件获取表格中的数据,也是日常办公容易涉及到的一项工作。一个一个复制吧,效率确实太低了。用Python从PDF文档中提取表格数据,并写入Excel文件,灰常灰常高效。上市公司的年报往往包含几百张表格,用它作为例子再合…

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解 声明:本文为原创文章,发表于nebulaf91的csdn博客。欢迎转载,但请务必保留本信息,注明文章出处。 本…