【第5章 | 神经网络】(python机器学习)

一、感知机原理与单层感知器网络


假设现在要判别是否给某个用户办理信用卡,我们已有的是用户的性别、年龄、学历、工作年限、负债情况等信息,用户金融信息情况统计表如表所示。


感知机(Perceptron)

感知机算法于1957年由Rosenblatt提出,是对生物神经细胞的简单抽象, 是神经网络与支持向量机的基础。

神经网络之所以能够发挥强大的作用就是在感知机的结构上作了调整。 而支持向量机(support vector machine,SVM)算法的基础就是感知机。因此,有必要了解基础的感知机算法(perceptron learning algorithm,PLA)思想及其原理。

• 输入为实例的特征向量,输出为实例的类别,取+1和-1;

• 感知机对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型;

• 导入基于误分类的损失函数;

• 利用随机梯度下降法对损失函数进行极小化;

• 感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式;

感知机的基本思想

感知机是一种线性分类模型。也就是说针对的是线性可分的数据。最常见的例子就是二维平面内的一堆数据可以通过一条直线分割开。

显然,这种分割并不是唯一的:

PLA算法就是找到其中一种可分的方案。如果推广至高维空间,就是寻找一个超平面。

•学习的过程就是寻找合适的损失函数,并尽可能使损失函数最小化。

感知机模型


感知机学习策略

假设训练数据集是线性可分的,则感知机学习的目标就是求得一个能够将训练数据集中正负实例完全分开的分类超平面。和前面一样,采取损失函数最小策略,即定义一个损失函数,并通过将损失函数最小化来求w和b 。

这里选择的损失函数是误分类点到分类超平面S的总距离。输入空间中任意一点Xi 到超平面S的距离为:


感知机优化算法

可见,感知机学习算法由于采用不同的初值或选取不同的误分类点,解可以不同。

• 算法的收敛性:经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面及感知机模型。

感知机模型的基本思想是:先随机选择一个超平面对样本点进行划分,然后当一个实例点被误分类,即位于分类超平面错误的一侧时,则调整w和b ,使分类超平面向该误分类点的一侧移动,直至超平面越过该误分类点为止。所以,如果给的初始值不同,则最后得到的分割超平面wx+ b = 0也可能不同,即感知机模型的分割超平面可能存在很多个。

感知机模型有两个缺点,即当训练数据集线性不可分时,感知机的学习算法不收敛,迭代过程会发生震荡。另外,感知机模型仅适用于二分类问题,在现实应用中存在一定局限性。

单层感知器的基本结构

如图,单层感知器可以有多个输入,它们通过与权值相乘,再相加(即加权求和)后,经过一定的偏置,再由激活函数处理,最后输出得到预测结果。这里面存在两种变化:线性变化与非线性变化。其中,加权求和属于线性变化,激活函数做的是非线性变化。通过上述两种变化,可以把输入的数据空间扭曲, 使得只需要一个超平面就可以将其分开(线性可分),从而达到分类的目的。

(多选题)关于感知机模型的描述,以下哪项是正确的?( B、D)

A.感知机模型不能能用于二分类问题。

B.感知机学习算法的原始形式是通过迭代式更新权重和偏置。

C.感知机模型的分割超平面是唯一的。

D.感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式。

二、多层网络与误差逆传播算法

2.1多层网络

什么是神经网络?

"神经网络 是由具有适应性的简单单元组成的广泛并行互连的网络,它能够 模拟生物神经系统对真实世界物体所作出的交互反应" [T. Kohonen, NN88]

• 神经网络是一个很大的学科,本课程仅讨论它与机器学习的交集

• 神经网络学得的知识蕴含在连接权与阈值中

激活函数

• 理想激活函数是阶跃函数, 0表示抑制神经元而1表示激活神经元

• 阶跃函数具有不连续、不光滑等不好的性质, 常用的是Sigmoid 函数

把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络.


多层前馈网络结构

以下关于神经网络的描述中,哪项是正确的? ( B )

A.阶跃函数具有连续、光滑等性质。

B. 神经网络是由具有学习能力的简单单元组成的广泛并行互连的网络,能够学习并模拟生物神经系统的处理方式。

C. 多层前馈网络中,每个神经元都与其他所有神经元直接相连。

D.神经网络的学习过程不涉及调整神经元之间的连接权。

2.2误差逆传播算法(Back Propagation BP)

BP 算法推导

2.3神经网络

标准BP 算法vs累积BP 算法

|------------------------------------------------|------------------------------------------------------|
| 标准BP 算法 | 累积BP 算法 |
| • 每次针对单个训练样例更新权值与阈值 • 参数更新频繁, 不同样例可能抵消, 需要多次迭代 | • 其优化目标是最小化整个训练集上的累计误差 • 读取整个训练集一遍才对参数进行更新, 参数更新频率较低 |

在很多任务中, 累计误差下降到一定程度后, 进一步下降会非常缓慢, 这时标准BP算法往往会获得较好的解, 尤其当训练集非常大时效果更明显。

(多选题)以下哪些方法被提及作为缓解神经网络过拟合的策略?( A、B )

A.早停 B.正则化 C.增加网络层数 D.减少训练数据量

相关推荐
好家伙VCC3 分钟前
**神经编码新视角:用Python实现生物启发的神经信号压缩与解码算法**在人工智能飞速发展的今天
java·人工智能·python·算法
Navicat中国4 分钟前
如何使用 Ollama 配置 AI 助手 | Navicat 教程
数据库·人工智能·ai·navicat·ollama
@小匠4 小时前
Read Frog:一款开源的 AI 驱动浏览器语言学习扩展
人工智能·学习
山间小僧6 小时前
「AI学习笔记」RNN
机器学习·aigc·ai编程
网教盟人才服务平台7 小时前
“方班预备班盾立方人才培养计划”正式启动!
大数据·人工智能
芯智工坊7 小时前
第15章 Mosquitto生产环境部署实践
人工智能·mqtt·开源
菜菜艾7 小时前
基于llama.cpp部署私有大模型
linux·运维·服务器·人工智能·ai·云计算·ai编程
TDengine (老段)8 小时前
TDengine IDMP 可视化 —— 分享
大数据·数据库·人工智能·时序数据库·tdengine·涛思数据·时序数据
小真zzz8 小时前
搜极星:第三方多平台中立GEO洞察专家全面解析
人工智能·搜索引擎·seo·geo·中立·第三方平台
GreenTea8 小时前
从 Claw-Code 看 AI 驱动的大型项目开发:2 人 + 10 个自治 Agent 如何产出 48K 行 Rust 代码
前端·人工智能·后端