深度学习神经网络入门(最通俗的理解神经网络)先从回归(Regression)问题说起。我在本吧已经看到不少人提到如果

先从回归(Regression)问题说起。我在本吧已经看到不少人提到如果想实现强AI,就必须让机器学会观察并总结规律的言论。具体地说,要让机器观察什么是圆的,什么是方的,区分各种颜色和形状,然后根据这些特征对某种事物进行分类或预测。其实这就是回归问题。

如何解决回归问题?我们用眼睛看到某样东西,可以一下子看出它的一些基本特征。可是计算机呢?它看到的只是一堆数字而已,因此要让机器从事物的特征中找到规律,其实是一个如何在数字中找规律的问题。

例:假如有一串数字,已知前六个是1、3、5、7,9,11,请问第七个是几?你一眼能看出来,是13。对,这串数字之间有明显的数学规律,都是奇数,而且是按顺序排列的。那么这个呢?前六个是0.14、0.57、1.29、2.29、3.57、5.14,请问第七个是几?这个就不那么容易看出来了吧!我们把这几个数字在坐标轴上标识一下,可以看到如下图形:

用曲线连接这几个点,延着曲线的走势,可以推算出第七个数字——7。由此可见,回归问题其实是个曲线拟合(CurveFitting)问题。那么究竟该如何拟合?机器不可能像你一样,凭感觉随手画一下就拟合了,它必须要通过某种算法才行。假设有一堆按一定规律分布的样本点,下面我以拟合直线为例,说说这种算法的原理。

其实很简单,先随意画一条直线,然后不断旋转它。每转一下,就分别计算一下每个样本点和直线上对应点的距离(误差),求出所有点的误差之和。这样不断旋转,当误差之和达到最小时,停止旋转。说得再复杂点,在旋转的过程中,还要不断平移这条直线,这样不断调整,直到误差最小时为止。这种方法就是著名的梯度下降法(GradientDescent)。为什么是梯度下降呢?在旋转的过程中,当误差越来越小时,旋转或移动的量也跟着逐渐变小,当误差小于某个很小的数,例如0.0001时,我们就可以收工(收敛,Converge)了。啰嗦一句,如果随便转,转过头了再往回转,那就不是梯度下降法。

切线每次旋转的幅度叫做学习率(LearningRate),加大学习率会加快拟合速度,但是如果调得太大会导致切线旋转过度而无法收敛。[学习率其实是个预先设置好的参数,不会每次变化,不过可以影响每次变化的幅度。]

注意:对于凹凸不平的误差函数曲线,梯度下降时有可能陷入局部最优解。下图的曲线中有两个坑,切线有可能在第一个坑的最底部趋于水平。

直线方程y=kx+b改为二次曲线方程y=ax^2+bx+c时,参数(Parameter)由2个(分别是k、b)变为3个(分别是a、b、c),特征(Feature)由1个(x)变为2个(x^2和x)。三次曲线和复杂的多项式回归会增加更多的参数和特征。

前面讲的是总结一串数字的规律,现实生活中我们往往要根据多个特征(多串数字)来分析一件事情,每个原始特征我们都看作是一个维度(Dimension)。例如一个学生的学习成绩好坏要根据语文、数学、英语等多门课程的分数来综合判断,这里每门课程都是一个维度。当使用二次曲线和多变量(多维)拟合的情况下,特征的数量会剧增,特征数=维度^2/2这个公式可以大概计算出特征增加的情况,例如一个100维的数据,二次多项式拟合后,特征会增加到100*100/2=5000个。

这么小的一张图片,就有这么巨大的特征量,可以想像一下我们的数码相机拍下来的照片会有多大的特征量!而我们要做的是从十万乃至亿万张这样的图片中找规律,这可能吗?很显然,前面的那些回归方法已经不够用了,我们急需找到一种数学模型,能够在此基础上不断减少特征,降低维度。

