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

吃瓜教程学习笔记-CH5神经网络

  • 5.1-神经元模型
    • 1-神经元
    • 2-激活函数
  • 5.2-感知机与多层网络
    • 1-感知机
    • 2-多层网络-全连接网络
  • 5.3-BP神经网络
  • 5.4-全局最小与局部最小
  • 5.5-深度学习
  • 5.6-参考

5.1-神经元模型

神经网络(neural networks):是机器学习中一门多学科交叉点领域,神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

1-神经元

神经元(neuron):是神经网络中最基本的成分,即上述定义中的" 简单单元“。如下图所示:
生物结构上,每个神经元通常都有多个树突,一个轴突和一个细胞体,树突短而多分支,轴突长而只有一个。
功能上,树突用于传入其它神经元传递的神经冲动,而轴突用于将神经冲动传出到其它神经元。
物神经网络中,每个神经元与其他神经元相连,当它"兴奋"时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个"阔值" (threshold) ,那么它就会被激活,即"兴奋"起来,向其他神经元发送化学物质.
机器学习-西瓜书CH5-神经网络_第1张图片
M-P 神经元模型正是对这一结构进行了抽象的数学表示。
在这个模型中,树突对应于输入部分,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递.
细胞体分为两部分,前一部分计算总输入值(即输入信号的加权和,或者说累积电平),后一部分先计算总输入值与该神经元阈值的差值,然后通过激活函数(activation function)的处理,产生输出从轴突传送给其它神经元。如下图为M-P神经元模型:
机器学习-西瓜书CH5-神经网络_第2张图片

2-激活函数

神经元模型理想中的激活函数是如下图a所示的阶跃函数:即将神经元输入值与阈值的差值映射为输出值1或0,若差值大于零输出1,对应兴奋;若差值小于零则输出0,对应抑制。
缺点:阶跃函数不连续,不光滑。故在M-P神经元模型中,也采用Sigmoid函数来近似。

Sigmoid函数如下图b所示,将较大范围内变化的输入值挤压到 (0,1) 输出值范围内,所以也称为挤压函数(squashing function)。
缺点:倾向于梯度消失;函数输出不是以 0 为中心的,这会降低权重更新的效率;Sigmoid 函数执行指数运算,计算机运行得较慢。
机器学习-西瓜书CH5-神经网络_第3张图片
Tanh / 双曲正切激活函数:tanh 激活函数的图像也是 S 形,其公式如下:
f ( x ) = t a n h ( x ) = 2 / ( 1 + e − 2 x ) − 1 f(x)=tanh(x)=2/(1+e^{-2x})-1 f(x)=tanh(x)=2/(1+e2x)1
如图所示:
机器学习-西瓜书CH5-神经网络_第4张图片
首先,当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。tanh与sigmoid的区别在于输出间隔,tanh 的输出间隔为 1,并且整个函数以 0 为中心,比 sigmoid 函数更好;在 tanh 图中,负输入将被强映射为负,而零输入被映射为接近零。

