深度学习图像分类相关概念简析+个人举例1(ANN相关概念与计算)

(1)神经网络:英文全称Artificial Neural Network,简称为ANN

  神经网络是一种模仿人脑神经元结构和功能的人工智能模型。它由多个神经元(也称节点、单元)组成,每个神经元通过计算输入和权重的线性组合,并经过激活函数的非线性转换来产生输出。神经网络可以通过调整权重和偏置来学习输入数据的特征和模式。

  以下是神经网络中的一些重要概念和组成部分:

[1] 输入层:接受原始数据输入,将数据传递给网络的下一层。

[2]隐藏层:位于输入层和输出层之间的一层或多层。每个隐藏层由多个神经元组成,对输入数据进行处理和转换。

[3]输出层:产生最终的预测结果或输出,并将结果传递给用户或其他系统。

  下面是我画的一个简单的3层2输出的神经网络,三个层级我都标出来了~直接鼠标画的有点粗糙,但是大概就是这个样子的一个神经网络,黑色小圆圈表示神经元哦~

[4]权重(weights):连接神经元之间的参数,用于调整输入的重要性。

  在神经网络中,权重的计算是通过训练过程来自动调整的。具体来说,每个权重与对应的输入相乘,并且所有乘积的总和经过激活函数处理,得到神经网络的输出。

  假设我们有上面图中那种的一个简单的神经网络,有一个输入层、一个隐藏层和一个输出层(就上面我画的那种3层的)!!!丑陋但朴实无华嘻嘻~

已知:输入层有3个神经元,隐藏层有4个神经元,输出层有2个神经元。输入1,2,3,这个神经网络具体是怎么运算的?

【1】输入层会接收输入信号x:1、2、3,并将它们分别传递到隐藏层的每个神经元(上图的4,5,6,7号神经元)。
【2】假设隐藏层的(4号)第一个神经元的权重分别为w14、w24、w34,(5号)第二个神经元的权重分别为w15、w25、w35,(6号)第三个神经元的权重分别为w16、w26、w36,(7号)第四个神经元的权重分别为w17、w27、w37。
  此时,隐藏层的每个神经元的输入信号加权求和计算如下:
(图中4号)隐藏层第一个神经元的输入信号加权求和计算为:Z1=w14x1 + w24x2 + w34x3
(图中5号)隐藏层第二个神经元的输入信号加权求和计算为:Z2=w15x1 + w25x2 + w35x3
(图中6号)隐藏层第三个神经元的输入信号加权求和计算为:Z3=w16x1 + w26x2 + w36x3
(图中7号)隐藏层第四个神经元的输入信号加权求和计算为:Z4=w17x1 + w27x2 + w37x3

接下来,对隐藏层每个神经元的加权求和结果应用激活函数进行非线性转换。例如,我们使用Sigmoid函数作为激活函数,将其应用于每个神经元的加权求和结果。这样,隐藏层的每个神经元就得到了一个输出结果:

Sigmoid函数的计算公式如下:

sigmoid(x) = 1 / (1 + exp(-x))

其中,x是输入的加权求和结果,大白话就是说,对于隐藏层第一个神经元的输入信号加权求和计算为:Z1=w14x1 + w24x2 + w34x3,将该结果Z1作为Sigmoid函数的输入,计算得到隐藏层第一个神经元的输出,a1=sigmoid(z1)= 1 / (1 + exp(-z1))~

  1. 隐藏层第一个神经元的输出结果:a1 = sigmoid(z1)
  2. 隐藏层第二个神经元的输出结果:a2 = sigmoid(z2)
  3. 隐藏层第三个神经元的输出结果:a3 = sigmoid(z3)
  4. 隐藏层第四个神经元的输出结果:a4 = sigmoid(z4)

然后隐藏层的输出结果作为权重,分别与输出层的每个神经元相乘,并将乘积求和。

假设输出层的(8号)第一个神经元的权重分别为w41、w51、w61和w71,(9号)第二个神经元的权重分别为w42、w52、w62和w72,以此类推。

此时,输出层的每个神经元的输入信号加权求和计算如下:

  • 输出层第一个神经元的加权求和结果:z5 = w41 * a1 + w51 * a2 + w61 * a3 + w71 * a4
  • 输出层第二个神经元的加权求和结果:z6 = w42 * a1 + w52 * a2 + w62 * a3 + w72 * a4

