




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
October15,2024PAGE3/35张敏October15,2024PAGE3/35张敏—Python的实现》(吴喜之张敏)从最简单的神经网络说起张敏October15,2024纪元和批次神经网络的训练,通常需要进行迭代,而每次迭代都通过误差梯度等特性来更新原有的参数,以改进拟合.但需要考虑训练模型时要用多少次整个训练集及每一次迭代需要用多少观测值.产生了纪元(epoch)1和批/批次/批处理(batch)的概念.1术语epoch可以翻译成常用词“时代”或“时期”,这里用纪元主要是避免使用常用词做专门术语.October15,20244/35张敏October15,20244/35张敏在通常统计课程中的样本量(samplesize)概念就是数据中全部观测值的数量,而把全部训练集数据用来训练模型在深度学习中则称为一个纪元,这是因为在深度学习中往往需要用整个训练集数据来训练模型多次(训练几次就称几个纪元).由于无法在每个纪元的训练中一次将所有数据传递给计算机,因此,(patchsize)的批次,逐个提供给计算机,并在每一步结束时更新神经网络的权重以使预测接近给定的目标值.22在统计中称为观测值的是一行数据(variable)的观测值组成的向量observation,而称一个数据集为样(sample);(feature),(sample),(instance)、观测(observation)、输入向量(inputvector)或特征向量(featurevector).October15,2024PAGE14/35张敏October15,2024PAGE14/35张敏纪元的数量很大,可能为数百或数千,这使得学习算法可以运行,直到将模型中的误差充分最小化为止.在一些文献中可以看到纪元数目设置为10、100、500、1000和更大的示例.为什么使用多个纪元呢?这是因为我们使用的是有限的数据集,为了优化由迭代积攒的学习效果,仅通过一次或一次更新权重不够,需要将完整的数据集多次传递到同一个神经网络.当所有训练样本都用于创建一个批次时,该学习算法称为批次梯度下降(batchgradientdescent);当批次等于一个样本的大小时,该学习算法称为随机梯度下降(stochasticgradientdescent);当批次大小大于一个样本且小于训练数据集的大小时,该学习算法称为微型批次梯度下降(mini-batchgradientdescent).在小批量梯度下降的情况下,常用的批量大小包括32、64和128个样本.如果数据集没有按批次大小平均划分怎么办?在训练模型时,这种情况可能而且确实经常发生.这仅表示最终批次的样品少于其他批次,或者可以从数据集中删除一些样本或更改批次大小,以使数据集中的样本数量确实等于样本量除以批次大小.批次数目及纪元数目都是整数值,是学习算法的超参数,而不是学习过程发现的内部模型参数.为学习算法指定批处理大小和纪元数是必须的.但如何配置这些参数则没有规则,必须尝试不同的值,以适合具体课题.神经网络回归Example1(sim0.csv)这个数据有一个因变量,三个自变量,样本量为20.我们希望能够找到一个用自变量来描述或预测因变量的模型.图1为该数据的成对散点图.Example1图1:例1数据的成对散点图该数据因变量和自变量(包括常数项)的关系可以用图2来表示,β=(β0,β1,β2,β3)可以看成是回归系数.图2:例1数据因变量和自变量在线性回归中的关系线性最小二乘回归 对于线性模型yi=β0+β1Xi1+β2Xi2+β3Xi3+ϵi, i=1,2,...,n或(等价的矩阵形式)y=Xβ+ϵ最简单的神经网络 类似于关于线性回归的图2,图3描述了最简单的神经网络.图3:例1数据因变量和自变量在神经网络中的关系图3中上面一层被称为输入层(input其中的节点代表了3个输入节点及一个常数项,(因为只有一个因变量),称为输出层(output我们也要估计出相(ww0w1w2w3))来形成线性组合w0∑3 wiXiw0w1X1w2X2w3X3,但是,简单地用这个线性组合来近似因变量,而是通过该线性组合的一个称为激活函数(activationfunction)的函数σ(w0∑3 wiXi)来近似因变量这就是和前面线性回归中简单地用线性组合β0+∑3 βiXi来近似因变量的根本区别.激活函数使得自变量和因变量之间的关系从单纯的线性关系中解放出来,因此神经网络可以解决非常复杂的非线性问题.下面是激活函数的某些常用的选择:1σ(x)=
1+e−x
,σ(x)=tanh(x),σ(x)=max(0,x).张敏October15,202417/35S(sigmoid):1个是logistic函数,2个是双曲正切,3ReLU函数张敏October15,202417/35October15,2024PAGE18/35张敏October15,2024PAGE18/35张敏此外,softmax,它把一个描述记分的1的概率向量,该向量表示潜在结果列表的概率分布.
σ(yi)=
eyi∑jeyj.上述激活函数有很多变种.此外,人们针对不同的目标发明了大量其他类型的激活函数,这里不做过多介绍.由于激活函数改变了值域,因此激活函数用在输出层时(在隐藏层的激活函数不会对输出层的值域有影响),可能需要对因变量数据做变换,比如,S型激活函数时,01之间,这时相应的值也要变换到相应的值域,否则不会得到合理的结果.神经网络是如何学习的 −" − 首先,调试权重有一个标准,也就是要给出一个损失函数,我们的迭代是以减少损失为目标的.这里的损失假定是平方损失(如最小二乘法的损失函数): ˆ y2.此外,对于1,我们取激活函数为σ(x)=1/(1+exp( x)).在迭代之前,需要给出一个初始权重值(可以是随机的).后面从第i步开展的具体步骤为:−" − propagation):W,并根据权重得到对因变量y的一个估计值ˆ及损失∥y−ˆ∥2.
=σ(XW)求梯度:通过偏导数的链原理,我们得到损失函数相对于权重的偏导数为:=.∂∥y−ˆ∥2 ∂∥y−ˆ∥2∂σ(X)XW=.∂W ∂ˆ XW ∂W由于∂∥y−∂ˆ∂σ(XW)
=−2(y−ˆ), (2.1)∂XW∂XW =σ(XW)⊙[1−σ(XW)], (2.2)∂XW∂W =X, (2.3)October15,October15,202423/35张敏⊙得到偏导数为(符号“ ”是矩阵(向量)或同维度数组元素对元素的积,也称为Hadamard积(HadamardProduct))3:⊙∥y−ˆ2 ⊤∇loss=
∂W =−2X
{(y−ˆ)⊙σ(X)⊙[1−σ(XW)]}.3如果A=(aij)及B=(bij)都是m×n矩阵,则这两个矩阵的Hadamard积表示为A⊙B也是m×n矩阵,其元素为相应元素的乘积:A⊙B=(aijbij).October15,2024PAGE24/35张敏October15,2024PAGE24/35张敏(gradientdescent)做反向传播(backpropagation):对权重的修正赋值为:W⇐W−α⊙∇loss. (2.4)1,继续重复上述步骤,直到误差小到预定的范围或者达到一定的迭代次数为止.(2.2(2.4做出解释.(2.2其实就是简单的对σ(x)=1/(1+exp(−x))的导数,即σ′(x)= exp(−x) = exp(−x) [1− exp(−x) ]=σ(x)[1[1+exp(−x)]2 1+exp(−x) 1+exp(−x)为了解释涉及梯度下降法的式(2.4),我们考虑某一维权重(w)和误差损失的关系图(见图5).人们希望改变权重以达到减少误差损失的目的.在图5中间,误差损失达到极小值.∇假定目前的w0的误差在图中左边用“0”标记的圆圈形状的点表示,这时误差变化最大的方向是箭头标明的切线(梯度)方向,该梯度的方向是曲线在相应点的导数(斜率)方向,其值可记为∂Error或者loss.于是权重从原先的值wold改变到新的值wnew:∇wnew=wold−α⊙∇loss, (2.5)这里α是个调节步长的正常数.那么,为什么式中是减号呢?∇从图5中可以直观看出,左边的导数为负,即 loss<0,而w应该增加,在右边导数为正,而w应该减少,所以上式应该是减号.如此,从点“0”变化到点“1”,再变化到点“2”,等等,如此下去,越接近极小值,斜率数值逐渐减小,调整的步伐也相对越小,直到误差在极小值的某认可的小邻域之内.∇001 12332w0w1001 12332w0w1w2w3w3w2w1w0Error051015w图5:梯度下降法示意图神经网络分类原理及简单二分类 神经网络分类的原理和回归完全一样.仅有的区别是输出会有多个节点.(“成功“失败两类,10表示那么只有一个节点就够了通常输出1010.k类则k列哑元变量代替.Example2(sim1.csv)(01两类),4个自变量Example2(0/1哑元变量).6.我们希望能够找到一个用自变量来预测因变量类型的模型.importnumpyasnpdefLogit(x,d=False):if(d==True):returnx*(1-x)#np.exp(-x)/(1+np.exp(-x))**2#return1/(1+np.exp(-x))np.random.seed(1010)w=np.random.random((X.shape[1],1))alpha=0.5L=[]#记录误判率k=50#最多迭代次数foriterinrange(k):#前向传播sigma_x=Logit(np.dot(X,w),False)#激活函数resid=y-sigma_x#误差#计算梯度D=resid*Logit(sigma_x,True)w+=alpha*np.dot(X.T,D)#更新权重L.append(np.sum(resid**2))#输出defaccu():yhat=[]forsinsigma_x:ifs>0.5:yhat.append(1)else:yhat.append(0)return(yhat,np.mean(yhat==y.flatten()))yhat,r=accu()print("Output:\n{},\nprediction:\n{}\nOriginaly=\n{}\nAccuracy={}"\.format(sigma_x.flatten(),yhat,y.flatten(),r))print('weights:\n{}'.format(w))输出为:Output:Output:[0.101355510.192055110.830972170.835900480.956903120.18660617],prediction:[0,0,1,1,1,0]Originaly=[001110]Accuracy=1.0weights:[[3.08876206][0.03274647][-1.48276799][-0.71465412]]输出的原本不是整数,accu()0.5作为阈值01(在实际应用中,0.5并不一定是个合理的阈值).多分类问题 如果因变量是多分类变量,首先需要对因变量做哑元化,因此,我们在例2人造数据上添加一列3而成为因变量有3个水平的数据.多分类问题 输出为:Output:[[0.783743470.185015250.1600475][0.318984030.165153640.61361595][0.327000410.788486280.03514147][0.291833190.489098640.11623587][0.42732670.554117590.23021898][0.355779310.435134120.30544672]],prediction:[[1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八年级语文能力培养与教学计划
- 幼儿园亲子互动健康教育计划
- 成人普通话自学计划
- 小学英语教学计划的课程设计
- 电子商务人才培养与保障措施
- 人教版九年级英语个性化学习计划
- 桥梁建设施工环保管理计划
- 2025年度团支部活动策划计划
- 二零二五员工派遣劳动合同
- 湘教版四年级美术学期教学计划
- 2024年宁波市消防救援支队社会招录政府专职消防员笔试真题
- Unit 6 Beautiful landscapes Reading 教学设计-2024-2025学年译林版七年级英语下册
- 神经导航在神经外科手术中的应用与经验
- 学习通《形势与政策》2025春章节测试答案
- 2025-2030年合成宝石戒指企业制定与实施新质生产力战略研究报告
- 【地理】2024-2025学年人教版七年级地理下学期期中模拟试卷
- 网球场翻新施工方案
- 《煤矿职业病危害防治》培训课件2025
- 工程试验检测培训
- 个体诊所日常检查内容
- 大班小小图书管理员
评论
0/150
提交评论