【从线性回归到BP神经网络】第二部分:线性回归
文章目录
- 1、代价函数
- 2、梯度下降法
- 3、线性回归的梯度下降
- 4、矩阵形式表示mmm个样本
- 5、线性回归的闭式解
- 6、从概率的角度来理解代价函数
本文主要参考文献如下:
1、吴恩达CS229课程讲义。
2、(美)S.Chatterjee等,《例解回归分析》(第2章),机械工业出版社。
3、周志华. 《机器学习》3.2.清华大学出版社。
4、(美)P.Harrington,《机器学习实战》人民邮电出版社。
1、代价函数
我们先考虑只有单个数据对的情况,即x=[1,x1,x2,…,xn]{\bf x}=[1,x_1,x_2,\ldots,x_n]x=[1,x1,x2,…,xn]为输入的属性向量,其中nnn为属性的个数,yyy为与x\bf xx对应的输出函数值。我们希望能够用x\bf xx的线性函数来预测yyy的值,即
hθ(x)=θ0+θ1x1+θ2x2+…+θnxn=∑j=1nθjxj=θTx,(1)\tag{1} \begin{aligned} h_{\theta}({\bf x})&=\theta_0+\theta_1x_1+\theta_2x_2+\ldots+\theta_nx_n\\ &=\sum_{j=1}^{n}\theta_jx_j\\ &={\bm \theta}^{\rm T}{\bf x}, \end{aligned} hθ(x)=θ0+θ1x1+θ2x2+…+θnxn=j=1∑nθjxj=θTx,(1)这里,θ=[θ0,θ1,…,θn]T{\bm \theta}=[\theta_0,\theta_1,\ldots,\theta_n]^{\rm T}θ=[θ0,θ1,…,θn]T为参数向量。显然,我们希望通过选择合适的参数θ{\bm \theta}θ,使得hθ(x)h_{\bm \theta}({\bf x})hθ(x)能够尽量接近yyy的值。
那么如何来定义“接近”的程度呢?采用的就是cost function(代价函数)。常用的一种cost function的定义,就是均方值
J(θ)=12[hθ(θ)−y]2(2)\tag{2} J(\bm \theta)=\frac{1}{2}[h_{\theta}({\bm \theta})-y]^2 J(θ)=21[hθ(θ)−y]2(2)我们推广到有mmm个数据对的情况,此时的代价函数为
J(θ)=12m∑i=1m[hθ(x(i))−y(i)]2.(3)\tag{3} J(\bm \theta)=\frac{1}{2m}\sum_{i=1}^{m}[h_{\theta}({{\bf x}^{(i)}})-y^{(i)}]^2. J(θ)=2m1i=1∑m[hθ(x(i))−y(i)]2.(3)
严格来说,根据第一部分,这里的分母的mmm应该为m−1m-1m−1。
2、梯度下降法
多元函数J(θ)J(\bm \theta)J(θ)的值会随着θ\bm \thetaθ的改变而改变。我们希望能够尽快找到使J(θ)J(\theta)J(θ)最小的θ\bm \thetaθ,那么θ\bm \thetaθ应该往哪个方向变化,J(θ)J(\bm \theta)J(θ)的值能够下降得更快呢?
首先我们看”方向”这个词的含义。这里的方向,其实就是指每个参数,θj\theta_jθj,第一是变大还是变小(正 or 负),第二是变得快还是慢。以下图一维的情况来看,显然A点切线斜率比B点的大,因此下降得更快,而C点θ1\theta_1θ1得值应该增大,而非减小。想象下如果换成多维情况,其实就是看每个参数应该变大还是变小,应该以多快速率变化(在学习率α\alphaα一定的情况下)。如果想象从山顶往山下走(两个参数的情况),显然两个参数的正负和变化快慢,决定了下山路线的方向。
梯度下降法实际上就是选择下降最快方向的方法,即
θj:=θj−α∂J(θ)∂θjj=0,1,…,n.(4)\tag{4} \theta_j:=\theta_j-\alpha\frac{\partial J(\bm \theta)}{\partial \theta_j}\quad j=0,1,\ldots,n. θj:=θj−α∂θj∂J(θ)j=0,1,…,n.(4)
注意梯度下降法的特点:
- 梯度(切线斜率)越大,下降越快; 梯度越小,下降越慢。
- 如果到了局部最优点(斜率为0),则不再变化。
- 所有θj\theta_jθj的值要同时更新。
3、线性回归的梯度下降
回到我们的问题上来。我们是想找到(3)中代价函数的最小值,因此到我们设置好θ\bm \thetaθ的初始值之后,就开始用(4)更新θ\thetaθ值,逐渐逼近最优点。因此我们需要求得梯度,即
∂J(θ)∂θj=12m∂∂θj∑i=1m[hθ(x(i))−y(i)]2=12m∂∂θj∑i=1m[∑j=1nθjxj(i)−y(i)]2=1m∑i=1m[∑j=1nθjxj(i)−y(i)]⋅xj(i)=1m∑i=1m[hθ(x(i))−y(i)]⋅xj(i)(5)\tag{5} \begin{aligned} \frac{\partial J({\bm \theta}) }{\partial \theta_j }&=\frac{1}{2m}\frac{\partial }{\partial \theta_j }\sum_{i=1}^{m}[h_{\theta}({{\bf x}^{(i)}})-y^{(i)}]^2\\ &=\frac{1}{2m}\frac{\partial }{\partial \theta_j }\sum_{i=1}^{m}[\sum_{j=1}^{n}\theta_jx_j^{(i)}-y^{(i)}]^2\\ &=\frac{1}{m}\sum_{i=1}^{m}[\sum_{j=1}^{n}\theta_jx_j^{(i)}-y^{(i)}]\cdot x_j^{(i)}\\ &=\frac{1}{m}\sum_{i=1}^{m}[h_{\theta}{({\bf x}^{(i)})}-y^{(i)}]\cdot x_j^{(i)}\\ \end{aligned} ∂θj∂J(θ)=2m1∂θj∂i=1∑m[hθ(x(i))−y(i)]2=2m1∂θj∂i=1∑m[j=1∑nθjxj(i)−y(i)]2=m1i=1∑m[j=1∑nθjxj(i)−y(i)]⋅xj(i)=m1i=1∑m[hθ(x(i))−y(i)]⋅xj(i)(5)
4、矩阵形式表示mmm个样本
为了编程实现时候方便,我们来看如何用矩阵形式同时处理mmm个数据。我们可以得到X=[x(1)Tx(2)T⋮x(m)T]∈Rm×(1+n),y=[y(1)y(2)⋮y(m)]∈Rm×1,θ=[θ0θ1⋮θn]∈R(n+1)×1(6)\tag{6} {\bf X}=\left[\begin{aligned} {\bf x}^{{(1)}\rm T}\\ {\bf x}^{{(2)}\rm T}\\ \vdots\\ {\bf x}^{{(m)}\rm T}\\ \end{aligned} \right]\in {\mathbb R}^{m\times (1+n)},{\bf y}=\left[\begin{aligned} { y}^{{(1)}}\\ { y}^{{(2)}}\\ \vdots\\ { y}^{{(m)}}\\ \end{aligned} \right]\in {\mathbb R}^{m\times 1},{\bm \theta}=\left[\begin{aligned} \theta_0\\ \theta_1\\ \vdots\\ \theta_n\\ \end{aligned} \right]\in {\mathbb R}^{(n+1)\times 1} X=⎣⎢⎢⎢⎢⎢⎡x(1)Tx(2)T⋮x(m)T⎦⎥⎥⎥⎥⎥⎤∈Rm×(1+n),y=⎣⎢⎢⎢⎢⎢⎡y(1)y(2)⋮y(m)⎦⎥⎥⎥⎥⎥⎤∈Rm×1,θ=⎣⎢⎢⎢⎢⎢⎡θ0θ1⋮θn⎦⎥⎥⎥⎥⎥⎤∈R(n+1)×1(6)因此,有估计值为
y^=[y^(1)y^(2)⋮y^(m)]=Xθ(7)\tag{7} \hat {\bf y}=\left[\begin{aligned} {\hat y}^{{(1)}}\\ {\hat y}^{{(2)}}\\ \vdots\\ {\hat y}^{{(m)}}\\ \end{aligned} \right]={\bf X}{\bm \theta} y^=⎣⎢⎢⎢⎢⎢⎡y^(1)y^(2)⋮y^(m)⎦⎥⎥⎥⎥⎥⎤=Xθ(7)由此可以得到代价函数为
J(θ)=12m∥y−y^∥2=12m(y−Xθ)T(y−Xθ)(8)\tag{8} \begin{aligned} J({\bm \theta})&=\frac{1}{2m}\| {\bf y}-\hat{\bf y}\|^2\\ &=\frac{1}{2m}({\bf y}-{\bf X}{\bm \theta})^{\rm T}({\bf y}-{\bf X}{\bm \theta}) \end{aligned} J(θ)=2m1∥y−y^∥2=2m1(y−Xθ)T(y−Xθ)(8)因此,θ\bm \thetaθ更新如下
θ:=θ−1m[α(y−y^)TX]Tj=0,1,…,n(9)\tag{9} {\bm \theta}:={\bm \theta}-\frac{1}{m}[\alpha({\bf y}-\hat {\bf y})^{\rm T}{\bf X}]^{\rm T}\quad j=0,1,\ldots,n θ:=θ−m1[α(y−y^)TX]Tj=0,1,…,n(9)
也就是说,对于输入的mmm组特征样本X\bf XX,我们先根据(7)在现有θ\bm \thetaθ情况下估计输出y^\hat yy^,然后根据(9)来更新θ\bm \thetaθ。下面是一段MATLAB代码。
%学习过程
for cnt=1:N_Loophat_yy=X_Train*theta; %根据(7)估计输出tmp1=yy_Train-hat_yy;theta=theta+(alpha*tmp1'*X_Train/m)'; %根据(9)更新参数
end
5、线性回归的闭式解
除了采用梯度下降法,我们也可以对下面的优化问题寻求闭式解,即
θ^∗=minθJ(θ)(10)\tag{10} {\hat \bm \theta}^*=\min \limits_{\bm \theta} J(\bm \theta) θ^∗=θminJ(θ)(10)根据(8),可以将该优化问题表示为
θ^∗=minθ∥y−y^∥2.(11)\tag{11} {\hat \bm \theta}^*=\min \limits_{\bm \theta} \| {\bf y}-\hat{\bf y}\|^2. θ^∗=θmin∥y−y^∥2.(11)进一步,由于
∥y−y^∥2=(y−Xθ)T(y−Xθ)\| {\bf y}-\hat{\bf y}\|^2=({\bf y}-{\bf X}{\bm \theta})^{\rm T}({\bf y}-{\bf X}{\bm \theta}) ∥y−y^∥2=(y−Xθ)T(y−Xθ)对其求导,可以得到
∂∂θ∥y−y^∥2=∂∂θ(y−Xθ)T(y−Xθ)=2XT(Xθ−y)∈R(12)\tag{12} \begin{aligned} \frac{\partial}{\partial \bm \theta} \| {\bf y}-\hat{\bf y}\|^2&=\frac{\partial}{\partial \bm \theta}({\bf y}-{\bf X}{\bm \theta})^{\rm T}({\bf y}-{\bf X}{\bm \theta})\\ &=2{\bf X}^{\rm T}({\bf X}{\bm \theta}-{\bf y})\in{\mathbb R}_{}^{} \end{aligned} ∂θ∂∥y−y^∥2=∂θ∂(y−Xθ)T(y−Xθ)=2XT(Xθ−y)∈R(12)
我们考虑有向量x∈Rn×1{\bf x}\in {\mathbb R}^{n\times 1}x∈Rn×1的标量函数f(x)f(\bf x)f(x)为
f(x)=xTx=x12+x22+…+xn2f({\bf x})={\bf x}^{\rm T}{\bf x}=x_1^2+x_2^2+\ldots+x_n^2 f(x)=xTx=x12+x22+…+xn2则其相对于x\bf xx的梯度(导数)为列向量
∂f(x)∂x=[∂f(x)∂x1,∂f(x)∂x2,…,∂f(x)∂xn]T=2x\begin{aligned} \frac{\partial f({\bf x})}{\partial {\bf x}}&=\left[\frac{\partial f({\bf x})}{\partial {x_1}},\frac{\partial f({\bf x})}{\partial {x_2}},\ldots,\frac{\partial f({\bf x})}{\partial {x_n}}\right]^{\rm T}\\ &=2{\bf x} \end{aligned} ∂x∂f(x)=[∂x1∂f(x),∂x2∂f(x),…,∂xn∂f(x)]T=2x若X∈Rm×n{\bf X}\in {\mathbb R}^{m\times n}X∈Rm×n,θ∈Rn×1{\bm \theta}\in {\mathbb R}^{n\times 1}θ∈Rn×1,下面我们再来看1×m1\times m1×m行向量
z=(Xθ)T=θTXT\begin{aligned} {\bf z}&=({\bf X}{\bm \theta})^{\rm T}={\bm \theta}^{\rm T}{\bf X}^{\rm T}\\ \end{aligned} z=(Xθ)T=θTXT相对于n×1n\times 1n×1列向量θ\bm \thetaθ求导,显然求导后为n×mn \times mn×m矩阵,即
∂z∂θ=XT\begin{aligned} \frac{\partial {\bf z}}{\partial {\bm \theta}}&={\bf X}^{\rm T} \end{aligned} ∂θ∂z=XT
令(12)等于零,就可以得到θ\bm \thetaθ最优解的闭式解,即
XT(Xθ−y)=0(13)\tag{13} \begin{aligned} {\bf X}^{\rm T}({\bf X}{\bm \theta}-{\bf y})=0 \end{aligned} XT(Xθ−y)=0(13) 若XTX{\bf X}^{\rm T}{\bf X}XTX满秩,可以得到
θ^∗=(XTX)−1XTy.(14)\tag{14} {\hat \bm \theta}^*=({\bf X}^{\rm T}{\bf X})^{-1}{\bf X}^{\rm T}{\bf y}. θ^∗=(XTX)−1XTy.(14)
显然(9)的梯度下降法和(14)的闭式解,都可以求得使得代价函数JJJ最小的参数θ\bm \thetaθ值。经常用梯度算法代替闭式解的原因,是如果数据量比较大,求解矩阵运算的计算量会太大。
一般来说,我们会采用相关系数来评价回归性能,相关系数定义见第一部分。
6、从概率的角度来理解代价函数
下面我们从概率的角度来分析,为什么我们选择用均方误差∥y−y^∥\|{\bf y}-\hat{\bf y}\|∥y−y^∥作为代价函数(即LMS算法)是合理的。
我们先来考虑单个数据的情况。对于第iii个数据,有
y(i)=θTx(i)+ϵ(i),(15)\tag{15} y^{(i)}={\bm \theta}^{\rm T}{\bf x}^{(i)}+\epsilon^{(i)}, y(i)=θTx(i)+ϵ(i),(15)这里ϵ(i)∼N(0,σ2)\epsilon^{(i)}\sim {\mathcal N}(0,\sigma^2)ϵ(i)∼N(0,σ2)为误差项。因此,我们可以得到y(i)y^{(i)}y(i)的条件概率为
p(y(i)∣x(i);θ)=12πσexp(−[y(i)−θTx(i)]22σ2)(16)\tag{16} p(y^{(i)}|{\bf x}^{(i)};{\bm \theta})=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{[y^{(i)}-{\bm \theta}^{\rm T}{\bf x}^{(i)}]^2}{2\sigma^2}\right) p(y(i)∣x(i);θ)=2πσ1exp(−2σ2[y(i)−θTx(i)]2)(16)注意这里θ\bm \thetaθ是参数而非随机变量。
下面来考虑多个样本数据的情况。对于固定的θ\bm \thetaθ,在给定X\bf XX的情况下,y\bf yy的概率密度函数,我们称之为似然函数,为
L(θ)=∏i=1mp(y(i)∣x(i);θ)=∏i=1m12πσexp(−[y(i)−θTx(i)]22σ2).(17)\tag{17}\begin{aligned} L({\bm \theta})&=\prod_{i=1}^{m}p(y^{(i)}|{\bf x}^{(i)};{\bm \theta})\\ &=\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{[y^{(i)}-{\bm \theta}^{\rm T}{\bf x}^{(i)}]^2}{2\sigma^2}\right). \end{aligned} L(θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m2πσ1exp(−2σ2[y(i)−θTx(i)]2).(17)下面我们用最大似然准则,这意味着我们选择使得(17)中似然函数最大的θ\bm \thetaθ。事实上,我们也可以最大化似然函数的某个严格单调递增的函数,比如对数似然,显然可以把连乘运算变成连加运算
ℓ(θ)=logL(θ)=log∏i=1m12πσexp(−[y(i)−θTx(i)]22σ2)=∑i=1mlog12πσexp(−[y(i)−θTx(i)]22σ2)=mlog12π−12σ2∑i=1m[y(i)−θTx(i)]2(18)\tag{18} \begin{aligned} \ell(\bm \theta)&=\log L(\bm \theta)\\ &=\log \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{[y^{(i)}-{\bm \theta}^{\rm T}{\bf x}^{(i)}]^2}{2\sigma^2}\right)\\ &=\sum_{i=1}^{m}\log\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{[y^{(i)}-{\bm \theta}^{\rm T}{\bf x}^{(i)}]^2}{2\sigma^2}\right)\\ &=m\log\frac{1}{\sqrt{2\pi}}-\frac{1}{2\sigma^2}\sum_{i=1}^{m}[y^{(i)}-{\bm \theta}^{\rm T}{\bf x}^{(i)}]^2 \end{aligned} ℓ(θ)=logL(θ)=logi=1∏m2πσ1exp(−2σ2[y(i)−θTx(i)]2)=i=1∑mlog2πσ1exp(−2σ2[y(i)−θTx(i)]2)=mlog2π1−2σ21i=1∑m[y(i)−θTx(i)]2(18)因此,最大化ℓ(θ)\ell(\bm \theta)ℓ(θ)事实上就是最小化
12∑i=1m[y(i)−θTx(i)]2(19)\tag{19} \frac{1}{2}\sum_{i=1}^{m}[y^{(i)}-{\bm \theta}^{\rm T}{\bf x}^{(i)}]^2 21i=1∑m[y(i)−θTx(i)]2(19)即(3)中的均方差。
【从线性回归到BP神经网络】第二部分:线性回归相关推荐
- 神经网络系列之四 -- 线性回归方法与原理
4.0 单变量线性回归问题 4.0.1 提出问题 在互联网建设初期,各大运营商需要解决的问题就是保证服务器所在的机房的温度常年保持在23摄氏度左右.在一个新建的机房里,如果计划部署346台服务器,我们 ...
- (一)神经网络入门之线性回归
作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai 简书地址:https://www.jianshu.com/p/0da... 这篇教程是翻译Peter R ...
- DFF之--(一)神经网络入门之线性回归
这篇教程是翻译Peter Roelants写的神经网络教程,作者已经授权翻译,这是原文. 该教程将介绍如何入门神经网络,一共包含五部分.你可以在以下链接找到完整内容. (一)神经网络入门之线性回归 L ...
- 第二章.线性回归以及非线性回归—LASSO算法
第二章.线性回归以及非线性回归 2.13 LASSO算法 1.前期导入: 通过构造一个一阶惩罚函数获得一个精炼的模型:通过最终确定一些指标(变量)的系数为零,解释力很强 岭回归估计系数等于0的机会微乎 ...
- 第二章.线性回归以及非线性回归—一元线性回归,代价函数,相关系数,决定系数
第二章.线性回归以及非线性回归 2.1 一元线性回归 1.概念: 1).自变量: 被用来进行预测的变量,相当于输入 2).因变量: 被预测的变量,相当于输出 3).回归分析: 用来建立方程模拟两个或者 ...
- 第二章.线性回归以及非线性回归—多项式回归
第二章.线性回归以及非线性回归 2.7 多项式回归 1.举例: 1).特征数不同对应的曲线不同 2).假设我们不是找值(或者超平面),而是需要找到一个用多项式所表示的曲线(或者超平面),例如二次曲线: ...
- 第二章:3、BP神经网络
BP神经网络:BackPropagation Neuron NetWok BP 神经网络是一类基于误差逆向传播 (BackPropagation, 简称 BP) 算法的多层前馈神经网络,BP算法是迄今 ...
- 利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱)
最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型.时间序列模型,GM(1,1)模型,可是自己在结合实际的工作内容,发现这几种模型预测的精度不是很高,于 ...
- 【机器学习算法】神经网络和深度学习-4 重要的BP网络使用总结,了解BP神经网络的魅力
目录 BP神经网络需要注意的地方. 数值型字段的预处理方式 类别型字段的预处理方式: 目标字段的数据预处理: 实际案例 BP神经网络与逻辑回归.线性回归及非线性回归间的关系. BP神经网络的优缺点: ...
- BP神经网络的详细推导
文章目录 概述 一.神经元模型 二.感知机与多层网络 三.误差逆传播算法 四.全局最小与局部最小 五.BP算法的改进 1.引入动量法 2.尺度变换法 3.自适应学习率调整法 六.BP神经网络的训练 1 ...
最新文章
- Caffe —— Deep learning in Practice 深度学习实践
- 中国物联网2020年将达到1660亿美元的市场规模
- 线程池的种类,区别和使用场景
- Eclipse 常用快捷键(动画讲解)
- LeetCode:64. 最小路径和(python、c++)
- 嵌入式linux实验一vim的使用,嵌入式Linux C语言开发工具—vi/vim实训操作
- 【阙值分割】基于matlab粒子群算法自适应多阈值图像分割【含Matlab源码 1459期】
- java选中一行快捷键_java常用快捷键
- iOS 制作圆形头像图片
- Windos下安装Truffle报错install the latest version of Visual Studio
- 通信协议:分辨率和偏移量的使用
- Docker 18.09.0更换阿里镜像加速器
- 如何将资源文件正确嵌入或链接到程序集
- My SQL 创建数据库
- 《求医不如求己》1,2,3全集下载(附人体穴位图)
- 关于Delta 增量 (转)
- 【钉钉】钉钉疫情下扛起两亿上班族和全国中小学生!
- 使用uniapp开发, 引入腾讯位置服务
- Axure预览和发布时去掉左上角的标识
- 考研计算机有关专业,有关计算机专业考研
热门文章
- 视频干扰现象及其原因分析
- 基于数据库复制的技术架构讨论
- VMware克隆CentOS6.4后 eth0无法初始化
- C#中存储过程的调用
- 如何禁止文本框输入,但是要传值
- java getname threads_Java8并发教程:Threads和Executors
- 正解mysql: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/libstdc++.so.6)
- Lan Xiang's Square nyoj 1099(已经四边形四点坐标 如何判断正方形)
- 查看硬盘转速_【装机帮扶站】第538期:哪些CPU、板卡、硬盘对于普通消费者而言不太值得购买?...
- pandas 日期比较大小_如何计算不同pandas列中两个日期之间的年数