从线性模型到神经网络

文章目录
  1. 线性模型基本形式
  2. 分类与回归
  3. 线性回归
  4. 最小二乘法
  5. 梯度下降法
  6. 逻辑回归
  7. 对于逻辑回归的模型优化
  8. 线性可分与线性不可分
  9. 神经网络
  10. 神经网络模型
  11. 神经网络的数学描述
  12. 过拟合问题
  13. 正则化(regularization)

2016年9月12日组会报告

截止于2016年8月23日, 阿法狗占据世界职业围棋排名榜Go Ratings的第二名, 再一次证明了人工智能的魅力, 当今的人工智能严格意义上讲, 并没有确切的理论让我们计算出某个节点的具体参数设置, 也就是说在前几十年就出现的基础理论框架之下, 当今的人工智能不得不说还处于实验科学的阶段, 但是我们不可否认的一点是, 数据量的增大和计算能力的提高确实大大提升了模型的效果, 以及各式各样的调参技巧, 这些都是基于大量的试错的, 但是了解并掌握模型的基础理论依然是相当重要的, 下面讲一讲神经网络的基本理论, 在理解神经网络之前, 首先讲解线性模型, 然后从线性模型过渡到神经网络

线性模型基本形式

假设模型由$d$个特征描述, 则可以得出模型的输入向量为$$\vec{x}=(x_1;x_2;\ldots;x_d)$$

  • 其中, $x_i$是$\vec{x}$在第$i$个属性上的取值

线性模型的本质是 : 经过模型训练确定一个各个特征的线性组合来进行预测的函数, 其形式如下$$f(\vec{x})=w_1x_1+w_2x_2+\ldots+w_dx_d+b$$
一般用向量形式表示: $$f(\vec{x})=\vec{w}^T\vec{x}+b$$

  • 其中, 参数向量$\vec{w}=(w_1;w_2;\ldots;w_d)$

模型训练的目的就是要确定参数向量 $\vec{w}$和偏置参数$b$, 得到一个确定的线性函数, 当新数据进入模型时, 就会得到相应的输出, 实现预测的目的

分类与回归

  • 分类问题是对离散变量的预测, 比如预测明天是阴、晴还是雨,就是一个分类问题

  • 回归问题是对连续变量的预测, 比如预测明天的气温是多少度,这是一个回归问题

通常我们在线性模型中常说的线性回归逻辑回归等模型所确定的线性函数, 有时候我们拿这个训练出来的线性函数做分类任务,有时候做回归任务, 因为二者本质上都是确定一个线性函数$f(\vec{x})$, 只是输出的映射不一样而已, 通常用线性回归做预测, 逻辑回归做分类

线性回归

给定数据集$$D= \lbrace (\vec{x_1},y_1),(\vec{x_2},y_2),\ldots,(\vec{x_m},y_m) \rbrace$$
其中,

  • $\vec{x_i} = (x_1; x_2; \ldots ;x_d)_i$

$x_d$表示第$i$个数据样本中第$d$个特征的取值

  • $y_i\in\Re$

$y$属于实数集

线性回归模型试图通过模型训练达到$$f(\vec{x_i})= \vec{w}^T \vec{x_i}+b, 使得f(\vec{x_i}) \simeq y_i$$

那么如何确定$\vec{w}$和$b$呢?

  • 基本思路就是衡量$f(\vec{x_i})$和$y_i$之间的差别, 并找到一种方式去优化参数向量$\vec{w}$和偏置量$b$, 使得$f(\vec{x_i})$和$y_i$之间的差别越来越小, 直到得出最优模型, 下面我们介绍最小二乘法梯度下降法

最小二乘法

  • 均方误差定义:

$$ J(\vec{w}^T,b) = \sum_{i=1}^{m}(f(\vec{x_i})-y_i)^2 $$

$$ = \sum_{i=1}^{m}(y_i-\vec{w}^T\vec{x_i}-b)^2 $$

  • 均方误差具有非常好的几何意义, 本质上就是欧氏距离, 基于均方误差最小化进行模型求解的方法称为最小二乘法
  • $J(\vec{w}^T,b)$也可以称为损失函数

在最小二乘法当中, 我们用均方误差来衡量模型输出和真实值之间的差异程度, 因此我们只要让均方误差最小化就可以得到最优模型, 即

