BP神经网络回归

被刻印的时光 ゝ 提交于 2020-03-05 08:20:01

刚开始接触神经网络一般都是从分类应用开始看的,最典型的就是基于手写数字的识别,这也是绝大部分教程以及书籍上的例子,那么如何应用神经网络进行回归分析呢?这是我最初接触神经网络的一个很大的疑惑,随着后来的深入理解有了一些自己的体会。

假设把你要解决的问题当作一个求解已知方程组的过程,应用神经网络去解决这个问题,只不过就是把目前已知的方程组变为了需要用训练集去拟合的神经网络模型。所以这就要求你先明确三点:
1.具备训练集
2.确定自己要处理的是哪类问题
3.以怎样的标准去评价自己得出的结果。
具备训练集是最基本的,应用神经网络算法必须具备训练集,那么对于自己处理的是分类还是回归的问题,我相信也是比较容易去进行判断的,那么对于评价得出的结果,选择一个合适的损失函数可以做到合理的评价我们得出的结果。那么具体在神经网络算法中如何应用呢?

(一)分类问题
1.基于对逻辑回归的理解,最后输出层的激活函数选择sigmoid函数是一个不错的选择
2.对于评价标准即损失函数,逻辑回归的损失函数可以应用在此处,也就是负的log最大似然,建议找下推导的过程,深入理解一下。
(二)回归问题
1.基于对线性回归的理解,最后输出层的激活函数选择线性函数,也可以理解为输出层不激活,为什么这样做呢?因为对于回归问题的评价标准很容易就可以想到均方误差,为了更好的利用这一评价标准,所以输出层采用线性函数更为合理。

总结:

对于分类和回归的不同,其实无非就是输出层的激活函数的不同,对于此处的理解,其实可以把输入层和隐藏层整体当作分类问题或者回归问题的特征选择,这样对于输出层应选择怎样的激活函数更加清晰。另外需要注意当输出层激活函数变了,也就意味着你反向传播的第一步需要修改,即dAL的值需要改变,不妨自己手写一下,求一下导数,这些都修改好后就可以应用于回归问题了。

我写的一些博客没有贴上代码,因为我觉得当理解了处理问题的方法后,代码也就没什么难度了,所以没有贴代码,如果有需要的可以留言(注:我采用的是python语言编写的,自己手动实现的,不是基于PyTorch或TensorFlow框架的)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!