西瓜书/南瓜书第5章学习笔记

1.M-P神经元

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

y=f(\sum_{i=1}^{n}w_{i}x_{i}-\theta)

 向量化得到

y=f(w^{T}x+b) ~~~~w\in R^{n},x\in R^{n}

 单个M-P神经元:感知机(sgn作激活函数)、对数几率回归(sigmoid作激活函数)

多个M-P神经元:神经网络(如多层前馈网络)

2.感知机

模型:

数学角度:

激活函数为sgn(阶跃函数)的神经元

y=sgn(w^{T}x-\theta)=\{_{0,~w^{T}x-\theta~<~ 0}^{1,~w^{T}x-\theta~\geqslant~ 0}

 其中,x \in \mathbb{R}^{n}为样本的特征向量,是感知机模型的输入,w\theta是感知机模型的参数,w \in \mathbb{R}^{n}为权重,\theta为阈值。

几何角度:

给定一个线性可分的数据集T,感知机的学习目标是求得能对数据集T中的正负样本完全正确划分的超平面,其中w^{T}x-\theta即为超平面方程。

n维空间的超平面(w^{T}x+b=0,其中w,x\in\mathbb{R}^{n}):

(1)超平面方程不唯一
(2)法向量w垂直于超平面
(3)法向量w和位移项b确定一个唯一超平面
(4)法向量w指向的那一半空间为正空间,另一半为负空间

从几何角度来看,数学角度提出的模型其实就是在求方程为w^{T}x-\theta=0的超平面

学习策略:

思路:

随机初始化wb,将全体训练样本带入模型找出误分类样本,假设此时误分类样本集合为M\subseteq T,对任意一个误分类样本(x,y)\in M来说,当w^{T}x-\theta \geqslant 0时,模型输出值为\widehat{y}=0,样本真实标记为y=1.综合两种情形可知,以下公式成立:

(\widehat{y}-y)(w^{T}x-\theta) \geqslant 0

 所以,给定数据集T,其损失函数(惩罚函数)可以定义为:

L(w,\theta) =\sum_{x\in M}(\widehat{y}-y)(w^{T}x-\theta)

 显然,此损失函数非负。那么,没有误分点时损失函数值为0。从几何角度上看,误分点越少,就表明误分类点离超平面越近,从数学角度上讲,损失函数就越小。

具体操作:

给定数据集

T=\left \{ (x_{1},y_{1}), (x_{2},y_{2}), ...,(x_{N},y_{N}) \right\}

其中x_{i}\in\mathbb{R}^{n},y_{i}\in \left\{ 0,1\right\},求参数 w\theta。使其为极小化损失函数的解:

\underset{w,\theta} \min L(w,\theta) =\underset{w,\theta} \min \sum_{x\in M}(\widehat{y}-y)(w^{T}x_{i}-\theta)

 其中M\subseteq T为误分类样本集合。若将阈值\theta看作一个固定输入为-1的“哑节点”,即

-\theta=-1\cdot w_{n+1}=x_{n+1}\cdot w_{n+1}

根据该式,可将要求解的极小化问题进一步简化为

 \underset{w,\theta} \min L(w,\theta) =\underset{w,\theta} \min \sum_{x\in M}(\widehat{y}-y)w^{T}x_{i}

此处w^{T}x_{i}与上文中不同,实际应为\widehat w^{T} \widehat x_{i},为符合西瓜书中公式写作w^{T}x_{i}

算法:

当误分类样本集合M固定时,那么可以求得损失函数L(w)的梯度为

\triangledown _{w}L(w)=\sum_{x_{i}\in M}(\widehat y_{i}-y_{i})x_{i}

感知机的学习算法采用随机梯度下降法,即极小化过程中不一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。所以权重w的更新公式为

w\leftarrow w+\bigtriangleup w

\bigtriangleup w=-\eta (\widehat y_{i}-y_{i})x_{i}=\eta (y_{i}-\widehat y_{i})x_{i}

相应的, w中的某个分量w_{i}的更新公式为

公式5.2

 最终解得的w通常不唯一。

3.神经网络

概述:

       由于单个神经元分类能力有限,如感知机只能分类线性可分的数据集,但多个神经元构成的神经网络能够分类线性不可分的数据集(异或问题),且有理论证明(通用近似定理):只需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数(相当于能够自己完成特征工程)。因此神经网络既能做回归,也能做分类,且无需复杂的特征工程。

亟待解决的问题:具体场景下的神经网络深度、宽度、结构设计、输出结果的解释。

多层前馈网络:

每层神经元与下一层神经元全互连,神经元之间不存在同层链接,也不存在跨层连接(隐层阈值\gamma _{h},输出层阈值\theta_{j}

原理:

将神经网络(记为NN)看作一个特征加工函数

x\in \mathbb{R}^{d}\rightarrow NN(x)\rightarrow y=x^{*}\in \mathbb{R}^{l}

 做重加工,组合,d维转l维。带入线性回归做回归,带入对数几率回归做分类。

(单输出)回归:后面接一个\mathbb{R}^{l}\rightarrow \mathbb{R}的神经元。如:没有激活函数的神经元

y=w^{T}x^{*}+b

分类:后面接一个\mathbb{R}^{l}\rightarrow \left [ 0,1 \right ]的神经元。例如:激活函数为sigmoid函数的神经元

y=\frac{1}{1+e^{-(w^{T}x^{*}+b)}}

 在模型训练过程中,神经网络(NN)自动学习提取有用的特征,因此,机器学习向“全自动数据分析”又前进了一步。

假设多层前馈网络中的激活函数全为sigmoid函数,且当前要完成的任务为一个(多输出)回归任务,因此损失函数可以采用均方误差(分类任务则用交叉熵)。对于某个训练样本(x_{k},y_{k}),其中y_{k}=\left(y_{1}^{k},y_{2}^{k},...,y_{l}^{k} \right ),假定其多层前馈神经网络的输出为\widehat y_{k}=\left(\widehat y_{1}^{k},\widehat y_{2}^{k},...,\widehat y_{l}^{k} \right ),则该单个样本的均方误差(损失)为

E_{k}=\frac{1}{2}\sum_{j=1}^{l}(\widehat y_{j}^{k}-y_{j}^{k})^{2}

算法:

误差逆传播算法(BP算法):

基于随机梯度下降的参数更新算法

w\leftarrow w+\bigtriangleup w

\bigtriangleup w=-\eta \bigtriangledown _{w}E

只需推导出\bigtriangledown _{w}E这个损失函数E关于参数w的一阶偏导数(梯度)即可(链式求导)。

NN(x)由于各层之间互连,往往是极其复杂的非凸函数,不具备像凸函数这样良好的数学性质。随机梯度下降不一定能走到全局最小值点,更多情况下只能走到局部最小值点。

 以输出层第i个神经元与隐层第h个神经元之间的连接权v_{ih}为例推导:


 E_{k}=\frac{1}{2}\sum_{j=1}^{l}(\widehat y_{j}^{k}-y_{j}^{k})^{2}\bigtriangleup v_{ih}=-\eta\frac{\partial E_{k}}{\partial v_{ih}}

\frac{\partial E_{k}}{\partial v_{ih}}=\sum_{j=1}^{l}\frac{\partial E_{k}}{\partial \widehat y_{j}^{k}}\cdot\frac{\partial \widehat y_{j}^{k}}{\partial \beta_{j}}\cdot\frac{\partial \beta_{j}}{\partial b_{h}}\cdot\frac{\partial b_{h}}{\partial \alpha_{h}}\cdot\frac{\partial \alpha_{h}}{\partial v_{ih}}

g_{j}=-\frac{\partial E_{k}}{\partial \widehat y_{j}^{k}}\cdot\frac{\partial \widehat y_{j}^{k}}{\partial \beta_{j}}\\ =-(\widehat y_{j}^{k}-y_{j}^{k})f'(\beta_{j}-\theta_{j})\\ =\widehat y_{j}^{k}(1-\widehat y_{j}^{k})(y_{j}^{k}-\widehat y_{j}^{k})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值