tips: 比较重要,而我又觉得翻译不好;或者比较简单又重要,感觉不用翻译的,就直接使用英文了;感觉没啥特别大作用的,就直接略过了(但是后面发现直接略过更费时间 (囧))。
给出一组数据, 其中x是实数域中的二维向量。比如,xi1是第i个房子的居住面积,xi2是这个房子的房间数。 为了执行监督学习,我们需要决定怎么在计算机中表示我们的函数/假设。在一开始,我们可以近似地使用线性函数来表示。
由于省去θ并不会使人疑惑,并使x0 = 1。那么以上公式就可以写成:
现在,有了训练数据,我们怎么挑选,或者说得知θ的值呢?一个可信的方法是使得h(x)与y更加接近,至少对于我们训练的例子来说是这样的。于是,我们定义一个价格函数:
而这个函数与最小二乘函数非常相似。
我们想要选择能够让J(θ)最小化的θ。于是使用搜寻算法:给θ一个初始值,重复地改变θ的值来是J(θ)更小,直到收敛到一个能使J(θ)最小化的θ值。而这里选取梯度下降算法。梯度下降算法从某个初始的θ开始,重复地执行: 这个更新会对所有的j(j =0,…n)都执行。α被称作学习速率。 我们使用“a := b”来表示将a赋值为b的(在电脑中的)操作。与此相对的,我们使用“a = b”来表示a与b相等。
这个式子右边的偏导为: 再代入到原式子得到:
这个公式就成为最小均方更新算法(LMS update rule)。 当只有1个训练数据的时候我们能够得到上面的式子,当有很多训练数据的时候我们有2种修改这个式子的方式。第一个是:
这个式子被称为批梯度下降算法(batch gradient descent)。 注意到,通常梯度下降能够感知到局部最优解。而我们这里的线性回归的最优化问题只有一个全局最优解,没有其他的局部最优解。因此,梯度下降总能够收敛到全局最优解。实际上,J是一个凸面二次函数。以下是一个梯度下降算法最小化一个二次函数的例子:
以上显示的椭圆是二次函数的等高线。初始化的数据是(48,30)也就是最右边的那个点。 当我们根据先前的数据集使用梯度下降算法预测房屋价格与居住面积的关系时,我们能够得到θ0 = 71.27,θ1 = 0.1345.画出hθ(x)关于x(面积)的图像:
当把卧室数量也当做变量的时候,可以得到θ0 = 89.60,θ1 = 0.1392,θ2 = -8.738。 以上结果由批量梯度下降算法得到。还有一种可选的批量梯度下降算法也很实用。
In this algorithm, we repeatedly run through the training set, and each time we encounter a training example, we update the parameters according to the gradient of the error with respect to that single training example only.
这个算法被称为随机梯度下降(stochastic gradient descent)或者增量梯度下降(incremental gradient descent)。鉴于批量梯度下降在开始第一步的时候需要扫描整个数据集,而当数据集很大时,这个开销是很大的。而随机梯度下降能够立马开始,并且能够根据每一个扫描到的数据实例去的进展。通常,随机梯度下降能够比批量梯度下降更快地得到更“接近”最小值的θ.(然而,需要注意的是随机梯度下降可能永远不会收敛到最小值,参数θ会在J(θ)的最小值附近震荡;但是实际上大多数情况下,这个θ足够接近真的最小值了2。)因为这些原因,当训练的数据集很大时,随机梯度下降比批量梯度下降更实用。
2 While it is more common to run stochastic gradient descent as we have described it and with a fixed learning rate , by slowly letting the learning rate α decrease to zero as the algorithm runs, it is also possible to ensure that the parameters will converge to the global minimum rather then merely oscillate around the minimum.(大致意思是当α越取越小的时候,是能够收敛的)
梯度下降提供了一种最小化J的方法,现在将另外一种方法.在这种方法里面,我们通过对J求θj的倒数,并让他们为0来最小化J.
f关于A的导数是: 举个例子:
使用上述公式得到导数:
引入迹(trace).对于一个n维矩阵A,A的迹定义为对角线之和:
不难得到关于迹的公式:
当A和B是方阵,并且a是一个实数的时候,有:
现在,不加证明的引入以下4个式子.其中等式(4)只适用于非奇异方阵.|A|表示A的行列式.
有了矩阵求导的知识后,现在可以进一步找出使得J(θ)最小化的θ值的闭式解3(closed-form)。
解析解(analytical solution)就是一些严格的公式,给出任意的自变量就可以求出其因变量,也就是问题的解,他人可以利用这些公式计算各自的问题。解析解也被称为闭式解(closed-form exPRession)。
给出一个训练集,定义设计矩阵(design matrix)X是训练集在它的列中输入的值m*n维矩阵(实际上是m*n+1,如果我们包括截距(intercept term)的话)。 同样,定义~y(实际是
)是包含所有训练集中目标值的m维向量。
现在,由于hθ(x(i)) = (x(i))Tθ,能够得到以下式子:
由此,根据一个事实:对于一个向量z,有
,我们可以得到:
最后,为了最小化J,找出其对于θ的导数。结合之前写的4个式子中的等式(2)和(3),可以得到:
因此:
式子的推导如下:
对于回归问题,为啥线性回归,特别是为啥最小二乘法J是一个合理的选择? 假设目标值与输入值通过以下等式关联: ε(i)是未建模的关键因子(比如之前举得例子中的房间中的壁炉数量)或者随机噪音造成的误差项。通过高斯分布更进一步地假设ε(i)是独立的恒等分布(independently and identically distributed),并与方差σ2有关。由此得到ε(i)的密度:
这个式子表示:
式子p(y(i)|x(i);θ)表示这是y(i)关于x(i)与参数化的θ的分布。注意,这不是p(y(i)|x(i),θ),因为θ不是一个随机变量,只是一个暂时未知的常量而已。 给出X(之前说的包含所有x(i)的设计矩阵)与θ,那么y(i)的分布是怎么样的呢? 先定义似然函数(likelihood function):
注意到我们假设的ε(i)的独立性,上式可以写成:
现在,给出了y(i)关于x(i)的概率模型,有什么可信的方法来选出θ的最好估计值吗?最大似然法(maximum likelihood)提出我们应该选出能够使得数据的概率尽可能高的θ。比如,我们应该选出能够最大化L(θ)的参数θ。 我们可以最大化与L(θ)单调性一致的的任何严格递增的函数,而不是最大化L(θ)。特别地,使用对数的似然函数(log likelihood)l(θ)会简单一些:
这个式子也就是我们之前得到的J(θ),最初得到的最小二乘损失函数(least-squares cost function (未找到比较好的翻译 –me))。 简而言之:之前关于数据的概率假设,最小二乘回归与找出θ的最大似然估计一致。
考虑从x ∈ R中预测y的问题。从左至右是x的纬度分别为1,2,5维的图像。 5维的图像也就是这个式子:
我们称最左边的图像为欠拟合(underfitting)的,而最右边的图是过拟合*(overfitting)。 在最开始的线性回归算法中, 为了预测查询点x(比如,为了评估h(x)),我们
相对而言,局部加权线性回归算法按照以下方式:
w(i)是非负值权重(weights)。对于权重的一个公平的标准选择是:
注意到w(i) < 1。 局部加权线性回归算法是现在看的第一个无参算法。之前看的线性回归算法被称作参数化学习算法,因为它有为了调整数据而设的固定、有限数量的参数(θi)。当我们调整(fit)并存储θi,我们再也不需要保存已经用过的训练集来作出更远的预测。与此相反,使用局部加权线性回归算法,我们需要保持整个训练集。
现在讨论分类问题。除了我们所求的y分布在很小数量的离散值上,其他的与回归问题相似。现在,我们专注于y只在0和1上取值的二分问题。
我们可以对旧的线性回归算法来进行适当的修改来得到我们想要的函数。比如,修改旧的hθ(x)的形式,我们可以改写成: 而g(z)被称作逻辑函数(logistic function)或者sigmoid函数(sigmoid function(微积分貌似有过这个函数))。
g(z)的函数图是这样的:
逻辑函数的导数有一些有用的性质:
让我们假设:
能够写的更简洁点:
假设训练数据m是独立的,我们能够写下似然函数:
像以前一样,最大化似然函数的log会更容易:
(应该有括号把“+”前后的两个式子括起来吧?) 怎么最大化这个式子呢?与线性回归一样,可以使用梯度下降。使用向量记号表示后变为:
(注意到,公式里使用的是正号,而不是负号,因为我们现在求的是最大化,而不是最小化),从一个训练数据开始,并使用随机梯度下降法:
考虑到修改逻辑回归算法来”强制”其输出不是0就是1的结果,很自然地就想到了修改g的定义为阈值函数: 如果我们像之前一样使用hθ(x) = g(θTx)函数,但是使用g的新的定义的话得到:
这也就是感知器学习算法(perceptron learning algorithm).
回到逻辑回归的sigmoid函数g(z),现在讲一个最大化l(θ)的不同的算法。 让我们思考找出一个函数的零值的牛顿方法。特别地,假设我们现在有某个函数f : R->R ,我们想找出θ使得f(θ)=0(θ ∈R是一个实数)。牛顿方法执行以下的更新: 这个方法的自然解释是:这个函数通过f在此时的θ的切线来线性函数逼近f。以下是牛顿方法执行的图:
在最左边的图,我们看到绘制的f函数与y=0的线有相交。我们尽力找出使得f(θ) = 0的θ值;而这个值大概是1.3。假使我们从θ = 4.5来初始化这个算法。牛顿方法汇出f在θ = 4.5处的切线,并且解出这条切线的值为0的θ(中间的图片)。这个给出了我们下一个θ的猜测之,大概是2.8。最右边的图片显示了再做一次迭代的结果,更新后的θ值大概是1.8。经过很少次数的迭代,能够快速地逼近θ = 1.3。 牛顿方法给出了一种得到f(θ) = 0的方法。如果我们想使用它来最大化某个函数l呢?l的最大值与’l’(θ) = 0’的相一致。因此,通过使f(θ) =l’(θ),我们能使用同样的算法来最大化l,也遵从以下的迭代规则:
(可以考虑的事情:如果我们要使用牛顿方法最小化而不是最大化一个函数,这个公式该怎么变化(貌似是不变))。 在逻辑回归算法里面,θ是一个向量。因此我们需要扩展牛顿方法来适应这个定义。牛顿方法向多维扩展的更改(也叫作牛顿-拉普森方法)由以下图片给出:
∇θl(θ),与之前一样,是l(θ)关于θi的偏导。H是一个称作Hessian的n维方阵(实际上如果我们包括截距的话是n+1维方阵),H的元素定义如下:
牛顿方法比梯度下降更快地收敛,也只需要很少的迭代就能接近最小值。然而,牛顿方法的一次迭代要比梯度下降更昂贵,因为它需要找出一个n维矩阵Hessian并对其求逆,但是只要n不是太大,牛顿方法经常能快得多。当牛顿方法应用于最大化逻辑回归的对数似然函数l(θ),得到的结果函数也叫作Fisher scoring(找不到好的翻译 –me).
到目前为止,我们已经见到了回归和分类的例子。在回归的例子中,有y|x;θ ~ N(μ,σ2),在分类的例子中,有y|x; θ ~ Bernoulli(φ),在某些定义下μ与φ的作用分别与x和θ的定义一致。本节,我们解释这些方法都是广义线性模型(Generalized Linear Models(GLMs))的特例。
以下形式的分布被称为指数簇: η被称为自然参数(natural parameter)(也被称为典范参数(canonical parameter))。T(y)是充分统计量(sufficient statistic)(对于我们考虑的分布,它经常是T(y) = y);a(η)是累积量母函数(log partition function)(不知道翻译对不对 –me)。e-a(η)本质上是归一化常数(normalization constant),that makes sure the distribution p(y; η) sums/integrates over y to 1. 当固定T,a和b,就有了由η参数化的分布簇;所以,当我们改变η的值,可以得到这个分布簇中的不同分布。 我们现在证明伯努利分布和高斯分布是指数分布簇的例子。以φ为参数的伯努利分布,写作Bernoulli(φ),定义了y ∈ {0, 1}的分布,也就是p(y = 1; φ) = φ; p(y = 0; φ) = 1 − φ。适当的选择T,a和b可以使得等式(6)变成伯努利分布。 我们可以按照如下写出伯努利分布:
由此,自然参数由η = log(φ/(1 − φ))给出。有趣的是,如果我们以η为变量反解出φ,可以得到φ =1/(1 + e-η)。而这时熟悉的sigmoid函数!为了完成伯努利分布是指数分布簇的一员,我们有
这显示伯努利分布在合适的T,a和b下能够写成等式(6)。 现在让我们转到高斯分布,在线性回归中,σ2的值对θ和hθ(x)的最终取值没有影响。因此,我们能够选择任意的σ2的值。为了简化推导,置σ2 = 1。6。由此,有:
因此,我们由以下的变量定义能够看到高斯分布属于指数簇: 由许多的分布都属于指数簇:多项式分布,泊松分布,γ(伽马)分布和指数分布,β分布和狄里克雷分布等(这个概率论都有讲,我却一个都不记得了,看来得捡起来了 –me)。
泊松分布也属于指数簇,可以很好的解决网站pv和商店流量的问题。 更一般地,考虑预测以x为变量的随机值y的分类或者回归的问题。为了获得这个问题的GLM模型,我们做出以下3个假设: 1.y|x; θ ~ ExponentialFamily(η).比如,给定x和θ,y服从某种以η为参数的分布. 2.给定x,我们的目标是预测T(y)的期望值.在我们的大多数例子中,我们令T(y) = y,so this means we would like the prediction h(x) output by our learned hypothesis h to satisfy h(x) = E[y|x].(注意这个假设在逻辑回归与线性回归中都满足.比如,在逻辑回归中,我们有hθ(x) = p(y = 1|x; θ) = 0 · p(y =0|x; θ) + 1 · p(y = 1|x; θ) = E[y|x; θ]) 3.自然参数η与输入x是线性相关的:η = θTx.(或者,当η是向量值,那么ηi = θTix)
为了证明普通最小二乘法是GLM中的一个特例,假设目标变量y是连续的,对于给定的x,我们为y的条件分布建模为高斯分布N (μ, σ2 ).(μ可能依赖与x.)因此,我们使之前所述的ExponentialFamily(η)为高斯分布.正如我们之前看到的,为了使得高斯分布是指数簇分布,我们有μ = η.因此,可以得到: 第一个等式由之前所述的假设2得到;第二个等式是因为y|x;θ ~ N (μ, σ2 ),所以它的期望值由μ得到;第三个等式由假设1(并且我们之前的推倒得到当高斯分布是指数簇的时候有μ = η)得到;最后一个等式由假设3得到.
我们现在思考逻辑回归.此刻我们只对二元分类感兴趣,所以y ∈ {0, 1}.鉴于y是二进制值(binary-valued),很自然地想到选择伯努利分布.当伯努利分作是指数簇的时候,我们有φ = 1/(1 + e−η ).更进一步,注意如果y|x; θ ~ Bernoulli(φ).因此,与普通最小二乘法类型的推倒,可以得到:
考虑分类问题中,反应变量(response variable)y可以从k个值中取值,也就是y∈ {1, 2, … , k}.举个例子,我们可以把邮件分为垃圾邮件,个人邮件和工作邮件而不是只将邮件分为垃圾邮件和非垃圾邮件–这也就是二分问题.这些反应变量依然是离散的,但是现在可以取多于2个的值. 让我们为了多项式类型建立GLM模型,而在这么做之前,我们需要以指数簇分布来表示多项式. 为了参数化有k个可能输出的多项式,一个可用的方法是使用k个参数φ1,…φk来指定每一个输出的概率.然而,这些参数会是冗余的,也就是说,它们不是独立的(因为知道了φi中的任意k - 1个,那么也就知道了最后一个,它们必须满足∑ki=1 φi = 1).因此,我们只参数化k - 1个参数,φ1,…φk-1. 为了用指数簇分布表示多项分布,我们定义T(y) ∈ Rk-1: 与我们之前的例子不同,这里我们没有使T(y) = y;并且T(y)不是一个实数,而是一个k - 1维向量.我们也使用(T(y))i来表示向量T(y)的第i个元素. 我们介绍一个有用的新记号.指标函数(indicator function) 1{·}取值1如果大括号内的表达式是true,反之取0.(1{true} = 1, 1{false} = 0).举个例子,1{2=3}=0, 1{3=5-2}=1.因此,我们可以将T(y)与y之间的关系表示为(T(y))i = 1{y=i}.更进一步,我们有E[(T(y))i] = P(y = i) = φi. 我们现在需要证明多项分布是指数簇的一员,我们有:
(关于第一步的解释: p(y;φ)取值为φ1,…φk中的一个,取决于y的取值.当y = i时,这一步可以理解为φi = φ01*φ02*···*φ1i*···*φ0k –me) 以上也就证明了指数分布是指数簇分布。 联系函数(link function)由以下公式给出:
为了方便起见,我们定义ηk = log (φk/φk) = 0.通过联系函数反解出反应函数(response function),因此我们有:
这表明φk = 1/∑ki=1 eηi.这个式子可以替换回等式(7),能得到以下反应函数
这个从η映射到φ的式子就叫做softmax函数。 为了完成我们的模型,我们使用之前给出的假设(3):ηi与x线性相关。因此,我们有ηi = θTix(i = 1,…,k-1),θ1,…,θk-1 ∈ Rn+1)是模型中的参数。为了表达方便,我们定义θk = 0, 因此ηk = θTkx = 0. 因此,我们的模型假设对于给定的x,y的条件分布是:
这个模型适用于y取多个值的分类问题,被称为softmax回归(softmax regression)。我们的评估函数(hypothesis)有如下输出:
也就是说,对于每一个i = 1,…,k,我们的评估函数都能够输出模型所估计的概率p(y=i|x;θ)。 最后,让我们讨论参数拟合(parameter fitting)。与我们对普通最小二乘法和逻辑回归的推导相似,如果我们有m个训练数据{x(i),y(i); i=1,…m},并且想要取得这个模型的参数θi。我们将会写出以下的对数似然估计值(log-likelihood):
为了获得以上式子的第二行,我们使用由等式(8)给出的p(y=i|x;θ)定义。我们现在可以通过使用梯度上升或者牛顿方法等方法最大化l(θ)
新闻热点
疑难解答