神经网络与深度学习 课件全套 张杲峰 第1-9章-绪论 -注意力机制与Transformer_第1页
神经网络与深度学习 课件全套 张杲峰 第1-9章-绪论 -注意力机制与Transformer_第2页
神经网络与深度学习 课件全套 张杲峰 第1-9章-绪论 -注意力机制与Transformer_第3页
神经网络与深度学习 课件全套 张杲峰 第1-9章-绪论 -注意力机制与Transformer_第4页
神经网络与深度学习 课件全套 张杲峰 第1-9章-绪论 -注意力机制与Transformer_第5页
已阅读5页,还剩382页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

神经网络与深度学习课程内容第1章绪论第2章机器学习第3章人工神经网络第4章多层感知机第5章卷积神经网络第6章深度卷积神经网络第7章循环神经网络第8章深度生成模型第9章注意力机制与Transformer第1章绪论1.1人工智能 1.1.1人工智能的起源1.1.2人工智能的发展与流派1.1.3人工智能的社会、伦理问题1.2机器学习1.3人工神经网络1.3.1人脑神经网络1.3.2人工神经网络的产生1.3.3人工神经网络的发展1.4深度学习1.4.1深度学习的产生和发展1.4.2深度学习主要开发框架1.4.3深度学习的应用现状第1章绪论国家战略2017年国务院制定并发布了《新一代人工智能发展规划》,制定了我国人工智能发展的战略目标,即到2030年,我国“人工智能理论、技术与应用总体达到世界领先水平,成为世界主要人工智能创新中心,智能经济、智能社会取得明显成效”。学科发展2018年度图灵奖就颁给为深度学习领域带来重大突破的本吉奥(YoshuaBengio)、杨乐昆(YannLeCun)和辛顿(GeoffreyHinton)三位科学家。1.1人工智能(artificialintelligence,AI)人工智能的起源1956年,麦卡锡(JohnMcCarthy)、明斯基(MarvinMinsky)、香农(ClaudeShannon)、罗切斯特(NathanielRochester)、纽厄尔(AllenNewell)、西蒙(HerbertSimon)等在达特茅斯学院(DartmouthCollege)举办了“人工智能夏季研讨会”,讨论机器模仿人类学习以及其他方面的智能的问题。这次会议标志着人工智能学科的诞生。1.1人工智能(artificialintelligence,AI)人工智能的起源Fromleft:TrenchardMore,JohnMcCarthy,MarvinMinsky,OliverSelfridge,andRaySolomonoff.(PhotobyJosephMehling'69)Fiveoftheattendeesofthe1956DartmouthSummerResearchProjectonArtificialIntelligencereunitedattheJulyAI@50conference.

1.1人工智能(artificialintelligence,AI)人工智能的发展学科起步:1956~1960年代初第一次低谷:1960年代专家系统:1970年代第二次低谷:1970年代~1980年代神经网络:1980年代第三次低谷:1980年代~2000年代深度学习:2000年代~1.1人工智能(artificialintelligence,AI)人工智能的流派符号主义学派通过符号计算模拟逻辑思维过程来实现人工智能,解决实际问题,如规划、推理、对话和博弈等。联结主义学派联结主义通过构造人工神经网络模拟自然神经元和神经元之间的连接,从而实现人工智能。行为主义学派通过模拟生物体外在的感知-行为过程,使之可以更好地适应环境,从而表现出一定的智能水平,例如智能体、强化学习等都基于该思想。1.1人工智能(artificialintelligence,AI)人工智能的社会、伦理问题安全信任公平隐私负责任……1.1人工智能(artificialintelligence,AI)人工智能的社会、伦理问题《新一代人工智能治理原则——发展负责任的人工智能》(2019年中国新一代人工智能治理专业委员会):强调人工智能的发展应遵循公平公正、尊重隐私、安全可控、共担责任、包容共享等原则;《可信人工智能道德原则指导》(欧盟人工智能专家组):可信人工智能应该满足人类监管纠错、技术安全及鲁棒、隐私保护和数据治理、透明及可解释、算法公平及无歧视、环保和社会影响、问责制度等方面的要求;《人工智能算法金融应用评价规范》(中国人民银行);《金融行业人工智能应用一般原则》(荷兰央行);《人工智能医疗器械质量要求》(国家药品监督管理局);《基于人工智能/机器学习的医疗器械软件行动计划》(美国食品药品监督管理局,FoodandDrugAdministration,FDA)。1.2机器学习(machinelearning,ML)假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,则我们就说关于T和P,该程序对E进行了学习。——米歇尔(TomMitchell)1.2机器学习(machinelearning,ML)机器学习的分类监督学习(supervisedlearning)无监督学习(unsupervisedlearning)半监督学习(semi-supervisedlearning)强化学习(reinforcementlearning)1.2人工神经网络(artificialneuralnetworks,ANN)人脑神经网络组成人脑约有860亿个神经元,每个神经元通过上千个突触和其他神经元相连接,这些连接可以在神经元之间传递信息;神经元和它们之间的连接构成一个巨大的协同处理的复杂网络结构,即神经网络,构成认知的物质与生理基础。1.2人工神经网络(artificialneuralnetworks,ANN)人脑神经网络学习:赫伯规则(Hebbrule)1949年,加拿大心理学家赫伯(DonaldHebb)总结了突触的学习规则,即如果两个神经元总是相关联地受刺激,它们之间的突触强度就增强,否则就减弱,1.2人工神经网络(artificialneuralnetworks,ANN)产生M-P模型(1943)麦克洛奇(WarrenMcCulloch)(左,神经科学家)和皮兹(WalterPitts)(右,数学家)提出的一种基于简单逻辑运算的神经网络。1.2人工神经网络(artificialneuralnetworks,ANN)产生感知机(perceptron)模型(1957,罗森布拉特,FrankRosenblatt)

1.2人工神经网络(artificialneuralnetworks,ANN)产生感知机(perceptron)模型实现#代码1-1:实现逻辑与运算的感知机importnumpyasnp

classPerceptron(object):

#定义感知机def__init__(self,input_size):self.W=np.array([1,1])

#权重self.b=-2#偏置

defactivation_fn(self,x):

#定义激活函数return1ifx>=0else0

defpredict(self,x):

#定义预测z=self.W.T.dot(x)a=self.activation_fn(z+self.b)returna

X=np.array([[0,0],[0,1],[1,0],[1,1]])#逻辑运算可能的输入组合perceptron=Perceptron(input_size=2)

#实例化感知机forxinX:pre=perceptron.predict(x)print(x[0],'and',x[1],'=',pre)

#输出当输入为X时对应的预测值1.2人工神经网络(artificialneuralnetworks,ANN)发展《感知机》,明斯基,1969神经认知机(Neocognitron),福岛邦彦(KunihikoFukushima)1980,感受野1.2人工神经网络(artificialneuralnetworks,ANN)

1.2人工神经网络(artificialneuralnetworks,ANN)

1.2人工神经网络(artificialneuralnetworks,ANN)发展卷积神经网络(convolutionneuralnetwork,CNN),杨乐昆,1989LeNet-5模型,成功应用于美国邮政系统1.2人工神经网络(artificialneuralnetworks,ANN)发展循环神经网络(recurrentneuralnetwork,RNN)长短期记忆(longshort-termmemory,LSTM)网络,霍克赖特(SeppHochreiter)和施米德胡贝(JürgenSchmidhuber),1997年。1.2人工神经网络(artificialneuralnetworks,ANN)发展制约在算法上无法解决反向传播过程中的梯度消失问题;当时计算机系统的计算能力难以满足训练需求;难以克服模型参数众多而样本数据不足的窘境。1.3深度学习(deeplearning,DL)产生与发展深度信念网络(deepbeliefnetwork,DBN,辛顿和萨拉赫丁诺夫(RuslanSalakhutdinov)),2006年堆叠自动编码器(stackedauto-encoder,SAE),本吉奥,2009年AlexNet年,辛顿小组,2012提整流线性单元(rectifiedlinearunit,ReLU)激活函数图形处理单元(graphicsprocessingunit,GPU)ImageNet图像分类大赛中一举夺冠1.3深度学习(deeplearning,DL)产生与发展生成对抗网络(generativeadversarialnetwork,GAN),古德费洛(IanGoodfellow),2014Transformer框架,GoogleAI团队,2017,很快成为自然语言处理领域的主流技术,目前流行的GPT(generativepre-trainedTransformer)、BERT(bidirectionalencoderrepresentationfromTransformers)等模型均基于Transformer框架。同时,自2020年开始,其变体视觉Transformer(visualtransformer,ViT)被应用于计算机视觉领域,并取得了良好的效果。1.3深度学习(deeplearning,DL)开发框架TensorFlowPyTorch飞桨(PaddlePaddle)OpenVINO与OneAPI1.3深度学习(deeplearning,DL)应用现状计算机视觉语音与自然语言处理推荐系统自动驾驶内容生成神经网络与深度学习第2章机器学习2.1基本概念2.1.1数据2.1.2模型2.1.3学习准则2.1.4优化算法2.2机器学习的类型2.2.1监督学习2.2.2无监督学习2.2.3半监督学习2.2.4强化学习2.3模型评估2.3.1性能度量指标2.3.2模型评估方法2.4机器学习任务的一般流程2.1基本概念机器学习任务包括训练(training)和预测(predication)两阶段。训练又称学习(learning),包含四个要素:数据、模型、算法和学习准则。通过训练,机器学习任务得到模型的实例,及预测器(或者又叫分类器)。预测阶段,又称推理(inference)阶段,利用得到的预测器对新的数据进行推理或者预测。预测器对新的数据进行推理或者预测的能力称为泛化(generalization)能力。2.1基本概念机器学习任务:训练(training),预测(predication)机器学习过程线性回归过程示例训练/学习数据预测器算法新数据预测结果推理/预测模型训练/学习

梯度下降算法

推理/预测学习准则学习准则2.1基本概念

2.1基本概念

2.1基本概念

2.1基本概念数据(data)数据集示例鸢尾花(irisdataset)样本特征1特征2特征3特征4标签训练集测试集012山鸢尾变色鸢尾弗吉尼亚鸢尾个体样例与标签2.1基本概念数据(data)数据集示例MNIST(MixedNationalInstituteofStandardsandTechnologydatabase)60,000个样本的训练集;10,000个样本的测试集每个样本是分辨率为28*28像素的灰度图像样本的特征:由784个像素灰度值构成的784维的特征向量标签:代表的数字2.1基本概念数据(data)数据集示例CIFAR-10:包含10个类别的RGB彩色图像包括飞机、汽车、动物等10种类别。每种类别有6000幅图像共有50000幅训练图像和10000幅测试图像每幅图像的为32*32像素,每个像素都有3个通道的颜色值CIFAR-100则是包含100个类别的数据集。2.1基本概念数据(data)数据集示例ImageNet:一千万幅图像ReutersNewswireTopicClassification(Reuters-21578):用于文本分类的BaiduSpeechTranslationCorpus(BSTC):用于机器翻译StanfordQuestionAnsweringDataset(SQuAD):用于问答系统2.1基本概念数据(data)数据集使用Scikit-learn包加载鸢尾花数据集[1]:fromsklearnimportdatasets#导入datasets类[2]:iris=datasets.load_iris()#调用datasets类的iris()方法加载鸢尾花数据集[3]:print(iris.data.shape)#输出鸢尾花特征数据维度大小(行,列)[输出](150,4)[4]:print(iris.data[:5])#输出前5个鸢尾花样本的特征[输出]

[[5.13.51.40.2][4.93.1.40.2][4.73.21.30.2][4.63.11.50.2][5.3.61.40.2]][5]:print(iris.target.shape)#输出鸢尾花标签数据维度大小[输出]

(150,)[6]:print(iris.target[:5])#输出前5个鸢尾花样本的标签[输出]

[00000]2.1基本概念数据(data)数据集使用使用PyTorch框架加载CIFAR-10数据集[1]:fromtorchvisionimportdatasets#导入datasets类[2]:cifar10=datasets.CIFAR10(root="./data",train=True,download=True)#加载CIFAR-10[输出]

Filesalreadydownloadedandverified[3]:frommatplotlibimportpyplotasplt#显示第一幅图像img,label=cifar10[0]plt.imshow(img)plt.show()2.1基本概念模型(model)一类可以描述输入空间(即特征空间)和输出空间(即标签空间)之间关系的一种通用的方法2.1基本概念

2.1基本概念

2.1基本概念学习准则(criteria)损失函数(lossfunction)一般使用损失函数(lossfunction)来度量预测输出和真实标签或者概率分布之间的差异,损失函数是一个非负函数,有时也称为代价函数(costfunction),其值代表预测输出和真实标签之间的误差。2.1基本概念

2.1基本概念

2.1基本概念

2.1基本概念

2.1基本概念

2.1基本概念学习准则(criteria)过拟合(overfitting)与欠拟合(underfitting)过拟合就是预测器可以很好地拟合训练集数据,在其上取得很小的经验风险,但是在未知数据上性能却很差的现象,即泛化能力很差。数据往往包含一定的噪声,但是学习中为了降低经验风险,使得预测器变得过于复杂,将这些噪声信息作为一般特征进行了学习。2.1基本概念

2.1基本概念学习准则(criteria)过拟合(overfitting)与欠拟合(underfitting)欠拟合:学习得到的预测器表达能力不足,在训练集上都不能取得好的拟合效果XY欠拟合

XY恰好拟合

XY过拟合

模型复杂度误差/Error欠拟合过拟合测试误差训练误差最好拟合2.1基本概念

2.1基本概念

2.1基本概念

2.2机器学习的类型监督学习使用带标签的数据集进行训练,通过标签信息指导训练,学习特征空间和标签空间内在的映射关系或者条件概率分布,从而根据训练预测输出。相关任务分类回归2.2机器学习的类型无监督学习使用未标记的数据集进行训练,并且机器在没有任何监督的情况下预测输出。主要目的是根据相似性、模式和差异对未排序的数据集进行分组或分类,指示机器从输入数据集中查找隐藏的模式。相关任务聚类关联规则学习降维2.2机器学习的类型半监督学习介于监督学习和无监督学习之间的半监督学习。通常先在小部分标记数据上训练模型,并利用该模型标记更大的未标记数据子集;然后,标记的数据用于训练第二个模型,该模型又被用于标记剩余的未标记数据;该过程重复进行,直到标记所有数据。2.2机器学习的类型强化学习一种基于反馈的机器学习方法,通过代理(agent)与环境交互来学习其在环境中的行为。代理执行操作并查看操作结果:对于每个好的操作,代理都会得到积极的反馈或奖励;对于每个坏的操作,代理都会得到负面反馈或惩罚。代理的主要目标是通过获得最大的积极奖励来提高绩效。强化学习中代理使用没有任何标记数据的反馈自动学习,因此代理必然只能通过其自身经验来学习。2.3模型评估

2.3模型评估

2.3模型评估

2.3模型评估

2.3模型评估

真正例TP(truepositive)假反例FN(falsenegative)假正例FP(falsepositive)真反例TN(truenegative)预

测真

实正例反例正例反例2.3模型评估

真正例TP(truepositive)假反例FN(falsenegative)假正例FP(falsepositive)真反例TN(truenegative)预

测真

实正例反例正例反例2.3模型评估

真正例TP(truepositive)假反例FN(falsenegative)假正例FP(falsepositive)真反例TN(truenegative)预

测真

实正例反例正例反例

2.3模型评估

真正例TP(truepositive)假反例FN(falsenegative)假正例FP(falsepositive)真反例TN(truenegative)预

测真

实正例反例正例反例

2.3模型评估模型评估方法交叉验证(Crossvalidation)将数据集拆分为大小相等的样本组,这些组称为折叠(folds)。要评估的模型在除一个折叠之外的所有折叠上训练;训练后,在之前排除的折叠上测试模型。然后根据折叠次数一遍又一遍地重复此过程。如果将数据集拆分成k个折叠,这个过程叫k折(k-fold)交叉验证,k的值可能因数据集的大小而异。2.3模型评估模型评估方法留出法(holdout)留出法将数据集划分为三部分:训练集、验证集和测试集。训练集用于对模型进行训练,测试集用于评估模型的性能;验证集则是在训练阶段评估构建的模型的性能,定期评估模型,并允许对模型的参数进行微调。2.5机器学习任务的一般流程确定目标收集数据数据预处理特征选择与模型构建模型训练模型评估与优化模型部署与应用2.4机器学习任务案例通过一个简单的牛奶质量预测案例来说明机器学习任务的主要流程。确定目标牛奶质量预测本质上就是通过pH值、颜色、气味、口感等特征信息,来确定牛奶质量属于高、中、低哪个等级这是一个分类问题。任务规模不大,较简单基于scikit-learn包进行开发2.4机器学习任务案例收集数据#利用pandas库读入数据data=pd.read_csv('data\\milkquality.csv')importpandasaspdimportnumpyasnpimportseabornassnsimportplotly.expressaspximportmatplotlibimportmatplotlib.pyplotaspltfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerfromsklearn.neighborsimportKNeighborsClassifierfromsklearn.metricsimportaccuracy_score,confusion_matrixfromsklearn.metricsimportclassification_report#查看数据集大小(shape)data.shape#查看数据(仅显示前10行)data.head(10)(1059,8)2.4机器学习任务案例数据预处理#检查缺失值NaNprint('\nNaN值:\n')print(data.isna().sum())#查看不同类别的分布print(data.groupby('Grade').size())#将标签改为值类型:'low':0,'medium':1,'high':2data['Grade']=data['Grade'].map({'low':0,'medium':1,'high':2})print(data.head())#利用热图查看特征之间的相关性:#红色:正相关(值越接近1,相关性越强);蓝色:负相关sns.heatmap(data.corr(),annot=True,cmap='coolwarm')2.4机器学习任务案例数据预处理#将特征信息(X)和标签信息(Y)分开X=data.drop(['Grade'],axis=1)y=data['Grade']

#利用scikit-learn包的StandardScaler进行缩放#创建StandardScaler实例sc=StandardScaler()

#根据数据拟合缩放器(亦即计算均值和方差)sc.fit(X)#利用拟合获得的均值和方差进行缩放xscaled=sc.transform(X)#对缩放后的特征创建新的DataFrameX_scaled=pd.DataFrame(data=xscaled,columns=data.columns[:-1])

#将数据集切分成训练集(X_train,y_train)和测试集(X_test,y_testX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)2.4机器学习任务案例特征选择与模型构建模型训练#创建模型实例,k(n_neighbors)的取值为5knn=KNeighborsClassifier(n_neighbors=5)#模型训练:指定训练集knn.fit(X_train,y_train)2.4机器学习任务案例模型评估与优化#对测试集样本进行预测knn_preds=knn.predict(X_test)#精度评估knn_score=accuracy_score(y_test,knn_preds)print("KNN精度(accuracy):{:.5f}".format(knn_score))#绘制混淆矩阵#计算混淆矩阵knn_cm=confusion_matrix(y_test,knn_preds)#绘制混淆矩阵sns.heatmap(knn_cm,annot=True,cmap='Blues',xticklabels=['Low(0)','Medium(1)','High(2)'],yticklabels=['Low(0)','Medium(1)','High(2)'])plt.ylabel("真实分类(ActualClass)")plt.xlabel("预测分类(PredictedClass)")plt.show()2.4机器学习任务案例模型评估与优化#输出查准率、查全率和F1指标print(classification_report(y_test,knn_preds))2.4机器学习任务案例模型评估与优化defplot_validation_curve(model,X,y,param_name,param_range):#针对param_name参数的不同取值param_range,采用5折交叉验证

train_scores,test_scores=validation_curve(model,X,y,param_name=param_name,param_range=param_range,cv=5,scoring='accuracy',n_jobs=-1)#获得5次预测的平均值

train_scores_mean=np.mean(train_scores,axis=1)test_scores_mean=np.mean(test_scores,axis=1)#绘制验证精度曲线

plt.figure(figsize=(10,6))plt.plot(param_range,train_scores_mean,linestyle='dotted',marker='o',label='训练精度(TrainingScore)')plt.plot(param_range,test_scores_mean,linestyle='solid',marker='*',label='验证精度(ValidationScore)')plt.xlabel('k(近邻数)')plt.ylabel('精度')plt.legend()plt.show()2.4机器学习任务案例模型评估与优化#选取6个不同k值plot_validation_curve(knn,X_train,y_train,'n_neighbors',[1,5,10,15,20,25,30])神经网络与深度学习第3章人工神经网络3.1脑3.1.1脑的结构和功能3.1.2神经组织3.1.3信息处理和传递3.1.4学习和记忆的神经机制3.2人工神经网络3.2.1人工神经网络的源起3.2.2人工神经网络的发展脉络3.2.3脑与人工神经网络3.3感知机模型3.3.1可学习的感知机3.3.2感知机应用案例实战:利用感知机进行鸢尾花分类3.1脑脑的结构和功能神经系统是机体内起主导作用的系统神经系统分为中枢神经系统和周围神经系统两大部分脑和脊髓组成中枢神经系统脑神经和脊神经构成周围神经系统脑是神经系统中最重要、最大和中枢的部分,几乎控制着人体从生理功能到认知能力的各个方面。3.1脑脑的结构和功能人类成人的脑重约1.4公斤,但其消耗了身体1/5~1/4能量,用以维持其中的物理、化学过程,从而实现感觉、经验和知识等的产生、处理和存储。3.1脑脑的结构和功能脑由前脑、中脑和后脑三部分组成。后脑控制身体的呼吸和心率等重要功能,包括脊髓的上部、脑干和小脑,其中小脑还进行运动协调。脑干上部是中脑,它控制着一些反射动作,并参与控制眼球运动和其他一些自主运动。前脑中脑

后脑右半球左半球额叶顶叶枕叶颞叶小脑脊髓3.1脑脑的结构和功能前脑是脑中最大、也是最发达的部分,包括大脑(又称为端脑)、下丘脑和丘脑。大脑位于脑的最顶层,是智力活动的源泉。大脑由左右两个大脑半球组成,中间通过胼胝体连接。大脑外层是平均厚约2.5mm的大脑皮层,是产生抽象思维的生物基础。前脑中脑

后脑右半球左半球额叶顶叶枕叶颞叶小脑脊髓3.1脑脑的结构和功能每个半球的大脑皮层由分成四个脑叶,分别是额叶、顶叶、枕叶和颞叶。额叶位于前额后面,与言语、计划、推理、问题解决和动作等有关。当我们计划一个时间表,想象未来,或使用合理的论点时,该部分完成了大部分工作,此时额叶充当短期储存场所,允许在考虑其他想法的同时记住一个想法。额叶的最后部是运动皮层,它有助于计划、控制和执行自发运动或有意运动,如移动手臂或踢球。前脑中脑

后脑右半球左半球额叶顶叶枕叶颞叶小脑脊髓3.1脑脑的结构和功能顶叶位于额叶后面,辅助运动以及刺激和方位的感知。当我们享受一顿美餐时,食物的味道、气味和质地在顶叶起作用,阅读和算术也是顶叶的功能。顶叶的前部,运动区域的后面,是躯体感觉皮层。这些区域从身体其他部位接收有关温度、味道、触觉和运动的信息。前脑中脑

后脑右半球左半球额叶顶叶枕叶颞叶小脑脊髓3.1脑脑的结构和功能枕叶位于大脑半球的后部,处理来自眼睛的图像,并将该信息与记忆中的图像联系起来。颞叶位于视觉区域的前面,在顶叶和额叶下面。颞叶的顶部是一个负责从耳朵接收信息的区域。每个颞叶的下侧在形成和检索记忆方面起着至关重要的作用,包括与音乐相关的记忆。颞叶的其他部分还整合了味觉、听觉、视觉和触觉的记忆和感觉。前脑中脑

后脑右半球左半球额叶顶叶枕叶颞叶小脑脊髓3.1脑神经组织神经系统的主要细胞组成是神经元(又称为神经细胞)和神经胶质细胞,数量占比约为1:10。神经元负责信息处理和传递,神经系统所表现出的兴奋、传导和整合等机能都由神经元和神经元组成的神经网络所承担。神经胶质细胞主要起辅助作用,支撑神经元的正常活动。注意:近年的研究表明,胶质细胞可以放大神经信号,在心理计算中起到与神经元一样重要的作用。3.1脑神经组织神经系统包含数百种不同类型的神经元感觉神经元运动神经元中间神经元3.1脑神经组织神经元组成细胞体,一个到数千个接收输入的树突,携带电脉冲的轴突,以及一个轴突末梢。细胞体是神经元的中心部分,包含细胞核,是神经元中大部分蛋白质合成发生的部位。细胞体不参与信息传递,但为信息传递提供必要的能量支持。树突是具有许多分支的细胞延伸,其中神经元的大部分输入都发生在其中。轴突是一种更精细的索状突起,可以延伸数十倍、数百倍甚至数万倍的长度。轴突末梢是与其他细胞连接的轴突的小分支,其功能通常用于将信号传输到其他细胞。3.1脑信息处理和传递神经元内部的信息处理和传递是通过动作电位来实现树突接收来自其他神经元轴突末梢的信号信号以电化学物质的形式呈现。电化学物质改变神经元内部的电位,如果电位差到达一定的程度,即阈值电位,神经元就被激活,发生动作电位,神经元处于激活状态。动作电位导致电脉冲从细胞体开始并沿着轴突向下传播3.1脑信息处理和传递神经元之间通过突触进行信息传递突触:一侧的轴突末梢与另一侧的树突或细胞体之间有一个宽20-40纳米的间隙。突触通常在一个方向上传导信号。它们可以是兴奋性的或抑制性的,分别增加或减少目标神经元的活动。3.1脑信息处理和传递神经元之间通过突触进行信息传递突触传递信息的方式有化学突触和电突触两类。化学突触:动作电位到达轴突末端

打开电压门控钙通道

钙离子进入终端

充满神经递质分子的囊泡与膜融合

内容物释放到突触裂隙中

神经递质扩散穿过突触裂隙并激活突触后神经元上的受体。神经递质是在神经元之间传递的化学分子。某些类型的分子(兴奋性神经递质)促进神经元的激活,而其他分子(抑制性神经递质)则减少激活。神经递质有不同类型,乙酰胆碱对肌肉的控制和激素的分泌、以及认知功能很重要;去甲肾上腺素是交感神经系统功能和“战斗或逃跑”反应的关键;多巴胺有助于调节奖励行为和情绪,以及控制身体运动;血清素在睡眠的启动和食欲中发挥作用。3.1脑学习和记忆的神经机制心理学家认为:学习是人和动物依赖于经验来改变自身行为以适应环境的神经过程,即获取新知识和新信息的过程;记忆则是对获得的信息编码、储存、巩固和再现的神经过程。赫伯提出:细胞集合(cellassembly)和赫伯规则(Hebbrule)《行为的组织:神经心理学理论》(TheOrganizationofBehavior:ANeuropsychologicalTheory,1949年3.1脑学习和记忆的神经机制细胞集合(cellassembly)对刺激的表征由所有被这一刺激同时激活的神经元实现,这群神经元为细胞集合,细胞集合内所有神经元彼此交互联系;集合内神经元的连接遵循赫伯规则。赫伯规则(Hebbrule)当细胞A的轴突足够接近以激发B细胞并以重复和持续的方式参与其激活时,某种类型的生长过程或代谢变化发生在一个或两个细胞中,从而提高细胞A在激活B中的效率;简而言之,就是一起激活的神经元连接在一起。3.1脑学习和记忆的神经机制长时程增强(long-termpotentiation,LTP)和长时程抑制(longtermdepression,LPD)1973年,布利斯(TimBliss)和洛莫(TerjeLomo)发现,短暂的高频电刺激进入海马的神经通路,可以引起这条通路上的突触传递效能持续增强,这一效应即为LTP。LTP的发现证实了赫伯规则。LTP和突触传递效能降低的长时程抑制统称为突触可塑性。由少量刺激引起的长时程增强和抑制产生的记忆只能持续1-2小时,持续的刺激可以维持1天甚至更多,但要产生更长期的记忆,往往需要新蛋白质的合成和新突触的形成。3.2人工神经网络人工神经网络的源起图灵机(Turingmachines)图灵机由一条无限长的纸带和一个控制器组成。纸带用作信息存储,上面有一个个小方格,每个小方格可以存储一个符号。控制器有一个读写头,可以沿着纸带一次一格左右移动,并读取或改变纸带上方格中的符号。每一时刻,图灵机处于有限个状态中的一个状态,该状态被记录在控制器的状态寄存器中。图灵机还有一个指令表,指令表指导控制器根据当前所处状态以及当前读写头所指方格上的符号来确定读写头下一步的动作,并改变状态,令机器进入一个新的状态。3.2人工神经网络

3.2人工神经网络人工神经网络的源起实现M-P模型importnumpyasnp

deflinear_threshold_gate(dot:int,T:float)->int:#返回阈值输出

ifdot>=T:

return1

else:

return0

#输入矩阵input_table=np.array([[0,0],#0OR0[0,1],#0OR1[1,0],#1OR0[1,1]#1OR1])#权重数组赋初值weights=np.array([1,1])

#输入和权重的点积dot_products=input_table@weightsprint(f'Dotproducts:{dot_products}')

T=1foriinrange(0,4):activation=linear_threshold_gate(dot_products[i],T)

print(f'Activation:{activation}')3.2人工神经网络人工神经网络的源起生物神经元与M-P模型M-P模型是第一个基于生物神经元提出的计算模型,而且是图灵完备的。只要有足够的内存和时间,如果机器可以解决任何复杂度的任何计算问题,我们称之为图灵完备的。生物神经元M-P模型树突输入突触权重细胞体节点膜电位加权和动作电位阈值轴突输出3.2人工神经网络人工神经网络的发展脉络3.2人工神经网络脑与人工神经网络

人脑浅层人工神经网络深层人工神经网络神经元数量约860亿个神经元10~1000个神经元>1000个神经元连接数量约100万亿约10万>100万(GPT-4约1.8万亿)学习可以容忍不明确的信息需要精确、结构化数据应对不明确信息可以容忍部分不明确信息和非结构化数据拓扑结构异步连接的复杂拓扑结构层之间同步连接、树状结构同步连接、树状结构与循环、残差等连接并存能耗很小(约20瓦)大的耗能高耗能3.2感知机模型

3.2感知机模型

3.2感知机模型可学习的感知机实现“与”运算importnumpyas

np

classPerceptron(object):#定义感知机

def__init__(self,input_size):

self.W=np.zeros(input_size)#权重初始化为0

self.b=0#偏置初始化为0

self.errors=[]#误差

defactivation_fn(self,x):#定义激活函数

returnnp.where(x>=0.0,1,0)

defpredict(self,x):#定义预测z=np.dot(x,self.W)a=self.activation_fn(z+self.b)

returna

deftrain(self,X,y,eta=0.01,epochs=20):#定义训练

fortinrange(epochs):#epochs个轮回err=0

forxj,targetinzip(X,y):delta=eta*(target-self.predict(xj))

self.W+=delta*xj

self.b+=deltaerr+=int(delta!=0.0)

self.errors.append(err)

return

self

X=np.array([[0,0],[0,1],[1,0],[1,1]])#逻辑运算可能的输入组合y=np.array([0,0,0,1])#对应输入组合的逻辑与计算值,标签

perceptron=Perceptron(input_size=2)#实例化感知机perceptron.train(X,y)#训练print('Weights:',perceptron.W,'Bias:',perceptron.b)

forxjinX:pre=perceptron.predict(xj)print(xj[0],'and',xj[1],'=',pre)#输出当输入为xj时对应的预测值3.2感知机模型可学习的感知机实现“与”运算importnumpyas

np

classPerceptron(object):#定义感知机

def__init__(self,input_size):

self.W=np.zeros(input_size)#权重初始化为0

self.b=0#偏置初始化为0

self.errors=[]#误差

defactivation_fn(self,x):#定义激活函数

returnnp.where(x>=0.0,1,0)

defpredict(self,x):#定义预测z=np.dot(x,self.W)a=self.activation_fn(z+self.b)

returna

deftrain(self,X,y,eta=0.01,epochs=20):#定义训练

fortinrange(epochs):#epochs个轮回err=0

forxj,targetinzip(X,y):delta=eta*(target-self.predict(xj))

self.W+=delta*xj

self.b+=deltaerr+=int(delta!=0.0)

self.errors.append(err)

return

self

X=np.array([[0,0],[0,1],[1,0],[1,1]])#逻辑运算可能的输入组合y=np.array([0,0,0,1])#对应输入组合的逻辑与计算值,标签

perceptron=Perceptron(input_size=2)#实例化感知机perceptron.train(X,y)#训练print('Weights:',perceptron.W,'Bias:',perceptron.b)

forxjinX:pre=perceptron.predict(xj)print(xj[0],'and',xj[1],'=',pre)#输出当输入为xj时对应的预测值3.2感知机模型感知机应用案例实战:利用感知机进行鸢尾花分类问题描述选取鸢尾花数据集中的山鸢尾(setosa)和变色鸢尾(versicolor),多分类可以在二分类的基础上进行。花的特征选取花萼(sepal)长度(特征0)和花瓣(petal)长度(特征1)。3.2感知机模型应用案例实战:利用感知机进行鸢尾花分类实现importpandasaspdimportmatplotlib.pyplotaspltfrommlxtend.plottingimportplot_decision_regions#利用Pandas库处理数据df=pd.read_csv('/ml/machine-learning-databases/iris/iris.data',header=None)

#山鸢尾和变色鸢尾y=df.iloc[0:100,4].valuesy=np.where(y=='Iris-setosa',0,1)

#花萼长度和花瓣长度X=df.iloc[0:100,[0,2]].values

#实例化感知机模型perceptron=Perceptron(input_size=2)

#绘制训练过程中错误分类数的变化曲线plt.plot(range(1,len(perceptron.errors)+1),perceptron.errors,marker='o')plt.xlabel('训练轮回(Epochs)')plt.ylabel('错误分类(Misclassifications)')plt.show()

#绘制分类器的决策边界perceptron.train(X,y,eta=0.1,epochs=10)print('Weights:%s'%perceptron.W)plot_decision_regions(X,y,clf=perceptron)plt.title('Perceptron')plt.xlabel('花萼(sepal)长度[cm]')plt.ylabel('花瓣(petal)长度[cm]')plt.show()3.2感知机模型

3.2感知机模型知机的缺陷与人工智能的寒冬“异或”问题

X=np.array([[0,0],[0,1],[1,0],[1,1]])#逻辑运算可能的输入组合y=np.array([0,1,1,0])#对应输入组合的逻辑异或计算值,标签

perceptron=Perceptron(input_size=2)#实例化感知机perceptron.train(X,y)#训练print('Weights:',perceptron.W,'Bias:',perceptron.b)forxjinX:pre=perceptron.predict(xj)3.2感知机模型知机的缺陷与人工智能的寒冬“异或”问题对于逻辑与和逻辑或运算,一条直线即可分隔开两种不同情形。逻辑异或运算不是一个线性可分问题,没有办法生成一个能够正确分类所有实例的决策边界。

3.2感知机模型知机的缺陷与人工智能的寒冬鸢尾花分类如果选用另外两个特征(花萼宽度和花瓣宽度)对鸢尾花数据集中的两个不同的类别(山鸢尾/类别0和变色鸢尾/类别1)进行分类分类错误数难以收敛到0,同时,也无法找到一个好的决策边界,因为每次轮回一个或多个样本总是被错误分类,因此学习永远不会停止更新权重。

3.2感知机模型知机的缺陷与人工智能的寒冬由于感知机无法处理线性不可分问题,明斯基(MarvinMinsky)和派普特(SeymourPapert)在1969年出版了《感知机:计算几何导论》一书,并认为感知机以及随之而来的整个人工智能连接主义方法具有严重的局限性,例如不可解决线性不可分问题等。一般认为,明斯基的这一判断直接导致了人工智能的冬天,一直持续到1980年代中期。

神经网络与深度学习第4章多层感知机4.1多层感知机的缘起4.2再识激活函数4.2.1Sigmoid函数4.2.2ReLU函数4.3网络结构与信息流动4.4反向传播算法4.4.1反向传播算法原理4.4.2反向传播算法4.5自动梯度计算4.5.1自动微分4.5.2计算图4.6多层感知机的应用实例4.6.1利用多层感知机实现二分类4.6.2利用多层感知机实现手写数字识别4.1多层感知机的缘起

4.1多层感知机的缘起多层感知机拥有更强的表达能力,可以实现非线性分类任务。复杂的结构使得多层感知机的训练难度增大。鲁梅哈特和麦克勒兰德(JamesMcClelland)尝试用Sigmoid函数近似感知机的线性阈值单元,并结合维德诺和霍夫在ADALINE中采用的梯度下降方法进行训练。20世纪80年代中期,鲁梅哈特、辛顿在《并行分布式处理》(ParallelDistributedProcessing,PDP)中引入反向传播算法,并与威廉姆斯一起在《自然》杂志发表了相关论文,这标志着多层感知机模型的成熟。4.2再识激活函数激活函数一般应满足非线性连续可导激活函数及其导数容易计算激活函数导数的值域在合适的范围内4.2再识激活函数

4.2再识激活函数

4.2再识激活函数

更多激活函数带泄露的ReLU(leakyReLU)指数线性单元(exponentiallinearunit,ELU)softplus函数……4.3网络结构和信息流动

网络结构4.3网络结构和信息流动

4.3网络结构和信息流动

4.4反向传播算法

4.4反向传播算法

4.4反向传播算法

4.4反向传播算法

4.4反向传播算法反向传播算法

1.2.3.

4.5.6.7.8.4.4反向传播算法反向传播算法

9.10.11.12.13.

14.15.16.4.5自动梯度计算自动微分自动微分通过将数值计算分解成加减乘除等基本运算和一些初等函数,然后利用复合函数的链式求导法则自动计算梯度的方法。自动微分简单示例#导入torch模块importtorch#创建一个张量(tensor)x,该张量支持自动求微分:requires_grad=Truex=torch.tensor(1.0,requires_grad=True)print(x)[输出]tensor(1.,requires_grad=True)4.5自动梯度计算自动微分自动微分简单示例(Cont.)#计算y关于x的梯度y.backward()x.grad[输出]

tensor(2.)#用x创建新的变量yy=2*xprint(y)[输出]

tensor(0.,grad_fn=<MulBackward0>由x计算y所使用的运算,grad_fn=<MulBackward0>,该信息表示计算y的操作是乘法运算。求y关于x的梯度。4.5自动梯度计算自动微分自动微分简单示例(Cont.)#其他基本运算(加法)x1=torch.tensor(1.0,requires_grad=True)z=2+x1print(z)z.backward()x1.grad[输出]

tensor(3.,grad_fn=<AddBackward0>)tensor(1.)4.5自动梯度计算自动微分自动微分简单示例(Cont.)#基本运算的复合x2=torch.tensor(1.0,requires_grad=True)y2=(x2-1)*x2*(x2+2)print(y2)y2.backward()x2.grad[输出]

tensor(0.,grad_fn=<MulBackward0>)tensor(3.)4.5自动梯度计算自动微分自动微分简单示例(Cont.)#初等函数x4=torch.tensor(2.0,requires_grad=True)y4=torch.exp(x4)print(y4)y4.backward()x4.grad[输出]

tensor(7.3891,grad_fn=<ExpBackward0>)tensor(7.3891)4.5自动梯度计算计算图张量计算的依赖关系通过计算图实现。计算图将数学运算图形化表示。运算一般由初等函数和简单的基本运算依照简单的运算规则复合而成,运算中出现的每个函数和基本运算都被表示成非叶子节点,非叶子节点的子节点仍然可以是非叶子节点,运算中的常量和变量表示为叶子节点。4.5自动梯度计算

+3^2xzy*2h1h2h34.5自动梯度计算

+3^2xzy*2h1h2h3

函数导数4.5自动梯度计算计算图对应自动梯度计算的程序实现x=torch.tensor(1.0,requires_grad=True)y=x*xz=2*y+3.0print(x)print(y)print(z)z.backward()x.grad[输出]

tensor(1.,requires_grad=True)tensor(1.,grad_fn=<MulBackward0>)tensor(5.,grad_fn=<AddBackward0>)tensor(4.)4.5自动梯度计算

*-1*xz+bh1h2h3wexph4+h5/h6114.6多层感知机的应用实例利用多层感知机实现二分类问题描述现有声纳数据集,该数据集是从沙质海床上的金属圆柱体(代表水雷)和圆柱状岩石收集的声纳信号,共有208个实例,其中111个来自于金属圆柱体,97个来自于岩石。数据共有61列,包括60个特征信息和1个标签;特征是从不同角度返回的信号强度,为0~1的连续值;标签有两个值,“R”代表岩石,“M”代表金属。要求利用多层感知机构建一个分类器,根据这些特征来判别目标对象是岩石还是金属圆柱体(水雷)。4.6多层感知机的应用实例利用多层感知机实现二分类基本步骤加载数据。包含数据的预处理、数据的规范化和训练集、验证集和测试集的划分;设计网络。主要利用选定的机器学习平台或者框架进行网络结构的设计,并选择超参数;模型评估与选择。往往通过交叉验证的方法评估不同结构或者超参数构造的模型的优劣;测试与评价。在在测试集运行模型,并利用混淆矩阵、ROC曲线等对泛化能力进行评价。4.6多层感知机的应用实例利用多层感知机实现二分类加载数据importpandasaspd#利用Pandas包加载本地数据data=pd.read_csv(".\\data\\sonar.csv",header=None)X=data.iloc[:,0:60]y=data.iloc[:,60]

fromsklearn.preprocessingimportLabelEncoder#标签“M”和“R”分别转换为“1”和“0”encoder=LabelEncoder()encoder.fit(y)y=encoder.transform(y)

4.6多层感知机的应用实例利用多层感知机实现二分类加载数据importtorch#将特征和标签转换成张量X=torch.tensor(X.values,dtype=torch.float32)y=torch.tensor(y,dtype=torch.float32).reshape(-1,1)不知道张量的shape属性是多少,但是想让其变成只有一列,行数n不知道具体为多少,通过`reshape(-1,1)`,自动计算出行数,新的张量shape属性为(n,1)。4.6多层感知机的应用实例利用多层感知机实现二分类设计网络PyTorch中,torch.nn是专门为神经网络设计提供的模块化接口,其中nn.Module类包含网络各层的定义和前馈函数forward(),用户通过定义nn.Module类的子类构建自己的网络。网络结构三层:输入层60个神经元;隐含层:180个神经元;输出层:1个神经元,其值在0~1之间,表示是目标是水雷的概率或者置信度。隐含层激活函数:ReLU函数;输出层激活函数:Logistic函数。4.6多层感知机的应用实例利用多层感知机实现二分类设计网络#定义模型(宽模型)importtorch.nnasnn#网络结构输入60

180

1输出classWide(nn.Module):

def__init__(self):super().__init__()

self.hidden=nn.Linear(60,180)

self.relu=nn.ReLU()

self.output=nn.Linear(180,1)

self.sigmoid=nn.Sigmoid()

defforward(self,x):x=self.relu(self.hidden(x))x=self.sigmoid(self.output(x))

returnx4.6多层感知机的应用实例利用多层感知机实现二分类设计网络一个更深的网路包含三个隐含层,每个隐含层均有60个神经元;两个模型的参数数量相当,宽模型111

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论