BP神经网络各层激活函数的选择


上一篇文章中用BP神经网络解决了┅个简单的分类问题接着我又尝试着试验了一下用BP神经网络去逼近正弦函数。网络的结果设计如下图所示
网络中设置输入层与输出层均为一个神经元,并且考虑到正弦函数的值域分布情况我这一次在输出层中的激活函数并没有使用以前常用的sigmod函数,而是采用了线性函數y = x
 
 
 
 
 
 
 
 
 
 

当迭代次数为500次时逼近效果如下所示
而当迭代次数为5000次时的逼近效果如下图所示,我们可以看到此时的效果已经很好了
而总误差随迭代次数的变化曲线则如下图所示
有些同志说MATLAB提示没有sigmod函数。这个sigmod函数其实就是那个常用的激活函数
在MATLAB中建一个这样的函数就可以了
 
% 激活函数Sigmod用于神经网络
 

如有不当之处,欢迎通过进行深入交流同时也欢迎通过的方式对博主进行支持。

}

  在中我们对DNN的前向反向传播算法的使用做了总结。里面使用的损失函数是均方差而激活函数是Sigmoid。实际上DNN可以使用的损失函数和激活函数不少这些损失函数和激活函数如何选择呢?下面我们就对DNN损失函数和激活函数的选择做一个总结

    在讲反向传播算法时,我们用均方差损失函数和Sigmoid激活函数做了实例首先我们就来看看均方差+Sigmoid的组合有什么问题。

    首先我们回顾下Sigmoid激活函数的表达式为:

    σ(z)σ(z)的函数图像如丅:

    从图上可以看出对于Sigmoid,当zz的取值越来越大后函数曲线变得越来越平缓,意味着此时的导数σ′(z)σ′(z)也越来越小同样的,当zz的取值越来越小时也有这个问题。仅仅在zz取值为0附近时导数σ′(z)σ′(z)的取值较大。

    在上篇讲的均方差+Sigmoid的反向传播算法中每一层向前递推都要乘以

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信