![PyTorch自动驾驶视觉感知算法实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/862/49447862/b_49447862.jpg)
1.1.1 神经网络模型
最简单的神经网络早在20世纪60年代就发明出来了,后来发展出了现在广泛使用的多层感知机(Multi Layer Perceptron, MLP)。多层感知机的基本网络结构如图1-1所示。
输入层X是一个一维向量,输出层f则是神经网络计算出来的预测值。举个实际应用的例子。假如这个神经网络被用来预测明日的股价,X可以是前几天的股价涨跌幅,f就是股票明天的涨跌幅了。那么神经网络的内部发生了什么?一般而言,神经网络是由一层一层的网络层组成的,每一层都会对输入向量进行一系列的运算,从而得到输出值。因为神经网络的作用可以被认为是对输入进行特征提取,所以每一层的输出值都被称为这一层的特征(Feature)。图1-1中f1便是第一层神经网络的输出特征。可以用式(1-1)来表达第一层网络进行的运算:
![](https://epubservercos.yuewen.com/1152E7/29012950603616906/epubprivate/OEBPS/Images/16_01.jpg?sign=1739672531-uGyszKRp5vw1Xd05kM2GdJy7DVKXQ5DQ-0-c7e931c61b0b11007da114e151ba56d2)
• 图1-1 多层感知机
![](https://epubservercos.yuewen.com/1152E7/29012950603616906/epubprivate/OEBPS/Images/16_02.jpg?sign=1739672531-Pxy8jNDHMRPkEAjHg1ewKd74GRG0MM4h-0-2d56f9af0f18cdefa656a9fca9a2a0fc)
式中,W1称作权重(Weight),是一个二维矩阵。图1-1中X是一个维度为3的向量,输出的特征f1是一个维度为4的向量,那么W1就是一个3×4的矩阵,它的作用是通过线性变换把一个3维空间的输入向量投射(Project)到一个4维的特征空间中去。b1称作偏置(bias),是一个长度为4的向量。
ϕ称作激活函数(Activation Function),之所以称其为激活函数,是因为神经网络的设计灵感来自于人类的神经元。人类神经元的树突接收来自多个神经元传递过来的信号,将它们积累起来。当电位累积到一定阈值时,神经元会激活并向下一个神经元传递信号,这被称为神经冲动。激活函数仿照人类神经元的激活方式设计,如常用的ReLU激活函数,可以用式(1-2)表达:
![](https://epubservercos.yuewen.com/1152E7/29012950603616906/epubprivate/OEBPS/Images/17_01.jpg?sign=1739672531-TwbXCjT44eHHTpirkN7MLhFCFmKBI7nl-0-0fa332ad1a0accbc76ca4ebc8c45b5a4)
ReLU函数的作用很简单,如果输入不超过阈值0,就不输出(输出为0),如果超过阈值了,就把这个输入原原本本地传导到下一个神经元。通过观察图1-2中所示的ReLU激活函数的图形能够更直观地理解它的作用。
![](https://epubservercos.yuewen.com/1152E7/29012950603616906/epubprivate/OEBPS/Images/17_02.jpg?sign=1739672531-YWNQVXOveLPbjDKBU0cGbohBIvhVw87K-0-30adcbfdb449673715280391f3972932)
• 图1-2 ReLU激活函数
于是第一层的完整公式就很容易写出来了:
![](https://epubservercos.yuewen.com/1152E7/29012950603616906/epubprivate/OEBPS/Images/17_03.jpg?sign=1739672531-7qIujmN2OREIPBDF3pApY5yt4pjcl1Tz-0-4325dabdeb1123604959ef7dd54277fe)
激活函数必须是非线性变换,ReLU是由两个线性变换组合而成的分段函数,属非线性函数。简单地说,每一层神经网络都会对输入向量进行线性变换和非线性变换之后得到输出特征。第二层神经网络接收到了第一层的输出,也会进行一番线性变换和激活,就得到了最终的输出值f:
![](https://epubservercos.yuewen.com/1152E7/29012950603616906/epubprivate/OEBPS/Images/17_04.jpg?sign=1739672531-qjQd5p2a6Ie7dcKPKgW5nE1b1wqUEVb6-0-7f7b856f4a03e65c880820a928322f13)
因为输出层输出的是股票明日的涨跌幅,且输出层不需要激活函数,这样输出的数值就可以是负无穷到正无穷之间的任意数值了,也就是说ϕ2可以去掉。那么直接将两层神经网络的输入、输出连接起来,就可以得到整个神经网络的公式:
![](https://epubservercos.yuewen.com/1152E7/29012950603616906/epubprivate/OEBPS/Images/17_05.jpg?sign=1739672531-K9wTBtkhFENoMK0UxN7aeXvGzZpvhw3a-0-90bd4d1d569a169def21f085f328bb9c)
式中,F(X)便是整个神经网络的函数。