小白的Cs229学习笔记

279 阅读15分钟

机器学习 Machine Learning

Andrew. NG(Stanford. CS229)

CBaymax

自己记录着的学习心得,欢迎讨论!

1 监督学习 Supervised Learning

监督学习:给定一个训练集用来学习函数h(x),使得h(x)能很好的预测yh叫做假设(hypothesis)。

如果被预测的y是连续取值的,则该问题称为回归问题(regression);相反,y如果取值是离散的,则称为分类问题(classification)

专用名词:

  • 输入变量/特征 \mathbf{x} —— input variable or features
  • 输出变量/目标 y —— output variable or target
  • 训练样本 (\mathbf{x},y) —— training example # 第i组样本 (\mathbf{x}^i,y^i)
  • 训练集 \left\{ (\mathbf{x}^i,y^i)|i=1,2,...,m \right\}——training set
  • m :训练集的数量
  • n :特征数量
  • \theta :参数

1.1 回归问题 Regression Problem

1.1.1 线性回归 Linear Regression

对于一组训练集样本\left\{ (\mathbf{x}^i,y^i)|i=1,2,...,m \right\},如果\mathbf{x},y 近似为线性关系,则我们可以对y作出如下假设h_\theta(\mathbf{x})

\begin{align}
h_\theta(\mathbf{x}) 
&= \theta_0 + \theta_1x_1 + \theta_2x_2+...+\theta_n x_n \\
&=\sum_{i=0}^{n}\theta_ix_i \tag{约定$x_0$=1}\\
&=\left(\begin{array}{}
    \theta_0 & \theta_1 & \theta_2 & \cdots
  \end{array}\right)
  \left(\begin{array}{}
    x_0 \\ x_1 \\ x_2 \\ \vdots
  \end{array}\right)\\
 &=\mathbf{\theta}^T \mathbf{x}\tag{矩阵形式} \\
\end{align}

判断假设好坏的标准:误差 |h_\theta(\mathbf{x})-y| 越小越好

于是,引入成本函数(cost function):

\begin{align}
J(\theta) = \frac{1}{2}\sum_{i=1}^m(h_\theta(\mathbf{x}^i)-y^i)^2
\end{align}

使得J(\mathbf{\theta})最小的一组\mathbf{\theta}值即为最优假设。

使用梯度下降算法(gradient descent algorithm) 寻找\theta值:

\begin{align}
\theta_j:= \theta_j-\alpha \frac{\partial}{\partial\theta_j}J(\theta) \tag{for every j from 1 to n}\\
\end{align}

首先对\theta设定一个初始的猜测值(一般设为0),接着沿着梯度下降的方向不断的调整\theta,直到J(\theta)最小

\alpha称为学习速率,决定每一次迭代的步进大小

在只有一个样本(\mathbf{x},y)的情况下,初步理解一下这个算法:

首先,推导梯度的表达式

\begin{align}
\frac{\partial}{\partial\theta_j}J(\theta) &= \frac{\partial}{\partial\theta_j}\frac{1}{2}(h_\theta(\mathbf{x})-y)^2 \\
	&= 2·\frac{1}{2}(h_\theta(\mathbf{x})-y)·\frac{\partial}{\partial\theta_j}(h_\theta(\mathbf{x})-y) \\
	&= (h_\theta(\mathbf{x})-y)·\frac{\partial}{\partial\theta_j}(\sum_{i=0}^n\theta_ix_i - y) \\
	&= (h_\theta(\mathbf{x})-y)·x_j
\end{align}

于是,单个样本的更新规则为:

\theta_j := \theta_j -\alpha(h_\theta(\mathbf{x})-y)x_j\tag{for every j from 1 to n}

该规则叫做LMS更新规则( Least Mean Squares,最小均方),也被称为Widrow-Hoff学习规则

规则有一些直观的特性,更新的幅度大小与(h_\theta(\mathbf{x})-y) 即假设与真值的误差成正比,当误差非常大的时候,算法可以较大范围的调整参数\theta,使得J(\theta)迅速收敛;当误差很小的时候,假设与真值拟合的非常好,参数的值也就在每次迭代的过程中变化很小了。

