简易深度学习(1)深入分析神经元及多层感知机

一、神经元

单个神经元结构其实可以认为是一个线性回归模型。例如下图中

该神经元输入为三个特征(x1,x2,x3),为了方便理解,大家可以认为每条线上都有一个权重和特征对应(w1,w2,w3)。当w1x1+w2x2+w3x3输入到神经元时,会加入一个偏置b,变为w1x1+w2x2+w3x3+b。我们可以把这个值当作f(x)。然后把f(x)送入激活函数比如sigmoid。最后得到的输出结果g(x) = sigmoid(f(x))。最后的g(x)作为xn会输入到下一个神经元。

记忆技巧tips:每个神经元,有多少个输入特征就有多少个边,边上就有多少个w,但有且只有一个b。

在这里插入图片描述

图1


二、MLP

多个神经元按照一层层连接就组成了多层感知机(MLP)。如果是全连接网络((Fully Connected Netural Network,FCN),则每个神经元都会和它前层、后层所有神经元相连。

1、结构

(1)图2,是两层全连接神经网络,明明是三层为什么叫两层神经网络?不是输入层(第0层),隐藏层,和输出层三层吗?在书中,只有隐藏层和输出层算层,输入层不算。可能设计输入的第0层的原因是:

可以理解为这一层主要是处理数据,也就是变换X,比如让数据归一化,one-hot编码什么的。

在这里插入图片描述

图2


(2)上图是课本标准的多层神经网络,下面是为了理解绘制的不标准的示意图。其中画虚线的部分(第0层和第3层)不算神经网络的层,它只是最初的输入数据和最后的输出数据,是个名词相当于一个变量。我们看第1层(隐藏层)做了什么,它把第0层的输入x1和x2变为了输出(把黄色和绿色的线变为紫色)。第二层输出层把隐藏层的输出变为了整体的输出y(把紫色的线变为蓝色的线)。大家可以看出神经网络的层类似于动词相当于一个函数。下面的图是为了方便大家理解,如果绘制的话,还是要按照标准来。

在这里插入图片描述

图3


(3)每一层有n个神经元,为了区分不同神经元上的w,使用带两个数字的w(第一个数字是连接到本层个神经元,第二个数字是上层个神经元)来标识,比如图4,第1层的神经元中,w11标识本层第一个神经元和上层第一个神经元相连,w32表示本层第三个和上层第二个相连。b的话就是本层第几个神经元就是b几,比如b2表示本层第二个神经元上的偏置。
在这里插入图片描述

图4


(4)我们再把视野扩大,刚刚说的是一层,如何标识不同的w和b呢,比如第1层的w11和第2层的w11如何区别呢?一般我们会使用参数上标来标识是第几层的参数。如下图,比如w1表示第一层的w

在这里插入图片描述

图5


tips:其实在日常情况下使用上标标识第几层,使用下标来标识参数关系的,比如w[1]11 这是标准写法,而不是w[1]11

2、分类 or 回归

回归:最后的输出层只有一个神经元,一般预测结果是float值,比如根据x1房子面积,x2房子年龄,预测最后的房屋价格。
分类:几个分类,最后输出层就有几个神经元。比如猫狗二分类,最后输出层是两个神经元,如果最后是十分类,那么最后一层就是十个神经元。

图6

图6




3、前向传播

(1)从神经网络前面把数据从输入到输出的过程为前向传播。比如图2,数据x1,x2输入到隐藏层1,然后计算后输入到输出层,最后输出结果。
类似线性模型,即输入x,使用参数w,b计算wx+b的过程。
(2)平时都是按照一个批次进行矩阵计算的,下面是批量为3时输入到图5第一层神经网络的情况。
输入的数据为(批量*特征个数)形状的矩阵,
隐藏层的参数W为(特征个数*本层神经元个数)形状的矩阵,
b为(1*神经元个数)形状的向量。
在这里插入图片描述

图7




4、反向传播

反向传播的是梯度,梯度下降是为了优化每一层的参数。
step1:
神经网络最后的输出结果为y_hat,训练数据中的标签为y,使用损失函数计算两者的误差。此时,第2层的w、b参数可以使用梯度下降直接更新了,因为本层的w,b直接组成了loss函数即 :   loss(w[2]11O1+w[2]12O2+w[2]13O3+w[2]14O4+b[2]1-y),比如该值为loss1,loss1对w[2]11求偏导,然后乘以学习率得出更新的值,w[2]11减去更新的值即为更新后的w[2]11
step2:
把第2层的梯度传到第1层,根据链式法则,第1层的参数可以进行更新。
在这里插入图片描述

图8


下面我们举个例子详细说一下反向传播梯度。
下图中x,y,z都可以看作是w参数,f函数看为损失函数。绿色为特征x,y,z现在的值,红色为对应的导数(梯度)。比如求x的梯度,根据链式法则,先f对q求导,然后求q对x的导数,结果为-4*1,1是本地计算的梯度,-4是反向传过来的梯度。

在这里插入图片描述

图9 图片来源:李飞飞cs231n 2017_lecture4




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

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

相关文章

计算机组成期末复习(山大复习版)

文章目录 前言一.计算机系统概述1.计算机的软硬件概念及各自组成易错点: 2.冯诺依曼计算机的特点:易错点: 3.程序和数据都采用二进制代码,计算机如何区分指令和数据?4.现代计算机硬件框架图5.计算机硬件的主要技术指标…

LabVIEW与C#相互调用dll

C#调用LabVIEW创建的dll 我先讲LabVIEW创建自己的.net类库的方法吧,重点是创建,C#调用的步骤,大家可能都很熟悉了。 1、创建LabVIEW项目,并创建一个简单的add.vi,内容就是abc,各个接线端都正确连接就好。 …

【Linux杂货铺】Linux学习之路:期末总结篇1

第一章 什么是Linux? Linux 是 UNIX 操作系统的一个克隆;它由林纳斯 本纳第克特 托瓦兹从零开始编写,并在网络上众多松散的黑客团队的帮助下得以发展和完善;它遵从可移植操作系统接口(POSIX)标准和单一 UNIX 规范…

[机器学习]-4 Transformer介绍和ChatGPT本质

Transformer Transformer是由Vaswani等人在2017年提出的一种深度学习模型架构,最初用于自然语言处理(NLP)任务,特别是机器翻译。Transformer通过自注意机制和完全基于注意力的架构,核心思想是通过注意力来捕捉输入序列…

Pycharm中安装Pytorch的库

step1&#xff1a; step2&#xff1a; step3&#xff1a; pip install torch torchvisionstep4&#xff1a; pip install numpy<2 # 版本低点&#xff0c;和pytorch版本不兼容&#xff0c;我当时是用的2.0的step5&#xff1a; pip install pandasstep6&#xff1a; …

累积势函数分类

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在AI学习笔记&#…

[BUUCTF从零单排] Web方向 02.Web入门篇之『常见的搜集』解题思路(dirsearch工具详解)

这是作者新开的一个专栏《BUUCTF从零单排》&#xff0c;旨在从零学习CTF知识&#xff0c;方便更多初学者了解各种类型的安全题目&#xff0c;后续分享一定程度会对不同类型的题目进行总结&#xff0c;并结合CTF书籍和真实案例实践&#xff0c;希望对您有所帮助。当然&#xff0…

《数字图像处理与机器视觉》案例三 (基于数字图像处理的物料堆积角快速测量)

一、前言 物料堆积角是反映物料特性的重要参数&#xff0c;传统的测量方法将物料自然堆积&#xff0c;测量物料形成的圆锥表面与水平面的夹角即可&#xff0c;该方法检测效率低。随着数字成像设备的推广和应用&#xff0c;应用数字图像处理可以更准确更迅速地进行堆积角测量。 …

Java中反射的使用

无参构造器 方法的调用 package com.studio;import java.lang.reflect.Method;class User {private String name;/*无参构造器*/public User() {}public String getName() {return name;}public void setName(String name) {this.name name;}Overridepublic String toString…

基于STM32的智能门锁控制系统

目录 引言环境准备智能门锁控制系统基础代码实现&#xff1a;实现智能门锁控制系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;门锁管理与优化问题解决方案与优化收尾与总结 1. 引言 智能门锁控制系统通过使用STM32嵌…

【你也能从零基础学会网站开发】(了解)关系型数据库的基本架构体系结构与概念理解

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 关系型数据库的…

Spring Boot 学习第八天:AOP代理机制对性能的影响

1 概述 在讨论动态代理机制时&#xff0c;一个不可避免的话题是性能。无论采用JDK动态代理还是CGLIB动态代理&#xff0c;本质上都是在原有目标对象上进行了封装和转换&#xff0c;这个过程需要消耗资源和性能。而JDK和CGLIB动态代理的内部实现过程本身也存在很大差异。下面将讨…

StaleElementReferenceException 不再是问题:Google Colab 上的 Selenium 技巧

背景介绍 在现代网页数据抓取领域&#xff0c;Selenium 是一款强大的工具&#xff0c;它使得自动化浏览和数据提取变得异常简单。然而&#xff0c;当面对动态页面时&#xff0c;许多爬虫开发者常常会遇到一个令人头疼的问题——StaleElementReferenceException。这一异常的出现…

MTK7621:交换芯片工作队列

mt7530交换芯片的数据接收中断后,把具体接收数据工作任务、委托到workqueue队列中,让内核work_thread()线程任务来处理,这部分内容请参考《workqueue工作原理》中的描述。 workqueue基本工作流程框架如下: 框架业务关系: 1,程序把work单加入到workqueue中,就等于把工…

java 操作 milvus 2.1.4

1. 确认 docker 运行的 milvus容器镜像版本情况&#xff1a; 2. pom 依赖&#xff1a; <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.1.0</version><exclusions><exclusi…

压缩包怎么解压,解压压缩包不损坏文件

常见格式&#xff1a; ZIP&#xff1a;最常见的压缩文件格式之一&#xff0c;支持跨平台。RAR&#xff1a;另一种常见的压缩文件格式&#xff0c;通常压缩率比ZIP高&#xff0c;但不如ZIP普及。7Z&#xff1a;来自7-Zip的压缩格式&#xff0c;支持更高的压缩率和一些高级特性。…

使用Python绘制太阳系图

使用Python绘制太阳系图 太阳系图太阳系图的优点使用场景 效果代码 太阳系图 太阳系图&#xff08;Sunburst Chart&#xff09;是一种层次结构图表&#xff0c;用于表示数据的分层结构。它使用同心圆表示各个层级&#xff0c;中心圆代表最高层级&#xff0c;向外的圆环代表逐级…

[数据集][目标检测]井盖未盖好检测数据集VOC+YOLO格式20123张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;20123 标注数量(xml文件个数)&#xff1a;20123 标注数量(txt文件个数)&#xff1a;20123 标…

WDG看门狗

1 WDG 1.1 简介 WDG是看门狗定时器&#xff08;Watchdog Timer&#xff09;的缩写&#xff0c;它是一种用于计算机和嵌入式系统中的定时器&#xff0c;用来检测和恢复系统故障。 看门狗就像是一个忠诚的宠物狗&#xff0c;它时刻盯着你的程序&#xff0c;确保它们正常运行。…

Apache ZooKeeper 简介

介绍 Apache ZooKeeper 是一种分布式协调服务&#xff0c;旨在管理和同步大量分布式应用程序。ZooKeeper 是 Apache 软件基金会下的一个开源项目&#xff0c;它解决了维护分布式应用程序的配置信息、命名、分布式同步和组服务的复杂性。本文探讨了 ZooKeeper 的架构、功能、应…