将输出层的加权求和结果应用于激活函数进行非线性转换。同样地,我们可以使用Sigmoid函数作为激活函数,将其应用于每个神经元的加权求和结果。

这样,输出层的每个神经元就得到了一个输出结果:

  • 输出层第二个神经元的输出结果:a6 = sigmoid(z6)
  • 输出层第一个神经元的输出结果:a5 = sigmoid(z5)

  最后,输出层的输出结果a5和a6即为神经网络对于输入1、2、3的运算结果~

[5]偏置(bias):每个神经元都有一个偏置,用于调整神经元的激活阈值。

  偏置(bias)是神经网络中的一个可学习参数,它与每个神经元相连,并且在加权求和的过程中起到偏移输入信号的作用。偏置相当于神经元的阈值,可以影响神经元的激活状态。

  以上面提到的神经元模型为例(我画的那个丑图),假设隐藏层的每个神经元都有一个偏置项,分别为b4,b5,b6,b7。那么在计算隐藏层的输入信号加权求和时,会加上对应的偏置项。

  • 隐藏层第一个神经元的输入信号加权求和计算如下:w14x1 + w24x2 + w34x3 + b4
  • 隐藏层第二个神经元的输入信号加权求和计算如下:w15x1 + w25x2 + w35x3 + b5
  • 隐藏层第三个神经元的输入信号加权求和计算如下:w16x1 + w26x2 + w36x3 + b6
  • 隐藏层第四个神经元的输入信号加权求和计算如下:w17x1 + w27x2 + w37x3 + b7

  b4,b5,b6,b7分别为隐藏层每个神经元的偏置项。这样,偏置项就可以影响神经元的激活情况。

[6]激活函数(activation function)

  就是对神经元的输出进行非线性转换,增加网络的表达能力。常见的激活函数包括Sigmoid、ReLU和tanh等,这里就举Sigmoid函数、ReLU函数和Softmax函数的例子。

(1)Sigmoid函数: Sigmoid函数是一种非线性函数,其公式为:f(x) = 1 / (1 + e^(-x))

计算举例: 假设输入x = 2,那么根据Sigmoid函数的公式,计算如下: f(2) = 1 / (1 + e^(-2)) ≈ 0.8808

(2)ReLU函数: ReLU函数是一种线性修正函数,其公式为:f(x) = max(0, x)

计算举例: 假设输入x = -1,根据ReLU函数的公式,计算如下: f(-1) = max(0, -1) = 0

(3)Softmax函数: Softmax函数用于多类别分类问题,将输入信号转换为概率分布。其公式为:f(x) = e^x / (∑(e^x))

计算举例: 假设输入x = [1, 2, 3],根据Softmax函数的公式,计算如下: f(x) = [e^1 / (e^1 + e^2 + e^3), e^2 / (e^1 + e^2 + e^3), e^3 / (e^1 + e^2 + e^3)] ≈ [0.0900, 0.2447, 0.6652]

[7]损失函数(loss function):用于衡量模型在训练过程中的预测与真实值之间的误差。

常见的损失函数包括均方误差(Mean Squared Error,MSE)、交叉熵损失(Cross Entropy Loss)

(1)均方误差(MSE): MSE损失函数计算预测值与真实值之间的平均平方差。对于单个样本: MSE(y, y_pred) = (y - y_pred)^2

计算举例: 假设真实值为y = 2,预测值为y_pred = 3,根据MSE损失函数的公式,计算如下: MSE(2, 3) = (2 - 3)^2 = 1

(2)交叉熵损失(Cross Entropy Loss): 交叉熵损失函数常用于分类问题,计算预测结果的概率分布与真实标签的差异。对于二分类问题: CrossEntropy(y, y_pred) = - (y * log(y_pred) + (1 - y) * log(1 - y_pred))

计算举例: 假设真实标签为y = 1,预测结果的概率分布为y_pred = 0.9,根据交叉熵损失函数的公式,计算如下: CrossEntropy(1, 0.9) = - (1 * log(0.9) + (1 - 1) * log(1 - 0.9)) ≈ 0.1054

