[机器学习] 机器学习中所说的“线性模型”是个什么东西?

文章目录

      • 线性是对谁而言?
      • 广义线性模型
      • 神经网络为什么要使用非线性激活

线性是对谁而言?

线性模型中的线性,并不指对输入变量的线性, 而是指对参数空间的线性。

也就说对于输入来说, 完全可以对先对其进行非线性变换, 再进行线性组合。从这个角度来说, 线性模型完全具有描述非线性的能力。

举一个简单的例子:

y = w x + b y=wx+b y=wx+b 是线性模型,没问题。

y = w 1 x + w 2 x 2 + w 3 x 3 + b y=w_1x+w_2x^2+w_3x^3+b y=w1x+w2x2+w3x3+b 也是线性模型。原因是线性并不指对输入变量的线性, 而是指对参数空间的线性。即模型 y = w 1 x + w 2 x 2 + w 3 x 3 + b y=w_1x+w_2x^2+w_3x^3+b y=w1x+w2x2+w3x3+b w w w 仍是线性的。但模型对 x x x 是非线性的,即线性模型完全具有描述非线性的能力。

y = w 1 x + w 2 x 2 + w 3 x 3 + b y=w_1x+w_2x^2+w_3x^3+b y=w1x+w2x2+w3x3+b 模型的 x x x 进行换元,即 x 1 = x , x 2 = x 2 , x 3 = x 3 x_1=x, x_2=x^2, x_3=x^3 x1=x,x2=x2,x3=x3 ,得到 y = w 1 x 1 + w 2 x 2 + w 3 x 3 + b y=w_1x_1+w_2x_2+w_3x_3+b y=w1x1+w2x2+w3x3+b ,这样模型的线性就很明显了。


广义线性模型

另一个 线性模型中的线性是指对参数空间的线性 的例子是:广义线性模型。

先以对数线性(Log-Linear Regression) 模型为例:

y = e x p ( w x + b ) y=exp(wx+b) y=exp(wx+b),变换后得到 l o g ( y ) = w x + b log(y)=wx+b log(y)=wx+b ,形式上仍是线性回归(对 w w w 来说),但可以实现输入空间到输出空间的映射(对 x x x 来说)。

[机器学习] 机器学习中所说的“线性模型”是个什么东西?_第1张图片
实际的广义线性模型(Generalized Linear Model) 定义如下:

y = g − 1 ( w T x ) y=g^{-1}(w^Tx) y=g1(wTx),其中 g ( ⋅ ) g(·) g() 为单调可微的函数, y ′ = g ( y ) = w T x y'=g(y)=w^Tx y=g(y)=wTx

广义线性模型是线性回归(对 w w w 来说),但可以实现输入空间到输出空间的映射(对 x x x 来说)。


神经网络为什么要使用非线性激活

原因是:如果不使用激活函数(或使用线性激活函数),多层神经网络可以用一层网络来等效替代。

至于为什么能替代,是因为多个线性函数的组合仍为线性函数(对于输入空间和输出空间而言)。

比如对于一个两层的神经网络:
[机器学习] 机器学习中所说的“线性模型”是个什么东西?_第2张图片
有:
z [ 1 ] = W [ 1 ] x + b [ 1 ] a [ 1 ] = g [ 1 ] ( z [ 1 ] ) z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ] a [ 2 ] = g [ 2 ] ( z [ 2 ] ) z^{[1]}=W^{[1]}x+b^{[1]} \\ a^{[1]}=g^{[1]}(z^{[1]}) \\ z^{[2]}=W^{[2]}a^{[1]}+b^{[2]} \\ a^{[2]}=g^{[2]}(z^{[2]}) \\ z[1]=W[1]x+b[1]a[1]=g[1](z[1])z[2]=W[2]a[1]+b[2]a[2]=g[2](z[2])
若没有激活函数,则:
a [ 1 ] = z [ 1 ] = W [ 1 ] x + b [ 1 ] (1) a^{[1]}=z^{[1]}=W^{[1]}x+b^{[1]} \tag{1} a[1]=z[1]=W[1]x+b[1](1)

a [ 2 ] = z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ] (2) a^{[2]}=z^{[2]}=W^{[2]}a^{[1]}+b^{[2]} \tag{2} a[2]=z[2]=W[2]a[1]+b[2](2)

将(2)式带入(1)式,得:
a [ 2 ] = z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ] = W [ 2 ] ( W [ 1 ] x + b [ 1 ] ) + b [ 2 ] = ( W [ 2 ] W [ 1 ] ) x + ( W [ 2 ] b [ 1 ] + b [ 2 ] ) \begin{aligned} a^{[2]}=z^{[2]}&=W^{[2]}a^{[1]}+b^{[2]} \\ &=W^{[2]}(W^{[1]}x+b^{[1]})+b^{[2]} \\ &=(W^{[2]}W^{[1]})x+(W^{[2]}b^{[1]}+b^{[2]}) \end{aligned} a[2]=z[2]=W[2]a[1]+b[2]=W[2](W[1]x+b[1])+b[2]=(W[2]W[1])x+(W[2]b[1]+b[2])
W ′ = W [ 2 ] W [ 1 ] W'=W^{[2]}W^{[1]} W=W[2]W[1] b ′ = W [ 2 ] b [ 1 ] + b [ 2 ] b'=W^{[2]}b^{[1]}+b^{[2]} b=W[2]b[1]+b[2],则得到:
a [ 2 ] = z [ 2 ] = W ′ x + b ′ a^{[2]}=z^{[2]}=W'x+b' a[2]=z[2]=Wx+b
即无激活函数(或线性激活函数)的多层神经网络可以由单层神经网络等效替代。

原因是:多个线性函数的组合仍为线性函数,这里的线性是对输入空间和输出空间来说的。

你可能感兴趣的:(机器学习)