看懂本文,入门神经网络Neural Network
神经网络(Neural Network)1.1图片
每一个图片都是三维数组,每个像素的值为0-255,如
https://i-blog.csdnimg.cn/direct/2f591cf0aada4a4ebbfaaf6afa0b1d55.png
训练集Training Dataset:“上课学的知识”,用于训练模子得到参数
验证集Validation Dataset:“课后习题”,用于纠正和强化知识点,用来评估差别超参数训练出的模子效果,从而优化模子
测试机 Test Dataset:“期末考试”,用于评估最终模子效果
比方:已知T1(x1,y1)、T2(x2,y2)、T3(x3,y3)三个点,使用T1,T2得出y=ax+b直线,这个T1,T2就是训练集,他们参与了模子的训练得到了参数a,b。将x=x3代入得到y3’ ,比力输出y3’ 与标签值y3,就能权衡模子的好坏,T3参与了模子评估,T3是测试集。a,b就是训练的目的,但是,在训练模子前,要设定其他参数,如选用哪个函数空间?用什么损失函数来权衡输出与标签之间的差异?要接纳哪种优化算法?等等这些问题计划的参数都是必要提取计划的超参数。可以使用验证集去寻找最优模子。
训练集训练模子得到参数后,验证集在这个参数和超参数下训练得到的模子进行评估,并找到最优的一组超参数,然后将超参数固定,再拿到训练集上重新训练模子,最后由测试集评估最终模子性能
1.2线性函数(得分函数)
https://i-blog.csdnimg.cn/direct/a588ebb8c2ee458b8cf87e7175dde74b.png
如,这个猫是32*32*3的像素构成,此中某些点是促进成猫的,有些像素点是抑制成为猫的,函数f(x,W)中,x表现像素点,W表现像素点的权重(得分,即促猫的程度)。
f(x,W)=Wx+b,比方这个图片32*32*3=3072,视为3072*1的矩阵,对于猫的权重矩阵W1=1*3072,对于其他的范例,有它的Wn(n为自己想要的分类数,也可以5分类,8分类等),假设这里为10(W2可以为狗,W3可以为汽车....等等)这个n取决于自己想要的分类,则总共的W为10*3072的矩阵,再乘以图片矩阵3072*1,得到10*1的得分矩阵(第一项为W1猫的得分,第二项为W2狗的得分......),Wx起到的是决定性作用,背面的b为偏置参数,起到微调的作用(这个例子b为10*1的矩阵)
https://i-blog.csdnimg.cn/direct/5f3a7a7635774555af183cbce8f45fba.png
综上,对于特定的图片,它的x是不会变化的,而W权重矩阵是必要给出的,整个呆板学习、深度学习就是在寻找更好的W,来输出更精确的效果。神经网络就是不停在优化W。每个特征点是独立的,则每个特征点对应的权重参数Wi的每个值也是独立的。
1.3损失函数
得分矩阵的数值如何来说明问题?可以用损失函数来描述。神经网络可以做分类可以做回归,区别在于他们的损失函数差别,而网络结构是不改变的。
https://i-blog.csdnimg.cn/direct/60601dcefd6e4799b5f16ab61495aaf4.png
如上图,第一列中,图片明明是猫,却是汽车的得分最高,定义了如上的损失函数,sj 为错误值,syi 为精确值,经过损失函数的计算,可得出一个数据,能够表现预测的精确性(表现是否区分开)。比方第一列猫图片的计算(右上角)。损失函数背面的+1表现的是容忍程度(一般为∆ ,用∆ 表现容忍程度),如第一列,cat为3.2,car为3.15,没有+∆ 计算后值为0,即没有损失了,效果会欠好,如有+1 ,计算后为1.05,表明识别环境。损失函数越小越好。
右上角第一个计算后值为2.9就为loss值;第二个计算后为0(car比其他值都大1),表明做的很好,loss值为0;第三个计算后值为10.9,表明做的很差
1.3.1注意问题
损失函数值雷同,两个模子效果一样吗?
https://i-blog.csdnimg.cn/direct/dfba081c28ec4fef80ea9c16645d461c.png
如上图,w1和w2与x计算后值都为1,但是w1过于关注x的第一参数,会导致过拟合的现象,这是不想要的。以是要加上正则化惩罚项。
https://i-blog.csdnimg.cn/direct/b14e2e2bf65a4a708d4475196a5258b8.png
如上 https://i-blog.csdnimg.cn/direct/e9875a314efe4f2680619e67786e1438.png称为data_loss,即为数据在当前损失函数的损失,正则化惩罚项为模子的权重参数带来的损失,直接用平方来表现,λ 表现惩罚系数,它越大,表现你不盼望过拟合(正则化惩罚项和数据损失是矛盾的,数据损失是要预测值与真实值越来越接近,就要满足每一个样本需求,正则化惩罚项要求不要满足每一个,以是引入λ )。
我们盼望模子不要太复杂,由于神经网络太强大了,过拟合风险很高。过拟合指的是模子只关注于局部特征,没有放眼所有的位置。相应的就是泛化能力。
1.4 Softmax分类器
现在学的得到的是得分值和损失函数值,我们想要的是概率值
https://i-blog.csdnimg.cn/direct/2b26ce17d6ac4641978c59148dedffa6.png
如上图,得分矩阵中某些值差距很小,先进行一次指数运算放大差距(负数会变为正数且值很小),然后进行归一化转为概率(0.13=24.5/24.5+164.0+0.18 ),再进行对数函数计算损失值。详细公式如下:
https://i-blog.csdnimg.cn/direct/21f8d3cdb0af456dab6795ac1cd76a2d.png
对数运算,-log(0.13)会得出一个较大的值,而越接近1,loss的值越小,越接近0,这就是对数函数的特点。
1.5前向流传、反向流传
https://i-blog.csdnimg.cn/direct/6c7a342ba6df40c39952f278e619cb8e.png
1.5.1前向流传
经过以上过程,由一个w和x最终得到loss,就为前向流传。神经网络的目的是更新权重矩阵w,比如现在的loss很高,现在要更新w将loss降低,这个过程就是反向流传(梯度下降)
1.5.2梯度下降算法(更新W)
使用公式https://i-blog.csdnimg.cn/direct/cd0e2cca5a374daa95b17ea19326c3df.png进行参数更新(J(w)是损失函数),寻求最小的loss,a为人为设定的值(超参数),称为学习率,a一般取0.05或0.001,这是一个履历值,有些论文使其变化,刚开始较大,背面越来越小,使之取向最小loss。
同理,b的更新方式是https://i-blog.csdnimg.cn/direct/71d5b2c881514e3bb0d42129b38472b4.png
1.6神经网络
https://i-blog.csdnimg.cn/direct/99860ba9e8ba4b289e574a47a59ef69a.png
①input layer输入层,表现输入的 特征个数(小猫图片就有32*32*3=3072个圈)
②hidden layer1隐层1,它与输入层每一个圈全部连接,称为全连接,将输入层转化为更多的特征,由输入层转化为隐层1,经过了矩阵乘法(输入层为1*3,隐层1是1*4,则W1矩阵是3*4的矩阵),即就是输入层经过了权重矩阵W1进行了特征提取
③hidden layer2隐层2,与隐层1也是全连接,经过 了W2矩阵(这里是4*4的矩阵)的特征提取。一般环境隐层有很多层。这些隐层的目的就是为了让计算机更好的识别
④output layer输出层,隐层2乘以W3(这里是4*1的矩阵),得出预测效果。最终效果取决于W1,W2,W3好欠好,由于输入X是固定的
⑤每次前一项与W相乘后,要进行一次非线性变换(X与W1组合后,进行非线性变换,再与W2进行组合)。这就是为什么不直接用一个W=W1*W2*W3直接变换。非线性函数有很多,只要不是线性的就行。如下:非线性函数是max(0,Wx)
https://i-blog.csdnimg.cn/direct/26d3b93227b8429f963d8ca117bf72c2.png
注意,神经元并不是越多越好,比如这里,隐层1为4个特征,也可以为5,越大更容易拟合,但是速率会相应的下降
正则化的影响:越小越过拟合
https://i-blog.csdnimg.cn/direct/007a81672868409ba6ba57f0d1a2923b.png
神经元数目的影响,隐层数目:一般为64,128,256,512等,越大越过拟合
https://i-blog.csdnimg.cn/direct/15cb2d5d2e564aa4b74224f14d8c7adf.png
1.7激活函数
激活函数是神经网络中比力紧张的部门,常用的有Sigmoid,Relu,Tanh等。最开始一般为Sigmoid函数,但是它靠两边的部门梯度接近0,这是个问题,称为梯度消散。
https://i-blog.csdnimg.cn/direct/72c813fe1fe24f1f97ff985831dd9251.png
Relu函数常常使用,其他环境也是Relu函数的变体。激活函数就是使用在每次乘法之后的非线性函数,用于非线性变换。
1.8数据预处理
对于输入数据,先进行数据中心化(实际坐标值-均值),再进行放缩或扩充(除以标准差)
https://i-blog.csdnimg.cn/direct/836c4f1c513c4de6b4eaccd29f1db881.png
1.9 参数初始化
比如权重矩阵是3*4的矩阵,每个都有(通过策略天生的)随机的值W=0.01*np.random.randn(D,H),这里D,H为3,4,乘以0.01是为了权重参数值不要浮动大。
1.10 DROP-OUT
由于神经网络过于强大,容易出现过拟合的环境,这也是比年来致力于办理的问题,前面提出了正则化的办理方法(R(w)),还有方法就是DROP-OUT。
https://i-blog.csdnimg.cn/direct/ef845ec5ddb4489d8ba3c1750b60b68f.png
上图左边是正常神经网络,每个都是全连接,drop-out就是在每一层随机杀死部门神经元,每次训练在每一层都是随机的杀死神经元(而不是说直接去除它们)。这只是在训练阶段进行,测试阶段直接使用,不要杀死。
1.11图像增强
如果数据集很少,就要考虑图像增强。目的是增长相似的数据集,并且防止过拟合,使网络更强健,这些操作都是再Alexnet上提出的。
1.11.1水平翻转
https://i-blog.csdnimg.cn/direct/0da0f138b61045678310bc6402113442.png
1.11.2随机旋转
图片随机旋转(-45°,45°)的度数
1.11.3随机裁剪(比力好用)
如227*227的图片,裁剪成224*224,再每次一单元的滑动,最终得到9张类似的图片
https://i-blog.csdnimg.cn/direct/7ac7defe55b04fb29731739e02b748f6.png
1.11.3 PCA操作
更改亮度、对比度、饱和度、色相等等
1.11.4 转换为灰度
比方RGB转化为RRR,GGG,BBB等,或转化为灰度图。
注意:1.11.3和1.11.4的操作使用的很少。
总结
以上就是神经网络的底子知识,看懂后能敏捷入门神经网络,是理解更复杂的网络如CNN(卷积神经网络)的条件,学会后建议直接学习CNN卷积神经网络。也可以看Alexnet,vgg,resnet等经典网络,这些也是基于卷积神经网络实现的。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]