线性是对谁而言?
线性模型中的线性,并不指对输入变量的线性, 而是指对参数空间的线性。
也就说对于输入来说, 完全可以对先对其进行非线性变换, 再进行线性组合。从这个角度来说, 线性模型完全具有描述非线性的能力。
举一个简单的例子:
y=wx+b 是线性模型,没问题。
y=w1x+w2x2+w3x3+b 也是线性模型。原因是线性并不指对输入变量的线性, 而是指对参数空间的线性。即模型y=w1x+w2x2+w3x3+b 对 w 仍是线性的。但模型对 x 是非线性的,即线性模型完全具有描述非线性的能力。
对 y=w1x+w2x2+w3x3+b 模型的 x 进行换元,即 x1=x,x2=x2,x3=x3 ,得到y=w1x1+w2x2+w3x3+b ,这样模型的线性就很明显了。
广义线性模型
另一个 线性模型中的线性是指对参数空间的线性 的例子是:广义线性模型。
先以对数线性(Log-Linear Regression) 模型为例:
y=exp(wx+b),变换后得到 log(y)=wx+b ,形式上仍是线性回归(对 w 来说),但可以实现输入空间到输出空间的映射(对 x 来说)。
![[机器学习] 机器学习中所说的“线性模型”是个什么东西? [机器学习] 机器学习中所说的“线性模型”是个什么东西?](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzY3OS85NmEyN2QwMDlkNzJiNTJiZWEwYzdhZjA5Yzk5Nzk3Ny5wbmc=)
实际的广义线性模型(Generalized Linear Model) 定义如下:
y=g−1(wTx),其中 g(⋅) 为单调可微的函数,y′=g(y)=wTx。
广义线性模型是线性回归(对 w 来说),但可以实现输入空间到输出空间的映射(对 x 来说)。
神经网络为什么要使用非线性**
原因是:如果不使用**函数(或使用线性**函数),多层神经网络可以用一层网络来等效替代。
至于为什么能替代,是因为多个线性函数的组合仍为线性函数(对于输入空间和输出空间而言)。
比如对于一个两层的神经网络:
![[机器学习] 机器学习中所说的“线性模型”是个什么东西? [机器学习] 机器学习中所说的“线性模型”是个什么东西?](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE5NC8zN2I2N2U1MTI3NTdkZDZjMmJiOTk3YWY1ODljMjIzYS5wbmc=)
有:
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[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])
令 W′=W[2]W[1],b′=W[2]b[1]+b[2],则得到:
a[2]=z[2]=W′x+b′
即无**函数(或线性**函数)的多层神经网络可以由单层神经网络等效替代。
原因是:多个线性函数的组合仍为线性函数,这里的线性是对输入空间和输出空间来说的。