龙空技术网

武汉课工场JAVA培训:神经网络训练中的调参“四重奏”

课工场—武汉 42

前言:

此刻同学们对“java调参”大约比较注重,朋友们都需要了解一些“java调参”的相关文章。那么小编同时在网络上汇集了一些对于“java调参””的相关知识,希望同学们能喜欢,同学们一起来学习一下吧!

数据科学家是人工智能、算法模型、大数据挖掘的专家,也是目前人工智能领域受人羡慕、集万般宠爱于一身的职业,听起来怎么样?高端、大气、上档次。作为高大上的数据科学家当然要附庸风雅一些(数据科学家:你在讽刺我吗?J),他们在机器学习、模型训练的枯燥工作闲暇之余,也要听听优美、高雅的音乐放松下心情。在公认的高雅音乐中,有一种四重奏乐曲,它由4种乐器协奏,乐器之间有一定类似的特质和旋律,在四位演奏家的高超技艺、默契良好地协调合作下,演奏出来的乐曲优美动听、音色纯粹美丽,是广大音乐爱好者和艺术家们最喜爱的一种乐曲形式。

在人工智能领域的深度学习过程中,尤其在数据科学家训练神经网络时,经常会对神经网络模型进行调参优化,以获得最佳的模型效果。其中有四类最基本的调参方法,它们分别是:调整隐藏层节点数、增加隐藏层数量、调整激活函数、调整模型复杂度控制。数据科学家经常把这四类调参方法正确有序地组合起来使用,使它们相互作用、交叉融合,让神经网络模型产生了奇妙的效果,此时数据科学家变身成为模型训练的“艺术演奏家”,谱写并奏响了神经网络训练中的调参“四重奏”。

调参“四重奏”之“舞台”与“乐器”

首先,我们来准备数据集和建立训练模型,搭建“四重奏”的“舞台”。本文通过python语言调用scikit-learn库中的红酒数据集,并使用MLP神经网络来进行分类模拟训练。scikit-learn库中的红酒数据集共有178个数据样本,它们被归入三个类别中,分别是class_0,class_1,和class_2,其中class_0中包含59个样本,class_1中包含71个样本,class_2中包含48个样本。我们开始准备数据集,搭建“四重奏舞台”。

小提琴、中提琴——隐藏层节点数、隐藏层数量(hidden_layer_sizes)。小提琴、中提琴的音色优美柔和,在协奏中两者配合起来非常协和,在神经网络调参中,隐藏层节点数与层数也是紧密配合使用,能充分调节神经网络的效果。在上面的运行结果中,就是指hidden_layer_sizes参数。该参数值默认情况下为[100,],表示模型中只有一个隐藏层,而隐藏层中的节点数是100。如果hidden_layer_sizes定义为[10,10],那就表示模型中有两个隐藏层,每层有10个节点。

钢琴——激活函数(activation)。钢琴被人们称作乐器之王,音色洪亮动听,在协奏中能发挥主要的影响力,在神经网络调参中,激活函数的使用也能起到主要的影响作用。在上面的运行结果中,激活函数就是activation参数,它是将隐藏单元进行非线性化的方法,一共有四种值:“identity”、“logistic”、“tanh”以及“relu”,而在默认情况下,参数值是“relu”。

大提琴——模型复杂度控制(alpha)。大提琴音色低沉稳重,在协奏中有着深沉的控制力,训练神经网络的调参中,对模型的复杂度控制也有类似的效果。在上面的运行结果中,模型复杂度控制就是alpha参数。它是一个用来控制正则化的程度,默认的数值是0.0001。

奏响神经网络的调参“四重奏”

下面使用上面搭建好的舞台(数据集和模型),看看调参四重奏的表演效果。

1、缺省参数下的模型测试

2、小提琴独奏——隐藏层节点数为200的MLP模型

3、小提琴与中提琴协奏——隐藏层节点数为200、层数为2的MLP模型

4、小提琴、中提琴、钢琴三重奏——隐藏层节点数为200、层数为2、激活函数值为tanh的MLP模型

5、四重奏——隐藏层节点数为200、层数为2、激活函数值为tanh、模型复杂度控制alpha=1的MLP模型

6、正确认识调参

其实,在神经网络训练过程中(其他模型训练也一样),参数调整是通过不断尝试和磨合的,现实情况中,不能是只要觉得调整了参数就会一定有好的效果,就像作曲家谱写的四重奏乐章,如果一定要把不合适的乐器、旋律、节奏搭配在一起,那么再优秀的演奏家,做多大的努力进行协同演奏,也奏不出优美动听的音乐来。

本项目使用的MLP神经网络是一种多层感知器,在实际项目中应用不是太多,读者朋友可以再使用卷积神经网络、递归神经网络等算法模型尝试一下调参效果。

标签: #java调参