对于感知机:
感知机中对模型的更新:
w+yi*xi--->x新w
b+yi--->新b
等价于使用批量大小为1的梯度下降,并使用如下的损失函数:
关于感知机的收敛:
但是感知机不能解决XOR函提问
经过发展后,通过多层感知机可以解决XOR函数问题了
多层感知机:
如果像:y = X*w + b 这种关系性很强的线性关系不适用了,那么当我们不知道这种关系时,我们就要用计算机帮我们求得其隐含的关系
我们可以通过在网络中加入一个或多个隐藏层来克服线性模型的限制, 使其能处理更普遍的函数关系类型。 要做到这一点,最简单的方法是将许多全连接层堆叠在一起。 每一层都输出到上面的层,直到生成最后的输出。 我们可以把前L−1层看作表示,把最后一层看作线性预测器。 这种架构通常称为“多层感知机”
全连接:每个输入都会影响隐藏层中的每个神经元, 而隐藏层中的每个神经元又会影响输出层中的每个神经元
从而实现 线性--->非线性
但是具有全连接层的多层感知机的参数开销十分的高昂,即使在不改变输入或输出大小的情况下, 可能在参数节约和模型有效性之间进行权衡
但是仅有两层的感知机,如果只是单纯的不进行其他操作,就输出结果的话,即直接用:
那么就会出现结果仍然是线性函数的情况:
由上面图片的公式即可发现,结果仍为线性函数
为了改变这种情况,这时候,我们就要在隐藏层用到激活函数(activation function),写作
公式则变为:
这样就可使输出O变为非线性的函数了
由于X中的每一行对应于小批量中的一个样本, 出于记号习惯的考量, 我们定义非线性函数σ也以按行的方式作用于其输入, 即一次计算一个样本
之前使用了softmax符号来表示按行操作。 但是在本节中,我们应用于隐藏层的激活函数通常不仅按行操作,也按元素操作。 这意味着在计算每一层的线性部分之后,我们可以计算每个活性值, 而不需要查看其他隐藏单元所取的值。(即:虽然在全连接层中,但是我们仍然可以单独去考虑每一个元素的情况,而不用考虑其他元素对它的影响) 对于大多数激活函数都是这样。
则如果想要模型的表达能力更强,如下图所说:
图文来源:4.1. 多层感知机 — 动手学深度学习 2.0.0-beta0 documentation (d2l.ai)