机器学习第四个算法ANN(人工神经网络)

时间:2024-05-23 11:58:37

我是在14年9月刚读研的时候听到一个说法叫“类人脑算法”很火热,之后搞了很长一段时间相关的蓄水池算法等,但大都没有摸到门路而中途放弃了。


现今看来,还是缺少一些知识背景,也不善于在网络上学习,随时间推移,也逐渐明白这是机器学习的一小部分,并且逐渐发展的名称叫做人工神经网络的算法,如果网络层较多,又会有个别名,叫做深度学习。其中用到的最著名算法是背向传输算法(backpropagation),而这个算法,是我曾经推倒导过的。如今重新捡起,感慨万千。


先讲述一个概念:多层前馈神经网络(Multilayer Feed-Forward Neural Network)
如图所示,有输入层(input layer),隐藏层(hidden layer),输出层(output layer)


机器学习第四个算法ANN(人工神经网络)


一、每层由单元(unit)组成
二、输入层由训练集的实例特征向量传入
三、每个结点都有权重(weight)传入下一层,一层的输出是下一层的输入。
(根据生物学上的定义,每个单元成为神经结点)
四、以上成为两层神经网络(输入层不算)
五、每一层的加权求和,到下一层结点上还需要非线性函数**,之后作为输出
六、作为多层前馈神经网络,如果由足够多的隐藏层,和足够大的训练集,理论上可以模拟出任何方程。


反向传输算法核心(backpropagation)
特点 :
1、通过迭代来处理训练集中的实例
2、计算输入层预测值(predicted value)和真实值(target value)之间的差值error
3、反向传输(输出层->隐藏层->输入层)来最小化误差(error)来更新每个链接的权重(weight)

显然,对于神经网络而言,最重要的是能恰当配置好隐藏层和输出层神经元的权值和偏置。幸好的是,这个配置是由机器来做,而不是人类。使用神经网络的步骤一般为:

建立模型,按照业务场景建立网络结构,多少个输入神经元和输出神经元,多少层隐含层,层与层之间是全连接,还是部分连接等等。
训练模型,对于已经标记好的大量数据,将它们扔到神经网络中,神经网络通过预测输出与实际输出的差值来自动调整隐藏层和输出层神经元权值和偏置。
数据预测,对于新的数据,将他们直接扔到输入层,得到的输出就是预测输出。

机器学习的主要用途为分类,聚类,回归,关联规则等等。现有的机器学习方法有SVM,logistic回归,决策树,随机森林等方法。但是,在需要高精度,难以提取特征的无结构化数据机器学习中,深度学习几乎是唯一的选择。

但是深度学习也有它的问题,它对训练数据很敏感,它的训练目标也是最小化训练数据的训练误差,所以容易受到噪音和过拟合的影响。因此,在一些高噪音的环境下,深度学习是失效的。例如,短期日内股票交易中,股票的波动可能是完全随机性的,上涨可能跟之前的股票走向有关,还可能跟随机性因素有关。所以,通过之前走向和未来走向扔进神经网络后,神经网络无法识别出哪些是因为随机性因素影响,哪些是真正可以使用的走向。高噪音让它无法收敛,或者只是收敛到一个过拟合的网络中。