AI学习笔记(一)-线性回归 2019-07-01

本笔记主要来自网易吴恩达的人工智能的视频,本笔记旨在提取最核心的部分形成数学理论,以高度

抽象概括的形式记录下来,这篇文章概括了  视频中 前 5章的 数学原理。

在介绍第一章线性回归之前,我们先建立向量,矩阵的求导法则,方便后续公式推导:

给定列向量x,列向量y, x'表示x的转置,(下文中类似),大写字母不加说明表示矩阵,

M(i,j)表示矩阵M的第i行,第j列元素;M(i,:)表示矩阵第i行的行向量,M(:,j)表示矩阵第j列

的列向量;

设x=(x1,x2,...,xn)'   ;  y=(y1,y2,...,ym)'  ;z=(z1,z2,...,zl)';

设y=f(x) 表示向量y是向量x的一个函数 ,这意味着y的每个分量都是x的一个函数;这意味着

dyi/dxj有明确的定义;

我们设 dy/dx为m*n的矩阵,满足第i行,第j列为:  dyi/dxj  

那么此时,dy/dx表示一个有明确定义的m*n的矩阵(其实就是雅克比矩阵);

下面我们建立矩阵,向量的求导法则:

当y=M*x+b时(M为m*n矩阵,b为m*1向量) 显然 dy/dx=M;

当y=x'*x时 , dy/dx=2x';

设z=(z1,z2,...zl)';

且 y=f(x), z=g(y);  也就是 z=g(f(x));

下面我们证明 :dz/dx=(dz/dy)*(dy/dx);

(dz/dx)(i,j) = dzi/dxj;

因为zi是关于y1,y2,...,ym的函数;而每个yk又是xj的函数;

所以dzi/dxj= dzi/dy1 *dy1/dxj+dzi/dy2* dy2/dxj + ...+ dzi/dym*dym/dxj

= (dz/dy)(i,:) * (dy/dx)(:,j) 

=>  (dz/dx)(i,j)= (dz/dy)(i,:) * (dy/dx)(:,j) 

=> dz/dx= dz/dy* dy/dx;

证明完毕;

说明向量函数也满足链式求导法则;

那么,概括以上我们得到3个公式:

 d(M*x+b)/dx= M  (1)

d(x'*x)/dx= 2*x'; (2)

dz/dx= dz/dy * dy/dx (3)

结合这三个公式,并设z= (Mx+b)'*(Mx+b) ,我们来求 dz/dx:

不妨设中间变量y=Mx+b;则 z=y'*y,;

dz/dx =  dz/dy * dy/dx = (2*y') * M = 2* ( x'M'+b')*M = 2 (x'M'M+b'M)

最终我们得到:

d( (Mx+b)'*(Mx+b) )/dx =2*(x'M'M+b'M) (4) 

后面我们将用到公式(4)


至此,矩阵向量求导公式建立完毕,开始进入线性回归主题:

线性回归可以概括为:

给定 数据集 (1,x(1,2),...,x(1,n)),(1,x(2,2),...,x(2,n))...,(1,x(m,2),...,x(m,n)); (1)

和对应的值 y(1),y(2),...,y(m);   (2)

求满足某个条件(condition)的线性方程:y_=a1*x1+a2*x2+a3*x3+...+an*xn;  (3)

为了简化书写:

我们记 (1)中依次按行排列而成的矩阵为X (m*n矩阵,m行,n列)

(a1,a2,a3,...an)' =a;  ( '  表示向量或矩阵转置,行转列,列转行,下同)

(x1,x2,x3,...xn)' =x;

(y(1),y(2),...,y(m))' =y;

那么 (3)简化为:  y_=a'*x

=> y_=x'*a ;

引入观测误差w_,可设  w_=(y_-x'*a);

将x数据集 样本和对应的y依次代入,联立得到矩阵形式:

w=y-X*a;

现在使得w所有项的平方和最小,这个平方和可以记为:

J(a)=w'*w= (y-Xa)'*(y-Xa);

现在给出condition:

  a必须使得   :J(a)=  (y-Xa)'*(y-Xa)   取最小值;

那么令 dJ(a)/da =0 ,我们利用公式 (4),得到:

dJ(a)/da =   2*(a'(-X)'(-X)-y'X)  =0

=>  a'X'X=y'X

=>  X'Xa=X'y

=> a= inv(X'X)X'y; (5)

公式(5)就是线性回归的正规方程。

下面给出梯度下降法的方程:

梯度下降实际上是求使得J(a)取最小值的 数值方法:

给定a的初始值 a[0],不妨设我们已经求得了a[i], 设d为迭代步长,迭代方程为:

 a[i+1]= a[i] -  d *  dJ(a)/da|(a=a[i]);

这个方程表示每次向梯度最大的反方向移动;

以上,便概括了 课程 前5章的 主要原理。

你可能感兴趣的:(AI学习笔记(一)-线性回归 2019-07-01)