深度学习:什么是多层感知机(神经网络)

news2024/11/16 19:29:25

文章目录

  • 1.神经网络
  • 2.反向传播算法
  • 3.激活函数
  • 4.损失函数
  • 5.神经网络的使用场景
  • 参考

1.神经网络

神经网络是一种计算模型,它受到人脑神经元之间连接和信息处理方式的启发。它由许多简单的处理单元(称为神经元或节点)组成,并通过这些节点之间的连接进行信息传递和处理。

神经网络广泛应用于许多领域,包括图像和语音识别、自然语言处理、机器翻译、推荐系统等。它能够通过学习大量数据来进行模式识别和特征提取,从而实现复杂的任务和问题求解。

本文以多层感知机(Multi-Layer Perceptron,MLP)这一神经网络为例来进行介绍。

  • 结构:

一个神经网络通常由多个层组成,包括输入层、隐藏层和输出层。每个节点接收来自上一层节点的输入,并通过激活函数对输入进行处理,然后将输出传递给下一层节点。隐藏层在输入层和输出层之间起到了“过渡”或“提取特征”的作用。

在这里插入图片描述
h 1 ( x ) = f ( W 1 x + b 1 ) h_1(x) = f(W_1x+b_1) h1(x)=f(W1x+b1)
h l ( x ) = f ( W l h l − 1 ( x ) + b l ) h_l(x) = f(W_lh_{l-1}(x)+b_l) hl(x)=f(Wlhl1(x)+bl)
y ( x ) = f ( W L h L − 1 ( x ) + b L ) y(x) = f(W_{L}h_{L-1}(x)+b_{L}) y(x)=f(WLhL1(x)+bL)
其中, f f f为激活函数, W L W_{L} WL为输出层权重矩阵, b L b_{L} bL为输出层偏置。

  • 训练:

神经网络的学习发生在训练阶段,利用训练数据不断调整节点之间的连接权重和阈值值,以最小化预测输出与实际输出之间的误差。常用的训练算法包括 反向传播算法和梯度下降。

2.反向传播算法

反向传播算法(Backpropagation Algorithm)是神经网络中常用的一种训练算法,用于调整神经网络的权重和偏差(即连接权重和阈值值),以使网络能够更好地逼近给定的训练数据。

反向传播算法的核心思想是通过计算预测输出与实际输出之间的误差,并将误差从输出层向输入层逐层反向传播,以更新网络中的权重和偏差。

具体来说,反向传播算法分为两个主要的步骤:前向传播和反向传播。

  1. 前向传播:从输入层开始,逐层计算每个节点的输出,直到达到输出层。在这个过程中,根据节点之间的连接权重和偏差,将输入信号通过激活函数进行处理,并传递到下一层节点,直到最终的输出。以下几个公式就是前向传播:

h 1 ( x ) = f ( W 1 x + b 1 ) h_1(x) = f(W_1x+b_1) h1(x)=f(W1x+b1)
h l ( x ) = f ( W l h l − 1 ( x ) + b l ) h_l(x) = f(W_lh_{l-1}(x)+b_l) hl(x)=f(Wlhl1(x)+bl)
y ( x ) = f ( W L h L − 1 ( x ) + b L ) y(x) = f(W_{L}h_{L-1}(x)+b_{L}) y(x)=f(WLhL1(x)+bL)
其中, f f f为激活函数, W L W_{L} WL为输出层权重矩阵, b L b_{L} bL为输出层偏置。

  1. 反向传播:计算预测输出与实际输出之间的误差,并将误差从输出层向输入层逐层传播。根据误差值,按照链式法则(Chain Rule)计算每个节点的调整量。然后使用优化算法(如梯度下降),通过乘上学习率,更新神经网络中的连接权重和偏差。

在多层感知机中,反向传播用于更新模型参数,求解损失函数的梯度。设损失函数为 L L L,输出为 y y y,真实标签为 t t t,则反向传播的计算过程如下:

