版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章、深度学习清华大学出版社2025-2-26本章学习目标了解神经网络的基本结构和发展历史掌握梯度下降算法的原理及应用利用PyTorch框架构建神经网络通过两个学习案例,熟练掌握神经网络在回归与分类任务中的应用。3.1神经网络神经网络(NeuralNetwork,NN),通过模拟人脑神经元的输入、处理和输出过程,能够对信息并行处理和自主学习的计算模型。自20世纪80年代以来,神经网络作为人工智能的重要分支,已经成为科学研究和工程应用中的关键技术之一。3.1.1神经网络简介神经网络由多个相互连接的节点(神经元)组成,计算结果逐级传递到下一级节点。神经网络具有强大的表征学习能力,可自动提取数据特征。通过调整神经元间的连接权重,学习从输入到输出的映射,实现对输入数据的分类、预测或其他任务。图3.1神经网络结构示意图3.1.2神经网络发展史(一)1、萌芽时期神经网络的概念萌芽于20世纪初,提出了神经元和神经网络的基本概念,并建立了早期的神经元模型,为神经网络的形成奠定了基础。2、创立时期1943年,提出了MP模型,第一个能够完整模拟神经元工作的数学模型,标志着神经网络的正式诞生。1957年,提出了感知机算法,可用于解决分类问题。误差函数和梯度下降方法也被引入到神经网络中,使得神经网络可以通过学习过程进行自我优化。3.1.2神经网络发展史(二)3、低谷时期受限于当时的计算能力和理论发展,感知机(Perceptron)等简单模型无法处理非线性问题。神经网络的研究第一次陷入长达十几年的低谷期。4、复兴时期2006年,GeoffreyHinton团队利用受限玻尔兹曼机(RBM)和深度信念网络(DBN)进行逐层无监督预训练;再通过有监督的微调,解决了深层网络的梯度消失和梯度爆炸等难以训练的难题,为深度学习的崛起奠定了基础。3.1.3神经网络模型神经元是最基本的运算单元(两部分:线性函数+激活函数)输入数据为一个训练样本X=(x1,x2,……,xn)
为线性函数,f为激活函数。W=(w1,w2,……,wn)为当前神经元的连接权重,b为偏置项W和b为神经元的参数,神经元的学习过程,就是寻求最佳W和b的过程。3.2学习案例1:房价预测通过房屋面积预测房价。本节重点学习的内容包括: 通过线性回归模型预测房价 如何获取模型的最佳参数 如何评估模型的性能3.2.1线性回归模型在统计学中,线性回归(linearregression)是利用函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。现实生活中,影响房价的因素有很多,例如:面积、楼层、地段等,不一而足。为简化问题,我们仅选取房屋面积作为影响房价的自变量x,房价为因变量y,建立预测模型为:上式中,模型预测结果是而非y,这是因为x和y是观测结果,是客观事实存在。xy3.2.1线性回归模型观测结果x称为“数据”,y称为“标记”,(x,y)称为样本;根据市场调查,针对某地2018年的新房面积和售价情况,随机选取了其中6条数据,如下表所示。面积(平方米)售价(万元)8020095230104245112247125259135262问题:根据已观测数据,欲得到140平方米的房屋价格,应该如何做呢?答案:首先,根据现有6个样本数据,建立房价预测模型然后,根据房屋面积数据x,得到房屋预测价格。3.2.2模型参数确定对于线性模型,要根据x得到预测值,需要确定参数w和b。根据现有数学知识,我们可以通过现有的样本数据(x,y)来确定w和b。下面通过python代码来实现并求解。#代码示例3-13.2.2模型参数确定(代码)1 #代码示例3-12 importnumpyasnp3 data=np.array([[80,200],4 [95,230],5 [104,245],6 [112,247],7 [125,259],8 [135,262]]9 )10 #绘制图形11 importmatplotlib.pyplotasplt12 #提取数据特征到X13 X=data[:,0]14 #提取标记到Y15 Y=data[:,1]16 #在二维空间中打印坐标点(红色)17 plt.scatter(X,Y,c="red")18 plt.show()图3.6房屋面积与价格的理想预测曲线图3.5房屋面积与价格3.2.3模型评估方法均方误差(MeanSquaredError,MSE)反映估计量与被估计量之间差异程度的一种度量。均方误差用于衡量数据偏离真实值的距离,是差值平方和的平均数。定义如公式(3-2)所示。
(3-2)3.2.4梯度下降法梯度下降算法是一种优化函数的迭代方法,通过沿着目标函数(例如MSE)的负梯度方向更新参数,从而逐步逼近目标函数的最小值。3.2.5PyTorch中的梯度下降(1)自动计算梯度#代码示例3-6importtorch#对四个张量自动赋值,并显式设置张量w1和w2w1=torch.randn(1,requires_grad=True)#设置为Truew2=torch.randn(1,requires_grad=False)#设置为False#采默认(隐式)设置张量b1和b2b1=torch.randn(1)b2=torch.randn(1)#打印四个张量print(f'w1---->{w1}')print(f'w2---->{w2}')print(f'b1---->{b1}')print(f'b2---->{b2}')3.2.5PyTorch中的梯度下降(2)梯度清空#代码示例3-11,梯度清空w=torch.ones(4,requires_grad=True)#定义张量w,其requires_grad=Truex=2#将x作为输入,两个前向传播过程y和zy=(w*x+1).sum()#sum()的原因是:只能对标量调用backword()z=(w*x).sum()#代码示例3-12,调用y和z的后向传播(自动计算梯度)y.backward()print("dy/dw导数:",
w.grad)z.backward()print("dz/dw导数:",w.grad)3.2.5PyTorch中的梯度下降(3)梯度清空对张量y和z分别求w的梯度,关于w的梯度计算值会累加到w.grad中。计算张量w的梯度之后,需要进行梯度清空,避免下次计算梯度累加。代码如下所示。#代码示例3-13w=torch.ones(4,requires_grad=True)#首先定义张量x,其requires_grad=Truex=torch.tensor(2.0)#将x作为输入,两个前向传播过程,结果赋值给y和zy=(w*x+1).sum()
#sum()的原因是:只能对标量调用backword()z=(w*x).sum()y.backward()print("dy/dw导数:",w.grad)#梯度清空w.grad.zero_()z.backward()print("dz/dw导数:",w.grad)3.2.6模型训练中的优化问题(1)由于模型参数𝜃的初始值通常为随机数,所以如果起始点落入二维图中的“局部最小”区域,或三维图中的“鞍点”周边或“局部最小”区域,使用梯度下降算法,可能会始终无法摆脱困境,而陷入到局部最优之中。3.2.6模型训练中的优化问题(2)为了避免在训练过程中陷入局部最优的窘境,研究者们提出了一些有效的策略或方法来优化模型训练过程,统称为“优化方法”。在PyTorch中,目前提供了多种优化器:1)随机梯度下降(SGD)2)动量法(Momentum)3)均方根传播(RMSProp)4)自适应矩估计(Adam)3.2.7神经网络类使用PyTorch建立自定义神经网络类时,通常需要继承nn.Module类。在自定义类中,我们需要重写两个主要方法:构造函数(__init__)前向传播函数(forward)3.3乳腺癌预测在机器学习中,回归和分类是两种常见的任务类型。通常情况下,回归的目标是通过输入数据预测一个连续值,例如房价、温度或股票价格等。分类的目标则是将输入数据分配到预定义的类别中,例如判断邮件是否为垃圾邮件,或识别图片中的物体类别。本节将通过一个基于多特征数据的二分类案例,详细讲解二分类模型的实现过程。3.3.1数据处理(1)在机器学习和数据分析领域,公共数据集或专业领域的数据文件通常以.csv文件格式进行存储(逗号分隔值文件)。对于.csv文件,通常使用pandas库来进行读取和处理。1 #代码示例3-232 importpandasaspd3 #预测乳腺癌样本数据文件为CSV格式,使用pandas对数据集合进行加载4 df=pd.read_csv("./data/breast_cancer.csv")5 #打印读取的数据对象df6print(df)3.3.1数据处理(2)构建数据集通常会将数据集划分为“训练集”和“测试集”两个部分使测试数据与训练数据相互独立,从而更真实地反映模型的泛化能力。1 #代码示例3-25,将数据集按比例随机分为训练集和测试集2 fromsklearn.model_selectionimporttrain_test_split3 #按照0.8和0.2的比例随机划分数据集合4 X_train,X_test,Y_train,Y_test=
train_test_split(X,Y,test_size=0.2,random_state=1234)5 print(f'X_train.shape={X_train.shape}')6 print(f'Y_train.shape={Y_train.shape}')7 print(f'X_test.shape={X_test.shape}')8 print(f'Y_test.shape={Y_test.shape}')3.3.1数据处理(3)数据预处理原始数据标准化处理后,数据中的各个特征值会被缩放到一个统一的尺度,确保不同特征对模型训练的影响程度一致。标准化后的数据能够使得梯度计算更加平稳,从而加快模型的收敛速度。1 #代码示例3-26,对数据集进行标准化2 fromsklearn.preprocessingimportStandardScaler3 #创建标准化对象4 sc=StandardScaler()5 #对特征进行标准化6 X_train_sta=sc.fit_transform(X_train)7 X_test_sta=sc.fit_transform(X_test)8 print(X_train[0,:5])9 print(X_train_sta[0,:5])8 print(f'Y_test.shape={Y_test.shape}')3.3.2神经网络类定义(1)采用线性模型f(x)=wx+b来预测乳腺癌,通常会有两种预测结果:患病或健康(用1表示患病,0表示健康)预测模型属于二分类模型。1 #代码示例3-28,自定义乳腺癌预测模型BreastCancerPredictionModel,简称BCPM2 classBCPM(torch.nn.Module):3 #定义构造(初始化)函数4 def__init__(self,in_features):5 super(BCPM,self).__init__()#调用父类的构造函数!6 #1.构建线性层7 self.linear=torch.nn.Linear(in_features,1)8 #2.构建激活函数层9 self.sigmoid=torch.nn.Sigmoid()10 #重写了父类的forward函数,前向传播11 defforward(self,x):12 pred=self.linear(x)13 out=self.sigmoid(pred)14 returnout3.3.2神经网络类定义(2)神经网络类BCPM定义完成后,还需进行:确定损失函数和学习率创建神经网络类的模型对象构建优化器对象,并为优化器指定模型参数和学习率#代码示例3-29#损失函数公式定义lossFun=torch.nn.BCELoss()#学习率,迭代次数learning_rate=0.1num_epochs=100#获取样本量和特征数,创建模型n_samples,n_features=X.shapemodel=BCPM(n_features)#创建优化器,optimizer=torch.optim.SGD(model.parameters(),lr=learning_rate)#打印模型、打印模型参数print(model)i=0forname,paramind_parameters():i+=1print(f"第{i}个参数:")print(f"Name:{name},\nShape:{param.shape},\nValues:{param.data}")3.3.3模型训练与预测(1)在定义损失函数和优化器后,预测模型的训练过程通常包括以下步骤:前向传播:将输入数据传入模型,通过前向传播计算得到预测结果;损失计算:利用预测结果和真实值(标记)计算损失;反向传播:通过反向传播算法,计算模型参数的梯度;参数更新:根据梯度值,由优化器对模型参数进行优化;梯度清零:清除优化器中的梯度信息,以避免累积影响后续计算;循环迭
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国智能家居生态系统行业市场分析供需平衡及投资评估规划分析研究报告
- 2026中国智能可穿戴设备行业市场现状供需趋势与发展投资风险评估报告
- 2026中国半导体检测设备核心芯片自主研制与产线验证情况分析
- 2026中国新能源储能行业市场潜力及政策支持规划分析报告
- 2026汽车电池制造产业技术升级与战略布局深度市场分析报告
- 2026年书香校园知识竞赛试卷
- 2026中国无人驾驶汽车行业市场现状分析竞争发展前景规划报告
- 2026中国无人机城市空中交通管制系统建设进展
- 山东电力集团有限公司莱芜光明分公司题库
- 鞍钢集团总医院招聘护士笔试题目答案详解
- 2026心肺复苏理论考试试题及答案
- 出纳考核的试题及答案
- 服务器设备租赁合同
- 《跨越时空的回响:重温红色故事续写长征精神》教学设计-高中思想政治必修4“弘扬中华民族精神”主题班会
- 2026放射工作人员考试题库(含答案)
- 2026年及未来5年市场数据中国城市河道治理行业发展趋势预测及投资战略咨询报告
- (2026年)检验检测机构资质认定“一单一库”的学习与解读(2026年实施)课件
- 核心素养导向的初中七年级英语单元整体教学设计:Once Upon a Time (基于人教版七年级下册Unit 8)
- 卫生院统计报工作制度
- 24J113-1 内隔墙-轻质条板(一)
- 健康体检中心服务流程
评论
0/150
提交评论