神经网络在分类问题中的应用(反向传播算法)

2023-11-20

目录

 1、W初始值的设定

2、反向传播算法

反向传播的实例:


        在其他的一些算法中对于分类问题易出现项数过多、过度拟合的情况,所以这里用一个新的方法来神经网络来解决问题,神经网络可以很好的适用特征空间n很大的情况。

        用图像来做一些名词解释。在图像中,我们通常称Xo,X1,X2,X3为输入层input layer,中间不对用户输出结果的层我们称为隐藏层hidden layer,最后输出结果的为输出层output layer。像Xo,ao我们称为偏置单元,通常默认值为1。

        在神经网络中,我们可以很好的解决多分类问题。如下图所示,我们可以利用下图的四个输出单元来判断到底属于什么类型的图片。

       

        训练神经网络的步骤:

        ①构建一个神经网络、随机初始化权重

        ②正向传播,计算出相应的输出值Y的向量

        ③计算出代价函数

        ④通过反向传播算法,求出偏导数项

        ⑤将用数值方法得到的偏导数的预估值与反向传播算法得到的偏导数的值进行比较

        ⑥使用一个优化算法(例如梯度下降算法)

 1、W初始值的设定

        我们是否可以跟以前一样直接把所有W(在吴恩达教授的课程里面用θ来表示,都是一样的)设置为0呢?在这下面这个图中,如果我们把W13,W14,W23,W24,W35,W45全部都设置为0,会怎么样呢?我们可以得到W13,W23对X3的影响权重是一样的,在进行一次更新之后W13,W23的值不会为0,但是一定的是W13=W23,所有的都是如此,他们的权重都是一样的,对于这种情况,我们称之为高度冗余。

                

        我们通常采用的方法是随机初始化W的值。初始化一个为10*11的矩阵(根据需要自己设定)。

2、反向传播算法

        这里首先要讲解一下反向传播算法。什么是反向传播算法,说实话,我搞了一两天看着网上的一堆公式实在是看的晕乎乎的,只知道反向传播算法是链式求导,但是却不明白具体是什么东西,这里我将用一个实际的例子来说明什么是反向传播算法。

        定义:反向传播算法就是用更新权值来最小化损失函数;

                ①正向传播;

                        正向传播计算出来的预测值Y

                ②损失函数;

                        C=(1/2)*(Yout-Y)^2     (这里的1/2是为了方便求偏微分)

                ③反向传播计算偏微分;

                        这里最难理解,看下面的实例解释。

反向传播的实例:

        将用一个简单的两层神经网络来解释(我赋予了他们一些具体的数值):

                

        ①正向传播:

         以下的f(x)为激活函数,f(x)=1/(1+{e^{-x}})

         以后会用到对激活函数它的导数,f'(x)=f(x)*[1-f(x)],可自己对f(x)求导证明。

         言归正传,首先对于第一层隐藏层(3、4)

                        f(W1*\binom{x1}{x2})\\=f(\begin{pmatrix} w13 &w23 \\ w14 & w24 \end{pmatrix}*\binom{x1}{x2}) \\=f(\binom{w13*x1+w23*x2}{w14*x1+w24*x2})\\=f(\binom{z3}{z4})\\=\binom{y3}{y4}

             然后对于第二层隐藏层(5)

                        f(W1*\binom{y3}{y4})\\=f(\begin{bmatrix} w35 &w45 \end{bmatrix}*\binom{y3}{y4})\\=f(w35*y3+w45*y4)\\=f(z5)\\=y5

        这里我们得到的y5就是我们的预测值Y

        ②损失函数;

                 C=(1/2)*(Yout-Y)^2     (这里的1/2是为了方便求偏微分)

        ③反向传播计算偏微分;

                我们计算w13,w14,w23,w24,w35,w45的偏微分是为了更新其值,将

w35=w35-\partial C/\partial w35,以此类推更新,然后减小C误差函数。

                我们应该怎么求得\partial C/\partial w35呢? 首先我们整理关于C,w35的公式有:

                        C=(1/2)*(Y-Yout)^2

                         Y=y5=f(z5)

                        z5=w35*y3+w45*y4

                然后根据链式求导

                \partial C/\partial w35\\=\partial C/\partial y5 * \partial y5/\partial z5 *\partial z5/\partial w35 \\=(Y-Yout)*(f(z5)-(1-f(z5)))*(y3)

                现在我们来求\partial C/\partial w13,整理出公式

                        y3=f(z3)

                       z3=w13*x1+w23*x2

                同理,根据链式求导得:

\partial C/\partial w35\\=\partial C/\partial y5 * \partial y5/\partial z5 *\partial z5/\partial y3*\partial y3/\partial z3*\partial z3/\partial w13 \\=(Y-Yout)*(f(z5)*(1-f(z5)))*(w35)*(f(z3)*f(1-f(z3)))*(x1)

         已经可以求得所有的W的偏微分了,然后令W=W-\partial C/\partial W

        至此,“反向传播算法”及公式推导的过程总算是讲完了啦!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

神经网络在分类问题中的应用(反向传播算法) 的相关文章

