概述
上一篇说了线性回归问题,也就是因变量和各个自变量都是线性关系,那么这篇文章来介绍非线性关系。
为什么需要非线性关系?
线性关系固然简单,但是简单的线性组合并不能表达出真实生活中会接触到的复杂函数。往往一个现实问题设计的自变量成百上千,而他们之间的关系也并不是简单的线性组合,这就导致了真实因变量的复杂性十分高,因而采用非线性关系可以更好地逼近现实需求。
神经网络:
我们知道,对于一个程序来说有基本公式:输入+程序=输出。
我们用一个例子来说明神经网络可以做些什么:比如你现在要根据往年的大数据预测房价,但大批量数据对于人类的分析能力而言是比较大的挑战,但是我们可以猜测影响因素,一般影响房价的因素有:大小,附近交通,附近经济......很显然的是,这个房价函数是一个多元函数,这个时候,我们直接去猜测他的函数是很不切实际的。这个时候我们可以将各项参数量化,交由神经网络去不断迭代减少误差,虽然我们不可以直接得到函数,但是我们可以获得与实际值相差无几的预测模型。
神经网络基本公式:
我们将用神经元的概念类比来理解神经网络:
一个神经元干的事:
Y=W*X+B
一堆神经元干的事
上图中,X1和X2是两个自变量,Y是最终要得到的因变量,X1和第二层4个神经元的连接权重分别为A1、A2、A3、A4(为避免图上混乱没有全部画出),X2和第二层4个神经元的连接权重分别为B1、B2、B3、B4(为避免图上混乱没有全部画出),因此第二层四个神经元的输出为:
第三层请自行类推作为复习。
我们把每条连接线上的权重以矩阵的方式组织起来就得到了权重矩阵W。
但是一般习惯上,由于网络本身的表示就像是每一层输出的都是一个列向量,因此我们将输出层的数据纵向堆叠形成列向量,而为了和新的向量进行运算,我们要将原权重矩阵进行转置,神经网络的公式变化为。
非线性关系将导致我们引出另一个概念:激活函数
假设我们有三层网络,每一层网络的权重矩阵为Wi,偏置矩阵为Bi,那么第一层的输出为Y1=W1*X+B1,第二层的输出为Y2=W2*Y1+B2,第三层的输出为Y3=W3*Y2+B3,如果我们把第三层的式子展开,则可以得到Y3=W3*(W2*(W1*X+B1)+B2)+B3。
化简之后得到Y3=W3*W2*W1*X+W3*W2*B1+W3*B2+B3,我们可以发现,因变量Y3和自变量X依旧是线性关系。因此我们引入了激活函数的概念,使得自变量与因变量之间不成线性关系,从而可以更好地表达复杂函数。
激活函数:
Sigmod函数:(将输入值映射到(0,1)区间):
Sigmod函数图像:
tanh函数:(将输入值映射到(-1,1)区间):
tanh函数图像:
Relu函数:(复制映射为0,正值保持不变):
。
Relu又称为修正线性单元,由于没有指数和倒数,计算速度较快,收敛速度也快,但是如果遇到负责则直接映射成0,相当于不在向下一个隐藏层传递,也就是负数不激活,这样一定能程度上对网络的准确性是有影响的。
LeakyReLu:给负数区间一个较小的斜率,保证激活但是较小负数值带来的影响
一般这个负数区间的斜率不宜过大,在(0,1)区间内选取。
PReLu:采用跟学习率动态更新类似的方式更新负数区间的斜率
ELU:
一定程度上防止倒数消失和负数区间未激活的情况。
ReLu函数族部分参考了这篇博文:https://blog.csdn.net/edogawachia/article/details/80043673
Softmax函数:(将输出的矩阵归一化)
Softmax常用于多分类问题的输出层上,假设我们有5个分类,原输出数据为[ x1 x2 x3 x4 x5 ] ,利用Softmax函数我们可以将该矩阵归一化为各个类别的概率矩阵,同时放大正确类别概率和错误类别概率的差[距离],Softmax函数公式为:。
非线性回归实例:
由上图我们可以切实看见,损失值有所下降。
最后
以上就是年轻滑板为你收集整理的深度学习入门教程(5)Tensorflow简单非线性回归的全部内容,希望文章能够帮你解决深度学习入门教程(5)Tensorflow简单非线性回归所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复