《深度学习》深度学习 框架、动态展示即推导

news2024/9/20 10:37:03

目录

一、深度学习

1、什么是深度学习

2、特点

3、神经网络构造

1)单层神经元

• 推导

• 示例

2)多层神经网络

3)小结

4、感知器

神经网络的本质

5、多层感知器

6、动态图像示例

1)一个神经元

相当于下列状态: 

2)两个神经元

相当于下列所示:

3)三个神经元

相当于下图所示:

7、多层感知器--偏置

8、神经网络构造

1)重点

2)如何构造中间层

二、损失函数

1、作用

2、模型训练目的

3、常用损失函数

4、具体做法

5、多分类情况下计算损失值

6、正则化惩罚

1)正则化惩罚的功能

2)L1正则化

公式为:

3)L2正则化        

公式为:

4)示例


一、深度学习

1、什么是深度学习

        深度学习是一种人工智能的子领域,它基于人工神经网络的概念和结构,通过模拟人脑的工作方式来进行机器学习

2、特点

        深度学习的主要特点是使用多层次的神经网络来提取和学习数据中的特征,并通过反向传播算法来优化网络参数,从而实现对复杂数据的建模与分类。深度学习在图像识别、语音识别、自然语言处理等领域取得了显著的成果,并被广泛应用于各种领域。

3、神经网络构造

        神经网络是一种由多个神经元(或称为节点)组成的计算模型,它模拟生物神经系统中神经元之间的连接方式。神经网络有输入层、隐藏层和输出层组成,其中输入层用于接收外界的输入信号,输出层用于输出预测结果,隐藏层则用于处理输入信号并产生中间结果。

1)单层神经元

例如下图所示:

        神经元1为输入层,而外部传入的x1、x2、x3、x4、x5、……全部都是外界即将传入神经元的电信号,这些电信号在传入途中可能会有所损耗,而损耗完剩下的才会传入神经元,这些传入的实际信号就用w1x1、w2x2、w3x3、w4x4、w5x5、……来表示,w叫做权重

        • 推导

                有下列一堆数据,存在一条直线将他们分开成两类,而这条线叫线的表达式可以表示为y=kx+b

        将这个线性回归模型的表达式改变一下就得到了我们的神经网络模型计算方式

        y=kx+b -> 0=kx+b-y -> k1x+k2y+b=0 -> w1x1+w2x2+b=0 -> w1x1+w2x2+1*w0=0

        这里的1为人为设定的偏执项       

  

        • 示例

        如图传入信号为x1,x2,x3,他们分别通过权重w改变以后得到w1x1+w2x2+w3x3,然后再将这个结果映射到非线性函数上,这个非线性函数大多数用的都是sigmoid函数,从而得到最终结果,用sigmoid函数的原因是为了完成逻辑回归,因为 上图的模型为线性模型,他不能进行逻辑回归,所以只能将其映射到sigmoid函数中使其转变为逻辑回归

        sigmoid函数图像:

2)多层神经网络

        如图所示,第一列的五个圆圈叫输入层,最后一列的三个圆圈叫输出层,神经元则在中间三列,每一个神经元的运行方式和上述单层网络一样,如下图所示,上图的5个信号乘以权重的结果求和,然后再对求和的值映射到sigmoid函数,然后第一个神经元接收到这样的信息,然后第一列的每一个神经元都需要得到所有信号的处理,最后再将这通过映射得到的五个值当做信号x再次计算权重求和映射传给下一个神经元,传送到最后到输出层得到结果。(这里的为初期的神经网络构架)

3)小结

        神经网络:是由大量的节点(或称“神经元”)和之间相互的联接构成。
        每个节点代表一种特定的输出函数,称为激励函数、激活函数(activation function)。就相当于下图的红框内的函数:


        

        每两个节点间的联接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。相当于下列红框内的线条及其上所对应的w:

4、感知器

        由两层神经元组成的神经网络 -- “感知器”(Perceptron), 感知器只能线性划分数据。

        因为上述公式是线性代数方程组,因此可以用矩阵乘法来表达这两个公式:

        输出公式表达:

        输出的结果与训练集标签进行损失函数计算,与逻辑回归基本一致。

神经网络的本质

        通过参数激活函数拟合特征与目标之间的真实函数关系。但在一个神经网络的程序中,不需要神经元和线,本质上是矩阵的运算,实现一个神经网络最需要的是线性代数库。