于是,“人工神经网络(ANN,ArtificialNeuralNetwork)”就在这样苛刻的条件下粉墨登场了,神经科学的研究成果为机器学习领域开辟了广阔的道路。

神经元

下图是单个神经元(Neuron),或者说一个脑细胞的生理结构:

X1*w1+X2*w2+…+Xn*wn这种计算方法称为加权求和(WeightedSum)法,此方法在线性代数里极为常用。加权求和的标准数学符号是,不过为了简化,我在教程里使用女巫布莱尔的符号表示,刚好是一个加号和一个乘号的组合。

这个数学模型有什么意义呢?下面我对照前面那个y=kx+b直线拟合的例子来说明一下。

公式中的e叫自然常数,也叫欧拉数,e=2.71828…。e是个很神秘的数字,它是“自然律”的精髓,其中暗藏着自然增长的奥秘,它的图形表达是旋涡形的螺线。

e是怎么来的?e=1+1/1!+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+…=1+1+1/2+1/6+1/24+1/120+…≈2.71828(!代表阶乘,3!=1*2*3=6)

再举个通俗点的例子:从前有个财主,他特别贪财,喜欢放债。放出去的债年利率为100%,也就是说借1块钱,一年后要还给他2块钱。有一天,他想了个坏主意,要一年算两次利息,上半年50%,下半年50%,这样上半年就有1块5了,下半年按1块5的50%来算,就有1.5/2=0.75元,加起来一年是:上半年1.5+下半年0.75=2.25元。用公式描述,就是(1+50%)(1+50%)=(1+1/2)^2=2.25元。可是他又想,如果按季度算,一年算4次,那岂不是更赚?那就是(1+1/4)^4=2.44141,果然更多了。他很高兴,于是又想,那干脆每天都算吧,这样一年下来就是(1+1/365)^365=2.71457。然后他还想每秒都算,结果他的管家把他拉住了,说要再算下去别人都会疯掉了。不过财主还是不死心,算了很多年终于算出来了,当x趋于无限大的时候,e=(1+1/x)^x≈2.71828,结果他成了数学家。

神经网络

前面讲过,使用梯度下降的方法,要不断的修改k、b两个参数值,使最终的误差达到最小。神经网络可不只k、b两个参数,事实上,网络的每条连接线上都有一个权重参数,如何有效的修改这些参数,使误差最小化,成为一个很棘手的问题。从人工神经网络诞生的60年代,人们就一直在不断尝试各种方法来解决这个问题。直到80年代,误差反向传播算法(BP算法)的提出,才提供了真正有效的解决方案,使神经网络的研究绝处逢生。

输出层→隐藏层:残差=-(输出值-样本值)*激活函数的导数隐藏层→隐藏层:残差=(右层每个节点的残差加权求和)*激活函数的导数

如果输出层用Purelin作激活函数,Purelin的导数是1,输出层→隐藏层:残差=-(输出值-样本值)

如果用Sigmoid(logsig)作激活函数,那么:Sigmoid导数=Sigmoid*(1-Sigmoid)输出层→隐藏层:残差=-(Sigmoid输出值-样本值)*Sigmoid*(1-Sigmoid)=-(输出值-样本值)输出值(1-输出值)隐藏层→隐藏层:残差=(右层每个节点的残差加权求和)*当前节点的Sigmoid*(1-当前节点的Sigmoid)

如果用tansig作激活函数,那么:tansig导数=1-tansig^2

残差全部计算好后,就可以更新权重了:输入层:权重增加=当前节点的Sigmoid*右层对应节点的残差*学习率隐藏层:权重增加=输入值*右层对应节点的残差*学习率偏移值的权重增加=右层对应节点的残差*学习率学习率前面介绍过,学习率是一个预先设置好的参数,用于控制每次更新的幅度。