[8]反向传播(backpropagation):通过计算损失函数对权重和偏置的梯度,并使用优化算法进行参数更新,从而训练神经网络。

  反向传播(Backpropagation)是一种常用的神经网络训练算法,主要用于计算和更新神经网络中每个连接权重的梯度(即导数)。它利用误差的链式法则,从输出层向输入层反向传播误差信号,根据误差信号更新网络参数。

  还是上面那个丑图的结构,我们可以用以下方式表示该神经网络的权重参数:

  • 输入层到隐藏层的权重矩阵:W1(4x3)
  • 隐藏层到输出层的权重矩阵:W2(2x4)

  现在,假设我们有一个训练样本,输入值为x,目标输出为y。我们首先将输入x传递给神经网络的输入层,通过隐藏层到输出层进行前向传播,计算得到输出y_hat。然后,我们计算输出误差,即y与y_hat之间的差距。根据误差,我们可以通过反向传播算法来计算每个权重的梯度,并根据梯度更新权重,以使误差最小化。

  举例来说,假设我们有一个二分类问题,输出层的激活函数使用sigmoid函数,误差使用平方误差函数。(有空再具体例子整理,会来更新)

  • 输入x为[1, 2, 3],目标输出y为[0.8, 0.2]。

  首先,我们利用前向传播计算输入x通过神经网络得到输出y_hat。这里省略激活函数和偏置项的计算过程。假设经过前向传播,我们得到输出y_hat为[0.6, 0.3]。然后,我们计算输出误差。

平方误差可以表示为:

E = (0.8 - 0.6)^2 + (0.2 - 0.3)^2

  接下来,我们根据误差信号,利用反向传播算法计算每个权重的梯度。首先,根据输出误差计算输出层的梯度。对于第i个输出神经元,梯度可以表示为:

delta_output[i] = (y_hat[i] - y[i]) * sigmoid_derivative(y_hat[i])

  然后,利用输出层梯度和隐藏层到输出层的权重矩阵W2,计算隐藏层的梯度:

delta_hidden = W2_transpose * delta_output * sigmoid_derivative(hidden_layer_output)

最后,根据隐藏层梯度和输入层到隐藏层的权重矩阵W1,计算输入层的梯度。我们根据梯度和学习率更新权重矩阵W1和W2。例如,更新W1的步骤可以表示为:

W1_new = W1 - learning_rate * delta_hidden * x_transpose

拓展:

  神经网络可以具有不同的结构和层级,例如前馈神经网络(Feedforward Neural Network)、递归神经网络(Recurrent Neural Network)和卷积神经网络(Convolutional Neural Network)等。它们在不同领域和任务中具有广泛的应用,如图像识别、语言处理、自然语言处理等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零开始复现GPT2(六):生成代码的实现

源码地址:https://gitee.com/guojialiang2023/gpt2 GPT2 模型文本生成配置生成框架文本生成类实现文本生成代码 模型 文本生成 配置 class GenerateConfig(object):def __init__(self,seq_len: int,nucleus_prob: float,use_gpu: bool):self.seq_len seq_lenself…

【C/C++ 10】扫雷小游戏

