神经网络

来源:互联网 发布:javaee javascript 编辑:程序博客网 时间:2024/05/06 09:00
神经网络分为:前向传播,后向传播,双向传播等几种,其中的区别是更新权重的方法不同
前向传播(FP):需要知道权重的初始值,然后根据公式更新参数即可
后向传播(BP):随机初始化参数(不能都为0,否则最后的参数是一样的),根据期望的结果和输出的结果之前的残差利用梯度下降算法更新参数。
双向传播:顾名思义,前向传播和后向传播的结合
实际应用中一般是前向传播和后向传播一起使用。

一般意义的神经网络和其他的机器学习算法比如支持向量机,随机森林等在使用效果上并没有很大不同,而且其需要的训练样本往往比较大。

激活函数:
有线性函数,非线性函数等。
常用的:sigmod,tanh,linear,maxout,使用时根据需要调整,现在使用广泛的激活函数式RELU,但是其也有缺点,容易引起神经元‘死亡’,还有一些变种:PRELU.

网络结构设计:
没有找到网络结构设计的一个标准,需要多次试验找到合适的网络
在这里说下设计时的几点感受:
1)层数:层数不是越多越好,一般3-6层(包含输入输出)
2)每层神经元个数:输入输出层是固定的,必须等于输入输出的向量维数,中间层的神经元个数根据每层前后的个数来定,一般在不超过3倍,太大使得结构过于复杂,容易过拟合,宗旨是最后的网络显得'thin'而非‘fat’
3)激活函数选择,第一层一般是线性的,最后一层一般是maxout,中间层非线性。

ps:个人觉得如果样本较少,特征之间有没有关联性(协方差矩阵非对角线上值趋于0)不适合用神经网络,做过实验,相同的数据用神经网络的结果和支持向量机相比没有优势。
0 0
原创粉丝点击