Hyperparameters
参数是机器学习算法的关键。它们通常由过去的训练数据中总结得出。在经典的机器学习文献中,我们可以将模型看作假设,将参数视为对特定数据集的量身打造的假设。
模型是否具有固定或可变数量的参数决定了它是否可以被称为“参数”或“非参数”。
模型参数是根据数据自动估算的。但模型超参数是手动设置的,并且在过程中用于帮助估计模型参数。
定义
我们虽然无法知道给定问题的模型超参数的最佳值,但是我们可以使用经验法则,在其他问题上使用复制值,或通过反复试验来搜索最佳值。
如果必须手动指定模型参数,那么它可能是一个模型超参数。
在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数。 相反,其他参数的值通过训练得出。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
超参数:定义关于模型的更高层次的概念,如复杂性或学习能力。
不能直接从标准模型培训过程中的数据中学习,需要预先定义。
可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定
超参数的一些示例:
- 树的数量或树的深度
- 矩阵分解中潜在因素的数量
- 学习率(多种模式)
- 深层神经网络隐藏层数
- k均值聚类中的簇数
优化问题
超参数优化或模型选择是为学习算法选择一组最优超参数时的问题,通常目的是优化算法在独立数据集上的性能的度量。 通常使用交叉验证来估计这种泛化性能。
超参数优化与实际的学习问题形成对比,这些问题通常也被转化为优化问题,但是优化了训练集上的损失函数。
实际上,学习算法学习可以很好地建模/重建输入的参数,而超参数优化则是确保模型不会像通过正则化一样通过调整来过滤其数据。
网格搜索
执行超参数优化的传统方法是网格搜索或参数扫描,这仅仅是通过学习算法的超参数空间的手动指定子集的详尽搜索。 网格搜索算法必须由某些性能度量指导,通常通过训练集合上的交叉验证或对被保留验证集进行评估来衡量。
由于机器学习者的参数空间可能包括某些参数的实值或无界值空间,因此在应用网格搜索之前可能需要手动设置边界和离散化。
贝叶斯优化
贝叶斯优化包括从超参数值到在验证集上评估的目标的功能的统计模型。直观上,该方法假设有一些平滑但嘈杂的功能,作为从超参数到目标的映射。在贝叶斯优化中,一个目的是收集观察结果,以便尽可能少地显示机器学习模型的次数,同时尽可能多地显示关于该功能的信息,特别是最佳位置。贝叶斯优化依赖于假设一个非常普遍的先验函数,当与观察到的超参数值和相应的输出结合时,产生函数分布。该方法通过迭代地选择超参数来观察(实验运行),以抛售(结果最不确定的超参数)和利用(预期具有良好结果的超参数)的方式。实际上,贝叶斯优化已经被证明 ,因为在实验的质量运行之前,能够对网格搜索和随机搜索进行更少的实验获得更好的结果。
随机搜索
由于网格搜索是一种穷尽且潜在昂贵的方法,因此已经提出了几种替代方案。 特别地,已经发现,简单地对参数设置进行固定次数的随机搜索,比在穷举搜索中的高维空间更有效。 这是因为事实证明,一些超参数不会显着影响损失。 因此,随机分散的数据给出了比最终不影响损失的参数的详尽搜索更多的“纹理”数据。
基于梯度的优化
对于特定的学习算法,可以计算相对于超参数的梯度,然后使用梯度下降优化超参数。 这些技术的第一次使用集中在神经网络。从那时起,这些方法已经扩展到其他模型,如支持向量机或逻辑回归 。
训练集/测试集/验证集
首先,需要说明一点的是,训练集(training set)、验证集(validation set)和测试集(test set)本质上并无区别,都是把一个数据集分成三个部分而已,都是(feature,label)造型。尤其是训练集与验证集,更无本质区别。
测试集可能会有一些区别,比如在一些权威计算机视觉比赛中,测试集的标签是private的,也就是参赛者看不到测试集的标签,可以把预测的标签交给大赛组委会,他们根据你提交的预测标签来评估参赛者模式识别系统的好坏,以防作弊。
【训练集】:每个样本都是(feature,label)造型,用来训练模式识别系统。
【验证集】:在训练集上训练好系统后,有些参数是不可学习的,需要人为设定的,比如支持向量机SVM中的超参数松弛参数C。但是人为设定可能不是最优的,怎样寻找最优的这个参数呢?这就需要验证集。在验证集上不断调试这个人为设定的超参数,直到在验证集上得到的结果满意为止,这一步通常采用验证集上的交叉验证来确定最优超参数。需要人为设定的超参数确定后,到此这个系统的所有参数都确定了,然后看一下这个系统在测试集上的效果怎么样。
【测试集】:用来最终评估模式识别系统的性能。
需要注意的是,当整个模式识别系统中没有需要人为设定的超参数,所有参数都是通过学习得到的,则不需要验证集,训练集和测试集就够了。
参考:https://blog.csdn.net/u011501388/article/details/78359133
Hyperparameters的更多相关文章
- How to Grid Search Hyperparameters for Deep Learning Models in Python With Keras
Hyperparameter optimization is a big part of deep learning. The reason is that neural networks are n ...
- 深度学习:参数(parameters)和超参数(hyperparameters)
1. 参数(parameters)/模型参数 由模型通过学习得到的变量,比如权重和偏置 2. 超参数(hyperparameters)/算法参数 根据经验进行设定,影响到权重和偏置的大小,比如迭代次数 ...
- 如何选取一个神经网络中的超参数hyper-parameters
1.什么是超参数 所谓超参数,就是机器学习模型里面的框架参数.比如聚类方法里面类的个数,或者话题模型里面话题的个数等等,都称为超参数.它们跟训练过程中学习的参数(权重)是不一样的,通常是手工设定的,经 ...
- 超参数 hyperparameters
转载:https://www.cnblogs.com/qamra/p/8721561.html 超参数的定义:在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据 ...
- 使用神经网络来识别手写数字【译】(三)- 用Python代码实现
实现我们分类数字的网络 好,让我们使用随机梯度下降和 MNIST训练数据来写一个程序来学习怎样识别手写数字. 我们用Python (2.7) 来实现.只有 74 行代码!我们需要的第一个东西是 MNI ...
- Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程
[保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...
- PRML读书笔记——3 Linear Models for Regression
Linear Basis Function Models 线性模型的一个关键属性是它是参数的一个线性函数,形式如下: w是参数,x可以是原始的数据,也可以是关于原始数据的一个函数值,这个函数就叫bas ...
- paper 127:机器学习中的范数规则化之(二)核范数与规则项参数选择
机器学习中的范数规则化之(二)核范数与规则项参数选择 zouxy09@qq.com http://blog.csdn.net/zouxy09 上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮 ...
- CNN for NLP (CS224D)
斯坦福课程CS224d: Deep Learning for Natural Language Processing lecture13:Convolutional neural networks - ...
随机推荐
- Spring IOC 常用的注解
一.@Bean 1.配置类 @Configuration public class MainConfig { @Bean public Person person(){ return new Pers ...
- SpringBoot第十四篇:统一异常处理
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10984081.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 本文将谈论 ...
- Oracle Hint用法整理笔记
目录 1./+ result_cache / 2./+ connect_by_filtering / 3./+ no_unnset / 4./+ index(表别名 索引名) / 5./+ INDEX ...
- EasyNetQ笔记
Each call to Subscribe creates a new queue consumer. If you call Subscribe two times with the same m ...
- Intellij IDEA的安装教程
一.下载安装 1.打开官网:http://www.jetbrains.com/idea/,点击页面中的“DOWNLOAD” 2.根据自己的需要选择下载的IntelliJ IDEA版本,此处我的电脑是W ...
- C语言memset()函数:将内存的前n个字节设置为特定的值
头文件:#include <string.h> memset() 函数用来将指定内存的前n个字节设置为特定的值,其原型为: void * memset( void * ptr, in ...
- spring-retry 重试机制的使用
场景:由于网络抖动原因,或者其他原因,需要对代码重新执行,这个就需要重试了. import org.springframework.context.annotation.Configuration; ...
- Java反射获取泛型类型
本文链接:https://blog.csdn.net/hongxingxiaonan/article/details/49202613 在Java反射技术的应用中,取得一个类的成员.方法和构造函数相对 ...
- windows通过秘钥使用ssh和scp
windows10内置支持了ssh和scp等仿linux指令,可以让我们方便的使用类似linux的工作流把日常的代码资源部署维护工作写成脚本(批处理). ssh和scp都有-i参数可以通过指定一个私钥 ...
- Java基础笔记之数据类型
一.数据类型 (一)8种基本数据类型(内置数据类型\C#中为值类型) 字符长度:1byte = 8 bit; 布尔:可认为是 1byte (8 bit);