一、题目 写一个扫雷小游戏,每次输入一个坐标,若该处是地雷,则游戏失败,若该处不是地雷,则显示周围地雷数量,若扫除全部非地雷区域,则扫雷成功。 二、算法 设置两张地图(二维数组&…

手把手教你开发Python桌面应用-PyQt6图书管理系统-主界面UI设计实现

锋哥原创的PyQt6图书管理系统视频教程: PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频&…

移远(Quectel)物联网通信解决方案

一、方案简介 无线通信模块是具备无线通信的电路模块,它能通过无线连接传输数据,能识别分析主控制器发来的命令,控制节点设备的工作,或者向主控制器发送当前节点设备的工作状态。 市面上常用的无线通信模组包括蓝牙模组、WLAN模…

2024年【上海市安全员B证】最新解析及上海市安全员B证复审考试

题库来源:安全生产模拟考试一点通公众号小程序 上海市安全员B证最新解析根据新上海市安全员B证考试大纲要求,安全生产模拟考试一点通将上海市安全员B证模拟考试试题进行汇编,组成一套上海市安全员B证全真模拟考试试题,学员可通过…

算法练习-二叉树的节点个数【完全/普通二叉树】(思路+流程图+代码)

难度参考 难度:中等 分类:二叉树 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨…

ubuntu22.04 安装部署01:禁用内核更新

一、前言 ubunut22.04系统安装以后,内核更新会导致各种各样的问题,因此锁定初始安装环境特别重要,下面介绍如何锁定内核更新。 二、操作方法 2.1 查看可用内核 dpkg --list | grep linux-image dpkg --list | grep linux-headers dpkg --…

STM32--USART串口(2)串口外设

一、USART简介 可配置数据位:不需要校验就是8位,需要校验就选9位; 停止位:决定了帧的间隔; STM32F103C8T6USART:USART1挂载在APB2总线上,USART2和USART3挂载在APB1总线上; 二、USART框图 TXE…

Python中使用Opencv-python库绘制直线、矩形、圆、文本

Python中使用Opencv-python库绘制直线、矩形、圆、文字 在Python中使用Opencv-python绘制直线、矩形、圆、文本非常简单,分别使用到line、rectangle、circle、putText这几个函数,具体可以参考https://docs.opencv.org/4.9.0/d6/d6e/group__imgproc__dra…

如何部署Node.js服务并实现无公网ip远程访问本地项目【内网穿透】

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

【C++】类与对象(三)—运算符重载|const成员函数|取地址及const取地址操作符重载

前言 运算符重载,自增自减运算符重载,const成员函数,取地址及const取地址操作符重载 文章目录 一、运算符重载自增和自减运算符重载 二、const 成员函数三、取地址及const取地址操作符重载(了解即可) 一、运算符重载 运…

P1967 [NOIP2013 提高组] 货车运输

[NOIP2013 提高组] 货车运输 题目背景 NOIP2013 提高组 D1T3 题目描述 A 国有 n n n 座城市,编号从 1 1 1 到 n n n,城市之间有 m m m 条双向道路。每一条道路对车辆都有重量限制,简称限重。 现在有 q q q 辆货车在运输货物&#x…

Unity Meta Quest MR 开发(三):Scene API 配置+实现虚拟与现实之间的碰撞

文章目录 📕教程说明📕 Scene 配置⭐开启场景理解功能和应用访问空间数据的权限⭐OVRSceneManager⭐制作 Plane Prefab 和 Volume Prefab⭐运行场景⭐添加透视材质 📕虚拟与现实物体的碰撞(弹球 Demo)📕Mes…

【JavaSE篇】——继承

目录 🎓继承 ✅为什么需要继承 ✅继承概念 ✅继承的语法 ✅父类成员访问 🚩子类中访问父类的成员变量 1. 子类和父类不存在同名成员变量的情况 2. 子类和父类成员变量同名 🚩子类中访问父类的成员方法 1. 成员方法名字不同 2. 成员…

MyBatis常见面试题汇总

说一下MyBatis执行流程? MyBatis是一款优秀的基于Java的持久层框架,它内部封装了JDBC,使开发者只需要关注SQL语句本身,而不需要花费精力去处理加载驱动、创建连接等的过程,MyBatis的执行流程如下: 加载配…

车载测试Vector工具——基于DoIP的ECU/车辆的连接故障排除

车载测试Vector工具——基于DoIP的ECU/车辆的连接故障排除 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和…

计算huggingface模型占用硬盘空间的实战代码

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

景联文科技受邀出席全国信标委生物特征识别分委会二届五次全会

全国信息技术标准化技术委员会生物特征识别分技术委员会(SAC/TC28/SC37,以下简称“分委会”)二届五次全会于2024年1月30日在北京顺利召开,会议由分委员秘书长王文峰主持。 分委会由国家标准化管理委员会批准成立,主要负…

N 叉树的层序遍历

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。 示例 1: 输入:root [1,null…

配置实例—VLAN间跨三层通信的交换机配置实例

一、组网需求 企业的不同用户拥有相同的业务,且位于不同的网段。现在相同业务的用户所属的VLAN不相同,需要实现不同VLAN中的用户相互通信。 如图1所示,User1和User2中拥有相同的业务,但是属于不同的VLAN且位于不同的网段。现需要…