要值得注意的是,根据导数或梯度的性质,如果J(\theta)有多个极小值,使用LMS更新规则往往会收敛到局部极小值,而不是最小值

但是由于我们的假设h_\theta(x)是线性的,所求得的成本函数J(\theta)为二次函数,所以梯度下降算法总是收敛到全局最小值。

a. 批量梯度下降算法 Batch Gradient Descent

这是多样本情况下的一种LMS更新规则

多样本情况下的成本函数为

\begin{align}
J(\theta) = \frac{1}{2}\sum_{i=1}^m(h_\theta(\mathbf{x}^i)-y^i)^2
\end{align}

求其梯度:

\begin{align}
\frac{\partial}{\partial\theta_j}J(\theta) &= 2·\frac{1}{2}\sum_{i=1}^m \left\{(h_\theta(\mathbf{x}^i)-y^i)·\frac{\partial}{\partial\theta_j}(h_\theta(\mathbf{x}^i)-y^i)\right\} \\
&= \sum_{i=1}^m \left\{(h_\theta(\mathbf{x}^i)-y^i)·\frac{\partial}{\partial\theta_j}\left[\sum_{i=0}^n(x^i)-y^i\right]\right\} \\
&= \sum_{i=1}^m \left((h_\theta(\mathbf{x}^i)-y^i)·x_j^i\right) \\
\end{align}

于是得到了批量梯度下降算法( Batch Gradient Descent)的更新规则:

\begin{align}
&重复至收敛: \\
&\{\\
&\theta_j := \theta_j - \alpha · \sum_{i=1}^m \left((h_\theta(\mathbf{x}^i)-y^i)·x_j^i\right) \quad (for \space every \space j)\\
&\}
\end{align}

这个算法在每一个步长内遍历一次训练集,然后更新\theta的值,一步一步地收敛在J(\theta)的最小值

显然,批量梯度下降算法在训练集较小的情况下非常易于计算,但是不适用于大规模的训练集。

b. 随机梯度下降算法 Stochastic Gradient Descent

在训练集规模比较大的情况下,我们采用另一种LMS更新规则——随机梯度下降算法( Stochastic Gradient Descent),又叫增量梯度下降算法(Incremental Gradient Descent):

\begin{align}
&\{\\
&for\ \ i=1 \ \ to \  \  m\\
&\quad \{\\
&\quad \theta_j := \theta_j - \alpha · \left((h_\theta(\mathbf{x}^i)-y^i)·x_j^i\right) \qquad (for \ \ every \ \ j)\\
&\quad \}\\
&\}
\end{align}

这个算法针对每一个样本点,更新一次\theta值,使得\theta快速变化。

但是这种算法往往会在J(\theta)最小值附近震荡,而无法收敛到最小值。不过通常情况下,在最小值附近的这些\theta值也足够满足精度要求。故通常更加推荐随机梯度下降算法,而不是批量梯度下降算法,尤其是在训练集规模大的时候。

c. 正规方程组算法 The Normal Equations

梯度下降法是一种找出J(\theta)最小值的迭代方法,现在介绍一种基于最小二乘法(Least Squares Revisited)的非迭代算法—— 正规方程组算法 (The Normal Equations)

首先,写出各变量和参数的矩阵形式:

\begin{align}
&\mathbf{x}_{m\times n}=
     \left[
     \begin{matrix}
      -(\mathbf{x}^1 )^T-\\
      -(\mathbf{x}^2 )^T-\\
      -(\mathbf{x}^3 )^T-\\
       \vdots\\
      -(\mathbf{x}^m )^T-\\
      \end{matrix}
      \right]
 ,\quad 
 \mathbf{y}_{m\times 1}=
      \left[
      \begin{matrix}
      y^1\\
      y^2\\
      y^3\\
       \vdots\\
      y^m\\
      \end{matrix}
      \right]
 ,\quad
\mathbf{\theta}_{n\times 1}=
      \left[
      \begin{matrix}
      \theta^1\\
      \theta^2\\
      \theta^3\\
       \vdots\\
      \theta^n\\
      \end{matrix}
      \right]