ReLU激活函数:
f ( x ) = { m a x ( 0 , x ) , x > = 0 x , x < 0 f(x)=\left\{\begin{array}{c} max(0,x),x>=0\\ x ,x<0 \\ \end{array}\right. f(x)={max(0,x),x>=0x,x<0
ReLU 激活函数图像:机器学习-西瓜书CH5-神经网络_第5张图片
ReLU 函数是深度学习中较为流行的一种激活函数,相比于 sigmoid 函数和 tanh 函数,它具有如下优点
当输入为正时,不存在梯度饱和问题。
计算速度快得多。ReLU 函数中只存在线性关系,因此它的计算速度比 sigmoid 和 tanh 更快。
缺点
Dead ReLU 问题。当输入为负时,ReLU 完全失效,在正向传播过程中,这不是问题。有些区域很敏感,有些则不敏感。但是在反向传播过程中,如果输入负数,则梯度将完全为零,sigmoid 函数和 tanh 函数也具有相同的问题;
我们发现 ReLU 函数的输出为 0 或正数,这意味着 ReLU 函数不是以 0 为中心的函数。

此外,还有很多激活函数,具体可以看参考。
将多个神经元按一定的层次结构连接起来,就得到了神经网络

5.2-感知机与多层网络

1-感知机

感知机(Perceptron):由两层神经元组成,输入层接收外界输入信号后传递给输出层,而没有激活函数。 输出层是M-P 神经元,只有输出层神经元进行激活函数处理。
感知机与线性模型:感知机与逻辑回归的思想基本一致,都是通过对属性加权w与常数b求和,再使用 s i g m o i d sigmoid sigmoid函数将这个输出值压缩到0-1之间,从而解决分类问题。不同的是感知机的输出层应该有多个神经元,从而可以实现多分类问题,同时两个模型所用的参数估计方法十分不同。
感知机学习规则非常简单,对训练样例 ( x , y ) (x,y) (x,y) ,若当前感知机的输出为 y ∗ y* y , 则感知机会对权重进行调整:
机器学习-西瓜书CH5-神经网络_第6张图片
其中 η∈(0,1)称为学习率,可以看出感知机是通过逐个样本输入来更新权重,首先设定好初始权重(一般为随机),逐个地输入样本数据,若输出值与真实标记相同则继续输入下一个样本,若不一致则更新权重,然后再重新逐个检验,直到每个样本数据的输出值都与真实标记相同。
由于感知机模型只有一层功能神经元,因此其功能十分有限,只能处理线性可分的问题,要解决非线性可分问题,需考虑多层功能神经元.
机器学习-西瓜书CH5-神经网络_第7张图片

2-多层网络-全连接网络

隐含层(hidden layer):输出层与输入居之间的一层神经元,隐含层和输出层神经元都是拥有激活函数的功能神经元.
每层神经元与下
多层前馈神经网络:多层神经元全互连,神经元之间不存在同层连接, 也不存在跨层连接。
机器学习-西瓜书CH5-神经网络_第8张图片
基于全连接神经网络的手写数字识别实战–后续填坑!

5.3-BP神经网络

BP神经网络算法:即误差逆传播算法(error BackPropagation),使用误差反向传递的原理,下图为一个单隐层神经网络。
机器学习-西瓜书CH5-神经网络_第9张图片
BP神经网络算法使用梯度下降法,BP算法首先将误差反向传播给隐层神经元,调节隐层到输出层的连接权重与输出层神经元的阈值;接着根据隐含层神经元的均方误差,来调节输入层到隐含层的连接权值与隐含层神经元的阈值。
BP 算法的目标是要最小化训练集D 上的累积误差
标准BP 算法:每次仅针对一个训练样例更新连接权和阔值
特点:每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能现"抵消"现象。
累积误差逆传播:推导出基于累积误差最小化的更新规则。
特点:读取整个训练集D 一遍后才对参数进行更新,其参数更新的频率低得多。

缓解BP过拟合的办法
早停" (early stopping):将数据分为训练集与测试集,训练集用于学习,测试集用于评估性能,若在训练过程中,训练集的累积误差降低,而测试集的累积误差升高,则停止训练

引入正则化(regularization):基本思想是在累积误差函数中增加一个用于描述网络复杂度的部分.一般有L1正则化和L2正则化,L1正则化和L2正则化可以看做是损失函数的惩罚项
对于线性回归模型,使用L1正则化的模型叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)

5.4-全局最小与局部最小

模型学习的过程实质上就是一个寻找最优参数的过程,即误差最小时的参数,例如BP算法通过梯度下降来寻找使误差最小的权值w与阈值b。
机器学习-西瓜书CH5-神经网络_第10张图片
局部极小(local minimum):邻域点的误差函数值均不小于该点的误差函数值.

全局最小(global minimum):所有其他点的误差函数值均不小于该点的误差函数值.

常采用一些方法跳出局部最小,去寻找全局最小。如多组初始值神经网络,模拟退火,随机梯度下降,遗传算法等。

5.5-深度学习

深度学习模型就是很深层的神经网络,参数越多的模型复杂度越高、容量越大,就能完成更复杂的学习任务。
常用的增大模型复杂度的方法
1,增加隐层的数目。–加深
2,增加隐层神经元的数目。–变宽

前者更有效一些,因为它不仅增加了功能神经元的数量,还增加了激活函数嵌套的层数。但是对于多隐层神经网络,经典算法如标准BP算法往往会在误差逆传播时发散(diverge),无法收敛达到稳定状态。
如何有效训练神经网络
1,无监督逐层训练,预训练+微调
2,权共享

总而言之,深度学习可以理解为一种特征学习(feature learning)

后续会更新CNN,RNN的基本内容,等填坑!

5.6-参考

1,激活函数 | 深度学习领域最常用的10个激活函数,详解数学原理及优缺点
2,深入理解L1,L2正则化

你可能感兴趣的:(DataWhale-吃瓜教程,人工智能,python,深度学习,神经网络)