资源描述:
《调参心得-如何优化超参数的,如何证实方法是有效的.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、调参心得:如何优化超参数的,如何证实方法是有效的 TL;DR 只需采用正确的过程,为给定的预测任务找到顶尖的超参数配置并非难事。超参数优化主要有三种方法:手工、机器辅助、基于算法。本文主要关注机器辅助这一方法。本文将介绍我是如何优化超参数的,如何证实方法是有效的,理解为何起效。我把简单性作为主要原则。 模型表现 关于模型表现,首先需要指出的是,使用精确度(及其他鲁棒性更好的测度)等衡量模型表现可能有问题。例如,假设一个二元预测任务中只有1%的样本值为1,那么预测所有值为0的模型将达到近乎完美的精确度。采用更合适的
2、测度可以克服这类问题,但限于本文的主题,我们不会详细讨论这些。我们想要强调的是,优化超参数的时候,这是一个非常重要的部分。即使我们采用了世界上最酷炫的模型(通常是非常复杂的模型),但如果评估模型所用的是无意义的测度,那到头来不过是白费工夫。 别搞错;即使我们确实正确使用了表现测度,我们仍然需要考虑优化模型的过程中发生了什么。一旦我们开始查看验证集上的结果,并基于此做出改动,那么我们就开始制造倾向验证集的偏差。换句话说,模型的概括性可能不怎么好。 更高级的全自动(无监督)超参数优化方法,首先需要解决以上两个问题。一旦解
3、决了这两个问题——是的,存在解决这两个问题的方法——结果测度需要实现为单一评分。该单一评分将作为超参数优化过程所依据的测度。 工具 本文使用了Keras和Talos。Talos是我创建的超参数优化方案,它的优势在于原样暴露了Keras,没有引进任何新语法。Talos把超参数优化的过程从若干天缩短到若干分钟,也使得优化过程更有意思,而不是充满了痛苦的重复。 你可以亲自尝试Talos: pipinstalltalos 或者在GitHub上查看它的代码和文档:autonomio/talos 但我打算在本文中分享的信
4、息,提出的观点,是关于优化过程的,而不是关于工具的。你可以使用其他工具完成同样的过程。 自动化超参数优化及其工具最主要的问题之一,是你常常偏离原本的工作方式。预测任务无关的超参数优化的关键——也是所有复杂问题的关键——是拥抱人机之间的协作。每次试验都是一个学习更多(深度学习的)实践经验和技术(比如Keras)的机会。不应该因为自动化过程而失去这些机会。另一方面,我们应该移除优化过程中明显多余的部分。想象一下在Jupyternotebook中按几百次shift-enter(这一快捷键表示执行代码),然后在每次执行时等待一
5、两分钟。总之,在现阶段,我们的目标不应该是全自动方法,而是最小化让人厌烦的重复多余部分。 开始扫描超参数 在下面的例子中,我使用的是WisconsinBreastCancer数据集,并基于Keras构建了以下模型: defbreast_cancer_model(x_train,y_train,x_val,y_val,params): model=Sequential() model.add(Dense(10,input_dim=x_train.shape[1], activation=params[‘acti
6、vation’], kernel_initializer=‘normal’)) model.add(Dropout(params[‘dropout’])) hidden_layers(model,params,1) model.add(Dense(1,activation=params[‘last_activation’], kernel_initializer=‘normal’)) model.compile(loss=params[‘losses’], optimizer=params[‘optimiz
7、er’](lr=lr_normalizer(params[‘lr’],params[‘optimizer’])), metrics=[‘acc’,fmeasure]) history=model.fit(x_train,y_train, validation_data=[x_val,y_val], batch_size=params[‘batch_size’], epochs=params[‘epochs’], verbose=0) returnhistory,model 定义好Keras模型后,通过Py
8、thon字典指定初始参数的边界。 p={‘lr’:(0.5,5,10), ’first_neuron’:[4,8,16,32,64], ’hidden_layers’:[0,1,2], ’batch_size’:(1,5,5), ’epochs’:[150], ’dropout’:(0,0.5,5),