必威体育Betway必威体育官网
当前位置:首页 > IT技术

【sklearn第十八讲】神经网络模型

时间:2019-10-01 19:14:31来源:IT技术作者:seo实验室小编阅读:88次「手机版」
 

神经网络模型

机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)

多层感知器

多层感知器(Multi-layer Perceptron, MLP)是一个有监督学习算法,它在一个训练集上学习一个函数 f():RmRof(\cdot): \mathbf{R}^m\rightarrow\mathbf{R}^of(⋅):Rm→Ro, mmm 是输入维数, ooo 是输出维数。给定一个特征集 X=x1,x2,,xmX=x_1, x_2, \dots, x_mX=x1​,x2​,…,xm​ 和目标变量 yyy, MLP能学习一个非线性函数近似器,用于分类或回归。它与logistic回归的区别在于,在输入层和输出层之间,有一个或多个非线性层,称隐藏层。下图显示了有一个隐藏层的MLP, 输出是常量

这里写图片描述

最左边的层,称输入层,组成一个神经元集 {xix1,x2,,xm}\{x_i | x_1, x_2, \dots, x_m\}{xi​∣x1​,x2​,…,xm​} 代表输入特征。

隐藏层里的每一个神经元将来自上一层的值,用一个加权线性加和 w1x1+w2x2++wmxmw_1x_1+w_2x_2+\dots +w_mx_mw1​x1​+w2​x2​+⋯+wm​xm​ 变换,然后作用一个非线性激活函数 g():RRg(\cdot): \mathbf{R}\rightarrow\mathbf{R}g(⋅):R→R, 比如双曲正切函数。输出层接收来自最后的隐藏层的值,把它们转换为输出值。

scikit-learn模块包括公开的属性coefs_ and intercepts_. coefs_是一个权矩阵列表,矩阵里的索引 iii 代表第 iii 层与 i+1i+1i+1 层之间的权。intercepts_是一个偏差向量列表,索引 iii 的向量代表增加到第 i+1i+1i+1 层的偏差值。

多层感知器的优势是:

  • 学习非线性模型的能力

  • 使用partial_fit在线学习的能力

多层感知器的不足包括:

  • MLP有一个非凸损失函数,它存在多个局部最小值。因此,不同的随机权初始化能导致不同的验证准确率。

  • MLP需要调整很多超参数,诸如隐层神经元的数量、层数、迭代次数等。

  • MLP对于特征缩放(feature scaling)是敏感的。

分类

MLPClassifier执行一个多层感知器算法,该算法使用向后传播训练。MLP训练两个数组:(n_samples, n_features)数组X, 装载表示浮点特征向量的样本。(n_samples,)数组y, 装载训练样本的目标变量,即类标签。

from sklearn.neural_network import MLPClassifier
X = [[0., 0.], [1., 1.]]
y = [0, 1]
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
                     hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X, y)

在拟合后,模型就能预测新样本的标签了。

clf.predict([[2., 2.], [-1., -2.]])

MLP能在训练数据上拟合一个非线性模型,clf.coefs_属性包括由模型参数组成的权矩阵。

[coef.shape for coef in clf.coefs_]

当前,MLPClassifier仅支持交叉熵损失函数,通过执行predict_proba方法,可以估计概率。

MLP使用向后传播法训练,更确切地说,它使用经向后传播计算的梯度下降训练模型。对于分类问题,它最小化交叉熵损失,给出每个样本的概率估计向量 P(yx)\mathcal{P}(y | x)P(y∣x).

print(clf.predict_proba([[2., 2.], [1., 2.]]))

通过应用Softmax作为输出函数,MLPClassifier支持多类别分类。进一步,模型支持多标签分类,即,一个样本能够属于多个类。对于每一个类,原始输出经历logistic函数。大于等于0.5的值,记为1;否则,记为0. 对于一个样本的预测输出,值是1的索引代表分派给那个样本的类。

这里写图片描述

回归

MLPRegressor执行一个多层感知器,使用向后传播法训练,在输出层无激活函数。它使用平方误差作为损失函数,输出是一个连续值集。MLPRegressor也支持多输出回归,即,一个样本可以有多个目标值。

正则化

MLPRegressor and MLPClassifier使用参数 α\alphaα 作为正则项(L2正则),通过惩罚数量级大的权,避免过度拟合。下图显示了 α\alphaα 取不同值的决策函数。

这里写图片描述

实际使用提示

  • 多层感知器对特征缩放是敏感的,因此强烈建议scale数据。例如,scale输入向量X的每个属性到[0, 1]或[-1, 1], 或者归一化成0均值、1方差。注意,为了得到有意义的结果,你必须在训练集上采用相同的缩放标准。你可以使用StandardScaler标准化,我们建议在一个Pipeline里使用它。

这里写图片描述

  • 最好使用GridSearchCV找到一个合理的正则参数 α\alphaα, 通常在10.0 ** -np.arange(1, 7)范围内。

阅读更多精彩内容,请关注微信公众号:统计学习与大数据

相关阅读

周志华:满足这三大条件,可以考虑不用深度神经网络

来源: AI科技大本

sklearn.linear_model.LinearRegression

最小二乘法线性回归:sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False,copy_X=True, n_jobs=1)主要参

sklearn中predict_proba用法(注意和predict的区别)

predict_proba返回的是一个 n 行 k 列的数组, 第 i 行 第 j 列上的数值是模型预测 第 i 个预测样本为某个标签的概率,并且每一行的

25个神经网络模型

1. 引言 1.1 神经元 1.2卷积神经元(Convolutional cells) 1.3 解卷积神经元 1.4 池化神经元和插值神经元(Pooling and interpolating

吴恩达-深度学习-卷积神经网络-多层卷积 笔记

你已经知道如何对二维图像做卷积了,现在看看如何执行卷积不仅仅在二维图像上,而是三维立体上。 我们从一个例子开始,假如说你不仅想

分享到:

栏目导航

推荐阅读

热门阅读