当前位置:网站首页>《机器学习》(周志华) 第5章 神经网络 学习心得 笔记
《机器学习》(周志华) 第5章 神经网络 学习心得 笔记
2022-07-24 05:20:00 【ML--小小白】
第5章 神经网络 学习心得
神经元模型
神经元(neuron,亦称unit)其实就是一个小型的分类器,其将从其他神经元输入的信息带权重连接进入,然后比较其与阈值的相对大小,并将差异通过激活函数(activation function),决定其是否被”激活“/”兴奋“。这种神经元的抽象模型1943年就被提出了,被两位提出者名字首字母命名为”M-P神经元模型“。
最常使用的激活函数为Sigmoid(亦称squashing)函数。
感知机与多层网络
感知机(perceptron)
可以认为是一个很简单的线性分类器,找到一个线性可分数据中的分离超平面。从神经网络的角度,就是输入层直接到输出层,没有hidden layer,只有输出层含有神经元功能,因此也被称为阈值逻辑单元(threshold logic unit)。从简洁角度,可以把阈值项并入权重矩阵以及相应地输入特征增加一维(1/-1)。
感知机学习过程中,利用错误分类样本进行权重的更新,公式为:
w i ← w i + Δ w i Δ w i = η ( y − y ^ ) x i \begin{array}{c}w_{i} \leftarrow w_{i}+\Delta w_{i} \\ \Delta w_{i}=\eta(y-\hat{y}) x_{i}\end{array} wi←wi+ΔwiΔwi=η(y−y^)xi
其中,可充分利用类标记为0或1的特点,将误分类点本来激活函数内宗量值正负性做个修正,从而将其作为“损失”,从而可以定义损失函数,求梯度方向的反方向为更新方向,当然这个可以发现,并不保证损失函数是严格的凸函数,因此其具有初值敏感的特点,最终的分离超平面并不会一致收敛。
Anyway,最为形象不公式化的直觉可以这样想:对权重的改变量,要使其尽量与输入的x向量内积后接近真实的y,所以就将真实的y相对于 y ^ \hat{y} y^的差距补到宗量上去即可,同时内积的各个分量是x自身,因此一定为正,保证补的方向正确,但是这里并不精确计算到底该补多少,因此加个学习率,试探性的,补一补再看看是否已经正确分类了,直至把所有样本分开为止。
多层神经网络(multi-layer neural network)
只要包涵一个隐藏层,也就是至少两层有功能的M-P神经元,就可称为多层神经网络。
多层前馈神经网络(multi-layer feedforward neural network)
一般常见的神经网络的形式(至少目前小白阶段很常见),每层神经元与下一层神经元全互联(所以至少有两层神经元层),神经元同层不存在连接,不存在跨层连接,这种神经网络称为多层前馈神经网络。
误差逆传播算法(error BackPropagation,简称BP算法)
即通常所说的反向传播,利用梯度实现损失的最小化方法,在求梯度时,按照神经网络的反方向从损失函数出发,逐级向前求导数,因为逐级求导过程中,只涉及较为简单的运算,因此可以很快计算出,网络中某个位置的梯度实际上按照链式法则,就是该处神经元输出值对于输入或参数(weights)的梯度,再乘上后面神经元对于该输出的梯度,可认为是本地梯度(local gradient)与前级梯度的乘积。
标准的BP算法,每次利用一个样本,进行参数更新,类比随机梯度下降(SGD),对应的有梯度下降,标准BP对应的是累积BP算法,即累积误差反向传播算法。就是将整个训练集读取一遍以后(称为一个epoch或一个round),得到累积误差(损失的平均),再进行参数更新。
BP算法根据计算出的梯度,再结合学习率,进行参数(weights)更新,
Δ w h j = − η ∂ E k ∂ w h j \Delta w_{h j}=-\eta \frac{\partial E_{k}}{\partial w_{h j}} Δwhj=−η∂whj∂Ek
直到达到收敛条件。由于前馈神经网络等神经网络其足够强大,很容易出现过拟合(BP只是一种实现收敛的算法,过拟合还是因为神经网络本身的复杂度可以足够高),实际中通常的一种策略是将数据集分为训练集和验证集,当验证集的错误率开始增加,表示泛化能力开始下降,就停止参数的更新(称为“早停”,early stopping),选择验证集和训练集错误率都较小的参数模型;另一种则是加入正则化项,比如:
E = λ 1 m ∑ k = 1 m E k + ( 1 − λ ) ∑ i w i 2 E=\lambda \frac{1}{m} \sum_{k=1}^{m} E_{k}+(1-\lambda) \sum_{i} w_{i}^{2} E=λm1k=1∑mEk+(1−λ)i∑wi2
其中 E k E_{k} Ek表示第k类的误差。
全局最小(global minimum)与局部最小(local minimum)
如其名,全局最小就是整个损失函数全函数范围的最小值点,局部就是其与邻近点相比较,是最小值,没啥可说的。关键就是由于神经网络的复杂性,损失函数关于参数并不是严格凸函数,因此收敛到局部最小也很正常,此时梯度为0,停止更新。因此,关键问题是如何克服进入局部最小,通常有三种办法。第一种是使用不同的参数初值,因为这种问题一般都是初值敏感的,所以更换不同初值可以收敛到不同的局部最小,从中选取最小的作为全局最小;第二种是使用模拟退火(simulated annealing)算法,每次都有一定概率接受比当前更差的更新结果,从而可以跳出局部最小,同时概率要随着时间衰减,从而避免振荡不收敛;第三种是使用随机梯度下降,因为单个样本的贡献有时具有一定的随机性,在陷入局部最小时也可能由于一些个别样本的贡献使得更新step不为0。
其他神经网络
书中介绍了其他一些很著名的神经网络,但是都不详细,之后要找地方好好学习一下各个基础的网络,这里只能先观其大略了。
RBF网络(Radial Basis Funtion)
径向基函数网络,其中径向基函数作为神经元的激活函数,径向基函数衡量的是两个向量的“距离”,最常用的RBF是高斯径向基函数:
ρ ( x , c i ) = e − β i ∥ x − c i ∥ 2 \rho\left(\boldsymbol{x}, \boldsymbol{c}_{i}\right)=e^{-\beta_{i}\left\|\boldsymbol{x}-\boldsymbol{c}_{i}\right\|^{2}} ρ(x,ci)=e−βi∥x−ci∥2
RBF网络是一个种单隐层网络,输出层没有激活函数,隐层没有线性部分,直接就是激活函数。理论证明,只要有足够多的隐层神经元,就可以任意精度逼近任意连续函数。
RBF训练分两步,第一步是去定径向基函数的中心,也就是被比较的向量,也可以说确定神经元的中心,通常采用随机采样、聚类方法获得;第二步是利用BP算法确定输出层线性部分和隐层高斯RBF(决定分布胖瘦的参数)部分的参数。
ART网络(Adaptive Resonance Theory)
自适应谐振理论网络,是一种竞争型学习策略的神经网络,所谓竞争型学习(competitive learning)策略,就是在神经元层中,各个神经元相互竞争,最终只有一个胜出,赢者通吃(winner-take-all),被激活,其他神经元被抑制的策略。
ART网络由比较层、识别层、识别阈值和重置模块构成,输入的样本由比较层接受,传递给识别层,识别层神经元数目可在训练时动态增加,识别层首先采用竞争策略选出与输入向量最相似的神经元权值向量,然后将其与识别阈值比较,如果大于表明足够相似,样本归入该权值向量代表的类别,且更新该神经元权值,使得其遇到与该样本类似的向量时,有更大的“相似度”。当相似度小于识别阈值,那么就重置增加一个以该样本为权值向量的神经元。显然,识别阈值越大,分类越精细,反之越粗略,同时这种网络的有点就是可以进行增量学习(incremental learning),即可以根据新加入的样本进行学习,而无需重新训练整个数据集,且之前的学习成果不会被抹除。或者也可以说,可以进行在线学习(online learning),即每获得一个样本更新一次模型,所以在线学习是增量学习的特例,增量学习是在线学习的批量模式(batch-mode)。
这种学习过程中也学习网络结构(增加神经元)的方式,也称为结构自适应网络或构造性(constructive)神经网络。
SOM网络(Self-Organizing Map,自组织映射)

