深入理解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 的最美丽的数学公式之一,如果有人问我数理统计领域哪个公式最能让人感觉到上帝的存在,那我一定投正态分布的票。因为这个分布戴着神秘的面纱,在自然界中无处不在,让你在纷繁芜杂的数据背后看到隐隐的秩序。


机器学习中常用的概率分布

机器学习中常见的分布其实有:

  1. 伯努利分布
  2. 二项分布
  3. 泊松分布
  4. 正态分布(高斯分布)

这几种分布之间其实是可以严格推导的,伯努利分布 -> 二项分布 -> 泊松分布 -> 正态分布。此外,前三种分布都属于离散分布,正太分布是连续分布

1. 伯努利分布

伯努利分布是单次随机实验,只有A和B两种结果,例如0和1,或者成功和失败,是由瑞士科学家雅各布·伯努利(1654 – 1705)提出来的,是最简单的离散型概率分布

在现实生活中,有很多类似的场景。例如:抛硬币,要么正面(国徽)要么反面(面值);购买彩票,要么中奖要么没中奖;打篮球要么投中要么没投中。这些事件都可被称为伯努利试验

我们记伯努利分布成功的概率为 P, (0<=p<=1),则失败的概率为Q = 1-P

其概率质量函数为:P(x)=p^x(1-p)^{1-x}

其期望值为:E(x)=\sum xP(x)=0 * q + 1 * p = p

其方差为:Var(x)=E[(x-E(x))^2]=\sum (x-p)^2P(x)=pq