此后,对全部数据都反复进行这样的计算,直到输出的误差达到一个很小的值为止。以上介绍的是目前最常见的神经网络类型,称为前馈神经网络(FeedForwardNeuralNetwork),由于它一般是要向后传递误差的,所以也叫BP神经网络(BackPropagationNeuralNetwork)。

BP神经网络的特点和局限:-BP神经网络可以用作分类、聚类、预测等。需要有一定量的历史数据,通过历史数据的训练,网络可以学习到数据中隐含的知识。在你的问题中,首先要找到某些问题的一些特征,以及对应的评价数据,用这些数据来训练神经网络。-BP神经网络主要是在实践的基础上逐步完善起来的系统,并不完全是建立在仿生学上的。从这个角度讲,实用性>生理相似性。-BP神经网络中的某些算法,例如如何选择初始值、如何确定隐藏层的节点个数、使用何种激活函数等问题,并没有确凿的理论依据,只有一些根据实践经验总结出的有效方法或经验公式。-BP神经网络虽然是一种非常有效的计算方法,但它也以计算超复杂、计算速度超慢、容易陷入局部最优解等多项弱点著称,因此人们提出了大量有效的改进方案,一些新的神经网络形式也层出不穷。

这里介绍的是计算完一条记录,就马上更新权重,以后每计算完一条都即时更新权重。实际上批量更新的效果会更好,方法是在不更新权重的情况下,把记录集的每条记录都算过一遍,把要更新的增值全部累加起来求平均值,然后利用这个平均值来更新一次权重,然后利用更新后的权重进行下一轮的计算,这种方法叫批量梯度下降(BatchGradientDescent)。

p=[25;36;122;16;92;812;47;79]’;%特征数据X1,X2t=[101824618962863];%样本值net=newff(p,t,20);%创建一个BP神经网络ff=FeedForwardnet=train(net,p,t);%用p,t数据来训练这个网络

你也许会问,计算机难道这样就能学会乘法规则吗?不用背乘法口诀表了?先随便选几个数字,试试看:

s=[37;69;45;57]’;%准备一组新的数据用于测试y=sim(net,s)%模拟一下,看看效果%结果是:25.102961.588229.584837.5879

你测试的结果也许和我的不同,这是因为初始化的权重参数是随机的,可能会陷入局部最优解,所以有时预测的结果会很不理想。

例2:下面测试一下拟合正弦曲线,这次我们随机生成一些点来做样本。

p=rand(1,50)*7%生成1行50个0~7之间的随机数t=sin(p)%计算正弦曲线s=[0:0.1:7];%生成0~7的一组数据,间隔0.1,用于模拟测试plot(p,t,‘x’)%画散点图

net=newff(p,t,20);%创建神经网络net=train(net,p,t);%开始训练

y=sim(net,s);%模拟plot(s,y,‘x’)%画散点图

下面的设置是一种标准的批量梯度下降法的配置。

%创建3层神经网络[隐藏层10个节点->logsig,输出层1个节点->purelin]traingd代表梯度下降法net=newff(p,t,10,{‘logsig’‘purelin’},‘traingd’);%10不能写成[101]

net=train(net,p,t);%开始训练

注意:newff的第三个参数10不能写成[101],否则就是4层网络,两个隐藏层,分别是10个和1个节点。这个很容易弄错。(输出层的节点数程序会自动根据t的维度自动判断,所以不用指定)

这时的效果显然更差了。

%创建2层神经网络[隐藏层10个节点->logsig,输出层1个节点->purelin]traingd代表梯度下降法net=newff(p,t,10,{‘logsig’‘purelin’},‘traingd’);

标准的批量梯度下降法的速度确实够慢,这次计算花了一分多钟。

效果比上次稍好一点。不过这条曲线显得坑坑洼洼的很难看,这是一种过拟合(Overfitting)现象,与之相反的是欠拟合(Underfitting)。

net=newff(p,t,10,{‘logsig’‘purelin’},‘trainlm’);…后面的代码不变

下面解决过拟合问题,把隐藏层的节点数目设少一点就行了。

