当前位置: 首页 > news >正文

神经网络(系统性学习三):多层感知机(MLP)

相关文章:

神经网络中常用的激活函数

神经网络(系统性学习一):入门篇

神经网络(系统性学习二):单层神经网络(感知机)


多层感知机(MLP)

多层感知机(MLP)是一种经典的前馈神经网络(Feedforward Neural Network),通常用于解决分类、回归、监督学习任务。它由一个输入层、一个或多个隐藏层和一个输出层组成。

网络结构

  • 输入层:接收数据输入,特征维度等于数据的特征数。

  • 隐藏层:一个或多个隐藏层,每层包含若干个神经元,负责提取数据的特征。

  • 输出层:根据任务(分类或回归)输出最终的结果。

008ba30f281948f5a27376f5e98358bc.png

主要参数

  • 权重(Weights):连接各层神经元的参数,决定信号的强弱。

  • 偏置:为每个神经元添加额外的灵活性。

  • 超参数:学习率、隐藏层数、每个隐藏层的神经元数等

特别强调:每个神经元之间的权重和偏置绝大多数时候不相同!!!

核心步骤

以隐藏层只有一层为例。

(一)初始化权重和偏置

初始化权重和偏置矩阵。即对每个神经元之间的权重和偏置随机设定一个初始值。

1.1 避免对称性问题

如果所有权重都初始化为相同的值(比如都为0),反向传播计算的梯度对所有权重的更新将是完全相同的。这会导致所有神经元学习到相同的特征,从而失去模型的表达能力。

1.2 权重的初始化

权重的初始化影响网络的输入和输出值的分布。如果初始化值过大,可能导致激活函数的输出进入饱和区(如Sigmoid激活函数趋近于0或1),使得梯度变得极小,网络难以训练(梯度消失问题)。如果初始化值过小,网络学习速度会很慢。

权重可以初始化为均值为0的小随机值。

常见方法包括:

  • 均匀分布:随机生成值在 [−a,a] 区间内。

  • 正态分布:随机生成值符合 eq?N%280%2C%20%5Csigma%5E2%29

1.3 偏置的作用

偏置的初始化相对简单,通常设为零或一个小的随机值即可。它的作用是为神经元提供一个额外的自由度,允许模型学习非零输出。

(二)选择损失函数、激活函数

对于分类问题,常用交叉熵损失函数,对于回归问题,常用均方误差损失函数。以MSE损失函数为例,我们假定损失函数为L:

eq?L%20%3D%20%5Cfrac%7B1%7D%7B2%7D%20%5Csum_%7Bl%3D1%7D%5Em%20%28y_l%20-%20t_l%29%5E2

其中, eq?y_l 是预测值,eq?t_l 是真实标签。

激活函数的选择参考文章:常见的激活函数

(三)前向传播

1、从输入层到隐藏层

假设输入层的神经元为 eq?x_1%2C%20x_2%2C%20%5Cdots%2C%20x_n,隐藏层的神经元为 eq?h_1%2C%20h_2%2C%20%5Cdots%2C%20h_k​(隐藏层有 k 个神经元)。输入到第 j 个隐藏层神经元 hj 的计算公式如下:

eq?z_j%20%3D%20w_%7Bj1%7Dx_1%20+%20w_%7Bj2%7Dx_2%20+%20%5Cdots%20+%20w_%7Bjn%7Dx_n%20+%20b_j

其中:

  • eq?w_%7Bji%7D 是第 j 个隐藏层神经元与第 i 个输入神经元之间的权重。

  • xi​ 是输入层第 i 个神经元的输入值。

  • bj​ 是第 j 个隐藏层神经元的偏置。

经过激活函数 eq?%5Csigma%28z_j%29,得到隐藏层神经元的输出:

eq?h_j%20%3D%20%5Csigma%28z_j%29%20%3D%20%5Csigma%28w_%7Bj1%7Dx_1%20+%20w_%7Bj2%7Dx_2%20+%20%5Cdots%20+%20w_%7Bjn%7Dx_n%20+%20b_j%29

2、从隐藏层到输出层

隐藏层的输出 eq?h_1%2C%20h_2%2C%20%5Cdots%2C%20h_k​ 将作为输入传递到输出层的神经元。假设输出层有 m 个神经元,输出层的第 eq?l 个神经元的计算公式为:

eq?z%27_l%20%3D%20w%27_%7Bl1%7Dh_1%20+%20w%27_%7Bl2%7Dh_2%20+%20%5Cdots%20+%20w%27_%7Blk%7Dh_k%20+%20b%27_l

其中:

  • eq?w%27_%7Bli%7D 是第 eq?l 个输出层神经元与第 i 个隐藏层神经元之间的权重。

  • eq?h_i​ 是隐藏层第 i 个神经元的输出值。

  • eq?b%27_l​ 是第 eq?l 个输出层神经元的偏置。

同样,经过激活函数(通常是Softmax或Sigmoid)后,得到输出层的输出:

eq?y_l%20%3D%20%5Csigma%28z%27_l%29%20%3D%20%5Csigma%28w%27_%7Bl1%7Dh_1%20+%20w%27_%7Bl2%7Dh_2%20+%20%5Cdots%20+%20w%27_%7Blk%7Dh_k%20+%20b%27_l%29

反向传播与权重更新

(四)误差计算与反向传播

训练MLP时,使用反向传播算法来更新网络中的权重和偏置。反向传播算法基于链式法则计算损失函数对每个权重和偏置的梯度,然后使用梯度下降法(默认使用全批量梯度下降)来更新参数。

假设损失函数为 L,权重为 w,偏置为 b,则每个权重和偏置的更新规则为:

eq?w_%7Bji%7D%20%5Cleftarrow%20w_%7Bji%7D%20-%20%5Ceta%20%5Cfrac%7B%5Cpartial%20L%7D%7B%5Cpartial%20w_%7Bji%7D%7D

eq?b_j%20%5Cleftarrow%20b_j%20-%20%5Ceta%20%5Cfrac%7B%5Cpartial%20L%7D%7B%5Cpartial%20b_j%7D

其中 η 是学习率,eq?%5Cfrac%7B%5Cpartial%20L%7D%7B%5Cpartial%20w_%7Bji%7D%7D 和 eq?%5Cfrac%7B%5Cpartial%20L%7D%7B%5Cpartial%20b_j%7D​ 是损失函数关于权重和偏置的偏导数。

(五)迭代过程

重复步骤三和步骤四,不断迭代更新权重和偏置。

终止条件:达到最大迭代次数、损失收敛、目标性能达标等。

注:整个过程只以一个隐藏层为例,如果有多个隐藏层,从隐藏层到隐藏层之间的传递也是类似的。也是以上一层的输出作为该层的输入,并通过激活函数将该层输入转化为该层的输出;其次就是注意每个神经元之间的权重和偏置不一样。

MLP优缺点总结

ff8917d60afc41519efde2157e448941.png

        MLP 是一种通用的神经网络模型,广泛用于分类、回归、特征提取和强化学习等任务。尽管它的能力和表现已经被更复杂的模型(如卷积神经网络 CNN 和循环神经网络 RNN)在某些领域超越,但由于其简单性和强大的非线性拟合能力,MLP仍然是很多基础任务和小型数据集问题中的首选模型。同时,它常常作为其他复杂模型中的子模块,为解决复杂问题提供基础支持。

 

# 若对大噶有帮助的话,希望点个赞支持一下叭!

 

相关文章:

神经网络(系统性学习三):多层感知机(MLP)

相关文章: 神经网络中常用的激活函数 神经网络(系统性学习一):入门篇 神经网络(系统性学习二):单层神经网络(感知机) 多层感知机(MLP) 多层感…...

07-SpringCloud-Gateway新一代网关

一、概述 1、Gateway介绍 官网:https://spring.io/projects/spring-cloud-gateway Spring Cloud Gateway组件的核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求转发(路由)到对应的微服务。 Spring Cloud Gateway是加在整个微服务最前沿的防…...

HTML 表单实战:从创建到验证

HTML表单是用于收集用户输入数据的一种方式&#xff0c;可以用于创建各种类型的表单&#xff0c;例如登录表单、注册表单、调查问卷表单等。本文将详细介绍表单元素的使用&#xff0c;并利用JavaScript实现对表单数据的验证。 HTML表单元素的使用 输入框<input> <i…...

【redis 】string类型详解

string类型详解 一、string类型的概念二、string类型的常用指令2.1 SET2.2 GET2.3 MSET2.4 MGET2.5 SETNX2.6 INCR2.7 INCRBY2.8 DECR2.9 DECRBY2.10 INCRBYFLOAT2.11 APPEND2.12 GETRANGE2.13 SETRANGE2.14 STRLEN 三、string类型的命令小结四、string类型的内部编码五、strin…...

Vue.js 学习总结(13)—— Vue3 version 计数介绍

前言 Vue3.5 提出了两个重要概念&#xff1a;version计数和双向链表&#xff0c;作为在内存和计算方面性能提升的最大功臣。既然都重要&#xff0c;那就单挑 version 计数来介绍&#xff0c;它在依赖追踪过程中&#xff0c;起到快速判断依赖项有没有更新的作用&#xff0c;所以…...

【数据结构】【线性表】一文讲完队列(附C语言源码)

队列 队列的基本概念基本术语基本操作 队列的顺序实现顺序队列结构体的创建顺序队列的初始化顺序队列入队顺序队列出队顺序队列存在的问题分析循环队列代码汇总 队列的链式实现链式队列的创建链式队列初始化-不带头结点链式队列入队-不带头节点链式队列出队-不带头结点带头结点…...

2024年11月最新 Alfred 5 Powerpack (MACOS)下载

在现代数字化办公中&#xff0c;我们常常被繁杂的任务所包围&#xff0c;而时间的高效利用成为一项核心需求。Alfred 5 Powerpack 是一款专为 macOS 用户打造的高效工作流工具&#xff0c;以其强大的定制化功能和流畅的用户体验&#xff0c;成为众多效率爱好者的首选。 点击链…...