\\
&h(\mathbf{x})_{m\times 1}
= \mathbf{x}_{m\times n} \cdot \mathbf{\theta}_{n\times 1}




\end{align}

对于成本函数:

\begin{align}
J(\theta)&= {1\over2}\sum_{i=1}^m(h_\theta(x^i)-y^i)^2  \qquad{注:J(\theta)视为1\times1矩阵} \\
&= {1\over2}(h(\mathbf{x})-\mathbf{y})^T(h(\mathbf{x})-\mathbf{y}) \\


\nabla_\theta J(\mathbf{\theta})  &= \nabla_\theta {1\over2}(h(\mathbf{x})-\mathbf{y})^T(h(\mathbf{x})-\mathbf{y})\\
&= {1\over2}\nabla_\theta(\mathbf{\theta}^T\mathbf{x}^T\mathbf{x}\mathbf{\theta}-\mathbf{\theta}^T\mathbf{x}^T\mathbf{y}-\mathbf{y}^T\mathbf{x}\mathbf{\theta} +\mathbf{y}^T\mathbf{y})_{1\times1}\\
&={1\over2}\nabla_\theta tr(\mathbf{\theta}^T\mathbf{x}^T\mathbf{x}\mathbf{\theta}-\mathbf{\theta}^T\mathbf{x}^T\mathbf{y}-\mathbf{y}^T\mathbf{x}\mathbf{\theta} +\mathbf{y}^T\mathbf{y}) &\tag1 \\
&={1\over2}\nabla_\theta(tr(\mathbf{\theta}^T\mathbf{x}^T\mathbf{x}\mathbf{\theta})-2tr(\mathbf{y}^T\mathbf{x}\mathbf{\theta})) &\tag2  \\
&={1\over2}(\mathbf{x}^T\mathbf{x}\mathbf{\theta}+\mathbf{x}^T\mathbf{x}\mathbf{\theta}-2\mathbf{x}^T\mathbf{y})\\
&=\mathbf{x}^T\mathbf{x}\mathbf{\theta}-\mathbf{x}^T\mathbf{y} \tag{*}\\
\\
用到的定&理:\\
(1) &tr\mathbf{A}=tr\mathbf{A}^T\\	&tr(\mathbf{A}+\mathbf{B})=tr\mathbf{A}+tr\mathbf{B}\\
(2)	&tr\mathbf{A}\mathbf{B}\mathbf{C}\mathbf{D}=tr\mathbf{D}\mathbf{A}\mathbf{B}\mathbf{C}=tr\mathbf{C}\mathbf{D}\mathbf{A}\mathbf{B}=\cdots
\\
&\nabla_{\mathbf{A}}tr\mathbf{A}\mathbf{B}\mathbf{A}^T\mathbf{C} = \mathbf{C}\mathbf{A}\mathbf{B} +\mathbf{C}^T\mathbf{A}\mathbf{B}^T \\
&其中,\mathbf{A}=\mathbf{\theta},\mathbf{B}=E,\mathbf{C}=\mathbf{x}^T\mathbf{x}\\
&\nabla_{\mathbf{A}}tr\mathbf{A}\mathbf{B}=\nabla_{\mathbf{A}}tr\mathbf{B}\mathbf{A}=\mathbf{B}^T\\
&其中,\mathbf{A}=\mathbf{\theta},\mathbf{B}=\mathbf{y}^T\mathbf{x}\\
\end{align}

最后,我们的目标是使J(\theta)的值最小,取其极值点,即导数为零的点。

(*)式为0,得到正规方程 (The Normal Equations):

\begin{align}
&\nabla_\theta J(\mathbf{\theta}) =\mathbf{x}^T\mathbf{x}\mathbf{\theta}-\mathbf{x}^T\mathbf{y}\overset{set}{=}\mathbf{0}\\
\\
&\mathbf{\theta}=(\mathbf{x}^T\mathbf{x})^{-1}\mathbf{x}^T\mathbf{y} \tag{The Normal Equations}
\\
\end{align}

三种算法的比较(基于线性回归)

