一直不理解神经网络,看过很多文章,数学公式看的怎么都不理解,这里跳出公式,简单介绍神经网络的构成,各个名词的含义。
首先看一个手机app(神经网络),可以手动调整参数看下分类效果
输入值–隐藏层–输出值
相关名词:神经元,隐藏层数量,各层神经元数量,激活函数,惩罚函数,学习率,正则函数,正则率
一个神经元是一个分类器
神经元–参考@王龙https://www.zhihu.com/question/22553761
最简单的分类方法,切一条直线,到三维中就是切一个面,n维就是n-1维的超平面,这样一个切一次的分类器就是一个神经元
先忽视激活函数,解释一下神经网络训练过程
输入x,第一层k[1]个神经元,第m层k[m]个神经元
1.根据数据x,k[1]个分类器,获得k[1]个结果,y[i]=w[i]*x+b[i],i=1,2…k[1]
2.第二层就是把1中的y当作输入,yy[i]=ww[i]*y+bb[i],i=1,2,3…k[2]
3.第m层就是把第m-1层的输入当作输入,m层最后的结果就是预测值
可以看到单纯的神经元切平面的方法无论多少层只能解决线性问题,对非线性问题需要对y=wx的结果y做一下变形,变形的过程就是用激活函数映射
激活函数–参考https://zhuanlan.zhihu.com/p/25279356
这样得到的结果就是非线性的,可以解决非线性问题
我们希望预测值尽可能的接近于目标值,用于衡量预测值与目标值差异性的方程就是损失函数
当差异性大时,需要对权重参数w进行调整,神经网络采用的从最后一层一层层向前调整的,每次调整当层的参数和前一层的参数,这种方法就是反向传播
将损失值从比较高的点降低a到低点b,方法是对每一个自变量求偏导,应用到二维上就是斜率,每次改变这个偏导的多少就是学习率
深度神经网络容易出现过拟合现象,训练集表现良好,测试效果很差,为了解决这一问题,需要对损失函数做一个调整,最常见的方法在原有的损失函数的基础上加一个所有系数的二次方和的倍数a,这个(所有系数的二次方和)函数就是L2正则函数,这个倍数a就是正则率
参考https://blog.youkuaiyun.com/maryyu8873/article/details/78507732
神经网络参数很多,当某一个参数的权重很大时,影响就很大,对外界的波动很敏感,泛化能力弱,所以简单的模型比复杂的模型泛化能力好,如下例