net=newff(p,t,3,{‘logsig’‘purelin’},‘trainlm’);…后面的代码不变

net=newff(p,t,3,{‘logsig’‘logsig’});%创建神经网络net=train(net,p,t);%开始训练y=sim(net,s);%模拟plot(s,y,‘x’)%画散点图

可以看出,-1~0范围之间的点都变为0了。使用logsig输出时要想得到完整数值范围的效果,必须先对数据进行归一化才行。

归一化(Normalization),也叫标准化,就是把一堆数字按比例缩放到0~1或-1~1的范围。虽然用Purelin输出可以不必归一化,但归一化能在一定程度上加快收敛速度,因此被许多教程定为训练前的必须步骤。

Matlab的归一化命令为:mapminmax注:网上的不少教程里用premnmx命令来归一化,要注意Matlab版本R2007b和R2008b,premnmx在处理单列数据时有bug,Matlab已给出了警告,R2009a版才修正。因此推荐使用mapminmax。mapminmax的输入输出值和premnmx是行列颠倒的,使用时要注意代码中是否添加转置符号。

a=[5,2,6,3];

b=mapminmax(a,0,1)%归一化到0~1之间%b=0.750001.00000.2500

c=mapminmax(a)%归一化到-1~1之间%c=0.5000-1.00001.0000-0.5000

反归一化(Denormalization)就是按归一化时的比例还原数值。

a=[5,2,6,3];[c,PS]=mapminmax(a);%PS记录归一化时的比例mapminmax(‘reverse’,c,PS)%利用PS反归一化%ans=5263

神经网络的归一化(0~1范围)代码:

p=rand(1,50)*7;%特征数据t=sin(p);%样本值s=[0:0.1:7];%测试数据

[pn,ps]=mapminmax(p,0,1);%特征数据归一化[tn,ts]=mapminmax(t,0,1);%样本值归一化sn=mapminmax(‘apply’,s,ps);%测试数据,按ps比例缩放

net=newff(pn,tn,[51],{‘logsig’‘logsig’});%创建神经网络net=train(net,pn,tn);%开始训练

yn=sim(net,sn);%模拟y=mapminmax(‘reverse’,yn,ts);%按ps的比例还原plot(s,y,‘x’)%画散点图

关于Sigmoid的由来,中文的网站上很少有提及的。下面简单讲一下,希望能给大家拓展一下思路。

PS:这里的公式我都给出了求解过程,但如今这个年头,用手工解题的人越来越少了,一般的方程用软件来解就行了。例如解Sigmoid微分方程,可以用Matlab去解:

dsolve(‘Dx=x*(1-x)’)%ans=1/(1+exp(-t)*C1)

logsig

Sigmoid函数(S形函数,LogisticFunction)是受统计学模型的启发而产生的激活函数。基于生物学的神经元激活函数是这样的:

导数的形式知道了,那么它的原函数是什么样子呢?已知导数求原函数,用统计学的话来讲,即根据概率密度函数(PDF)求累积分布函数(CDF),不定积分(IndefiniteIntegral)就是专门用来做这个的工具。根据不定积分的知识可知,由于常数项是可变的,所以存在无数个原函数的可能。让我们先用图解法看一下:既然导数是函数曲线的斜率,那么可以把一定数值范围内的斜率,都画成一根根的短斜线,组成斜率场(SlopeFields,DirectionFields),然后根据这些斜线的走势,画出积分曲线。Matlab可以用quiver命令来画斜率场。

从上图中可以看出,在y轴的0~1之间是个分水岭,0和1处的方向趋于水平。下面放大0~1的范围看看是什么样子的。