δ L = ∂ L ∂ y f ′ ( W L h L − 1 ( x ) + b L ) \delta_{L} = \frac{\partial L}{\partial y}f'(W_{L}h_{L-1}(x)+b_{L}) δL=yLf(WLhL1(x)+bL)

δ l = ∂ L ∂ h l f ′ ( W l + 1 T δ l + 1 ) \delta_{l} = \frac{\partial L}{\partial h_{l}}f'(W_{l+1}^{T}\delta_{l+1}) δl=hlLf(Wl+1Tδl+1)

∂ L ∂ W l = h l − 1 δ l T \frac{\partial L}{\partial W_{l}} = h_{l-1}\delta_{l}^{T} WlL=hl1δlT

∂ L ∂ b l = δ l \frac{\partial L}{\partial b_{l}} = \delta_{l} blL=δl

其中, δ L \delta_{L} δL为输出层误差, δ l \delta_{l} δl为第 l l l层隐藏层误差, f ′ f' f为激活函数的导数。

反向传播算法反复迭代以上两个步骤,直到达到预定的停止条件(如误差收敛或达到最大训练次数)为止。通过训练过程中不断调整网络参数,神经网络能够逐渐优化并学习到与给定训练数据相匹配的模式和特征。

反向传播算法是神经网络中非常重要且常用的训练算法,它为神经网络的学习和调整提供了一种有效的方式。

3.激活函数

激活函数(Activation Function)是神经网络中的一种非线性函数,应用于神经元的输出,用于引入非线性变换和增加模型的表达能力。

在神经网络中,每个神经元都有一个激活函数,用于对输入信号进行处理,并将处理后的输出传递给下一层的神经元。激活函数的作用是将输入的加权和与偏差进行转换,以产生非线性的输出。

不同的激活函数具有不同的特性,如非线性、可导性和抑制/增强特定输入范围等。选择适当的激活函数对于神经网络的训练和学习非常重要,可以提高模型的表达能力和性能。

关于激活函数建议好好看下这篇博客

4.损失函数

损失函数(Loss Function)是用来衡量模型预测结果与真实值之间差异的函数。它是训练过程中最小化的目标函数,用来衡量模型在训练数据上的性能和误差大小。

在机器学习和深度学习中,常用的损失函数根据任务类型和目标不同,也有多种选择。以下是一些常见的损失函数:

  1. 均方误差(Mean Square Error, MSE):用于回归任务,计算预测值和真实值之间的平均平方差。MSE对异常值比较敏感。

  2. 交叉熵损失(Cross-Entropy Loss):用于分类任务,根据预测结果和真实标签之间的差距计算损失值。交叉熵损失比较适用于多分类任务。

  3. 对数损失(Log Loss):也用于二分类和多分类任务,衡量预测概率分布和真实标签之间的误差。

  4. Hinge损失:用于支持向量机(Support Vector Machines, SVM)中,适合用于二分类。

  5. KL散度(Kullback-Leibler Divergence):用于衡量两个概率分布之间的差异,常用于生成模型中。

选择合适的损失函数对于模型的训练和优化至关重要。通过最小化损失函数,模型可以通过反向传播算法(Backpropagation)调整参数以使预测结果逼近真实值,提高模型的性能和准确性。在多层感知机中,常用的损失函数为均方误差(MSE)和交叉熵(cross-entropy)。

5.神经网络的使用场景

多层感知机(Multi-Layer Perceptron, MLP)适用于许多任务,**特别是在分类和回归问题中表现良好。**以下是一些常见的任务,适合使用多层感知机:

  1. 分类任务:多层感知机可以用于解决二分类和多分类问题。通过在输出层使用适当的激活函数(如Sigmoid或Softmax),多层感知机可以对输入样本进行分类预测。

  2. 回归任务:多层感知机也可以用于解决回归问题,其中输出层不再使用激活函数,而是直接输出连续值。通过训练过程中的误差最小化,多层感知机可以对输入样本进行连续值的预测。

  3. 特征提取:多层感知机的隐藏层可以用来提取输入数据的特征表示。通过在多个隐藏层进行非线性变换,多层感知机可以从原始输入中逐层提取出更高级别的特征。

  4. 强化学习:多层感知机在强化学习任务中也常被用作值函数近似,用于根据当前状态预测最优动作的价值。

