【总结】
感知机是一个二分类的问题,是最早的AI模型之一。
它的求解算法等价于使用批量大小为1的梯度下降。
它不能拟合XOR函数,导致第一次AI寒冬。
多层感知机使用隐藏层和激活函数来得到非线性模型。
常用的激活函数时Sigmoid、Tanh、ReLU。
使用Softmax来处理多类分类。
超参数为隐藏层数,和各个隐藏层大小。
1、感知机
比线性回归多了个激活函数,激活函数有很多种选择。
感知机是个二分类的问题,是最早的AI模型之一。
线性回归输出是一个实数,softmax回归输出概率,感知机输出离散的类。
(1)当年怎么训练的:
等价于使用批量大小为1的梯度下降。也就是每次拿一个样本来算梯度。没有说随机,因为感知机最早就是一遍一遍去扫数据。
max(0,-y<w,x>),max和0是对应上面的if语句,如果分类正确,那么y<w,x>为正,-y<w,x>为负,max=0,梯度为常数,不去做更新;如果分类错误,那么y<w,x>为负,-y<w,x>为正,max=-y<w,x>,这时候就有梯度了,就去更新。
(2)感知机的收敛定理
(3)感知机的问题
这个问题导致了AI的第一个寒冬。十几年后,多层感知机解决这个问题。
2、多层感知机
先学蓝色的线,x>0和 x<0;再学习黄色的线,y>0和y<0。有了两个分类器的结果后,再对两个结果做乘法。
(1)隐藏层
(2)单分类问题
没加激活函数,就会等价于一个单层感知机:
(3)激活函数
单独放了一篇文章,在“李沐-动手学深度学习(1)”
(4)多类分类
就是在softmax中增加了一层
(5)多隐藏层
经验上,m1可能会设的稍微大一点点。因为,如果输入比较复杂,比如纬度128或者256等,但是输出一般比较少的10、5等,所以这个过程要吧维度逐渐压缩。
3、多层感知机的从零开始实现
chapter_multilayer-perceptrons/mlp-scratch.ipynb
W1随机生成那里,换成生成全0的结果为:
W1随机生成那里,换成生成全1的结果为:
4、多层感知机的简洁实现
chapter_multilayer-perceptrons/mlp-concise.ipynb
5、问答
(1)Q:神经网络中国的一层指什么?
A:通常说的那一层是有权重的一层,比如下图,每个箭头都包含了一个可以学习的权重。所以通常说的那一层,是有权重的然后包含了激活函数的。
(2)多层感知机解决了XOR的问题,但是后来没有流行。SVM替代了多层感知机。因为三个原因。
一个是,多层感知机需要调很多超参数(隐藏层数量、每个多大),收敛也难,要条学习率。二是,SVM好处是,对超参数不敏感,SVM优化也容易些。第三点,其实他们效果差不多,但SVM用起来简单,而且SVM数学很好。所以90年代-2000年,SVM主流。
现在课程中没有SVM,也不建议用的原因是,用MLP,改别的神经网络模型比较简单,什么都不用变,就改几行,SVM还得换优化什么的。
Q:为什么神经网络要增加隐藏层的层数,而不是神经元的个数?
A:两种做法,一种窄胖,一种高瘦。模型负责度差不多的,几乎 相等。但是窄胖的难训练,很容易过拟合。这么多一起协调好会很难,一口气吃成胖子。
(3)Q:能打造动态神经网络吗?不然训练完,参数永远是死的?
A:训练完参数要固定的。