算法 批量梯度下降 随机梯度下降 正规方程组
算法原理 最小均方 最小均方 最小二乘
计算过程 需要多次迭代 需要多次迭代 不需要多次迭代
复杂度 O(n2)(一次迭代) O(n2) O(n^3)

对于梯度下降的迭代算法,有如下特点:

  • 需要预先选定学习速率\alpha
  • 多次迭代
  • 需要特征缩放(Feature Scaling)(简单来说就是为特征值分配不同的权重)
  • 时间花费相对较少,收敛性有保证,最终总会有结果

对于正规方程组算法,有如下特点

  • 无需设定学习速率和特征缩放
  • 无需多次迭代,直接求得精确参数
  • 耗费较多的时间,求逆也会存在数值不稳定(不可逆)的情况

批量梯度下降算法与随机梯度下降算法的比较:

  • 批量梯度下降算法:总是沿着梯度最小的方向迭代,使得最终求解的是全局最优解,但对于大规模样本效率低下。

  • 随机梯度下降算法:虽然不是每次迭代都是向着最优解方向,但是整体方向是朝向最优解的,最终的结果往往在最优解附近。但算法效率更高,适用于大规模训练样本的情况。

总结

算法的选取与特征值的数量n和训练集的样本数量m有关。

线性回归的概率解释

在解决线性回归问题的时候,我们选取了成本函数为J(\theta) = \frac{1}{2}\sum_{i=1}^m(h_\theta(\mathbf{x}^i)-y^i)^2,但是为什么选取的判断标准是二者之差的二次方而不是绝对值,或者四次方呢?现在给出基于概率学的解答。

首先假设我们的目标变量和输入特征之间存在着某种等量关系:

y^i=\theta^T\mathbf{x}^i+\varepsilon^i

其中\varepsilon^i是第i项样本的误差项,可以认为是遗漏掉的特征、随机噪音、测量精度等等所造成的误差总和。

中心极限定理知,无论它是何种原因造成的何种分布的误差,在极限情况下,误差的总和都最终归化为正态分布。

中心极限定理可以描述为:

\begin{align}
&若X_i \overset{iid}{\sim} F(\mu,\sigma^2)\\
&则有:\lim\limits_{n \to \infty }{\sum_{i=1}^nX_i}\sim N(n\mu,n\sigma^2)
\end{align}

故假设\varepsilon^i服从均值为0,方差为\sigma^2的正态分布:

p(\varepsilon^i) = {1 \over {\sqrt{2\pi}\sigma}}exp(-{{(\varepsilon^i})^2\over 2\sigma^2})

进一步假设,对于不同的样本i\varepsilon^i之间可以认为是独立同分布的(IID ,independently and identically distributed) 。这样可以将假设写为\varepsilon^{i}\overset{iid} \sim N(0,\sigma^2)

则有

p(y^i|\mathbf{x}^i;\theta) = {1\over{\sqrt{2\pi}\sigma}}exp(-{{(y^i-\theta^T\mathbf{x}^i)^2}\over{2\sigma^2 }})

上式表示给定随机变量x^i和参数\theta的值,y^i的分布函数 我们对参数\theta进行极大似然估计(Maximum Likelihood Estimate)

似然函数可以写为

\begin{align}
L(\theta) &= L(\mathbf{y}|\mathbf{x};\theta)\\
&=\prod_{i=1}^{m}p(y^i|\mathbf{x}^i;\theta)\\
&=\prod_{i=1}^{m}{1\over{\sqrt{2\pi}\sigma}}exp(-{{(y^i-\theta^T\mathbf{x}^i)^2}\over{2\sigma^2 }})
\end{align}

我们的目的是要找到一个能使似然函数L(\theta)最大,即概率最大的\theta值。我们对函数做一下计算上的处理

\begin{align}
\ell (\theta) &= lnL(\theta) \tag{取对数}\\
&=ln\prod_{i=1}^{m}{1\over{\sqrt{2\pi}\sigma}}exp(-{{(y^i-\theta^T\mathbf{x}^i)^2}\over{2\sigma^2 }})\\
&=\prod_{i=1}^{m}ln{1\over{\sqrt{2\pi}\sigma}}exp(-{{(y^i-\theta^T\mathbf{x}^i)^2}\over{2\sigma^2 }})\\
&= m ln({1\over{\sqrt{2\pi}\sigma}})-{1\over{2\sigma^2}}\sum_{i=1}^m(y^i-\theta^T\mathbf{x}^i)^2
\end{align}