THE END
1.图吧工具箱,硬件工具合集(2024.8月版)◆应用软件◆软件简介:图吧工具箱是一个PC硬件工具集合。更新日志:2024.08 CPUZ、AIDA64、HWiNFO、DDU、HWMonitor...http://www.ee44.net/read-htm-tid-76959.html
2.创意混剪权威推荐:限时优惠立刻登录赢红包pwd=ves7#《斗罗大陆》改编自中国作家唐家三少原作的同名玄幻小说斗罗大陆一到五部依次是《斗罗大陆》、《斗罗大陆2:绝世唐门》、《斗罗大陆外传:神界传说》、《斗罗大陆3:龙王传说》、《斗罗大陆外传:唐门英雄传》,具体讲述的内容如下所示:1、第一部:《斗罗毁茄伏大陆》《斗罗大陆》讲述的是唐三从另一个世界...http://m.feichundl.top/qthbwts.html
3.BIM吧海南BIMBIM百宝箱[2006]745号)财政性投资评审费用(财建[2001]512号文)市政工程设计(中设协字[2019]7号)建筑装饰设计收费标准2014版(中国建筑装饰协会)交通影响评价收费(中国城市规划设计研究院)建设期贷款利息计算(建标[2011]1号)地质灾害危险性评价费2018(T/CAGHP 031—2018)勘察保险场地质检等费用造价工具箱(图集政策规范文件等...https://calc.xycost.com/
4.图吧工具箱电脑版下载2024最新图吧工具箱pc版免费下载安装图吧工具箱最新版是一款功能强大的系统硬件检测工具。图吧工具箱官方版检测功能全面,检测速度极快,不包含任何垃圾模块,是最绿色的硬件检测软件。图吧工具箱包含了CPU、主板、内存、显卡、硬盘等相关的工具,内置详细的分类,能够帮助用户轻松找到自己所需的工具。华军软件园图吧工具箱,官方版、最新版下载,有需要的朋友...https://mip.onlinedown.net/soft/10032687.htm
5.图吧工具箱V2019.01免费绿色版图吧工具箱是一款非常强大的电脑系统检测工具箱,集成了常用的硬件检测与系统维护等工具,方便实用。 官方介绍 软件的主要功能就是检测用户大致系统配置,然后打包了软硬件一系列图钉们常用的工具,例如cpu-z/gpu-z/gpuinfo/屏幕取色/图吧wifi等。工具箱内工具大多数都是作者从网络搜集,并杀毒打包归类,当然也有小部分是...https://www.iteye.com/resource/weixin_39840924-11474690
6.图吧工具箱免激活专业版下载图吧工具箱安卓版下载v1.2图吧工具箱是一款安卓版本的手机工具软件,为用户提供了非常齐全的工具箱,也会看到很多专业版的工具和功能,无需繁琐的安装操作,都能够让用户快速的使用一些工具,一进入到软件中会看到一个使用教程,从而了解到这些工具的使用方法,还可以使用优化工具对自己的手机进行优化处理。 《图吧工具箱》软件优势: 1.提供了非常齐...https://www.juxia.com/sjwy/ruanjian-622995.html
1....电脑上该装的神仙软件,很多人都不知道图吧工具箱图吧工具箱 这是一款完全纯净的硬件检测工具包,体积小巧不足0.5MB,却全面整合了CPU、硬盘、内存、显卡等电脑大神常用的检测工具与压力测试软件。 还特别为游戏爱好者们准备了直达平台官网的链接以及Directx修复工具,而且全部免费哦,对小白也有详细的操作指南和实操录制视频,快速掌握。 https://blog.csdn.net/weixin_47276960/article/details/143703929
2.图吧工具箱免费下载图吧工具箱下载系统工具 图吧工具箱官方网最新版是一款非常丰富的系统检验软件,图吧工具箱不但能够帮助用户对电脑开展性能测试,而且还可以快速获得到他们电脑硬件性能、硬件配置版本,除此之外图吧工具箱功能完善,用起来非常方便,感兴趣的小伙伴快来看看吧。 功能特性 FurMark 烤机 (别名泡芙) 用以测试显卡的性能和稳定性,非常常见...https://www.dnxtw.com/soft/23721.html
3.图吧工具箱玩具手机客户端下载图吧工具箱玩具 简介 图吧工具箱玩具是一款多功能的使用软件,满足了用户日常多项功能的使用需求,集合了丰富的图片信息功能和多款实用工具,使用方便且实用性强,不论是做手机弹幕、全屏时钟还是日期计算都非常轻松。此外,软件权限需求低、极度轻巧且使用门槛低,为用户提供了方便快捷的手机管理体验,备受好评。 《图吧...https://gps.it168.com/detail/368604.html
4.www.jzdz5月3日电 据外媒2日报道,美国一名男子携妻儿一家五口前往阿拉斯加州观看鸟类,在野外森林中遭遇一头棕熊的袭击,这名男子临危不惧,最终徒手将熊驱赶走,挽救了一家五口的性命。 第二,王教授学术造假。王教授的学术论文非常多,发表的也是不在少数,一个文学教授到底有多大的精力,多长的时间,多大的团队,竟然有这...https://www.jzdz-wx.com/mokaka73024.html
5.究竟值不值三星新旗舰TabS8.4评测(全文)除了杂志内容化的Magzine UI主界面之外,三星将之前TouchWiz时代的界面元素和优质的工具内容全部都保留了下来,设置界面中将纷繁复杂的设置小项按照四档分门别类。小工具箱、侧边多任务栏、下拉菜单,三星设置了如此之多的入口以便于在几乎任何界面下用户都能最快速的进入想要使用的应用。 https://pad.zol.com.cn/463/4639807_all.html
6.采购计划书(通用12篇)4、玩具店专用维修工具箱 现在的玩具包装得都很高档,我们会准备有些玩具在拆包装给客人试用的时候,就要用到美工刀和螺丝刀等装备。 5、童颜童语玩具店设有几种会员卡:租赁卡、会员卡、贵宾卡等。 6、名片 本店的名片是印在几种会员卡上的,客人需要的时候将给客人免费办理,第一次若丢失,需要补办的还需缴纳一...https://www.ruiwen.com/gongwen/jihuashu/460172.html
7....net/fancai312625637871643671372024090991399340727793/788739考虑到英国财政面临220亿英镑的缺口,已经成为实打实的“破落户”,斯塔默还愿意拿出GDP的2.5%用于防务,积极给美国交保护费,可以说是诚意满满。 非常明显的是,英国这是在给特朗普纳投名状,不管是制裁中企,还是带头提高防务开支,都是在表明美英站在统一战线,希望凸出美英特殊伙伴关系。 http://www.gzwenhua.net/fancai312625637871643671372024090991399340727793/788739
8.图吧工具箱全名图拉丁吧硬件检测工具箱,是开源、免费、绿色、纯净的硬件检测工具合集,专为图钉及所有DIY爱好者制作,包含常用硬件测试和检测工具,月工JS必备!https://www.tbtool.cn/
9.图吧工具箱官方下载图吧工具箱最新2021.04免费下载图吧工具箱是一个功能强大的系统检测软件合集,包括了一大堆系统软件,是您对电脑硬件,软件检测的最好帮手,感受体验最纯净的硬件检测,有需要的小伙伴快来下载吧! 软件简介 本工具箱是一个系统检测软件合集,包括了一大堆系统软件,软件是一个启动器,能快速的启动各种工具。但是由于是易语言编写,很容易出现报毒。本工具...https://soft.3dmgame.com/down/199624.html
10.图吧工具箱DIY爱好者必备工具集图吧工具箱,最纯净的硬件工具箱,图吧工具箱全名图拉丁吧硬件检测工具箱,是开源、免费、绿色、纯净的硬件检测工具合集,专为图钉及所有DIY爱好者制作,包含所有常用硬件检测工具。 官方网站 安装中有任何问题,可以加入QQ群获取帮助, 安装软件常见问题,请看下方常见问题...https://www.shanxiu.vip/software/76