5、多层感知器

         相对于上述感知器,多层感知器则增加了一个中间层,即隐含层,神经网络可以做非线性分类的关键--隐含层。

而矩阵的相乘也略微做了增加,如下所示:

6、动态图像示例

1)一个神经元

        图中的线型为模型,动态表示正在训练

        相当于下列状态: 

                一个输入层,一个输出层,一个神经元

2)两个神经元

        同样是一条线的形态去分类

        相当于下列所示:

                一个输入层,一个输出层,两个神经元

3)三个神经元

        相当于下图所示:

                一个输入层,一个输出层,三个神经元

        如需增加一个结果,则只需在输出层增加一个神经元即可。

7、多层感知器--偏置

        在神经网络中需要默认增加偏置神经元(节点),这些节点是默认存在的。

        它本质上是一个只含有存储功能,且存储值永远为1的单元

        在神经网络的每个层次中除了输出层以外,都会含有这样一个偏置单元。

        偏置节点没有输入(前一层中没有箭头指向它)。 一般情况下,我们都不会明确画出偏置节点。

8、神经网络构造

        1)重点

                • 设计一个神经网络时,输入层与输出层的节点数往往是固定的中间层则可以自由指定

                • 神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别

                 • 结构图里的关键不是圆圈(代表“神经元”)而是连接线(代表“神经元”之间的连接)每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。

       
        2)如何构造中间层

               • 输入层的节点数:与特征的维度匹配

                输出层的节点数:与目标的维度匹配。

                中间层的节点数:目前业界没有完善的理论来指导这个决策。一般是根据经验来设置。较好的方法就是预先设定几个可选值,通过切换这几个值来看整个模型的预测效果,选择效果最好的值作为最终选择。

二、损失函数

1、作用

        它用于量化模型预测值与真实标签之间的差异,并指导模型的优化过程。

2、模型训练目的

        使得参数尽可能的与真实的模型逼近。

3、常用损失函数

        0-1损失函数、均方差损失、平均绝对差损失、交叉熵损失、合页损失

4、具体做法

        1)首先给所有参数w赋上随机值。我们使用这些随机生成的参数值,来预测训练数据中的样本,当预测结果与真实值差距大,则需要去调整w的值来使其接近真实值

        2)计算预测值为yi,真实值为y。那么,定义一个损失值loss,损失值用于判断预测的结果和真实值的误差,误差越小越好。

        例如,有下列一堆数据,其中包含训练集和测试集,训练集和测试集又被分为训练特征集和训练标签,以及测试特征集和测试标签,而这里的标签集则表示真实值,将特征集作为输入信号,放入输入层对其进行训练,最后得到训练结果 ,训练结果叫预测值,然后再将预测值与真实值作比较。

        使用均方差损失函数计算损失值

        有上述得到预测值后,对真实值与预测值作差然后做平方,计算每一条数据的差值平方加起来,然后再除以数据的条数即可得到损失值。

        对于均方差损失函数,当标签是连续型的值,或者回归类型的值时很适用,但是当数据是离散型的那么使用它将效果差。

5、多分类情况下计算损失值

        分类的情况下一般使用softmax交叉熵损失函数

        公式:

完整流程:

        例如输出端输入的是猫、狗、羊,分别代号为0,1,2,输入端为一张图片,利用模型来判断这张图片中的动物是这三种动物的哪一种,输入一张图后得到三条数据,分别表示猫、狗、羊的值,然后将这三个值使用e的次方进行放大,以此来拉开差距,然后对放大后的数据进行归一化得到各个结果的概率,然后此时如果图片真实为猫的照片,那么第一行所表示的则为猫的概率,然后对这三个概率求负对数的值,这个负对数的值就是交叉熵损失值。

        log与-log图像如下图所示

        

        如果传入照片,猫的神经元输出数值相比其他越大, 计算的损失值会越小,也表明越靠近真实结果。 如果训练时,类别分错了,则会出现大的损失值。

6、正则化惩罚

        正则化惩罚用于避免模型过拟合到训练数据,从而提高模型的泛化能力。正则化惩罚通过在目标函数中引入一个正则化项,以限制模型参数的大小或复杂度。

1)正则化惩罚的功能

        主要用于惩罚权重参数w,一般有L1和L2正则化。

