原标题:神经网络优化算法,神经网络优化算法Python
导读:
Intro...
神经网络的优化
上节回顾:
介绍了神经元、神经网络
介绍了激活函数
提到了前向传播概念
留下问题:用到的参数w和b是怎么来的,是自己随便设定的吗
本节介绍:
神经网络、反向传播的例子
损失函数和梯度下降法、学习率介绍
最重要的用途是分类
这种能自动对输入的东西进行分类的机器,就叫做分类器。分类器的输入是一个数值向量,叫做特征(向量)。
第一个例子里,分类器的输入是一堆0、1值,表示字典里的每一个词是否在邮件中出现,比如向量(1,1,0,0,0......)就表示这封邮件里只出现了两个词abandon和abnormal;
第二个例子里,分类器的输入是照片,假如每一张照片都是320x240像素的红绿蓝三通道彩色照片,那么分类器的输入就是一个长度为320x240x3=230400的向量。
分类器的输出也是数值。
第一个例子中,输出1表示邮件是垃圾邮件,输出0则说明邮件是正常邮件;
第二个例子中,输出0表示图片中是狗,输出1表示是猫。
分类器的目标就是让正确分类的比例尽可能高。一般我们需要首先收集一些样本,人为标记上正确分类结果,然后用这些标记好的数据训练分类器,训练好的分类器就可以在新来的特征向量上工作了。
这就是BP神经网络(back propagation)。
旨在得到最优的全局参数矩阵,进而将多层神经网络应用到分类或者回归任务中去。
前向传播输入信号直至输出产生误差,反向传播误差信息更新权重矩阵。
这个地方提到的误差这个概念,其实就是对应了损失函数,损失函数说白了就是计算误差的函数。
举例:线性回归:寻找一条拟合图中数据点最好的直线
把每条小竖线的长度加起来就等于我们现在通过这条直线预测出的值与实际值之间的差距
缺点:采用梯度下降法学习时,模型一开始训练学习速率非常慢
对一个多元函数求偏导,会得到多个偏导函数.这些导函数组成的向量,就是梯度;一元函数的梯度是什么?它的梯度可以理解为就是它的导数。
求解多元函数和一元函数的道理是一样的,只不过函数是一元的时候,梯度中只有一个导函数,函数是多元的时候,梯度中有多个导函数.
当我们把梯度中的所有偏导函数都变为0的时候,就可以找到每个未知数的对应解。
梯度下降中求偏导数的未知数不是x和y,而是x的参数W。
梯度下降的方向:把这一点带入到梯度函数中,结果为正,那我们就把这一点的值变小一些,同时就是让梯度变小些;当这一点带入梯度函数中的结果为负的时候,就给这一点的值增大一些。
在这个下降的过程中.因为我们并不知道哪一个点才是最低点,也没有办法来预测下降多少次才能到最低点.这里梯度下降给出的办法是:
先随便蒙一个点出来,然后根据这个点每次下降以丢丢.什么时候下降得到的值(点带入偏导函数得到的)和上一次的值基本一样,也就是相差特别特别小的时候,我们认为就到了最低点。
让点沿着梯度方向下降慢慢求得最优解的过程我们叫做学习,学习率就是用来限制他每次学习别太过"用功"的。下左图是我们所期望的,一个点按照梯度方向下降,慢慢逼近最低点,右图中展示的这个梯度值过大的时候,点下降的step就过大了,一次性迈过了最低点,导致函数无法找到最优解。学习率就是用来限制这种情况的。
更新权重的算法:每一个权重值都要减去它对应的导数和学习率的乘积
Lr代表的是学习率
简单举例
神经网络算法可以求最优解嘛
神经网络可以做优化问题,但不一定能找到最优解。
逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理;这一过程可以写成串行的指令,让计算机执行。
直观性的思维是将分布式存储的信息综合起来,忽然间产生的想法或解决问题的办法。这种思维方式的根本之点在于以下两点:
1、信息是通过神经元上的兴奋模式分布存储在网络上。
2、信息处理是通过神经元之间同时相互作用的动态过程来完成的。
神经网络:
思维学普遍认为,人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式。
人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。