需要注意的是,在处理具有复杂结构和序列性质的数据(如文本、语音、图像)时,常常会将多层感知机与其他技术如卷积神经网络(CNN)和循环神经网络(RNN)结合使用,以更好地捕捉数据中的空间和时间相关性。

参考

https://blog.51cto.com/u_16099172/6290977
https://blog.csdn.net/weixin_39910711/article/details/114849349

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

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

相关文章

innovus/ICC2:如何copy metal shape/via

如题,两家工具复制metal shape和via都可以用快捷键C,其中innovus还支持在复制过程中按"F3",调整复制的次数。 这里主要说一下命令: ICC2: copy_objects -x_pitch/y_pitch $pitch \ -x_times/-y_times $times \ [get_selection]/[get_shapes xx]/[get_v…

QWidget的相关API函数

目录 QWidget的相关API函数 设置父对象 窗口位置 窗口尺寸 窗口标题和图标 信号 槽函数 示例1(设置窗口大小): 示例2(移动窗口,修改窗口,获取窗口位置信息): 示例3 &#x…

微信:注意要收费了!

目录 收费说明手机号快速验证组件手机号实时验证组件付费管理修改建议 收费说明 自2023年8月26日起,小程序获取手机号组件将需要付费使用。 手机号快速验证组件 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html 新版…

跳跃与舞动:解密力扣之谜,最少操作使数组递增

本篇博客会讲解力扣“1827. 最少操作使数组递增”的解题思路,这是题目链接。 从前往后遍历数组,从下标为1的元素(第二个元素)开始,若该元素不超过前一个元素,则把该元素改成前一个元素加1后的值。把每个元素…

牛客网KY222 打印日期

KY222 打印日期 描述示例解题思路及代码 描述 给出年分m和一年中的第n天&#xff0c;算出第n天是几月几号。 输入描述&#xff1a; 输入包括两个整数y(1<y<3000)&#xff0c;n(1<n<366)。 输出描述&#xff1a; 可能有多组测试数据&#xff0c;对于每组数据&…

【2023年江西省研究生数学建模竞赛】题目二 国际“合作-冲突”的演化规律研究 建模方案及参考文献

代码与结果如下&#xff1a;完整文档见文末 相关思路请点击原文章查看 题目&#xff1a;国际“合作-冲突”的演化规律研究 国家之间的“合作-冲突”行为具有复杂性和多变性&#xff0c;对其决策模式的研究有着重要的意义。例如&#xff0c;对国际冲突和危机的准确预测可以帮…

SpringBoot:整合 Minio 文件上传操作

简介 对象存储服务OSS&#xff08;Object Storage Service&#xff09;是一种海量、安全、低成本、高可靠的云存储服务&#xff0c;适合存放任意类型的文件。容量和处理能力弹性扩展&#xff0c;多种存储类型供选择&#xff0c;全面优化存储成本&#xff0c;今天我这里主要讲解…

C++ 面向对象程序设计 14万字总结笔记

文章的索引都在目录处可以找到 学好C可以采取以下几个步骤&#xff1a; 掌握基本语法&#xff1a;C的语法对于初学者来说可能是一件比较难的事情&#xff0c;所以需要花时间掌握C的语言基础和语法规则&#xff0c;例如数据类型、流程控制、函数等。 学会面向对象编程(OOP)&a…

6.28 内存分配/管理 学习总结

一、通过程序验证系统内存分配机制 1、实验&#xff1a; 两个char 指针&#xff0c;连续先后在内存中各申请100、102个字节&#xff0c; 它们实际上会占用多少字节的内存空间&#xff1f; 如果两个char 指针&#xff0c;连续先后在内存中各申请200个字节&#xff0c; 它们实…

青大数据结构【2017】【综合应用、算法分析】

关键字&#xff1a; 平衡二叉树、平均查找长度、单链表、二叉树中序遍历非递归 三、综合应用 平衡二叉树AVL定义&#xff1a;任意节点的子树的高度差都小于等于 1 ASL&#xff08;12*24*3&#xff09;/717/7 四、算法分析

APA 参考页格式 | 第六版指南

参考页&#xff1a;文章最后列出所有的参考文献的页面。引用&#xff1a;指在文章正文中进行引用。 APA 参考页是论文末尾的一个单独页面&#xff0c;其中列出了您在正文中引用的所有来源。参考文献按字母顺序排序&#xff0c;双倍行距&#xff0c;并使用1/2 英寸的悬挂缩进进行…

接口自动化测试中,文件上传该如何测试?

在服务端自动化测试过程中&#xff0c;文件上传类型的接口对应的请求头中的 content-type 为 multipart/form-data; boundary...&#xff0c;碰到这种类型的接口&#xff0c;使用 Java 的 REST Assured 或者 Python 的 Requests 均可解决。 实战练习 Python 版本 在 Python …

初识Go语言24-数据结构与算法【链表、栈】

文章目录 数据结构与算法链表栈 数据结构与算法 链表 ---手写单链表 type Node struct {Info intNext *Node }type List struct {Head *NodeLen intTail *Node }func (list *List) Add(ele int) {node : &Node{Info: ele, Next: nil}if list.Len 0 {list.Head nodelist…

基于WebSocket的简易聊天室的基本实现梳理

一&#xff0c;前言 目前在很多网站为了实现推送技术所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔&#xff08;如每1秒&#xff09;&#xff0c;由浏览器对服务器发出HTTP请求&#xff0c;然后由服务器返回最新的数据给客户端的浏览器。HTTP 协议是一种无状态的、无连…

轨道交通车体自动化检修测量大尺寸测量仪器-CASAIM激光三维扫描仪

现今我国轨道交通高速发展&#xff0c;重大装备技术的进步离不开先进的大尺寸测量手段支持&#xff0c;CASAIM大尺寸测量在测量环境、测量精度和测量效率上明显区别于常规尺寸测量&#xff0c;可以快速检测车体表面的尺寸变形等问题&#xff0c;实现高精度、高效率的自动化车体…

(质数)牛客·Prime Distance

非质数的一个性质&#xff1a; 必定有一个因子大于它的算术平方根。 该性质有范围限制&#xff0c;一般情况下都可以使用。以后数学家们再扩张。碰到质数的一般做法&#xff1a;假定范围为[1,n] 1、预处理1-√n的质数&#xff0c;存入数组p中 2、对于[1-n]里的数&#xff0c;用…

git常用命令之Push

9. Push 命令作用延展阅读git push --set-upstream origin releasegit push -u origin release 为缩写版本1. .git/config配置文件会追加如下关联关系&#xff0c;[branch “release”] remote origin merge refs/heads/release故后续可以直接执行git push2. .git\refs\remo…

VueCli的Nuxt重构

我的博客用vuecli写的&#xff0c;SEO不忍直视。于是用Nuxt重构了代码&#xff0c;过程中踩了无数坑 一&#xff1a;body样式不生效 正常的body样式设置不能生效&#xff0c;需要在nuxt.config.js中配置 1、设置bodyAttrs的class属性&#xff0c;该属性值对应一个类名 2、该…

【Java面试题】Java基础——查找算法

文章目录 基本查找二分查找★★★插值查找斐波那契查找分块查找 基本查找 基本查找也叫做顺序查找 ​ 说明&#xff1a;顺序查找适合于存储结构为数组或者链表。 基本思想&#xff1a;顺序查找也称为线形查找&#xff0c;属于无序查找算法。从数据结构线的一端开始&#xff…

IP地址定位查询技术,不管对方在哪,轻轻松松查到他的位置

这是外面在卖588的抓ip技术&#xff0c;真的很简单&#xff0c;卖此技术的人帮人查一次都能赚几十&#xff0c;每天都能出个两三单 玩法&#xff1a;可以生成链接、邮件、图片、pdf的形式&#xff0c;发送给对方的微信或者QQ等地方&#xff0c;只要对方点击后&#xff0c;立马…