多层感知机及代码实现
完整的实验代码在我的github上👉QYHcrossover/ML-numpy: 机器学习算法numpy实现 (github.com) 欢迎star⭐
多层感知机(MLP)是一种前馈神经网络,由输入层、若干个隐藏层和输出层组成。每一层都由多个神经元组成。MLP一般用于分类问题,可以通过反向传播算法进行训练。在深度学习领域,MLP是一种基础结构,被广泛应用于图像识别、自然语言处理等领域。
多层感知机的结构
多层感知机的结构如下图所示:
其中,输入层接受输入数据,隐藏层通过激活函数将输入数据进行非线性变换,输出层将隐藏层输出映射到目标空间,得到预测结果。在训练过程中,可以通过反向传播算法将预测结果与真实标签进行比对,求得误差并更新模型参数。
多层感知机原理
激活函数
在多层感知机中,激活函数用于将输入数据进行非线性变换。常用的激活函数有sigmoid函数、ReLU函数、tanh函数等。
其中,sigmoid函数定义如下:
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x) = \frac{1}{1+e^{-x}} sigmoid(x)=1+e−x1
ReLU函数定义如下:
R e L U ( x ) = m a x ( 0 , x ) ReLU(x) = max(0,x) ReLU(x)=max(0,x)
tanh函数定义如下:
t a n h ( x ) = e x − e − x e x + e − x tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+e−xex−e−x
前向传播
在多层感知机中,前向传播用于将输入数据传递至输出层。设输入数据为 x x x,第 i i i层隐藏层的输出为 h i ( x ) h_i(x) hi(x),第 l l l层隐藏层到第 l + 1 l+1 l+1层隐藏层之间的权重矩阵为 W l W_{l} Wl,第 l l l层隐藏层的偏置为 b l b_l bl,则前向传播的计算过程如下:
h 1 ( x ) = f ( W 1 x + b 1 ) h_1(x) = f(W_1x+b_1) h1(x)=f(W1x+b1)
h l ( x ) = f ( W l h l − 1 ( x ) + b l ) h_l(x) = f(W_lh_{l-1}(x)+b_l)