也称为自组织特征映射(Self-Organizing Feature Map)或Knhonen网络。也是一种竞争型无监督学习网络,它将高维数据映射到低维空间,通常为2D,并尽量保持高维空间拓扑结构,即将高维空间中距离近的点,映射到低维空间距离近的神经元上。SOM网络的输出层为排列为二维矩阵的神经元阵列,SOM输入样本传递到这层输出层后,权值向量与传递进来的向量最近的将会胜出,称为最佳匹配单元/神经元(best matching unit),并将其权值更新,从而遇到类似输入时更有优势地胜出。直至收敛。
级联相关网络(Cascade-Correlation)

是一种结构自适应网络,不止学习参数,还学习神经网络的结构。级联是指建立层次连接结构,训练初始只有输入和输出层,是最简单的拓扑结构网络,训练中逐渐加入神经元,逐步建立起层次结构,新神经元加入后,其线性部分的权值是固定的。然后是相关,调整经过新神经元后到达输出层后,输出层线性部分的参数,使得最终的输出与网络的误差更相关。
Elman网络
递归神经网络(recurrent neural networks,or recursive neural networks),允许网络中出现环形拓扑结构,将神经元输出作为反馈,反馈回已经经历的神经元中。训练时,通过推广的BP算法进行。
Boltzman机
本质是一种递归神经网络,为网络定义一个能量,能量最小时达到理想状态,因此也被称为一种基于能量的模型(energy-based model)。这个就联想一下热力学,玻尔兹曼做出了很多贡献,能量越低越稳定越偏好,也是物理学很基本的概念。
网络分为两层,显层用于表示数据的输入与输出,隐层可以理解为数据的内在表达,神经元只有0或1两种状态,其中1表示激活,0表示抑制, s i s_{i} si表示第i个神经元的状态,$
\theta_{i}$表示其阈值。能量包括自能和互能(只考虑连接的最近邻):
E ( s ) = − ∑ i = 1 n − 1 ∑ j = i + 1 n w i j s i s j − ∑ i = 1 n θ i s i E(s)=-\sum_{i=1}^{n-1} \sum_{j=i+1}^{n} w_{i j} s_{i} s_{j}-\sum_{i=1}^{n} \theta_{i} s_{i} E(s)=−i=1∑n−1j=i+1∑nwijsisj−i=1∑nθisi
网络以不依赖输入值顺序的方式进行更新,最终达到Boltzmann分布,此时各个状态组成的状态向量的概率仅有能量决定:
P ( s ) = e − E ( s ) ∑ t e − E ( t ) P(s)=\frac{e^{-E(s)}}{\sum_{t} e^{-E(t)}} P(s)=∑te−E(t)e−E(s)
训练的逻辑就是使样本对应的状态向量能量更低,出现概率更大,标准Boltzman是全连接图,复杂度很高,通常使用受限Boltzmann机(Rsetricted
Boltzmann Machine, RBM),仅保留显层与隐层的连接。
玻尔兹曼机使用对比散度(Contrastive Divergence,简称CD)进行训练,令 v \boldsymbol{v} v和 h \boldsymbol{h} h分别为显层与隐层的状态向量,则层内的神经元概率分布可写为:
P ( v ∣ h ) = ∏ i = 1 d P ( v i ∣ h ) P ( h ∣ v ) = ∏ j = 1 q P ( h j ∣ v ) \begin{array}{l}P(\boldsymbol{v} \mid \boldsymbol{h})=\prod_{i=1}^{d} P\left(v_{i} \mid \boldsymbol{h}\right) \\ P(\boldsymbol{h} \mid \boldsymbol{v})=\prod_{j=1}^{q} P\left(h_{j} \mid \boldsymbol{v}\right)\end{array} P(v∣h)=∏i=1dP(vi∣h)P(h∣v)=∏j=1qP(hj∣v)
CD算法首先由上面的概率分布和输入样本 v \boldsymbol{v} v得到 h \boldsymbol{h} h然后,再由 h \boldsymbol{h} h生成 v ′ \boldsymbol{v^{\prime}} v′,接着得到 h ′ \boldsymbol{h^{\prime}} h′,则更新规则,同感知机部分的思想为:
Δ w = − η ( v ′ h ′ ⊤ − v h ⊤ ) \Delta w=-\eta\left(\boldsymbol{v}^{\prime} \boldsymbol{h}^{\prime \top}-\boldsymbol{v} \boldsymbol{h}^{\top}\right) Δw=−η(v′h′⊤−vh⊤)
与书上差个负号:
Δ w = η ( v h ⊤ − v ′ h ′ ⊤ ) \Delta w=\eta\left(\boldsymbol{v} \boldsymbol{h}^{\top}-\boldsymbol{v}^{\prime} \boldsymbol{h}^{\prime \top}\right) Δw=η(vh⊤−v′h′⊤)
深度学习
随着计算能力的提高,复杂网络的训练效率得以提高,大数据的到来,使得有大量数据可以用来训练,防止复杂模型的过拟合。以此为基础,深度学习(deep learning)开始越来越重要。典型的深度学习模型是很深的神经网络。随着层数的增加,训练往往难以用经典的BP算法,因为梯度随着传递可能“爆炸”或者“衰减”。
无监督逐层训练(unsupervised layer-wise training)是训练的有效手段,将每层单独训练,固定其他(称为预训练pre-training),最终微调(fine-tuning),从而得到最优的整个模型。这种方法用在,比如深度信念网络(deep belief network, DBN),每层是一个受限玻尔兹曼机(RBM),先一层一层地训练,最后再用BP训练整个网络。
节省训练开销的有效策略有一种是“权共享”(weight sharing),让一组神经元使用相同的连接权,比如CNN每一层都是如此,无论是卷积层还是pooling(汇合)层。
深度学习的理解就是由低层不适合分类的表示,一步步提取特征,变为高层中适合分类的表示,从而完成分类,因此可以认为是一种特征学习(feature learning)或者表示学习(representation learning),这替代了之前需要人为设计提取的特征工程(feature engineering)。
边栏推荐
- Use streaming media to transfer RSTP to the Web terminal for playback (II) [review]
- 黑龙江省SVG格式地图的创建及生成
- flink checkpoint配置详解
- The female colleague of the company asked me to go to her residence to repair the computer at 11 o'clock at night. It turned out that disk C was popular. Look at my move to fix the female colleague's
- Flink sql-client.sh使用
- PoS机制随机性解读,波卡的随机性原理如何运作?
- Web3基金会「Grant计划」赋能开发者,盘点四大成功项目
- 公众号开发自定义菜单和服务器配置同时启用
- likeshop单商户SAAS商城系统搭建,代码开源无加密。
- Penetration testing knowledge - industry terminology
猜你喜欢

