李沐-动手学深度学习(八)多层感知机

【总结】

感知机是一个二分类的问题,是最早的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:训练完参数要固定的。

你可能感兴趣的:(李沐-动手学深度学习(八)多层感知机)