调参心得-如何优化超参数的,如何证实方法是有效的.doc

调参心得-如何优化超参数的,如何证实方法是有效的.doc

ID:28143933

大小:767.50 KB

页数:21页

时间:2018-12-08

调参心得-如何优化超参数的,如何证实方法是有效的.doc_第1页
调参心得-如何优化超参数的,如何证实方法是有效的.doc_第2页
调参心得-如何优化超参数的,如何证实方法是有效的.doc_第3页
调参心得-如何优化超参数的,如何证实方法是有效的.doc_第4页
调参心得-如何优化超参数的,如何证实方法是有效的.doc_第5页
资源描述:

《调参心得-如何优化超参数的,如何证实方法是有效的.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),  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。