感知机相关知识

感知机

  • 给定输入x, 权重w, 偏移b, 感知机输出:
\[o=\sigma(<w,x>+b){\quad \quad} \sigma(x)=\begin{cases} 1& \text{if x>0}\\ 1& \text{others} \end{cases}
\]

相当于给所有样本点画一条线,将不同类别尽可能划分开,是一个二分类问题

  • 二分类:-1或1
    • 线性回归输出一个实数,感知机输出离散的两个值
    • softmax可以输出多分类,感知机只能做二分类

训练感知机

  • 训练伪代码
    \(\quad\)initialize \(w=0\) and \(b=0\)
    \(\quad\)\(\quad\)repeat:
    \(\quad\)\(\quad\)\(\quad\)if \(y_i[<w,x_i>+b]\leq0\) then //异号说明预测错误
    \(\quad\)\(\quad\)\(\quad\)\(\quad\)\(w\leftarrow w+y_ix_i\) and \(b\leftarrow b+y_i\)
    \(\quad\)\(\quad\)end if
    \(\quad\)until all classified correctly

  • 等价于使用批量大小为1的梯度下降,并使用如下损失函数

\[\zeta(y,x,w)=max(0,-y<w,x>)
\]

如果上述Loss是一个0,说明\(y<w,x>\)大于零,预测正确,损失为0;反之则预测错误,返回损失。

收敛定理

  • 假设
    • 数据在半径\(r\)内,相当于数据量大小。
    • 余量\(\rho\)分类两类 \(\quad \quad y(x^Tw+b)\geq\rho\)
      对于\({||x||}^2+b^2\leq 1\)
    • 感知机保证在\(\frac{r^2+1}{{\rho}^2}\)步后收敛。

多层感知机

XOR问题

  • 单层的感知机只能对数据做一个线性分割(类似于切一刀),因此对于异或这类问题无法被感知机拟合,这个问题造成了第一次AI寒冬。

多层感知机

  • 一层的感知机模型无法拟合XOR问题,但如果增加感知机层数,就可以拟合异或问题了,比如:

    • A感知机对于x轴做切分:等于0返回1,等于1返回-1
    • B感知机对于y轴做切分:等于1返回1,等于0返回-1
    • 结果为两个感知机输出的乘积(0,0)返回-1;(0,1)返回1,(1,0)返回1;(1,1)返回0.
      上述两个感知机模型便可以解决异或的问题,相当于在数据集上切了两刀。
  • 一个多层感知机由输入层、隐藏层(hidden)、输出层构成,输入输出层的大小由具体问题的输入输出类别决定,隐藏层大小由我们自定义,是一个超参数。

单隐藏层

  • 输入\(x\in R^n\)
  • 隐藏层\(W_1\in R^{m\times n}\),\(b_1\in R^m\)
  • 输出层\(w_2\in R^m\),\(b_2\in R\)
\[h = \sigma({W_1x+b_1})
\]

\[o=w_2^Th+b_2
\]

\(\sigma\)是按元素的激活函数。

为什么要激活函数(非线性)?

  • 如果激活函数还是线性的话,我们的多层感知机模型只能拟合一个线性的问题,如果引入一个非线性的激活函数,可以使我们的模型增加一些非线性的特点,能够更好的拟合现实世界中的各种问题。

Sigmoid激活函数

\[sigmoid(x)=\frac{1}{1+exp(-x)}
\]

它将输入投影到(0,1)区间。是一个软的\(\sigma(x)=\begin{cases} 1& \text{if x>0}\\ 1& \text{others} \end{cases}\)

  • 优势:更好求导。

Tanh激活函数

\[tanh(x)=\frac{1-exp(-2x)}{1+exp(-2x)}
\]

它将输入投影到(-1,1)区间。相当于Sigmoid的放缩平移。

ReLU激活函数

\[ReLU(x)=max(x,0)
\]

  • 求导更简单,无指数运算,避免梯度消失

多类分类

  • 输入\(x\in R^n\)
  • 隐藏层\(W_1\in R^{m\times n}\),\(b_1\in R^m\)
  • 输出层\(W_2\in R^{m\times k}\),\(b_2\in R^k\)
\[h = \sigma({W_1x+b_1})
\]

\[o=W_2^Th+b_2
\]

\[y=softmax(o)
\]

多隐藏层

\[h_1 = \sigma({W_1x+b_1})
\]

\[h_2 = \sigma({W_2x+b_2})
\]

\[h_3 = \sigma({W_3x+b_3})
\]

\[o = W_4h_3+b_4
\]

  • 超参数
    • 隐藏层数
    • 每层隐藏层大小
      一般来说,将第一层设置的较大一点,之后随着层数慢慢减少。

总结

  • 多层感知机使用隐藏层和激活函数来得到一个非线性的模型
  • 常用激活函数:Sigmoid,Tanh,ReLU
  • 使用softmax来处理多分类
  • 超参数为隐藏层层数,和各个隐藏层的大小。

——————觉得有用给笔者点个赞呀o( ̄︶ ̄)o