$$(w^*,b^*)= \mathop {\arg min }\limits_{(w,b)} J(\vec{w}^T,b)$$

  • 上式的物理意义就是试图找到一个边界, 这个边界可能是一条直线, 一个平面, 或者是一个超平面, 使得所有样本到这个边界的欧氏距离之和最小, 这个求解最优模型的过程就称作线性回归模型的最小二乘"参数估计"

  • 优化模型求解过程

对于由$d$个特征描述的$m$个样本组成的数据集$D$, 利用最小二乘法对$\vec{w}$和$b$进行估计, 我们将其描述为线性方程组

$$\vec{\hat{y}}=X\vec{\hat{w}}=
\begin{pmatrix}
x_1^1 & x_1^2 & x_1^3 & \cdots & x_1^d & 1 \\
x_2^1 & x_2^2 & x_2^3 & \cdots & x_2^d & 1 \\
\vdots& \vdots& \vdots& \ddots & \vdots & \vdots \\
x_m^1 & x_m^2 & x_m^3 & \cdots & x_m^d & 1
\end{pmatrix}
\begin{pmatrix}
w_1 \\
w_2 \\
\vdots \\
w_d \\
b
\end{pmatrix}\\
=
\begin{pmatrix}
\vec{x_1}^T & 1 \\
\vec{x_2}^T & 1 \\
\vdots & \vdots \\
\vec{x_m}^T & 1
\end{pmatrix}
\begin{pmatrix}
\vec{w} \\
b
\end{pmatrix}
=
\begin{pmatrix}
\hat{y_1}\\
\hat{y_2}\\
\vdots \\
\hat{y_m}
\end{pmatrix}
$$

  • 其中方程组$\hat{y_m}$表示模型对于第$m$个样本预测的值, $\hat{w}$表示参数向量加上偏置量$b$的增广矩阵

既然我们的线性模型确定了, 那么我们的优化模型也就确定了, 也就是说找到一组确定的$\vec{\hat{w}}$使得均方误差最小, 即:

$$\hat{w}^*= \mathop {\arg min }\limits_{\hat{w}} J(\hat{w})$$

$$=\mathop {\arg min }\limits_{\hat{w}} (\vec{y}-\vec{\hat{y}})^T(\vec{y}-\vec{\hat{y}})$$

$$=\mathop {\arg min }\limits_{\hat{w}} (\vec{y}-X\vec{\hat{w}})^T(\vec{y}-X\vec{\hat{w}})$$

  • 其中, $\vec{y}$ 表示真实的值
  • 注意:我们由线性代数的基本性质可知, 一个列向量的转置与其自身相乘就是这个列向量的模的平方

令, $E_\hat{w}=(\vec{y}-X\vec{\hat{w}})^T(\vec{y}-X\vec{\hat{w}})$, 对$\hat{w}$求导得,

$$\frac{\partial E_\hat{w}}{\partial \hat{w}}= 2X^T(X\vec{\hat{w}}-\vec{y}) = 0$$

这里涉及到的矩阵运算不过分讲解,当$X^TX$为满秩矩阵或者正定矩阵时,得到$\vec{\hat{w}}$的最优解, 即:

$$\vec{\hat{w}}^*=(X^TX)^{-1}X^T\vec{y}$$

至此, 我们完成了线性回归模型的参数向量的求解

对于一组新的数据$\vec{x_n}$, 加上偏置量$\vec{\hat{x_n}}=(\vec{x_i};1)$, 由我们学习的模型就可以计算其预测值:

$$ \hat{y_n}= f(\vec{\hat{x_n}})= \vec{\hat{x_n}}^T\vec{\hat{w}}^*=\vec{\hat{x_n}}^T(X^TX)^{-1}X^T\vec{y} $$

  • 但是在现实生活中$X^TX$大都不是满秩的, 对于有些问题我们选取的特征维数甚至比样本数目还多, 导致$X$的列数多于行数, 显然可以解出多个$\vec{\hat{w}}^*$, 他们都能使模型最优化, 但是不一定每个优化的模型都适合回归任务, 选择哪一个解输出通常由算法的归纳偏好决定, 常见的做法是引入正则化项

梯度下降法

在梯度下降法中, 我们将代价函数定义为:

$$J(\hat{w}) =J(b,w_1,w_2,\ldots,w_d)$$