ODBC连接PostgreSQL数据库后,网卡DOWN后,客户端进程阻塞问题解决方法

问题现象&#xff1a;数据库客户端进程数据库连接成功后&#xff0c;再把跟数据库交互的网卡down掉&#xff0c;客户端进程就会阻塞&#xff0c;无法进行其他处理。该问题跟TCP keepalive机制有关。 可以在odbc.ini文件中增加相应的属性来解决&#xff0c;在odbc.ini 增加如下…...

VsCode使用git提交很慢(一直显示在提交)_vscode commit很慢解决方法

VsCode使用git提交很慢&#xff08;一直显示在提交&#xff09;_vscode commit很慢...

linux从0到1——shell编程9

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…...

计算机网络技术专业,热门就业方向和就业前景

前言 在数字化飞速发展的今天&#xff0c;计算机网络技术专业成为了众多学子和职场人士关注的焦点。这一专业不仅涵盖了计算机硬件、软件和网络通信等多个领域的知识&#xff0c;更在就业市场上展现出强大的竞争力。本文将带您一探计算机网络技术专业的就业方向和就业前景&…...

C++中定义类型名的方法

什么是 C 中的类型别名和 using 声明&#xff1f; 类型别名与using都是为了提高代码的可读性。 有两种方法可以定义类型别名 一种是使用关键字typedef起别名使用别名声明来定义类型的别名&#xff0c;即使用using. typedef 关键字typedef作为声明语句中的基本数据类型的一…...

从零开始学习 sg200x 多核开发之 camera-sensor 添加与测试

sg2002 集成了 H.264 视频压缩编解码器, H.265 视频压缩编码器和 ISP&#xff1b;支持 HDR 宽动态、3D 降噪、除雾、镜头畸变校正等多种图像增强和矫正算法。 sophpi 中没有提供相关图像 sensor。本次实验是在 milkv-duo256m 上添加 GC2083。 GC2083 格科微的 GC2083 是一款…...

前端三剑客(二):CSS

目录 1. CSS 基础 1.1 什么是 CSS 1.2 语法格式 1.3 引入方式 1.3.1 行内样式 1.3.2 内部样式 1.3.3 外部样式 1.4 CSS 编码规范 2. 选择器 2.1 标签选择器 2.2 id 选择器 2.3 class 选择器(类选择器) 2.4 复合选择器 2.5 通配符选择器 3. 常用 CSS 样式 3.1 c…...

国土变更调查拓扑错误自动化修复工具的研究

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、拓扑错误的形成原因 1.边界不一致 2.不规则图形 3.尖锐角 4.局部狭长 5.细小碎面 6.更新层相互重叠 二、修复成果展示 1.边界不一致 2.不规则图形 3.尖锐角 4.局部狭…...

深度学习图像视觉 RKNN Toolkit2 部署 RK3588S边缘端 过程全记录

深度学习图像视觉 RKNN Toolkit2 部署 RK3588S边缘端 过程全记录 认识RKNN Toolkit2 工程文件学习路线&#xff1a; Anaconda Miniconda安装.condarc 文件配置镜像源自定义conda虚拟环境路径创建Conda虚拟环境 本地训练环境本地转换环境安装 RKNN-Toolkit2&#xff1a;添加 lin…...

Linux应用编程(C语言编译过程)

目录 1. 举例 2.预处理 2.1 预处理命令 2.2 .i文件内容解读 3.编译 4.汇编 5.链接 5.1 链接方式 5.1.1 静态链接 5.1.2 动态链接 5.1.3 混合链接 1. 举例 Linux的C语言开发&#xff0c;一般选择GCC工具链进行编译&#xff0c;通过下面的例子来演示GCC如何使用&#…...

ssm实战项目──哈米音乐(二)

目录 1、流派搜索与分页 2、流派的添加 3、流派的修改 4、流派的删除 接上篇&#xff1a;ssm实战项目──哈米音乐&#xff08;一&#xff09;&#xff0c;我们完成了项目的整体搭建&#xff0c;接下来进行后台模块的开发。 首先是流派模块&#xff1a; 在该模块中采用分…...

Python 获取微博用户信息及作品(完整版)

在当今的社交媒体时代&#xff0c;微博作为一个热门的社交平台&#xff0c;蕴含着海量的用户信息和丰富多样的内容。今天&#xff0c;我将带大家深入了解一段 Python 代码&#xff0c;它能够帮助我们获取微博用户的基本信息以及下载其微博中的相关素材&#xff0c;比如图片等。…...

Flink学习连载第二篇-使用flink编写WordCount(多种情况演示)

使用Flink编写代码&#xff0c;步骤非常固定&#xff0c;大概分为以下几步&#xff0c;只要牢牢抓住步骤&#xff0c;基本轻松拿下&#xff1a; 1. env-准备环境 2. source-加载数据 3. transformation-数据处理转换 4. sink-数据输出 5. execute-执行 DataStream API开发 //n…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中&#xff0c;提供了一系列静态方法用于操作数组&#xff08;如排序、搜索、填充、比较等&#xff09;。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序&#xff08;sort&#xff09; 对数组进行升序…...

字符串哈希+KMP

P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...