回归MLP和分类MLP以及在playground上可视化

620 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

MLP同样也可以用于分类和回归任务,让我们看看他们都需要什么设置,以及在自己电脑上搭建一个TensorFlow Playgroud平台去可视化这些任务训练结果。

回归MLP

我们在执行回归任务时,如果预测单个值,MLP就只需要一个输出-预测值。同时也可以执行一些多元回归,每个输出维度都需要一个神经元,常见比如定位,可以输出坐标点,长宽数值等。

通常我们可以不去设置输出的激活函数,如果需要保证始终为正,则可以通过ReLU或者softplus激活函数(softplus(z)=log(1+eze^{z})),当z为负时,它接近0,z为正时,他接近z。如果需要保证输出的预测值在一定的范围内,可以使用逻辑函数或者双曲正切。

典型的回归MLP架构

超参数典型值
输入神经元数量每个输入特征一个
隐藏层数量一般1-5,取决于问题
每个隐藏层的神经元数量一般10-100,取决于问题
输出神经元数量每个预测维度一个
隐藏的激活ReLU
输出激活不设置,或ReLU/softplus 或 逻辑/tanh
损失函数MSE或MAE/Huber(如果有离群值)

Huber损失-当误差小于阈值δ\delta ,Huber损失是二次方,当误差大于δ\delta ,Huber损失是线性。当存在离群值时,线性部分敏感度低于均方误差,二次方比平均绝对误差更收敛和精确。

分类MLP

对于二进制分类问题,只需要使用逻辑激活函数的单个输出,范围在0-1之间,也是正类的估计概率。

对于多标签二进制分类,需要根据每个正类设置一个输出,以组成各种输出结果。例如邮件检测中,可以分成是否紧急和是否是垃圾邮件。

对于多类分类,比如MNIST的数字分类中,需要给0-9每一个类设置一个输出神经元,这时候需要使得每个概率在0-1之间,且和为1。可以使用softmax激活整个输出层。

典型的分类MLP架构

超参数二进制分类多标签二进制分类多类分类
输入层和隐藏层和上面回归相同--
输出神经元数量1每个标签1每个类1
输出层激活逻辑逻辑softmax
损失函数交叉熵交叉熵交叉熵

使用TensorFlow Playground进行可视化

通过之前讲的MLP基础,我们也可以在TensorFlow Playground上可视化。Playground是可以自己搭建的,GitHub地址如下tensorflow/playground: Play with neural networks! (github.com),需要做的就三步:

  1. npm i 
  2. npm run build 
  3. npm run serve 

出现如下图,我们就可以根据地址和端口去访问了:

图1 启动TensorFlow Playground

进入地址后,我们可以设置很多东西,比如学习率,激活函数,正则化,设置隐藏层和选择任务类型等等,如下图是我设置好的一个模型,并且训练682次后的可视化结果:

图2 结果可视化

快去试着玩玩吧!