西瓜书&南瓜书学习笔记4

                                                                第5章 神经网络

5.1神经元模型

M-P神经元(一个用于模拟生物神经元的数学模型):接收n个输入值(通常来自其他神经元,x∈R^n),并对各输入值乘上权重并求和,然后将所求和与自身阈值θ作比较(所求和减去阈值θ),然后将所得结果带入激活函数(模拟“抑制”和“激活”)得到输出(通常传给下一个神经元)。

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

sgn函数:                                                                            sigmoid函数:

                                                  

多个神经元:神经网络

5.2感知机与多层网络

一、感知机(用于分类问题):

(1)模型:

        从数学上看,感知机模型是以送给你为激活函数的神经元,

其中,x∈R^n是样本的n维特征向量,为感知机模型的输入,θ为感知机模型的阈值,w∈R^n为各个特征的权重。

        从几何上看,给定一个线性可分(例如二分类问题,可以通过一个超平面把样本所在的特征空间划分为两个部分,各部分仅有正/负样本)的数据集T,感知机的学习目标是求得能对T中正负样本完全划分正确的超平面,即为超平面方程。

n维空间的超平面

1、超平面方程不唯一

2、法向量w垂直于超平面

3、法向量w和位移项b唯一确定一个超平面

4、法向量w所指向的那一半空间为正空间,另一半为负空间

(一维空间上超平面为一个点,二维空间上超平面为一条线,三维空间上超平面为一个平面)

(2)策略:随机初始化w、b,将全体训练样本代入感知机模型找出误分类样本,若此时误分类样本的集合为M⊆T,对任意一个误分类样本(x,y)∈M,若≥0时,模型输出值为,样本真实的标记为y=0; 若≤0,模型输出值为,样本真实的标记为y=1,则恒有,因此可定义损失函数为:

        此时,求得使L为最小值的w、b即可得模型。此损失函数非负,若无误分类点,损失函数为0.且误分类点越少,误分类点离平面越近,损失函数越小。

        若将阈值看作一个固定输入为“-1”的哑结点,则,上述损失函数可简化为

wT=(w1,w2,...,wn,θ),xT=(x1,x2,...,xn,-1))

(3)算法(随机梯度下降法):

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

感知机的学习算法采用随机梯度下降法,即不是使M中所有误分类点的梯度下降,而是随机选取一个误分类点使其梯度下降,则w的更新公式为:

       

(w2=w1+△w1,w3=w2+△w2……;学习率η∈(0,1))

二、神经网络

        单个神经元能力有限,对于感知机只能分类线性可分的数据集,二多个神经元构成的神经网络能够分类线性不可分的数据集。

通用近似定理:只需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连线函数。因此,神经网络既能做回归,也能做分类,而且不需要复杂的特征工程。(神经网络可以自动对样本特征进行处理,可以自行增添特征(有其他特征组合而成)或删去冗余特征)

神经网络存在的问题:

(1)对于一个具体问题,神经网络的深度和宽度不确定

(2)对于一个具体问题,神经网络的结构不能确定

(3)对于一个具体问题,神经网络的输出结果难以解释(无法通过神经网络判断是哪一个特征对输出值的影响较大)

多层前馈网络:同层间的神经元相互不连接,每层中所有神经元都要与下一层中的每个神经元连接。(隐层阈值γh,输出层阈值θj),例如

输入层:输入层仅接收外界输入,不进行函数处理

隐层:该层神经网络可看作一个特征加工函数(NN(x)),其输入值为输入层所接收的值或上一隐层所输出的值(双隐层前馈网络),对该值进行加工处理后,将其作为新的特征x*输出给下一层神经元(输出层或下一隐层),即:

输出层:

(1)分类:将上一层神经元所传递的x*经函数处理后,转化为{0,1}输出的神经元,例激活函数为sigmoid函数的神经元

                                     

        对于该类函数,损失函数常用交叉熵得出;算法常用BP算法

(2)单输出回归:将上一层神经元所传递的x*经函数处理后转化为一个常量输出的神经元    (),例如:没有激活函数的神经元(线性回归)

                                                 

        对于该类函数损失函数可以采用均方误差,但由于神经网络复杂,该函数通常不是凸函数,因此算法应采用BP算法

(3)多输出回归: 将上一层神经元所传递的x*经函数处理后转化为多个个常量输出的神经元  

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

        给定训练集D={(x1,y1),(x2,y2),...,(xm,ym)},xi为d维特征向量,yi为l维向量,即输入的样例有d个属性描述,l个输出实值。给出一个有d个输入神经元、l个输出神经元,q个隐层神经元的多层前馈神经网络,其中输出层第j个神经元的阈值为θi,隐层第h个神经元的阈值为γh,输入层第i个神经元与隐层第h个神经元之间的连接权为vih(第i个输入特征在隐层第h个神经元中的权重为vih),隐层第h个神经元与输出层第j个神经元的连接权为whj(隐层第h个神经元的输出值在输出层第j个神经元的权重为whj),隐层第h个神经元接受到的输入为,输出层第j个神经元接收到的输入为,bh为隐层第h个神经元的输出。

     

        假设隐层和输出层神经元都使用sigmoid函数。对样例(xk,yk),假定神经网络的输出为,即,则网络在该样例上的均方误差为 

                                           

        该神经网络中共有d*q+q*l+q+l个参数需确定:输入层到隐层的d*q个权重值,q个隐层的阈值;隐层到输出层q*l个权重值,l个输出层阈值。

误差逆传播算法(BP算法):基于随机梯度下降的参数更新算法,任意参数的更新估计式为 

                                    

        以隐层到输出层的连接层whj为例:

                                    

(学习率η∈(0,1),根据经验自行选取)

        上式仅需推导出损失函数Ek关于参数w的一节偏导数(梯度)即可(通过链式求导计算)

(由于NN(x)通常为复杂的非凸函数,随机梯度下降并不能保证一定走到全局最小值点,通常走到局部极小值点)

        由于whj是先影响到输出层神经元的输入值βj,βj再影响到其输出值再影响到Ek,因此,根据链式求导法则有

                                             

        由βj定义,有

                                                              

        simoid函数具有如下性质

                                 

        又由

                                            

        可得到

        对于输入层第i个神经元与隐层第h个神经元间的连接权,其更新公式为:

                                                    

                                                            

                            

对于其他参数,类似可得:(隐层和输出层的学习率未必相等)

BP算法工作流程:

        先将样例特征输入至输入层,输入层再传至隐层,隐层加工处理后输出至输出层,输出层再产生其输出结果;

        计算输出层的误差(4-5行),再将误差逆向传至隐层神经元(6行),最后根据隐层神经元误差对连接权和阈值进行调整(7行)

        上述迭代过程循环进行,直至达到停止条件,例如训练误差达到一个很小值。

        BP算法目标是要最小化训练集D上的累计误差

                                                                     

以上内容来自第5章-神经网络_哔哩哔哩_bilibili和周志华老师的《机器学习》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值