神经网络
神经网络模型
![image-20221207160513481](/i/l/?n=23&i=blog/2031065/202302/2031065-20230217164455746-1756862992.png)
神经网络与线性回归的思想类似,然后添加相应的激活函数输出对应的结果。经典的神经网络有以下三个层次组成:输入层(input layer), 隐藏层 (hidden layers), 输出层 (output layers)。
![image-20221207163123502](/i/l/?n=23&i=blog/2031065/202302/2031065-20230217164456558-1927104565.png)
层与层之间相互连接,每个连接都是带有权重值的。隐藏层和输出层的神经元由输入的数据计算输出,但输入层神经元只有输入,一般指一个训练数据样本的数据。
1、前向传播算法
2、激活函数
神经网络中的每一层的输入输出都是一个线性求和的过程,下一层的输出只是承接了上一层输入函数的线性变换。如下图,如果没有激活函数,那么就相当于是一个线性激活函数
\(g(z)=z\),这个时候无论网络多么复杂,最后的输出都是输入的线性组合,而纯粹的线性组合并不能解决更为复杂的问题。
![image-20221207164421644](/i/l/?n=23&i=blog/2031065/202302/2031065-20230217164457461-1857114227.png)
引入激活函数之后,由于激活函数都是非线性的,这样就给神经元引入了非线性元素,使得神经网络可以逼近任何非线性函数,这样使得神经网络应用到更多非线性模型中。
-
sigmoid
函数:函数将变量映射到\((0,1)\)之间,主要用来做二分类神经网络,与逻辑回归中添加\(sigmod\)函数思想一样。
\[g(x)= \frac{1}{1+e^{-x}} \] -
softmax
函数:\(softmax\)是\(sigmoid\)的一种更普遍的形式。它常用于多分类问题。与\(sigmoid\)类似,它产生的值范围为 \([0,1]\) ,因此它被用作分类模型中的输出层。
\[g(x_j)=\frac{e^{x_j}}{\sum \limits_{k=1}^{N} e^{x_{k}}} \] -
ReLU
函数:产生的值范围为 \([0,+ \infty )\) ,普遍用于神经网络的隐藏层。
\[g(x)=\left\{\begin{array}{ll} x, & x>=0 \\ 0, & x<0 \end{array}\right. \]
3、Adam优化算法
\(Adam\)优化算法是在梯度下降算法基础上的改进,它能够根据梯度下降的方向调整学习率,当梯度下降的方向相同时,增大学习率,当梯度下降的方向一直摇摆时,减小学习率,从而能够更快的学习参数。
![image-20221207202552249](/i/l/?n=23&i=blog/2031065/202302/2031065-20230217164459376-470204976.png)
4、卷积层
基于神经网络的分类问题
1、二分类问题
逻辑回归在神经网络上的应用,激活函数使用\(sigmod\)函数。
2、多分类问题
多分类问题是二分类问题(逻辑回归)的泛化,它把输入的样本划分为多个类别:
![image-20221207193347460](/i/l/?n=23&i=blog/2031065/202302/2031065-20230217164459877-1960515492.png)
类似于逻辑回归,这里使用\(softmax\)函数作为激活函数,损失函数定义为:
![image-20221207194956509](/i/l/?n=23&i=blog/2031065/202302/2031065-20230217164500387-411730637.png)
激活函数使用\(softmax\)函数,此时输出值和原来的逻辑回归不一样,它与所有输出层的原始输出值都相关
。
![image-20221207195909172](/i/l/?n=23&i=blog/2031065/202302/2031065-20230217164502109-1752140643.png)
3、多标签问题
多标签问题和多分类问题不同,多标签问题相当于多个二分类问题,比如:你需要分别标注图上是否包含car,bus,pedestrian
三类标签。
![image-20221207201127235](/i/l/?n=23&i=blog/2031065/202302/2031065-20230217164503257-638057626.png)
此时可以在输出层设置3个节点,然后对这3个节点分别使用\(sigmod\)函数,每个标签都相当于一个二分类问题:
![image-20221207201739582](/i/l/?n=23&i=blog/2031065/202302/2031065-20230217164504074-650824927.png)