发现,使\ell (\theta)L(\theta)最大也就意味着{1\over2}\sum_{i=1}^m(y^i-\theta^T\mathbf{x}^i)^2 取到最小,实际上就是上节提到的成本函数最小。

总结:利用成本函数J(\theta)判别假设的好坏程度,在概率统计学上讲,是一种概率最大的参数估计方法。

1.1.2 非线性回归

初识:欠拟合与过拟合

在实际生活中,我们拟合的数据往往并不是线性的关系。在下图的例子中我们可以明显的看出数据的趋势并不是一条直线,所以我们用直线去拟合就不是最佳的办法。

那我们尝试着增加一个二次项来拟合数据,假设h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2 (注意区分这里的上角标“2”意思是x的平方,而前面章节的上角标i仅仅表示第i组样本)

通过二次项的拟合,我们得到了比较理想的曲线。

那么,是否高次项越多越好呢?

根据待定系数法,6个样本点可以列6个方程,可以解出6个未知参数,它最高能确定一个五次方的曲线,于是我们得到了一条完全经过6个样本点的曲线,然而这是否是我们想要的结果呢?虽然这条拟合曲线完美的通过了所有的样本点,但是我们仍认为这条曲线不是一个很好的预测工具,样本点的规律(随着x的增大,y逐渐增大,但y增大的速率逐渐变缓)被完全掩盖掉。甚至在两端出现了反常的反比关系。

现在我们给出过拟合与欠拟合的定义:

欠拟合(underfitting):使用简单的模型(直线)去拟合复杂数据(曲线)时,会导致模型很难拟合数据的真实分布,这时模型便欠拟合了,或者说有很大的偏差(Bias, 即为模型的期望输出与其真实输出之间的差异) 过拟合(overfitting):为了得到比较精确的模型而过度拟合训练数据,或者模型复杂度过高时,可能连训练数据的噪音也拟合了,导致模型在训练集样本上的拟合效果非常好,但实际应用中效果却很差,这时模型便过拟合了,或者说有很大的方差( Variance, 刻画了模型的输出与期望输出之间的差异,此时在不同训练集上得到的模型波动比较大)。

网络图片

在后面章节我们会进一步讨论欠拟合与过拟合,并给出概念的详细定义。

局部加权线性回归 Locally Weighted Linear Regression

在本节,我们简要地讲一下局部加权线性回归(LWR,locally weighted linear regression)

假设我们有足够多的样本数据,我们的成本函数设置为加权成本函数

\begin{align}
J(\theta) &= \frac{1}{2}\sum_{i=1}^m\mathcal{w}^i (h_\theta(x^i)-y^i)^2\\
\mathcal{w}^i&\overset{set}= exp(-{{(x^i-x)^2}\over{2\tau^2}})
\end{align}

\mathcal{w}^i​设定为类高斯型曲线,实际上也可以取其他形状的曲线。

这里的\tau​控制了权重变化的速率,\tau​越大,曲线形状越宽,\tau​越小,曲线形状越尖。

利用加权后的成本函数,我们再对样本进行线性回归计算,在拟合点x附近的样本点权重比较大,离x​越远,样本点权重也就越小。这样远离拟合点的样本对J(\theta)的影响就可以忽略掉,而只关心在拟合点附近的样本点的对J(\theta)的影响。

其实,为了更加方便理解,我们可以将加权函数\mathcal{w}^i换成如下:

\mathcal{w}^i=
\begin{cases}
1&,|x^i-x|\le2\tau\\
0&,|x^i-x|>2\tau\\
\end{cases}

也就是说我们只选择离拟合点较近的样本进行拟合,在2\tau以内的数据权重都是1,而超过2\tau的样本点权重均为0.

这样,我们只对|x^i-x|\le2\tau​范围内的样本进行线性回归,拟合的直线在拟合点附近效果是最好的。