2)L1正则化

        L1正则化通过在目标函数中加入参数的L1范数(绝对值之和),使得模型更倾向于产生稀疏的权重矩阵,即将一部分参数置为0,从而减少模型的复杂度。这可以帮助筛选出对模型影响较大的特征,提高模型的鲁棒性和可解释性。

        公式为:

                L1 = ∑ |w|    w为权重参数

3)L2正则化        

        L2正则化通过在目标函数中加入参数的L2范数(平方和的开方),使得模型更倾向于产生较小的权重值。这可以有效地控制模型参数的大小,避免出现过大的参数值,从而减少模型对训练数据的过拟合。

        公式为:

                L2 = 1/2 *w**2   w为权重参数

4)示例

        有如下模型:

        当输入为 x = [ 1,1,1,1 ] ,现有两种不同权重值,如下所示

        w1 = [ 1,0,0,0 ]

        w2 = [ 0.25,0.25,0.25,0.25 ]

        w1和w2与输入的乘积都为1,但w2 与每一个输入数据进行计算后都有数据,使得w2会学习到每一个特征信息。而w1只和第1个输入信息有关系,容易出现过拟合现象,因此w2的效果会比w1 好。

        此时就使用均方差损失函数来计算损失值更合适,因为它适用于连续型的值

此时的公式与上述略有不同,即增加了一个正则化惩罚项

        当使用L1正则化时即增加一个λ*L1

        当使用L2正则化时即增加一个λ*L2

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

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

相关文章

Redis入门 - C#|.NET Core封装Nuget包

经过前面章节的学习,可以说大家已经算Redis开发入门了。已经可以去到项目上磨砺了。 但是今天我还想和大家分享一章:封装自己的Redis C#库,然后打包成Nuget包。 首先要说明的是:不是要自己开发一个Redis客户端库,而是…

【Linux】Linux常见指令以及权限理解(下)