$$= \frac{1}{2m}\sum_{i=1}^{m}(f(\vec{x_i})-y_i)^2 $$

确定了代价函数也就确定了要优化的方向, 与最小二乘法的基本思想类似, 我们要通过一种方式使得代价函数最小, 即:

$$\hat{w}^*= \mathop {\arg min }\limits_{\hat{w}} J(\hat{w})$$

  • 与最小二乘法不同的是: 梯度下降法是一种通过迭代进行参数更新从而达到全局最优的方法, 基于这种思想衍生出很多优化算法, 不仅仅用在线性回归, 其他机器学习算法也适用, 尤其是深度学习中的参数优化求解

我们拿最简单的$f(x)= w_1x + w_2x$来看看梯度下降法的整体思路是什么样的, 首先我们要确定$w$和$b$的值使得代价函数$J(w,b)$最小, 如下图所示也就是不断将参数调整使得代价函数取图中蓝色区域部分

假如我们每一次迭代都是沿着最大的坡度向下走, 那么我们就会以最快的方式收敛得到最优模型, 即

下面我们看一下梯度下降法是如何更新参数的, 这里需要注意一下`最好在计算完所有新参数之后再同步更新, 梯度下降法更新参数公式如下:

  1. 计算所有参数的新的参数值

    $$\dot{b}=b-\alpha\frac{\partial J(w,b)}{\partial b}$$

    $$\dot{w}=w-\alpha\frac{\partial J(w,b)}{\partial w}$$

  2. 同步更新模型中的所有参数

    $$b=\dot{b}$$

    $$w=\dot{w}$$

  • 初始参数随机赋值

  • 求导得目的: 判定梯度的方向

  • $\alpha$表示学习率, 它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大, 本质上是每次迭代下降的步长, 取值在$(0,1)$

为什么这样更新就可以达到最优解呢?

我们固定只针对一个参数$w_1$来讨论, 如下图所示, 你可以理解为将$w_2$的值固定, 也就是说垂直于$w_1,w_2$轴沿着$w_1$方向做切面所得,

由上图可知,

  • 当$w>0$时, $\frac{\partial J(w,b)}{\partial w}$为, 也就是说更新之后的$w$变小, 由图可知$w$变小使得$J(w)$变小, 直到$\frac{\partial J(w,b)}{\partial w}=0$, 参数就不再变化

  • 当$w<0$时, $\frac{\partial J(w,b)}{\partial w}$为, 也就是说更新之后的$w$变大, 由图可知$w$变大使得$J(w)$变小, 直到$\frac{\partial J(w,b)}{\partial w}=0$, 参数就不再变化

随着不断的迭代, 最终得到$J(w)$的最优化模型, 这里我们对于多参数模型也是一样, 就相当于在不同的方向上做切面, 但是对于每个参数而言这种更新方式使得自身不断趋于最优解, 每个参数都以这种方式趋于最优解, 最终达到全局最优解

由上图可知,

  • 最终梯度下降的方向是由多个参数的下降方向合成的, 最终误差函数的梯度为:

$$\nabla{E}=\lbrack \frac{\partial E(\vec{w})}{\partial w_0},\frac{\partial E(\vec{w})}{\partial w_2},\ldots,\frac{\partial E(\vec{w})}{\partial w_n} \rbrack$$

  • 这里注意, 我们的学习率$\alpha$不能选择太大, 因为步长太大有可能使得更新的点在$w>0$和$w<0$之间来回跳动, 甚至发散, 最终导致模型无法收敛

最小二乘法和梯度下降法的比较

  1. 二者本质相同: 两种方法都是在给定已知数据的前提下通过对模型参数的求解得出一个一般性的估值函数, 然后通过这个估值函数对新数据进行估算。

  2. 优化原理相同: 在已知数据的框架内,使得估算值与实际值的总平方项的差值尽量更小

  3. 求解方式不同: 最小二乘法是直接对误差函数求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个初始参数,然后向初始参数下降最快的方向调整参数向量 ,在若干次迭代之后找到局部最小。

逻辑回归

我们已经了解了用线性回归进行模型的学习, 但是要做分类任务的话该怎么办呢?

  • 其实思想很简单, 如果我们将预测函数$f(\vec{x_i})$的预测值$\hat{y}$进行一个相应的函数映射, 并通过划分输出区间进行分类就可以了, 即

$$\hat{y}=g(f(\vec{x_i}))= g(\vec{w}^T\vec{x}+b)$$

对于二分类问题, 如果通过最后的函数映射, 只输出两个值就再好不过了, 比如令$g(x)= sgn(x)$来映射, 如图所示,

由上图可知, $\hat{y}$的取值只有1和-1, 这样就将样本数据分成了两类, 但是由于$sgn(x)$函数的微分性质并不理想, 所以在实际应用中我们常常以$g(x)=sigmoid(x)$
来替代$sgn(x)$函数, 如图所示

让门看一下$sigmoid(x)$的微分特性:

  • $sigmoid(x)$的微分特性非常好,我们可以在只知道$f(x)$的值的情况下求出$f(x)$的导数值, 而我们在利用梯度下降法调整参数时就是依赖于求导数实现的。

我们基于线性回归的基础上, 将线性回归的输出通过$g(x)=sigmoid(x)$函数进行映射, 便得到了逻辑回归模型, 可用于分类任务通过映射关系后的模型为

$$\hat{y}=g(f(\vec{x_i}))= g(\vec{w}^T\vec{x}+b)= sigmoid(\vec{w}^T\vec{x}+b)$$

$$= \frac{1}{1+e^{-(\vec{w}^T\vec{x}+b)}} $$

对于二分类问题,

  • 当$\hat{y}>0.5$时, 分为正类

  • 当$\hat{y}<0.5$时, 分为负类

当然, 对于基于逻辑回归的多分类任务, 请看 Softmax回归

对于逻辑回归的模型优化

在逻辑回归的模型优化依然采用梯度下降法, 由于引入了$g(x)=sigmoid(x)$映射, 导致按照原来的代价函数形式求解, 使得代价函数成为非凸函数, 意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值

  • 由上图可知, 代价函数很容易陷入局部最优解, 并不能有效的找到全局最优解, 所以在代价函数的构造方面要有所调整, 具体请查看 机器学习-损失函数

逻辑回归惩罚函数定义:

$$
Cost(\hat{y},y) =
\begin{cases}
-log(\hat{y}), & \text{if $y=1$ } \\[2ex]
-log(1-\hat{y}), & \text{if $y=0$ }
\end{cases}
$$

$$= -ylog(\hat{y})-(1-y)log(1-\hat{y}) $$

  • 上述代价函数是基于惩罚的思想, 下图中横坐标为逻辑回归模型的预测值$\hat{y}$

由上图可知,

  • 如果真实值为1, 当预测值越接近于1的时候, 代价越小; 如果真实值为0, 当预测值越接近于0的时候, 代价越小

将上式中的惩罚函数带入逻辑回归的代价函数,

$$J(\vec{w},b)=\frac 1m \sum_{i=1}^{m} Cost(\hat{y},y)$$

$$= -\frac 1m \sum_{i=1}^{m} y_ilog(\hat{y}_i)+(1-y_i)log(1-\hat{y}_i)$$

  • 此时的代价函数是一个凸函数, 利用梯度下降法求得最优解

线性可分与线性不可分

以上我们都是假设我们的数据集是线性可分的, 所谓的线性可分就是

  1. 在二维平面上可以找到一条直线作为决策边界(两个特征)

  2. 在三维立体空间中可以找到一个平面作为决策边界(三个特征)

  3. 在模型特征多余三个时, 也就是说在高维空间中可以找到一个线性超平面作为决策边界

是否可以用线性模型解决非线性问题呢? 我们来看一个最简单的例子

  1. 与问题

    假设由上图的数据可以训练出的模型为$$f(\vec{x})=x_1+x_2-1.5$$, 然后$sigmoid(x_1+x_2-1.5)$得出$y$值

  2. 或问题

    假设由上图的数据可以训练出的模型为$$f(\vec{x})=x_1+x_2-0.5$$, 然后$sigmoid(x_1+x_2-0.5)$得出$y$值

  3. 异或问题

    • 由于异或问题并不是一个线性可分问题, 所以用单纯的线性方法无法找到一个边界, 需要更复杂模型解决异或问题

由上图可得, 我们通过对3个线性方程的组合, 并在输出端通过变形的$sigmoid(x)$函数进行映射, 达到异或的求解模型:

  • 为了方便讨论假设3个线性函数的所有偏置量$b=0$

图中(1)的输出为: $$f_1(x_1,x_2)=\hat{sigmoid}(x_1-x_2)$$
图中(2)的输出为: $$f_2(x_1,x_2)=\hat{sigmoid}(-x_1+x_2)$$
图中(3)的输出为: $$f_3(f_1,f_2)=\hat{sigmoid}(f_1+f_2)$$

  • Python代码实现

  • 为了方便讨论, 映射函数采用下图中$a$趋于无穷的情况

通过对三个线性函数的组合我们解决了异或问题, 其实异或模型就是一个基本的神经网络, 输入特征为2个的输入层, 包含2个基本单元的隐含层, 只有1个输出单元的输出层, 虽然这是一个简单的模型, 但是说明了一个道理就是, 复杂的问题(比如非线性问题)需要复杂模型(比如神经网络)去处理, 而复杂的模型(比如神经网络)的基本单元是简单模型(比如逻辑回归), 下面正式介绍神经网络

了解更多 :

神经网络

在生物神经网络中,神经元是神经网络的基本单元,树突接收来自其他神经元的传递电信号(电信号有两种:兴奋信号和抑制信号), 轴突用来传输细胞体产生的输出电信号,一个神经元把来自不同树突的兴奋性或抑制性输入信号 (突触后膜电位)累加求和,当膜电位高于阈值,细胞被激活,并通过突触把产生的电信号传递给其他神经细胞。

神经元模型

通过对生物神经元的仿真,建立抽象的神经元模型,神经元接收来自$n$个其他神经元传递的输入信号,并把这些输入信号通过带权重的连接进行传递, 神经元通过接受到的总输入值与神经元的阈值相比较, 通过激活函数处理已产生神经元的输出, 如下图所示:

  • 神经元模型的数学表示

$$ O_j = f(\sum_{i=1}^{n}x_iw_{ij}-\theta_j) $$

其中,

  • $w_{i j}$ 表示第$j$个神经元的第$i$个输入的权值
  • $\theta_j$ 表示第$j$个神经元的阈值
  • $f(\odot)$表示激活函数, 比如$sigmoid(x)$函数

我们可以看出, 这个单一神经元的输入到输出映射关系其实就是一个逻辑回归(logistic regression), 将这些神经元按照一定的层次连接起来, 就像解决上一节中的异或问题一样, 就得到了神经网络, 神经网络可以理解为包含了许多参数的数学模型, 这个数学模型是由多个函数(比如$O_j$)嵌套而成的, 而我们的目的就是通过一定数据的训练, 通过最优化算法去确定模型中的参数, 使得整个模型的代价函数最小

神经网络模型

所谓神经网络就是将许多个单一神经元联结在一起,这样一个神经元的输出就可以是另一个神经元的输入。

  • 下图就是一个简单的神经网络:

图中,

  • +1的圆圈被称为偏置节点,也就是截距项$b$

  • 蓝色圆圈表示神经元的输入, 橙色圆圈表示基本神经元

  • 神经网络最左边的一层叫做输入层,最右的一层叫做输出层, 中间所有节点组成的一层叫做隐藏层,因为我们不能在训练样本集中观测到它们的值

  • $n_l$表示神经网络的层数, 本例中$n_l=3$

  • $L_i$ 表示第$i$层, $L_1$ 为输入层

  • $L_{n_l}$ 为输出层, 本例中输出层为 $L_3$

神经网络的参数: $$ (W,b)= (W^{(1)},b^{(1)},W^{(2)},b^{(2)}) $$

其中,

  • $W^{(i)},b^{(i)}$ 为列向量, 分别表示第$i$层的权值向量偏置向量

  • 在权值向量中, $W_{ij}^{(l)}$ 表示第$l$ 层第$j$单元与第$l+1$ 层第$i$单元之间的连接权重

  • 在偏置向量中, $b_i^{(l)}$ 表示第$l+1$层第$i$单元的偏置项, 注意:偏置单元没有输入,因为它们总是输出+1

神经网络的数学描述

式中,

  • $a_i^{(l)}$ 表示第$l$层第$i$个单元的输出值, 注意, 当$l=1$时, $a_i^{(1)}$是神经网络的第$i$个输入特征的取值, 即: $a_i^{(1)}=x_i$

因为在网络结构上没有闭环或回路, 上面的计算步骤叫做前向传播, 也就是说, 当我们已知一组特征属性的取值, 通过这种计算方式, 将上一层的输出值作为下一层的输入值, 以此类推直到得到最终结果, 如果我们将参数向量矩阵化, 就可以利用线性代数中的相关理论快速求解

了解更多 : 神经网络中的梯度下降法—反向传播算法

过拟合问题

在上图中,假设我们训练出来的函数由左到右分别是

$$ Y_1=w_0+w_1x$$

$$ Y_2=w_0+w_1x+w_2x^2$$

$$ Y_3=w_0+w_1x+w_2x^2+w_3x^3+w_4x^4$$

图中我们可以看到, 对于相同的训练数据

  • $Y_1$特征集合过小, 不能很好的适应训练数据,叫做欠拟合

  • $Y_3$特征集合过大, 对所有训练数据都拟合得很好, 但是这样对于新数据的预测能力就很差, 即泛化能力很差, 叫做过拟合

  • 规律 : 模型越复杂越容易过拟合

下面我们来看一下如何判断过拟合和欠拟合:

  • 欠拟合特征 : 训练误差很高 , 测试误差也很高

  • 过拟合特征 : 训练误差很低 , 测试误差也很高

解决过拟合:

  1. 减少特征维数

  2. 获得更多的训练数据

  3. 增大正则化系数

解决欠拟合:

  1. 增大特征维数

  2. 减小正则化系数

正则化(regularization)

我们知道, 由$Y_1$到$Y_3$模型的复杂度越来越高, 就越容易出现过拟合的问题, 而且正是那些高阶项导致的过拟合, 如果我们找一种方法可以使得高阶项的系数接近于0, 那么高阶项的作用就不大了, 模型的过拟合问题就会减轻, 这就是正则化的基本思想

目的 : 在规则化参数的同时最小化训练误差

首先最小化训练误差并不是我们的最终目的, 我们的最终目的是让预测误差很小, 如果模型过拟合, 虽然训练误差很小, 但是预测误差就很大了, 所以我们要保证模型尽量简单的情况下, 使得训练误差很小, 这样得到的模型才有很好的泛化能力

  • 正则化后的目标函数

$$(w^*,b^*)= \mathop {\arg min }\limits_{(w,b)} J(\vec{w}^T,b) + \lambda\Omega(\vec{w}^T)$$

式中,

  • $\lambda$ 称为正则化参数, 通常选取的值很大

  • $\lambda\Omega(\vec{w}^T)$ 为正则化项, 也叫惩罚项

  • $\Omega(\vec{w}^T)$ 是对参数$\vec{w}$的规则化函数, 其作用是去约束模型尽量的简单, 该函数根据具体的机器学习模型而定

  • 规则化函数$\Omega(\vec{w}^T)$一般是模型复杂度的单调递增函数,模型越复杂,规则化值就越大

比如, 对于$Y_3$模型, 我们选择

$$\Omega(\vec{w}^T)= \lambda\sum_{j=1}^n{w_j^2}$$

  • $n$表示n个参数
  • 根据惯例不对$w_0$进行惩罚

假设我们想使得参数$w_3$和$w_4$的值很小, $\lambda =10000$那么最终的优化目标函数为:

$$ (w^*,b^*)= \mathop {\arg min }\limits_{(w,b)} J(\vec{w}^T,b) + \lambda\sum_{j=1}^n{w_j^2} $$

$$ = \mathop {\arg min }\limits_{(w,b)} J(\vec{w}^T,b) + 10000w_3 + 10000w_4 $$

  • 下面我们看看为什么加入正则化项会使得参数$w_3$和$w_4$变小?

一个直观的解释: 为了使得目标函数最小, 由于$\lambda$的值很大, 所以要将参数$w_3$和$w_4$的值尽可能的小才行

  • 当然, 在实际的模型中, 我们的正则化项时从$i=1$到$i=n$的, 这样就会在全局上对参数进行一个惩罚, 如果$
    lambda$过大, 除了$w_0$之外, 所有参数几乎为零, 那么模型是一条水平的直线, 模型欠拟合; 如果$\lambda$过小, 对参数惩罚不够模型过拟合, 所以要选择合适的正则化参数

参考资料 : 机器学习中的范数规则化之(一)L0、L1与L2范数

了解更多 : 机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?