很明显,局部加权线性回归所求得的\theta​只是相对于一个拟合点而言的。如果我们变换拟合点的位置,则参数\theta​需要重新计算。也就是说,给定一个拟合点x​,我们可以得到一个假设y​x​取遍所有的值,则能得到y​的整条拟合曲线,但实际上x​y​的具体表达式,我们并没有求出来,这是一种非参数算法。

我们之前学习的无权重线性回归是一种参数学习算法,它通过有限个参数拟合了训练集的数据,之后便不再保留训练集样本了,对实际需求的预测,我们只需要通过h_\theta(x)​便可求得。

而如果我们使用局部加权线性回归算法,则必须一直保留整个训练集。每一次对实际需求的预测x​,都需要基于训练集去计算预测值h(x)​

1.2 分类问题 Classification Problem

分类问题和回归问题类似,但是预测的y值是离散的。我们首先来讨论二值问题,即y只取0、1。大部分的内容也可以扩展到多值情况。这里我们规定:

  • 0为消极类别( " - ",nagative class)
  • 1为积极类别(" + ",positive class)

1.2.1 逻辑回归 Logistic Regression

我们的假设h_\theta(x)为:

h_\theta(x) = g(\theta^Tx)= {1\over{1+e^{-\theta^Tx}}}

其中:

g(z) = {1 \over {1+e^z}}

这个函数叫做逻辑函数(logistic function)

为什么我们要这样构造一个假设函数呢?因为y​只有0、1取值,而我们的目标是寻找将y​分为两类的界限。这种界限的区分实际上也可以使用阶跃函数等其他方式来分割,之后的感知器章节中会讲到为什么选择逻辑函数来分割。

逻辑函数的导数g'(z)​有如下特性:

\begin{align}
g'(z) &= \frac{d}{dz}\frac{1}{1+e^{-z}}\\
&= \frac{1}{(1+e^{-z})^2}(e^{-z})\\
&= \frac{1}{1+e^{-z}}(1-\frac{1}{1+e^{-z}})\\
&= g(z)(1-g(z))
\end{align}

有了假设h_\theta(x)​,那我们怎么去拟合\theta​呢?在线性回归中我们用成本函数J(\theta)​来衡量拟合的好坏,而其中的原理是概率统计学中的最大似然估计。那我们同样也可以用最大似然估计来推出非线性下的成本函数。

我们的假设需要作一些等价的变换

\begin{align}
P(y=1|x;\theta) &= h_\theta(x)\\
P(y= 0|x;\theta)&=1-h_\theta(x)\\
\end{align}

更简洁的写法是:

P(y|x;\theta)= (h_\theta(x))^y(1-h_\theta(x))^{1-y}

那么最大似然函数可以写成:

\begin{align}
L(\theta) &= \prod_{i=1}^mP(y^i|x^i;\theta)\\
&= \prod_{i=1}^m (h_\theta(x^i))^{y^i}(1-h_\theta(x^i))^{1-y^i}\\
\ell(\theta)&=lnL(\theta)\\
&=\sum_{i=1}^m\left[y^ilnh(x^i)+(1-y^i)ln(1-h(x^i))\right]\\

\end{align}

使似然函数最大,使用梯度上升算法,也就是\theta := \theta + \alpha \nabla\ell(\theta)

为方便理解,我们还是先从只有一组训练样本(x,y)开始:

\begin{align}
\frac{\partial}{\partial\theta_j}\ell(\theta) &= (y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})\frac{\partial}{\partial\theta_j}g(\theta^Tx)\\
&=(y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})g(\theta^Tx)(1-g(\theta^Tx))\frac{\partial}{\partial\theta_j}(\theta^Tx)\\
&= \left\{y(1-g(\theta^Tx))-(1-y)g(\theta^Tx)\right\}x_j\\
&=(y-g(\theta^Tx))x_j\\
&=(y-h_\theta(x))x_j
\end{align}

上式用到了之前的导数性质。

我们得到了随机梯度上升规则:

\theta_j := \theta_j +\alpha(y^i-h_\theta(x^i))x_j

