感知机
- 给定输入x, 权重w, 偏移b, 感知机输出:
相当于给所有样本点画一条线,将不同类别尽可能划分开,是一个二分类问题
- 二分类:-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的梯度下降,并使用如下损失函数
如果上述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\)
\(\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_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