机器学习-神经网络(西瓜书)

神经网络

5.1 神经元模型

在生物神经网络中,神经元之间相互连接,当一个神经元受到的外界刺激足够大时,就会产生兴奋(称为"激活"),并将剩余的"刺激"向相邻的神经元传导。
在这里插入图片描述

神经元模型
模型中 x i x_i xi表示各个神经元传来的刺激,刺激强度有大有小,所以 w i w_i wi表示不同刺激的权重,Θ表示阈值。一段刺激经过加权汇总再减去神经元的阈值后,经过激活函数 f f f处理,就是一个输出y,它如果不为0,那么y就会作用到其他神经元当中,就如同 x i x_i xi一样作为输入。

前面提到的激活函数 f f f一般表示为:
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x) = \frac{1}{1+e^{-x}} sigmoid(x)=1+ex1

5.2 感知机与多层网络

  • 感知机能快速实现与,或,非逻辑运算,它由两层神经元组成,输入层接受信号好传递到输出层,并在输出层进行激活函数处理。
    在这里插入图片描述

输出计算方法为:
y = f ( ∑ i w i x i − Θ ) y = f(\sum_{i}w_ix_i-Θ) y=f(iwixiΘ)
以"与"运算为例( x 1 x_1 x1 x 2 x_2 x2):令两个w值为1,Θ(阈值)为2,则有
y = f ( 1 × x 1 + 1 × x 2 − 2 ) y=f(1×x_1+1×x_2-2) y=f(1×x1+1×x22)

只在x均为1时,y才为1

  • 常见的神经网络如下图所示的层级结构,每层神经元与下一层的互相连接,称为"多层前馈神经网络",神经网络学习到的内容,存在于前面提到的连接权 w i w_i wi和阈值 Θ Θ Θ里。
    在这里插入图片描述

5.3 误差逆传播算法(简称BP)

多层网络的学习能力强于单层感知机,可以用BP算法进行训练,通过计算实际输出与期望输出之间的误差,再将这份误差反向传播到网络的每一层,从而调整网络中的权重,这个过程会迭代进行,直到训练效果达到预期。
累计误差表示为:
E = 1 m ∑ k = 1 m E k E=\frac{1}{m}\sum^m_{k=1}E_k E=m1k=1mEk
具体步骤的伪代码为:

1.初始化网络的权重和阈值
2.对于每个训练样本,进行前向传播计算:将输入样本传递给输入层计算隐藏层的输出,使用激活函数(前面提到的Sigmoid函数)将隐藏层的输出传递给输出层,再次使用激活函数
3.计算输出层的误差(期望输出与实际输出的差值)
4.反向传播误差:根据误差和激活函数的导数,计算输出层的梯度将输出层的梯度传播回隐藏层,再根据权重调整梯度更新隐藏层到输出层的权重把隐藏层的梯度传播回输入层,根据权重调整梯度更新输入层到隐藏层的权重
5.重复2-4步骤,直到达到预定的训练次数或者收敛了
6.使用训练好的网络进行预测

BP神经网络经常出现"过拟合"现象,表现为:训练误差持续降低,测试误差上升。解决的方法有两种:

  • 第一种是"早停":把数据集分为训练集和验证集,前者就是做上述伪代码的工作,即计算梯度,更新权重等;验证集用来估计误差(如分类任务中的分类准确率),当出现训练误差减小但验证误差提升时,停止训练,同时返回具有最小验证集误差的权重和阈值。
  • 第二种是"正则化",在误差目标函数中加入一个描述网络复杂度的部分,通过对模型的复杂度进行惩罚(如限制模型的参数或权重的大小)来防止过拟合

深度学习

深度学习模型通过"增加隐层"的数目,提高训练效率,降低过拟合的风险。
在这里插入图片描述

以第二章的手写体识别为例,网络输入是一个32×32的手写数字图像,输出是算法的识别结果,过程以伪代码的形式呈现。

对所有手写数字文本将加载的32×32矩阵转为一行1024的向量把文本对应的数字转化为one-hot向量(某个值为1,其余均为0)
构建神经网络:设置网络的隐藏层数,各隐藏层神经元个数,激活函数学习率,优化方法,最大迭代次数
做测试

隐藏层中的神经元能直接影响网络的学习能力,但是如果数量过多容易导致出现过拟合现象,选取合适参数的方法有

  • 手动筛选:给定一个范围,如:比较50,100,500的效果,如果200的效果优于其他两者,那么就从50到100间再选择一个数值,但这个方法有点慢
  • 正则化技术:以L1正则化(L1 Regularization)为例:L1正则化通过在损失函数中添加参数的绝对值之和,来惩罚模型中的大参数。这导致一些参数变为零,从而实现特征选择和稀疏性。L1正则化可以促使模型更加稀疏,即只有少数参数对模型的预测起作用,其他参数趋近于零。

实验:比较隐藏层不同神经元个数的多层感知机的实验效果

(学习率均为0.0001,迭代次数为2000)

clf = MLPClassifier(hidden_layer_sizes=(100,),activation='logistic', solver='adam',learning_rate_init=0.0001, max_iter=2000)
print(clf)

变量为神经元个数,分别是50,100,500,1000
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验分析:神经元个数从50逐渐升到500个的过程中,网络对目标特征的抓取能力逐渐提升,所以识别的正确率随之提高。但在个数跳到1000时正确率没有提高,可能是因为个数在达到1000之前,多层感知机就已经收敛了,个数继续增加相当于时过度训练数据,提高网络复杂度,这并不会带来增益。能测试的变量还有迭代次数和学习率。

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

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

相关文章

微信开发之一键创建标签的技术实现

简要描述: 添加标签 请求URL: http://域名地址/addContactLabel 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明…

paddle 1-高级

目录 为什么要精通深度学习的高级内容 高级内容包含哪些武器 1. 模型资源 2. 设计思想与二次研发 3. 工业部署 4. 飞桨全流程研发工具 5. 行业应用与项目案例 飞桨开源组件使用场景概览 框架和全流程工具 1. 模型训练组件 2. 模型部署组件 3. 其他全研发流程的辅助…

单变量图的类型与直方图绘图基础

文章目录 单变量图的类型1.直方图(histogram plot)2.密度图(density plot)3.Q-Q 图(Quantile- Quantile plot,又称分位图)4.P-P 图(Probability-Probability plot)5.经验…

windows下如何搭建属于自己的git服务器

前一阵子公司需要,领导让我给我们技术部搭建一个git服务器。以前看过教程,但自己没动手做过,开始按照网上的教程来,但搭建过程中发现还是不够详细,今天给大家一个比较详细的,希望对大家有帮助。 高能预警&a…

微软用 18 万行 Rust 重写了 Windows 内核

微软正在使用 Rust 编程语言重写其核心 Windows 库。 5 月 11 日——Azure 首席技术官 Mark Russinovich 表示,最新的 Windows 11 Insider Preview 版本是第一个包含内存安全编程语言 Rust 的版本。 “如果你参加了 Win11 Insider 环,你将在 Windows 内…

DC/DC开关电源学习笔记(二)开关电源的分类

(二)开关电源的分类 1.DC/DC类开关电源2.AC/DC变换器3.电路结构分类4.功率开关管分类5.电路拓扑分类 开关电源可分为 AC/DC和DC/DC两大类。 作为二次电源的DC/DC变换器现已实现模块化, 且设计技术及生产工艺在国内外均已成熟和标准化&#xf…

Python的pymysql模块与MySQL数据库的互动:基础与实例

Python的pymysql模块与MySQL数据库的互动:基础与实例 一、连接数据库二、创建游标三、执行SQL命令四、关闭连接 在Python的世界里,操作MySQL数据库最常用的库就是pymysql。 pymysql是一个灵活且易于使用的库,它允许我们以Python的方式操作MyS…

Jmeter性能综合实战 —— 签到及批量签到

提取性能测试的三个方面:核心、高频、基础功能 签 到 请 求 步 骤 1、准备工作: 签到线程组n HTTP请求默认值n HTTP cookie 管理器n 首页访问请求n 登录请求n 查看结果树n 调试取样器l HTTP代理服务器 (1)创建线程组 &#xf…

python面试:使用cProfile剖析程序性能