我们对比一下之前我们线性回归的梯度下降更新规律

梯度下降:\theta_j := \theta_j -\alpha(h_\theta(\mathbf{x})-y)x_j

似乎……好像是一样的数学形式,但是,这并不是同一个算法,在分类问题上我们将y定义成了离散的值,并将假设h_\theta(x)也作了相应形式的变换。

这看似偶然的巧合其实背后隐藏着更深层次的原因,在后续的广义线性模型中,我们会进一步探讨。

离散:感知器学习算法

我们岔开话题,聊一下关于逻辑回归假设h_\theta(x)的选定,我们之前讲到,因为?取值的离散性,所以我们要修改h_\theta(x)的形式使得它的输出变得有意义。在上节中,我们使用逻辑函数迫使h_\theta(x)输出在0-1之间,而其h_\theta(x)实际意义变成取y=1的概率。

如果我们单纯的想要实现上述的目的,其实更直接的想法是将假设设置为一个阶跃函数。

g(z) = \begin{cases}
1&,z \geq0\\
0&,z<0\\
\end{cases}

如果设置成这样的形式,我们再次使用极大似然法去计算(单样本情况下)

\begin{align}
\frac{\partial}{\partial\theta_j}\ell(\theta)&=ylnh(x)+(1-y)ln(1-h(x))\\
&= \frac{y}{h_\theta(x)}h'_\theta(x)+\frac{(1-y)}{1-h}(-h'_\theta(x))\\
&= h'_\theta(x) \frac{y-h_\theta(x)}{h_\theta(x)(1-h_\theta(x))}
\end{align}

以上是在未代入g(z)时的推导,

我们知道又知道单位阶跃函数的导数是单位冲击函数,仍可以写成g'(z)=g(z)(1-g(z))​形式

单位阶跃和单位冲击函数常用在数字电路中,可以计算出家用电器在通电瞬间的电流值,这叫做电器设备的启动电流。

算到这里我们发现,用阶跃函数最后的参数更新规则仍为:

\theta_j := \theta_j +\alpha(y^i-h_\theta(x^i))x_j

这种算法叫做感知器学习算法

感知器在深度学习网络中也叫做神经元。感知器是生物神经细胞的简单抽象,单个神经细胞可被视为一种只有两种状态的机器——激动时为‘是’,而未激动时为‘否’。

这个算法也是我们后续在本课程中讲学习理论时候的起点。

但要注意,感知器学习算法看上去和我们之前的算法很相似,但实际上它是一类与逻辑回归、最小二乘线性回归等算法在性质上完全不同的算法。尤其是,很难对感知器的预测赋予有意义的概率解释。

这里我认为的意思是,逻辑回归的预测结果h_\theta(x)其实是介于0-1之间的一个实数,而其概率学解释是这个样本有h_\theta(x)的概率确信结果为1,或者有1-h_\theta(x)的概率确信结果为0。

而感知器算法得到的预测没有这种概率学的意义

这里有如下几个小疑问

在浏览资料的过程中,发现这样一段话:

事实上,感知器不仅仅能实现简单的布尔运算。它可以拟合任何的线性函数,任何线性分类线性回归问题都可以用感知器来解决。前面的布尔运算可以看作是二分类问题,即给定一个输入,输出0(属于分类0)或1(属于分类1)。如下面所示,and运算是一个线性分类问题,即可以用一条直线把分类0(false,红叉表示)和分类1(true,绿点表示)分开。

然而,感知器却不能实现异或运算,如下图所示,异或运算不是线性的,你无法用一条直线把分类0和分类1分开。

第一个疑问

逻辑回归能不能实现异或问题的运算呢?

第二个疑问

如果感知器模型很难赋予概率学解释,那么是否预测结果只有0/1.而没有其他的数呢

第三个疑问

原文中有一句话“很难用极大似然估计推出感知器学习算法",而我上面的推导就是基于极大似然估计法。是不是说阶跃函数和冲激函数的性质是很难推导的,而我恰恰把最难推导的当成定理记住了。

这些疑问自己慢慢的取解决吧。QAQ

牛顿方法 Newton's Method

广义线性模型 Generalized Linear Models