非线性建模-神经网络
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非线性建模-神经网络相关的知识,希望对你有一定的参考价值。
参考技术A 这学期选修了Python与算法基础,利用Python语言编写力图实现高效算法。前期接触了线性建模中的单变量及多元变量回归模型、多项式回归和灰度模型等。目前正在解决非线性建模问题,引入了神经网络的概念,这里作为自我梳理。首先该网络有三层:输入层、隐含层和输出层。输入层进行变量与优化权重的加权计算,每个节点输出z=Σxiwij,此时我们把多个变量(x),变为了单个变量(z)。隐含层完成“非线性的实现”,节点值ho=1/((1+e^(-z))),此处使用了生长函数。当我们调节wij(优化权重),使模型收敛,就能解决该非线性问题。
接着我们建立MLPClassifier神经网络模型。以下辨明多个参数。
hidden_layer_sizes :用元组,一个数字代表一个隐含层的节点。如hidden_layer_sizes=(50,50) 两个隐含层,每层50个节点hidden_layer_sizes=(60,) 一个隐含层,60个节点,其中逗号不能省略
activation :激活函数, 对Σxiwij的函数转换。
'identity','logistic', 'tanh', 'relu', 默认relu
•identity:f(x)= x
•logistic:其实就是sigmod,f(x) = 1 / (1 + exp(-x)).
•tanh:f(x) = tanh(x).
•relu:f(x) = max(0, x)
solver : 'bfgs', 'sgd', 'adam', 默认adam,用来优化权重
lbfgs:quasi-Newton(拟牛顿法)方法的优化器
sgd:随机梯度下降
adam: Kingma, Diederik, and Jimmy Ba提出的基于随机梯度的优化器
注意:默认solver 'adam',在相对较大的数据集上效果比较好(几千个样本或者更多),对小数据集来说,lbfgs收敛更快效果也更好。
learning_rate :学习率,用于权重更新,只有当solver为’sgd’时使用,'constant','invscaling', 'adaptive',默认constant
•constant: 由learning_rate_init给定的恒定学习率
•invscaling:随着时间t使用power_t的逆标度指数不断降低学习率learning_rate_ ,effective_learning_rate = learning_rate_init / pow(t, power_t)
•adaptive:只要训练损耗在下降,就保持学习率为learning_rate_init不变,当连续两次不能降低训练损耗或验证分数停止升高至少tol时,将当前学习率除以5。
以上是关于非线性建模-神经网络的主要内容,如果未能解决你的问题,请参考以下文章