深度学习中的交叉验证

第一次看 ng 斯坦福机器学习这门课程的时候,就没看懂交叉验证是怎么回事。

1. 模型选择和交叉验证集

参考视频: 10 – 3 – Model Selection and Train_Validation_Test Sets (12 min).mkv

ng 在讲交叉验证的时候,是这么举例的

假设我们要在10个不同次数的二项式模型之间进行选择:

显然越高次数的多项式模型越能够适应我们的训练数据集,但是适应训练数据集并不代表着能推广至一般情况,我们应该选择一个更能适应一般情况的模型。我们需要使用交叉验证集来帮助选择模型。 即:使用60%的数据作为训练集,使用 20%的数据作为交叉验证集,使用20%的数据作为测试集


逻辑回归的代价函数

线性回归:2 – 2 – Cost Function (8 min).mkv

逻辑回归:6 – 4 – Cost Function (11 min).mkv

在看吴恩达的机器学习教程时,逻辑回归的代价函数怎么来的一开始没看懂,后来想了一下想明白了,记录一下

我们都知道,线性回归(不管是单变量还是多变量)


深入理解L1、L2正则化

原文链接:https://zhuanlan.zhihu.com/p/29360425

正则化(Regularization)是机器学习中一种常用的技术,其主要目的是控制模型复杂度,减小过拟合。最基本的正则化方法是在原目标(代价)函数 中添加惩罚项,对复杂度高的模型进行“惩罚”。其数学表达形式为:

[公式]

式中 [公式][公式]为训练样本和相应标签, [公式] 为权重系数向量; [公式] 为目标函数, [公式] 即为惩罚项,可理解为模型“规模”的某种度量;参数[公式] 控制控制正则化强弱。不同的 [公式] 函数对权重 [公式] 的最优解有不同的偏好,因而会产生不同的正则化效果。最常用的 [公式] 函数有两种,即 [公式] 范数和 [公式] 范数,相应称之为 [公式] 正则化和 [公式] 正则化。此时有:

[公式]
[公式]

本文将从不同角度详细说明 [公式][公式] 正则化的推导、求解过程,并对 [公式] 范数产生稀疏性效果的本质予以解释。


实践 pytorch.nn.linear 线性回归

nn.Linear 定义:https://pytorch.org/docs/stable/generated/torch.nn.Linear.html#torch.nn.Linear

class torch.nn.Linear(in_features: int, out_features: int, bias: bool = True)

其中:

  • in_features – 每次输入的样本数,默认是1
  • out_features – 每次输出的样本数,默认也是1
  • bias – If set to False, the layer will not learn an additive bias. Default: True

pytorch 本身是没有神经网络层的概念的,所以如果我们要定义一个神经网络,需要通过 torch.nn.Module 来实现

假设我们有很多样本数据,符合模型 y = wx + c,我们也可以用 torch 来直接生成一些随即样本数据

x = torch.unsqueeze(torch.linspace(0, 1, 300),dim=1)
y = 2 * x + torch.rand(x.size())


参数估计:从频率学派到贝叶斯学派

很多时候我们有一堆数据,并且也知道数据的基本模型,但是不知道模型的参数是什么。这是基本的机器学习过程,这个过程就叫参数估计

比如我们现在就有一堆数据,模型是y = \beta_0 x + \beta_1 + \xi = \beta^T X + \xi,我们要求\beta

常见的计算\beta的手段有:

  1. 最小二乘法
  2. 最大似然估计
  3. 最大后验估计
  4. 贝叶斯估计

但是这几种估算方法的背后,其实代表了两类学术派别,也就是大家学习贝叶斯的时候经常听到的,频率学派和贝叶斯学派

今天来捋捋这两种学派的区别和联系


二项分类逻辑回归

线性回归产生的预测值y=\theta^T x是实值,而逻辑回归通常是要解决分类问题。用线性回归来解决分类问题效果是很差的

分类问题在生活中是很常见的,二项逻辑回归模型有如下的条件概率分布

  1. 成功概率:P(Y=1|X) = \frac {1}{1+e^{-\theta^T x}}
  2. 失败概率:P(Y=0|X) = 1- \frac {1}{1+e^{-\theta^T x}}

最大似然估计求解线性回归

之前我在讲理解最大似然估计 http://0fd.org/2017/06/10/understand-the-maximum-likelihood-estimation/ 的时候,讲了两个例子,不过都很简单,今天来讲讲怎么用最大似然估计来求解线性回归方程,不管是一元还是多元

线性回归方程如下:

y = \theta_1 x_1 + ... + \theta_n x_n = \sum_{i=1}^{n} \theta_i x_i

现在假设我们有 m 组样本数据,(y^1, x_{(1 \sim n)}^1), (y^2, x_{(1 \sim n)}^2), ..., (y^m, x_{(1 \sim n)}^m),我们怎么用最大似然估计来求解\theta呢?


理解最大似然估计

最大似然估计是传统机器学习里最常见的一种估计,简单来说,就是利用已知的样本结果,在确定模型的基础上,反推模型的参数

前面我们讲过泊努力分布、二项分布、泊松分布,都是日常生活中常见的模型。这些分布的模型就是他的概率函数,比如泊努力分布是单次实验,所以模型就是概率p,二项分布是P(X=i) = \binom{n}{i}P^i(1-P)^{n-1},泊松分布的模型就是P(X=k) = \frac {\lambda^k} {k!} e^{-\lambda}

这里面有3个关键点:

  1. 样本已知
  2. 模型已知
  3. 每个样本都是一次完全独立事件的结果

监督学习、无监督学习、半监督学习、强化学习

原文:https://cloud.tencent.com/developer/article/1099894

一般说来,训练深度学习网络的方式主要有四种:监督、无监督、半监督和强化学习。在接下来的文章中,计算机视觉战队将逐个解释这些方法背后所蕴含的理论知识。除此之外,计算机视觉战队将分享文献中经常碰到的术语,并提供与数学相关的更多资源。

1. 监督学习(Supervised Learning)

监督学习是使用已知正确答案的示例来训练网络的。想象一下,我们可以训练一个网络,让其从照片库中(其中包含你父母的照片)识别出你父母的照片。以下就是我们在这个假设场景中所要采取的步骤。


正态分布的前世今生

神说,要有正态分布,就有了正态分布。

神看正态分布是好的,就让随机误差服从了正态分布。

— 创世纪—数理统计

转载自:https://cosx.org/2013/01/story-of-normal-distribution-1

1. 正态分布,熟悉的陌生人

学过基础统计学的同学大都对正态分布非常熟悉。这个钟形的分布曲线不但形状优雅,它对应的密度函数写成数学表达式

\displaystyle f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{{(x-\mu})^2}{2\sigma^2}}

也非常具有数学的美感。其标准化后的概率密度函数

\displaystyle f(x)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}

更加的简洁漂亮,两个最重要的数学常量 (\pi)(e) 都出现在这公式之中。在我个人的审美之中,它也属于 top-N 的最美丽的数学公式之一,如果有人问我数理统计领域哪个公式最能让人感觉到上帝的存在,那我一定投正态分布的票。因为这个分布戴着神秘的面纱,在自然界中无处不在,让你在纷繁芜杂的数据背后看到隐隐的秩序。