机器学习基本概念-4

Hyperparameters

在ML中,我们常说的就是train,但是实际什么是train呢? 通俗点说,就是学习参数(hyperparameters) 那什么又是hyperparameters呢? 实际很简单,就是我们的model需要学习或者说需要update的参数,比如你使用了卷积(convolution),那么一定会有一个权重W和一个bias,这个就是你需要学习的参数,也就是model的hyperparameters. 需要注意的是,不同的learning algorithm学习到的参数是不一样的,也是不能通用的. 比如,你不能把别人fine-tune的一个cnn model,直接拿到你的项目上来用,除非你们的网络结构是一样的. 原因很简单,不同的model对应不同的hyperparameters.

Sets in ML

在ML中,我们常说的sets实际有三种:

  • 训练集(training sets)
  • 验证集(validation sets)
  • 测试集(test sets)

这个我们在前面的博客中已经说过了,下面我们从hyperparameters这个角度来解释一下这三种sets到底是做什么的.

首先,我们需要知道,如果光从training sets上去学习hyperparameters,其会使model的capacity最大,从而导致overfitting.

If learned on the training set, such hyperparameters would always choose the maximum possible model capacity, resulting in overfitting.

所以,我们很自然的想到了,如果有一个sets可以用来guide the selection of hyperparameters,那么是不是就可以避免了overfitting. So:

  • The subset of data used to learn the parameters is still typically called the training set.
  • The subset of data used to guide the selection of hyperparameters is called the validation set.

既然validation sets可以用来guide从training sets学习到的hyperparameters,所以一般在validation sets上的generatlization error是要小于training error.

Since the validation set is used to “train” the hyperparameters, the validation set error will underestimate the generalization error, though typically by a smaller amount than the training error.

当然,validation sets是从training set从分出来的,典型的形式是8-2分,也就是80%用来做training sets,20%用来做validation sets.

test sets毫无疑问是用来estimate the genaratlization error的,但是要注意的是:

无论如何,你定义为test sets的数据是不能参与到train和validation的过程中来的

最后总结下,在hyperparameters的角度下,三种sets的作用和定义:

  • training sets is used to learn the parameters.
  • validation sets used to estimate the generalization error during or after training, allowing for the hyperparameters to be updated accordingly.
  • After all hyperparameter optimization is complete, the generalization error may be estimated using the test set.

Cross Validation

当我们用来train的数据量很大的时候,我们通常不用担心test sets的大小问题,但是比如我们的数据量比较小,我们将其划分为training sets,validation sets and test sets之后,发现test sets的数量很小,比如只有50这个数量级,从统计学的角度来说这个存在statistical uncertainty,此时在test sets上的test error表现比较好的不一定可以真实的代表model的好坏.

此时,可以使用cross validation,具体是:

  1. 将training sets划分为k个不重叠的部分(k trials).
  2. 使用其中的一份数据作为test sets,剩下的所有作为training sets.
  3. 计算此时的test error.
  4. 重复多次步骤2,得到所有的test errors,取均值作为最终的test error.

这个方法叫做k-fold cross-validation.

The test error may then be estimated by taking the average test error across k trials. On trial i, the i-th subset of the data is used as the test set and the rest of the data is used as the training set.

这次就写到这,下篇继续…….

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CreateAMind

keras中文文档

Keras是一个极简和高度模块化的神经网络库,Keras由纯Python编写而成并基于Theano或Tensorflow。Keras 为支持快速实验而生,如果你...

2355
来自专栏架构之路

蓄水池抽样-Reservoir Sampling

 英文原文:hadoop-stratified-randosampling-algorithm         译者:bruce-accumulate    ...

3063
来自专栏Tencentcloud

交互式数字作品教程——专为艺术家的你!

这篇文章不是对循环神经网络的综合概述。它适用于没有任何机器学习背景的读者。其目的是向艺术家和设计师展示如何使用预先训练的神经网络——使用简单的Javascrip...

2436
来自专栏Python小屋

Python扩展库scipy中值滤波算法的应用

中值滤波是数字信号处理、数字图像处理中常用的预处理技术,特点是将信号中每个值都替换为其邻域内的中值,即邻域内所有值排序后中间位置上的值。下面的代码演示了scip...

4286
来自专栏SIGAI学习与实践平台

时空建模新文解读:用于高效视频理解的TSM

接着之前的《浅谈动作识别TSN,TRN,ECO》,我们来谈谈最近 MIT和IBM Watson 的新文 Temporal Shift Module(TSM)[1...

1083
来自专栏程序员宝库

使用 JavaScript 实现机器学习和神经学网络

英文:JeffHeaton 译文: 云+社区/白加黑大人 https://cloud.tencent.com/developer/article/103589...

37810
来自专栏人工智能

通过JS库Encog实现JavaScript机器学习和神经学网络

在本文中,你会对如何使用 JavaScript 实现机器学习这个话题有一些基本的了解。

1.5K10
来自专栏AI科技大本营的专栏

AI实践精选:艺术家如何应用RNN(循环神经网络)创作AI化的艺术作品

文章导读:这篇文章不是为了全面深入的介绍循环神经网络(recurrent neural networks),而是为那些没有任何机器学习(machine lear...

3567
来自专栏数据派THU

独家 | 一文读懂TensorFlow(附代码、学习资料)

人工智能、机器学习和深度学习 在介绍TensorFlow(以下简称为TF)之前,我们首先了解一下相关背景。 TF是一种机器学习框架,而机器学习经常和人工智能,...

36710
来自专栏机器之心

学界 | 斯坦福提出神经任务编程NTP:让机器人从层级任务中学习

选自arXiv 机器之心编译 参与:朱乾树、蒋思源 斯坦福视觉与学习实验室与加州大学提出神经任务编程(NTP),它可以将指定任务作为输入,并递归地将该任务分解成...

3609

扫码关注云+社区