1.多层感知器的原理:
多层感知器(MLP,Multilayer Perception),同时也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,中间还有多个隐层。
从上图可以看到,多层感知机层与层之间是全连接的(全连接的意思就是:上一层的任何一个神经元与下一层的所有神经元都有连接)。多层感知机最底层是输入层,中间是隐藏层,最后是输出层。
1.输入层: 你输入什么就是什么,比如输入是一个n维向量,就有n个神经元。
2.隐藏层: 隐藏层的神经元怎么得来?首先它与输入层是全连接的,假设输入层用向量X表示,则隐藏层的输出
就是
f(W1X+b1)
,W1
是权重
(也叫连接系数
),b1
是偏置
,函数f 可以是常用的sigmoid函数或者tanh函数:
3.问:输入层到隐藏层
1.输入层接收特征数据,比如年龄、收入、购物习惯等,这些数据可能是连续的实数值。我们需要将这些数据映射到隐藏层。
2.使用Sigmoid函数可以将这些实数值映射到0,1的范围内。这种映射对于隐藏层的神经元来说更易于处理,因为神经元可以根据输入的激活值来做出相应的决策或调整权重。
问:那么为什么要使用sigmod函数作为隐藏层的输出呢?
1.隐藏层会根据输入层的数据学习到一些特征,比如年龄与购买行为的关系、收入与购买意愿的关系等,可以使用Sigmoid函数将这些特征的加权和映射到0,1的范围内,表示购买某个产品的概率。如果输出值接近1,表示有很高的概率购买;接近0则表示很低的概率购买
2.sigmod函数本身的性质就是能够控制输出范围始终在0,1之间,即使输入信号的范围非常大或非常小。这意味着神经元接收到的激活值总是在一个固定的范围内,不会出现过大或过小的情况,有利于神经元的稳定性和输出结果的可控性。
4.最后就是输出层,输出层与隐藏层是什么关系?其实隐藏层到输出层可以看成是一个多类别的逻辑回归,也即softmax回归,所以输出层的输出就是softmax(W2X1+b2),X1表示隐藏层的输出f(W1X+b1)
MLP整个模型就是这样子的,上面说的这个三层的MLP用公式总结起来就是,函数G是softmax,W是系数,b是偏置,s(…)是隐藏层的输出sigmod函数
因此,MLP所有的参数就是各个层之间的连接权重
以及偏置
,包括W1、b1、W2、b2。对于一个具体的问题,怎么确定这些参数?求解最佳的参数是一个最优化问题,解决最优化问题,最简单的就是梯度下降法了(SGD):首先随机初始化所有参数,然后迭代地训练,不断地计算梯度和更新参数,直到满足某个条件为止(比如误差足够小、迭代次数足够多时)。这个过程涉及到代价函数、规则化(Regularization)、学习速率(learning rate)、梯度计算等,本文不详细讨论,读者可以参考本文顶部给出的两个链接。
5.问:为什么使用softmax函数?
目的:将输入值转为表示概率分布的值
2.举个例子
条件: 输入层有三个神经元,隐藏层有四个神经元,输出层有两个神经元;
权重矩阵如图所示:
流程: