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

西瓜书研读——第五章 神经网络:感知机与多层网络

西瓜书研读系列:
西瓜书研读——第三章 线性模型:一元线性回归
西瓜书研读——第三章 线性模型:多元线性回归
西瓜书研读——第三章 线性模型:线性几率回归(逻辑回归)
西瓜书研读——第三章 线性模型: 线性判别分析 LDA
西瓜书研读——第四章 决策树:ID3、C4.2、CSRT算法

  • 主要教材为西瓜书,结合南瓜书,统计学习方法,B站视频整理~
  • 人群定位:学过高数会求偏导、线代会矩阵运算、概率论知道啥是概率
  • 原理讲解,公式推导,课后习题,实践代码应有尽有,欢迎订阅

5.1 神经元模型

所谓神经网络,目前用得最广泛的一个定义是“神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应”。

M-P神经元

M-P神经元:接收n个输入(通常是来自其他神经元),并给各个输入赋予权重计算加权和,然后和自身特有的阈值θ进行比较(作减法),最后经过激活函数f(模拟“抑制"和“激活”)处理得到输出(通常是给下一个神经元)

M-P神经元模型如下图所示:

1.png
y = f ( ∑ i = 1 n w i x i − θ ) = f ( w T x + b ) y=f(\sum_{i=1}^nw_ix_i-θ)=f(w^Tx+b) y=f(i=1nwixiθ)=f(wTx+b)
与线性分类十分相似,神经元模型最理想的激活函数也是阶跃函数,即将神经元输入值与阈值的差值映射为输出值1或0,若差值大于零输出1,对应兴奋;若差值小于零则输出0,对应抑制。

但阶跃函数不连续,不光滑,故在M-P神经元模型中,也采用Sigmoid函数来近似, Sigmoid函数将较大范围内变化的输入值挤压到 (0,1) 输出值范围内,所以也称为挤压函数(squashing function)。

常见激活函数f:

  • sgn函数
  • sigmoid函数

2.png

将多个神经元按一定的层次结构连接起来,就得到了神经网络。它是一种包含多个参数的模型,比方说10个神经元两两连接,则有100个参数需要学习(每个神经元有9个连接权以及1个阈值),若将每个神经元都看作一个函数,则整个神经网络就是由这些函数相互嵌套而成。

img

5.2 感知机与多层网络

感知机模型

感知机(Perceptron)是由两层神经元组成的一个简单模型,但只有输出层是M-P神经元,即只有输出层神经元进行激活函数处理,也称为功能神经元;输入层只是接受外界信号(样本属性)并传递给输出层(输入层的神经元个数等于样本的属性数目),而没有激活函数。

激活函数为sgn (阶跃函数)的神经元
y = s g n ( w T x − θ ) = { 1 , w T x − θ ⩾ 0 0 , w T x − θ < 0 y=sgn(w^Tx-θ)= \left\{\begin{array} {ll} 1, & \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta \geqslant 0 \\ 0, & \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta<0 \end{array}\right. y=sgn(wTxθ)={1,0,wTxθ0wTxθ<0
x为特征向量,作为模型输入,(w,θ)$为神经元参数(权重,阈值)

感知机的几何解释:
线性方程 w T x + b = 0 \boldsymbol{w}^{T} \boldsymbol{x}+b=0 wTx+b=0对应于特征空间(输入空间) R n R^{n} Rn 中的一个超平面S,其中 w \boldsymbol{w} w是超 平面的法向量,$\mathrm{b} $是超平面的截距。这个超平面将特征空间划分为两个部分。位于两边的点 (特征向量) 分别被分为正、负两类。因此,超平面S称为分离超平面,如图所示:

image-20220914150959287

感知机学习策略

假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正实例点和负实 例点完全正确分开的超平面。为了找出这样的超平面 S S S,即确定感知机模型参数 w \boldsymbol{w} w b \mathrm{b} b,需要确定一个学习策略,即定义损失函数并将损失函数极小化。损失函数的一个自然选择是误分类点的总数。但是,这样的损失函数不是参数 w \boldsymbol{w} w b b b 的连续可导函数,不易优化,所以感知机采用的损失函数为误分类点到超平面的总距离。

输入空间 R n R^{n} Rn 中点 x 0 \boldsymbol{x}_{0} x0 到超平面 S \mathrm{S} S的距离公式为

∣ w T x 0 + b ∣ ∥ w ∥ \frac{\left|\boldsymbol{w}^{T} \boldsymbol{x}_{0}+b\right|}{\|\boldsymbol{w}\|} w wTx0+b

其中, ∥ w ∥ \|\boldsymbol{w}\| w 表示向量 $ \boldsymbol{w} $ 的 L 2 L_{2} L2范数,也即模长。若将b看成哑结点,也即合并进w可得:
∣ w ^ T x ^ 0 ∣ ∥ w ∥ \frac{\left|\boldsymbol{\hat w}^{T} \boldsymbol{\hat x}_{0}\right|}{\|\boldsymbol{w}\|} w w^Tx^0
设吴分类点集合为M,那么所有误分类点到超平面S的总距离为
∑ x ^ i ∈ M ∣ w ^ T x ^ i ∣ ∥ w ^ ∥ \sum_{\hat{\boldsymbol{x}}_{i} \in M} \frac{\left|\hat{\boldsymbol{w}}^{T} \hat{\boldsymbol{x}}_{i}\right|}{\|\hat{\boldsymbol{w}}\|} x^iMw^ w^Tx^i

随机初始化w, b,将全体训练样本代入模型找出误分类样本,假设此时误分类样本集合为 M ∈ T M∈T MT,对任意一个误分类样本来说,以下公式恒成立:
( y ^ − y ) ( w ^ T x ^ − θ ) > = 0 (\hat{y}-y)(\hat w^T\hat x-θ)>=0 (y^y)(w^Tx^θ)>=0
y ^ \hat y y^是预测值,

  • 若y是原来是1,预测成了0,即 y ^ = 0 \hat y=0 y^=0,$ 0-1<0 , , (w^Tx-θ)=0$
  • 若y是原来是0,预测成了1,即 y ^ = 1 \hat y=1 y^=1,$ 1-0>0 , , (w^Tx-θ)=1$

所以,给定数据集T,其损失函数可以定义为:
L ( w , θ ) = ∑ x ∈ M ( y ^ − y ) ( w T x − θ ) L(w,θ)=\sum_{x∈M}(\hat{y}-y)(w^Tx-θ) L(w,θ)=xM(y^y)(wTxθ)
其中, $\hat{y}_{i} $为当前感知机的输出。于是所有误分类点到超平面S的总距离可改写为

∑ x ^ i ∈ M ( y ^ i − y i ) w ^ T x ^ i ∥ w ^ ∥ \sum_{\hat{\boldsymbol{x}}_{i} \in M} \frac{\left(\hat{y}_{i}-y_{i}\right) \hat{\boldsymbol{w}}^{T} \hat{\boldsymbol{x}}_{i}}{\|\hat{\boldsymbol{w}}\|} x^iMw^(y^iyi)w^Tx^i
不考虑 1 ∥ w ^ ∥ \frac{1}{\|\hat{\boldsymbol{w}}\|} w^1 就得到感知机学习的损失函数

L ( w ^ ) = ∑ x ^ i ∈ M ( y ^ i − y i ) w ^ T x ^ i L(\hat{\boldsymbol{w}})=\sum_{\hat{\boldsymbol{x}}_{i} \in M}\left(\hat{y}_{i}-y_{i}\right) \hat{\boldsymbol{w}}^{T} \hat{\boldsymbol{x}}_{i} L(w^)=x^iM(y^iyi)w^Tx^i
显然,损失函数 $ L(\hat{\boldsymbol{w}}) $是非负的。如果没有误分类点,损失函数值是 0 。而且,误分类点越 少,误分类点离超平面越近,损失函数值就越小,在误分类时是参数 $ \hat{w} $的线性函数,在正确分类时是0。因此,给定训练数据集,损失函数 $L(\hat{\boldsymbol{w}}) $是 $ \hat{\boldsymbol{w}} $的连续可导函数。

具体地,给定数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } T = \{(x_1, y_1), (x_2,y_2),...,(x_n,y_n)\} T={(x1,y1),(x2,y2),...,(xn,yn)}

其中 x i ∈ R , y i ∈ { 0 , 1 } x_i∈R,y_i∈\{0,1\} xiR,yi{0,1},求参数 w , θ , w,θ, w,θ,使其为极小化损失函数的解:
m i n   L ( w , θ ) = m i n w , θ ∑ x i ∈ M ( y i ^ − y i ) w ^ T x ^ i min\, L(w,θ)= {min}_{w,θ}\sum_{x_i∈M}(\hat{y_i}- y_i)\hat{\boldsymbol{w}}^{T} \hat{\boldsymbol{x}}_{i} minL(w,θ)=minw,θxiM(yi^yi)w^Tx^i

求解

感知机学习算法是误分类驱动的,具体采用随机梯度下降法。首先,任意选取一个超平面 w ^ 0 T x ^ = 0 \hat{\boldsymbol{w}}_{0}^{T} \hat{\boldsymbol{x}}=0 w^0Tx^=0用梯度下降法不断地极小化损失函数$ L(\hat{\boldsymbol{w}})$,极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。已知损失函数的梯度为

∇ L ( w ^ ) = ∂ L ( w ^ ) ∂ w ^ = ∂ ∂ w ^ [ ∑ x ^ i ∈ M ( y ^ i − y i ) w ^ T x ^ i ] = ∑ x ^ i ∈ M [ ( y ^ i − y i ) ∂ ∂ w ^ ( w ^ T x ^ i ) ] \nabla L(\hat{\boldsymbol{w}})=\frac{\partial L(\hat{\boldsymbol{w}})}{\partial \hat{\boldsymbol{w}}}=\frac{\partial}{\partial \hat{\boldsymbol{w}}}\left[\sum_{\hat{\boldsymbol{x}}_{i} \in M}\left(\hat{y}_{i}-y_{i}\right) \hat{\boldsymbol{w}}^{T} \hat{\boldsymbol{x}}_{i}\right]\\ =\sum_{\hat{\boldsymbol{x}}_{i} \in M}\left[\left(\hat{y}_{i}-y_{i}\right) \frac{\partial}{\partial \hat{\boldsymbol{w}}}\left(\hat{\boldsymbol{w}}^{T} \hat{\boldsymbol{x}}_{i}\right)\right] L(w^)=w^L(w^)=w^[x^iM(y^iyi)w^Tx^i]=x^iM[(y^iyi)w^(w^Tx^i)]
由矩阵微分公式 ∂ x T a ∂ x = a \frac{\partial \boldsymbol{x}^{T} a}{\partial x}=\boldsymbol{a} xxTa=a可得
∇ L ( w ^ ) = ∂ L ( w ^ ) ∂ w ^ = ∑ x ^ i ∈ M ( y ^ i − y i ) x ^ {\nabla L(\hat{\boldsymbol{w}})}=\frac{\partial L(\hat{\boldsymbol{w}})}{\partial \hat{\boldsymbol{w}}}=\sum_{\hat{\boldsymbol{x}}_{i} \in M}\left(\hat{y}_{i}-y_{i}\right) \hat{\boldsymbol{x}} L(w^)=w^L(w^)=x^iM(y^iyi)x^

感知机的学习算法具体采用的是随机梯度下降法,也就是极小化过程中不是一次使M中所有误分类点的梯度下降,而是随机选取一个误分类点使其梯度下降。所以权重w的更新公式为:(η为学习率)
w ^ = w ^ + △ w ^ \hat w=\hat w+△\hat w w^=w^+w^

△ w = − η ∇ L ( w ^ ) △w=-η \nabla L(\hat w) w=ηL(w^)

w ^ ← w ^ − η ∇ L ( w ^ ) w ^ ← w ^ − η ( y ^ i − y i ) x ^ i = w ^ + η ( y i − y ^ i ) x ^ i \begin{array}{c} \hat{\boldsymbol{w}} \leftarrow \hat{\boldsymbol{w}}-\eta \nabla L(\hat{\boldsymbol{w}}) \\ \hat{\boldsymbol{w}} \leftarrow \hat{\boldsymbol{w}}-\eta\left(\hat{y}_{i}-y_{i}\right) \hat{\boldsymbol{x}}_{i}=\hat{\boldsymbol{w}}+\eta\left(y_{i}-\hat{y}_{i}\right) \hat{\boldsymbol{x}}_{i} \end{array} w^w^ηL(w^)w^w^η(y^iyi)x^i=w^+η(yiy^i)x^i

前馈网络

由于像感知机这种单个神经元分类能力有限, 只能分类线性可分的数据集,对于线性不可分的数据集则无能为力, 但是多个神经元构成的神经网络能够分类线性不可分的数据集(西瓜书上异或问题的那个例子),且有理论证明(通用近似定理):只需一个包含足够多神经元的隐层, 多层前馈网络(最经典的神经网络之一)就能以任意精度逼近任意复杂度的连续函数。

因此, 神经网络既能做回归, 也能做分类, 而且不需要复杂的特征工程。

要解决非线性可分问题,需考虑使用多层功能神经元.例如下图中这个简单的两层感知机就能解决异或问题.在下图a中,输出层与输入层之间的一层神经元,被称为隐层或隐含层,隐含层和输出层神经元都是拥有激活函数的功能神经元.

更一般的,常见的神经网络是形如下图所示的层级结构,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接.这样的神经网络结构通常称为“多层前馈神经网络”

image-20220914165352527

其中输入层神经元仅是接受输入,不进行函数处理,隐层与输出层包含功能神经元."连接权"以及每个功能神经元的阈值;神经网络“学”到的东西,蕴涵在连接权与阈值中.

相关文章:

  • Docker实战:Docker安装Gitlab实用教程
  • 【python-Unet】计算机视觉~舌象舌头图片分割~机器学习(三)
  • 牛客网面试——数学类型3
  • 经典回顾 | 一种跨模态多媒体检索的新方法
  • 基于python+django框架+Mysql数据库的校园失物招领系统设计与实现
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • 【ML15】浅谈神经网络 Nerual Network
  • 串口实验(10.3)
  • 猿创征文 | 使用Docker部署openGauss国产数据库
  • Python 常用内置函数
  • 论文笔记系列:主干网络(二)-- DenseNet
  • 强化记忆:pycharm 部分快捷键
  • Python实现基于机器学习的手写数字识别系统
  • Vision Transformer和MLP-Mixer联系和对比
  • Python 变量
  • 【译】JS基础算法脚本:字符串结尾
  • 3.7、@ResponseBody 和 @RestController
  • Apache Spark Streaming 使用实例
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Node项目之评分系统(二)- 数据库设计
  • react 代码优化(一) ——事件处理
  • React-Native - 收藏集 - 掘金
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 大主子表关联的性能优化方法
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 老板让我十分钟上手nx-admin
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 实习面试笔记
  • 使用common-codec进行md5加密
  • 使用权重正则化较少模型过拟合
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • Java性能优化之JVM GC(垃圾回收机制)
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​虚拟化系列介绍(十)
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (7)STL算法之交换赋值
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C语言)球球大作战
  • (Java数据结构)ArrayList
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (九)c52学习之旅-定时器
  • (六)Hibernate的二级缓存
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (四)模仿学习-完成后台管理页面查询
  • (转)关于多人操作数据的处理策略
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则