对接CRM系统和效果类广告,助力企业精准营销助力企业精准营销

国内外知名源码商城系统盘点

Restore UI design draft

Creation and generation of SVG format map in Heilongjiang Province

Imitate Baidu API of Baidu map page of a website

【activiti】activiti入门
![[Baidu map API] the version of the map JS API you are using is too low and no longer maintained. In order to ensure the normal use of the basic functions of the map, please upgrade to the latest versi](/img/d5/b0e4cc4155673d6042a0e39de4eddf.png)
[Baidu map API] the version of the map JS API you are using is too low and no longer maintained. In order to ensure the normal use of the basic functions of the map, please upgrade to the latest versi

【mycat】mycat介绍

Zotero快速上手指南

Mysqldump export Chinese garbled code
随机推荐
The bottom of decentralization is consensus -- Interpretation of Polkadot mixed consensus mechanism
达梦数据库_用户口令策略
自己的一点点小想法——使用MATLAB实现类似环形缓冲器的读取
ntp错误: no server suitable for synchronization found
haclabs: no_ Name (hl.ova) target penetration vulnhub
达梦数据库_常用初始化参数
MySQL 批量插入demo
Flink Watermark机制
公司女同事深夜11点让我去她住处修电脑,原来是C盘爆红,看我一招搞定女同事....的电脑
盘点波卡生态潜力项目 | 跨链特性促进多赛道繁荣
达梦数据库_逻辑备份
波卡创始人 Gavin Wood:波卡治理 v2 会有哪些变化?
【vsphere高可用】主机和虚拟机故障监测工作原理
SqlServer 完全删除
PoS机制随机性解读,波卡的随机性原理如何运作?
【mycat】mycat分库分表
程序员常说的API是什么意思?API类型有什么呢?
MySQL batch insert demo
达梦数据库_在使用过程中的需要注意的小事项
数据集成的两种架构:ELT和ETL