这几天看机器学习中的神经网络有点小的感悟和理解,记录一下。
其实所谓的神经网络,更像自动控制中的传递函数,给一个输入,通过网络给一个与这个响应相关的输出,或者说这个输入的激励。神经网络与线性回归和逻辑回归的最大区别在其非线性,通过将每个输入作用于不同的节点,再将其通过不同层的网络传递,使其能够拟合较为复杂的函数,或者较为复杂的输入和输出的映射关系。
关于神经网络通过学习NG老师的讲解,新增的理解是:
1)正则化,通过正则化可以解决noraml equation中的不满秩的问题即与其对应的过拟合问题。
2) 神经网络存在着欠拟合和过拟合的问题,解决问题一般是将所有数据分成三类,训练数据,交叉验证数据和测试数据,相应的会存在训练误差,交叉验证误差和测试误差三种。判断欠拟合和过拟合的方法是:如果训练误差很小,但是交叉验证误差很大,一般是过拟合;如训练误差和交叉验证的误差都比较大,且几乎相等,说明是欠拟合。
3)调整神经网络常用的几个方法:1) 获取更多的数据,修正过拟合。2)减少特征,修正过拟合(去除特征的相关性)。3)增加特征,修正欠拟合,4)加入多项式特征,修正欠拟合,5)加到正则化系数,修正过拟合,6)减小正则化系数,修正欠拟合。
传统的BP网络的缺点在于训练的网络对初始值的依赖比较大,所以在BP网络中加入遗传算法,就可以很好的解决这个问题。 随机初始化一些种群(网络的权值和阈值),通过测试数据训练出种群的适应度即拟合质量的好坏,一般用误差的和来表示(适应度小的较优),然后根据适应度进行选择,交差,编译,重新计算适应度,选择,编译的循环过程,直到满足条件(进化代数或者适应度阈值),从而选择了较好的网络参数初始值赋给神经网络的初始值,训练神经网络,便可以得到精度较高的神经网络。