从负无穷学习机器学习(六)神经网络

一、神经网络

多层神经网络又称深度学习,神经网络中使用的是多层感知器(Multilayer Perceptron,MLP),MLP也被称为前馈神经网络。

神经网络的原理和线性模型很像。线性模型一般公式如下:

在这里插入图片描述

但他们还是有区别的,其中最大的地方就是在MLP模型中,算法在过程里面添加了隐藏层(Hidden Layers),然后在隐藏层重复进行加权求和计算,最终把隐藏层算出的结果用于生成最终结果。这样的话,模型要学习的特征系数(权重)就会多很多,因为每一条路径都有一个系数。如下图的模型中就有一个隐藏层。

在这里插入图片描述

(一)、非线性矫正

从数学的角度看,他跟线性模型没什么两样,但为了能更突出神经网络的强大,需要对其进行一些处理。这处理便是在生成隐藏层之后,对结果进行非线性矫正(rectifying nonlinearity),简称为relu(rectified linear unit)或者进行双曲正切处理(tangens hyperbolicus),简称为tanh。通过这两种方式处理后的结果来计算最终结果y。

# 导入基础科学库
import numpy as np
# 导入画图工具
import matplotlib.pyplot as plt

# 创建一个200个元素的等差数列[-5,5]
line = np.linspace(-5, 5, 200)

# 画出非线性矫正的图形表示
plt.plot(line, np.tanh(line), label='tanh')
plt.plot(line, np.maximum(line, 0), label='relu')

plt.legend(loc='best')
plt.xlabel('x')
plt.ylabel('relu(x) and tanh(x)')
plt.show()

可以看到tanh把特征的数值压缩到-1~1的区间,-1表示较小的值,1代表较大的值。而relu把小于0的值都设为0。这两种方法都是将样本特征进行简化,从而便于神经网络对复杂的非线性数据集进行学习。
在小规模数据集中,节点数量设置为10就足够了,而对于大规模数据集,可通过配置隐藏层中的节点数量和隐藏层的层数来满足需要。

在这里插入图片描述

(二)、参数设置

# 下面使用MLP算法中的MLP分类器对酒的数据集进行分类
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_wine
wine = load_wine()
X = wine.data[:,:2] # 取钱两个特征
y = wine.target
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
mlp = MLPClassifier(solver='lbfgs', max_iter=1000) # 使用权重优化模式(Weight Optimization Method)为拟牛顿法(Quasi-Newton Method)的解算器
mlp.fit(X_train, y_train)

参数说明:

  • activation指定的是将隐藏单元进行非线性化的方法,一共有四种:“identity”、“logistic”、“rulu"以及"tanh”。identity就是不对样本特征进行处理f(x)=x,而logistic方法的返回值是f(x) = 1 / (1 + exp(-x)),和tanh很像,但它的取值为0~1,。最后两种方法在前面已经说过就不累述了。每个参数具体的说明如下图所示。
  • alpha值就是L2惩罚项,他用于控制正则化的程度,默认值是0.0001。
  • hidden_layer_sizes指的就是隐藏层的数量以及节点数,如这里的[100,]指的就是有一个隐藏层,这个隐藏层有100个节点。而如果是[20,20,]表示的是有两个节点数都为20的隐藏层。

在这里插入图片描述

在这里插入图片描述

(三)、不同隐藏层/节点数/激活函数的模型比对

用散点图查看MLP分类情况。

# 导入画图工具和颜色工具
import matplotlib.pyplot as plt
from matplotlib
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值