我们需要安装tuna:pip install tuna 程序执行完毕后,我们会得到一个results.prof,在CMD中输入指令:“tuna results.prof”。 import time import cProfile import pstatsdef add(x, y):resulting_sum 0resulting_sum xresulti…

Fooocus:一个简单且功能强大的Stable Diffusion webUI

Stable Diffusion是一个强大的图像生成AI模型,但它通常需要大量调整和提示工程。Fooocus的目标是改变这种状况。 Fooocus的创始人Lvmin Zhang(也是 ControlNet论文的作者)将这个项目描述为对“Stable Diffusion”和“ Midjourney”设计的重新…

《PyTorch 2.0深度学习从零开始学》已出版

#好书推荐##好书奇遇季#《PyTorch 2.0深度学习从零开始学》,京东当当天猫都有发售。定价69元,网店打折销售更便宜。本书配套示例项目源码、PPT课件。 本书以通俗易懂的方式介绍PyTorch深度学习基础理论,并以项目实战的形式详细介绍PyTorch框…

在vue3项目中编辑的时候,解决对话框里边的数据和列表中的数据联动了。深复制

//分析原因是从列表中拿到的数据直接复制去修改就涉及到堆里变的内容是一样的&#xff0c;直接复制其实只是把引用地址赋值给变量了&#xff0c;解决方法是 浅复制和深复制。<!-- 审批流程管理 --> <template><div style"float: left; width: 250px;backgr…

Vue2.0 的响应式原理 私

原理&#xff1a; 通过数据劫持 defineProperty 发布订阅者模式&#xff0c;当 vue 实例初始化后 observer 会针对实例中的 data 中的每一个属性进行劫持并通过 defineProperty() 设置值后在 get() 中向发布者添加该属性的订阅者&#xff0c; 使用的Object.defineProperty()…

Excel:如何实现分组内的升序和降序?

一、POWER 1、构建辅助列D列&#xff0c;在D2单元格输入公式&#xff1a; -POWER(10,COUNTA($A$2:A2)3)C2 2、选中B1:D10&#xff0c;注意不能宣导A列的合并单元格&#xff0c;进行以下操作&#xff1a; 3、删除辅助列即可 二、COUNTA 第一步&#xff0c;D2建立辅助列&#xf…

Maven - 使用maven-release-plugin规范化版本发布

文章目录 Maven Release plugin – IntroductionMaven Release plugin – Plugin DocumentationMaven Release plugin – Usage实战案例 Maven Release plugin – Introduction Maven Release Plugin&#xff08;Maven 发布插件&#xff09;是一个用于帮助在Maven项目中执行版…

前端基础---HTML笔记汇总一

HTML定义 HTML超文本标记语言——HyperText Markup Language。 超文本是什么&#xff1f; 链接标记是什么&#xff1f; 标记也叫标签&#xff0c;带尖括号的文本 标签分类 单标签:只有开始标签&#xff0c;没有结束标签(<br>换行 <hr>水平线 <img> 图像标…

完美解决 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

拉取代码时报错&#xff1a; # Mac 报错WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key …

JavaScript关于函数的小挑战

题目 回到两个体操队&#xff0c;即海豚队和考拉队! 有一个新的体操项目&#xff0c;它的工作方式不同。 每队比赛3次&#xff0c;然后计算3次得分的平均值&#xff08;所以每队有一个平均分&#xff09;。 只有当一个团队的平均分至少是另一个团队的两倍时才会获胜。否则&…

jumpserver堡垒机添加资产配置

目录 jumpserver堡垒机添加资产配置 1、创建jumpserver管理用户&#xff0c;登录jumpserver堡垒机 2、创建普通用户&#xff0c;管理资源服务器 3、创建特权用户&#xff0c;登录资源服务器 4、添加资源 5、资产授权 6、登录jumpserver&#xff0c;创建的jumpserver用户 7、…

MyBatis-Plus 总结

MyBatis-Plus简介 官网&#xff1a;https://baomidou.com/ GitHub&#xff1a;https://github.com/baomidou/mybatis-plus Gitee&#xff1a;https://gitee.com/baomidou/mybatis-plus 简介 MyBatis-Plus &#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#x…