【Linux】Linux常见指令以及权限理解(下) 🥕个人主页:开敲🍉 🔥所属专栏:Linux🍊 🌼文章目录🌼 3. Linux下基本指令 3.9 mv 指令(重点&#xff0…

借助ChatGPT撰写学术论文的10条规则

在撰写学术论文时,利用ChatGPT等人工智能工具可以显著提高写作效率和质量。以下是结合ChatGPT功能,为构建学术论文提出的10条规则,包括详细的专业说明和格式化的GPT提示词。 规则1:明确论文目标与核心问题 专业说明:确定研究的核心问题和目标是撰写论文的第一步。这有助…

如何通过可视化大屏,助力智慧城市的“城市微脑”建设?

在智慧城市的宏伟蓝图中,常常面临着一个关键挑战:如何确保这些理念和技术能够真正地惠及城市的每一个角落,每一个产业,以及每一位市民。问题的核心在于城市的具体应用场景,无论是横向的社区、园区、镇街、学校、酒店、…

PCB绘制

01-2-PCB的通孔、盲孔、埋孔_哔哩哔哩_bilibili 通孔:起点和终点肯定是最后一层和第一层 盲孔:起点永远是第一层(或最后一层),终点肯定不是最后一层(或第一层) 埋空:起点和终点肯…

建筑物检测系统源码分享

建筑物检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

Python | Leetcode Python题解之第401题二进制手表

题目&#xff1a; 题解&#xff1a; class Solution:def readBinaryWatch(self, turnedOn: int) -> List[str]:ans list()for i in range(1024):h, m i >> 6, i & 0x3f # 用位运算取出高 4 位和低 6 位if h < 12 and m < 60 and bin(i).count("1&…

C# USB通信技术(通过LibUsbDotNet库)

文章目录 1.下载LibusbDotNet库2.引入命名空间3. 实例化USB设备4.发送数据5.关闭连接 1.下载LibusbDotNet库 右击项目选择管理NuGet程序包在弹出的界面中搜索LibusbDotNet&#xff0c;然后下载安装。 2.引入命名空间 using LibUsbDotNet; using LibUsbDotNet.Main;3. 实例化…

细数H.264 H.265 H.266区别

H.264、H.265&#xff08;HEVC&#xff09;和H.266&#xff08;VVC&#xff09;是三种不同的视频编码标准&#xff0c;它们在压缩效率、图像质量、支持的分辨率以及技术特性等方面存在显著差异。以下是对这三种编码标准的详细比较&#xff1a; 概述 H.264&#xff1a;也称为AV…

TCP全连接队列和tcpdump抓包

全连接队列 listen第二个参数 服务器在调用listen的时候&#xff0c;listen的第二个参数 1&#xff0c;就是TCP全连接队列的长度。 当客户端的连接进入established 状态后&#xff0c;如果服务器没有调用accept将连接取走&#xff0c;那么该连接就会待在TCP全连接队列中&a…

Edge浏览器设置夜间模式/深色模式

问题背景 普通白色背景感觉有点刺眼&#xff0c;想改成深色背景&#xff0c;但是默认的设置里面只能修改边框的颜色&#xff1a; 这里虽然设置界面和边框变成了黑色的&#xff0c;但是实际上打开网页还是白色的。 全局配置 在Edge浏览器打开edge://flags/&#xff0c;然后搜索D…

海垦集团养殖场分布式光伏发电项目中的案例分享

1客户需求 海南农垦集团&#xff0c;原海南省农垦总公司&#xff0c;是中央直属三大垦区之一。集团在海南有多个养殖场&#xff0c;包括红华养猪场、红华肉牛繁育场等&#xff0c;计划在这些养殖场的屋顶安装分布式光伏系统&#xff0c;用于自发自用和余电上网。红华养猪场和红…

基于ESP32S3的链接大语言模型对话模块

本实物模块从实物外观、模块组成、API申请及功能说明四部分来介绍这款基于ESP32S3的大语言模型对话模块。 1、实物外观 2、模块介绍 本硬件平台主要由三个模块组成&#xff0c;包括MAX9814录音模块、MAX98357音频功放模块和ESP32S3模块。如下图所示。 MAX9814录音模块&#…

mac 如何开启指定端口供外部访问?

前言 需要 mac 上开放指定端口&#xff0c;指定 ip 访问 解决 在 macOS 上开放一个端口&#xff0c;并指定只能特定的 IP 访问&#xff0c;可以使用 macOS 内置的 pfctl(Packet Filter)工具来实现。 1、 编辑 pf 配置文件&#xff1a; 打开 /etc/pf.conf 文件进行编辑。 可以使…

深度解读MySQL意向锁的工作原理机制与应用场景

意向锁 意向锁的概念 意向锁是InnoDB自动添加的一种锁&#xff0c;不需要用户去干预。 是数据库中的一种表级锁&#xff0c;一个事务要给一个资源加锁时&#xff0c;必须要先获取到对应类型的意向锁之后&#xff0c;才可以给这个资源加上自己想要的共享锁或者排他锁&#xff0…

【C++ 面试 - 新特性】每日 3 题(十一)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

电容器制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

在当今全球制造业的数字化转型浪潮中&#xff0c;电容器制造业作为电子元件的关键领域&#xff0c;正积极拥抱5G智能工厂与物联数字孪生平台技术&#xff0c;以推动生产效率的飞跃和产品质量的提升。这一创新模式不仅为电容器制造业注入了新的活力&#xff0c;也为整个制造业的…

植物三萜皂苷生物合成途径及调控机制研究进展-文献精读48

摘要 三萜皂苷(triterpenoids saponins)是由三萜皂苷元和一个或多个糖基和/或其他化学基团缩合而成的一系列结构多样的天然化合物[1], 主要分布在五加科、蝶形花科、石竹科、桔梗科、毛茛科、玄参科、葫芦科等植物中[2]. 植物中三萜皂苷常分布在特定的器官和组织, 如人参(Pana…

TypeScript中 unknown类型的变量值赋值给具体类型的变量

将unknown类型分配给string类型&#xff0c;但我就想给y 赋值&#xff0c;提供了几个方法 // unknown 是类型安全的any let x : unknown; x 1; x true; x sdfj;let y : string; // y x;//不能将unknown类型分配给string类型&#xff0c;但我就想给y 赋值 &#xff0c;下方…

Matlab如何配置小波工具(Wavelet Toolbox)

1、发现问题 因为实验要使用小波工具函数&#xff0c;运行时报错如下&#xff1a; 查看对应文件夹发现没有小波工具&#xff08;也可在控制台输入ver&#xff09;&#xff0c;检查是否有该工具&#xff0c;输入后回车返回如下&#xff1a; 2、下载工具包 没有这个工具就要去下…