随机推荐

  • 服务器 声音文件 nginx,docker nginx搭建视频音频服务器

    1 docker pull nginx 2 创建 nginx conf user nobody worker processes 1 error log logs error log error log logs error log not
  • python统计三国高频词,画条形图,绘词云图

    文章目录 前言 思路 代码 效果 总结 前言 记录一次期末作业 要求 1 统计三国演义 下卷 前十的高频词 含出现次数 2 根据上题结果 绘制高频词出现次数的条形图 3 生成三国演义 下卷 词云图 思路 1 open打开读取整篇文档 2 使
  • Vetur can‘t find `package.json`

    Vetur can t find package json 重新装了一下vscode 重新装vetur插件的时候右下角老是弹出提示 并且vetur的格式化也用不了了 我的解决办法是重新安装了vetur的版本 扩展里面找到vetur插件 点击
  • powershell报错:“irm : 请求被中止: 未能创建 SSL/TLS 安全通道“

    问题描述 powershell 执行下载的时候 报错 irm 请求被中止 未能创建 SSL TLS 安全通道 此时系统 所有的网络下载 经过https安全加密方式的TLS请求都会报错 因为加密版本不匹配的问题 可以通过以下命令 查看当前加密
  • TypeScript Property ‘XXX‘ does not exist on type ‘never‘.

    开发过程中出现这个错误是因为Typescript在执行代码检查时在该对象没有定义相应属性 这个错误不致命 遇到该错误有以下几种解决办法 1 将对象设置成 any this targetArray this options find item
  • 面向对象之反射

    目录 反射 优点 实战案例 案例 使用内置函数改造 反射内建函数注意事项 实例方法绑定和非绑定的区别 动态增加属性方法的区别 反射 其实它的核心本质其实就是利用字符串的形式去对象 模块 中操作 查找 获取 删除 添加 成员 一种基于字符串的
  • 【Android -- 开源库】表格 SmartTable 的基本使用

    介绍 1 功能 快速配置自动生成表格 自动计算表格宽高 表格列标题组合 表格固定左序列 顶部序列 第一行 列标题 统计行 自动统计 排序 自定义统计规则 表格图文 序列号 列标题格式化 表格各组成背景 文字 网格 padding等配置 表格
  • C++中的RTTI

    文章目录 dynamic cast运算符 指针类型的dynamic cast 引用类型的dynamic cast typeid运算符 使用RTTI type info类 参考资料 RTTI Runtime Type Information
  • 计算机专业2021考研分数线,2021研究生国家分数线是多少

    2021年考研国家线公布 再看看外语国家线最高的是文学类a类地区53 b类地区50分 每年虽然英语线不高 但是很多学生还是折在英语上 可惜啊 2021考研国家线 国家线公布干什么 一 做出选择 考研本身就是一个选拔性的考试 有人考上 自然也
  • 《时代》评出100位AI领域最具影响力人物,黄仁勋、马斯克、萨姆·奥特曼在列...

    编辑 腾讯科技 郝博阳 郭晓静 翻译 金鹿 在过去的一个世纪里 时代 杂志的封面反映了塑造社会的力量 今年也是如此 生成式人工智能 Generative AI 无疑是今年最受关注的重塑社会的力量 我现在看到的创新水平比我一生中见过的要强几个
  • gRPC的C++编译及简单使用

    grpc的编译及简单使用 1 grpc相关参考文档 grpc 主页 https grpc io grpc 文档 https grpc io docs grpc 简介 https grpc io docs what is grpc intro
  • loadrunner入门教程(1)--概述

    文章目录 1 loadrunner介绍 2 特性 2 1 轻松创建虚拟用户 2 2 创建真实的负载 2 3 定位性能问题 3 工作原理 3 1 VuGen发生器 3 2 控制器 Controller 3 3 分析器 Analysis 4 工
  • 大数据开发:Hive DDL操作入门

    Hive针对于数据管理操作 提供了类SQL语言HQL 在Hadoop生态当中 Hive定位为数据仓库工具 对于数据的各种操作 也就是使用HQL来完成 而HQL查询 可以分为DDL和DML两个部分来掌握 今天的大数据开发学习分享 我们就先来讲
  • 【Java8】Guava——Preconditions

    Preconditions Precondition 是先决条件的意思 也叫前置条件 可以人为是使函数正常执行的参数需要满足的条件 Preconditions 这个静态工厂中 Guava 为我们提供了一系列的静态方法 用于帮助我们在函数执行
  • 50+ 可以帮助提高前端开发效率的 ChatGPT Prompts

    大厂技术 高级前端 Node进阶 点击上方 程序员成长指北 关注公众号 回复1 加入高级Node交流群 如果你已经厌倦了繁琐重复的编码日常 想要提升自己的效率 那你可是来对地方了 借助 ChatGPT 的强大能力 你可以简化你的工作流程 减
  • 数据结构与算法-列表(双向链表)设计及其排序算法

    0 概述 本文主要涵盖列表 双向链表 的设计及其排序算法的总结 列表是一种典型的动态存储结构 其中的数据 分散为一系列称作节点 node 的单位 节点之间通过指针相互索引和访问 为了引入新节点或删除原有节点 只需在局部调整少量相关节点之间的
  • VUE项目获取url中的参数

    获取url参数有两种情况 情况一 内部页面之间互相传值 这里先讲情况一 因为同一项目内互相传值比较简单 假如要从A页面跳转到B页面 并传值 就要在A页面这么写 this router push name B query Id this tI
  • webpack5配置解析

    webpack 配置文件 webpack config js entry output loader plugins mode webpack 命令即可打包 entry entry 入口起点 1 string gt src index js
  • 智能家居地址

    http blog yeelink net p 509
  • 神经网络在分类问题中的应用(反向传播算法)

    目录 1 W初始值的设定 2 反向传播算法 反向传播的实例 在其他的一些算法中对于分类问题易出现项数过多 过度拟合的情况 所以这里用一个新的方法来神经网络来解决问题 神经网络可以很好的适用特征空间n很大的情况 用图像来做一些名词解释 在图像