【学习笔记】神经网络的介绍
由于每一个神经元都会产生一个标量结果,所以单层神经元的输出是一个向量,向量的维数等于神经元的数目。假设我们确定了参数w和b之后,那么带入需要预测的数据,如果y>0,我们认为这个点在直线的右边,也就是正类(三角形),否则是在左边(四边形)把一个n维向量空间用一个超平面分割成两部分,给定一个输入向量,超平面可以判断出这个向量位于超平面的哪一边,得到输入时正类或者是反类,,是一种模仿生物神经网络(动物的
神经网络的介绍
1. 人工神经网络的概念
人工神经网络(英语:Artificial Neural Network,ANN),简称神经网络(Neural Network,NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型,用于对函数进行估计或近似。
2. 神经元模型
将生物神经网络的工作原理抽象如图所示的简单模型,这就是的 M-P 神经元模型。把许多这样的神经元按一定的层次结构连接起来,就得到了神经网络。
其中:
- a 1 , a 2 … a n a_1,a_2\dots a_n a1,a2…an 为各个输入的分量
- w 1 , w 2 ⋯ w n w_1,w_2 \cdots w_n w1,w2⋯wn 为各个输入分量对应的权重参数
- b b b 为偏置
- f f f 为激活函数,常见的激活函数有tanh,sigmoid,relu
- t t t 为神经元的输出
使用数学公式表示就是:
t = f ( W T A + b ) t = f(W^TA+b) t=f(WTA+b)
可见,一个神经元的功能是求得输入向量与权向量的内积后,经一个非线性传递函数得到一个标量结果。
3. 单层神经网络
最基本的神经元网络形式,由有限个神经元构成,所有神经元的输入向量都是同一个向量。由于每一个神经元都会产生一个标量结果,所以单层神经元的输出是一个向量,向量的维数等于神经元的数目。
4. 感知机
感知机由两层神经网络组成,输入层接收外界输入信号后传递给输出层(输出+1正例,-1反例),输出层是 M-P 神经元
其中从 w 0 , w 1 ⋯ w n w_0,w_1\cdots w_n w0,w1⋯wn都表示权重
感知机的作用:
把一个n维向量空间用一个超平面分割成两部分,给定一个输入向量,超平面可以判断出这个向量位于超平面的哪一边,得到输入时正类或者是反类,对应到2维空间就是一条直线把一个平面分为两个部分。
5. 多层神经网络
多层神经网络就是由单层神经网络进行叠加之后得到的,所以就形成了层的概念,常见的多层神经网络有如下结构:
- 输入层(Input layer),众多神经元(Neuron)接受大量输入消息。输入的消息称为输入向量。
- 输出层(Output layer),消息在神经元链接中传输、分析、权衡,形成输出结果。输出的消息称为输出向量。
- 隐藏层(Hidden layer),简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。隐层可以有一层或多层。隐层的节点(神经元)数目不定,但数目越多神经网络的非线性越显著,从而神经网络的强健性(robustness)更显著。
示意图如下:
-
全连接层
- 当前一层和前一层每个神经元相互链接,我们称当前这一层为全连接层。
从上图可以看出,所谓的全连接层就是在前一层的输出的基础上进行一次 Y = W x + b Y=Wx+b Y=Wx+b的变化(不考虑激活函数的情况下就是一次线性变化,所谓线性变化就是平移(+b)和缩放的组合(*w))
6. 激活函数
要将数据中的正方形和三角形分开
通过不带激活函数的感知机模型我们可以划出一条线, 把平面分割开
但是通过感知机并无法将三角形和正方形完全分离。因此,可以考虑使用多层神经网络,在前面的感知机模型中再增加一层
合并等式,可以得到:
y = ( w 1 − 11 w 2 − 1 + ⋯ ) x 1 + ( w 1 − 21 w 2 − 1 + ⋯ ) x 2 + ( w 2 − 1 + ⋯ ) b 1 − 1 y = (w_{1-11}w_{2-1}+\cdots)x_1+(w_{1-21}w_{2-1}+\cdots)x_2 + (w_{2-1}+\cdots)b_{1-1} y=(w1−11w2−1+⋯)x1+(w1−21w2−1+⋯)x2+(w2−1+⋯)b1−1
上式括号中的都为w参数,和公式 y = w 1 x 1 + w 2 x 2 + b y = w_1x_1 + w_2x_2 +b y=w1x1+w2x2+b完全相同,依然只能够绘制出直线。相比于感知机,多层神经网络并没有任何的改进。
通过使用非线性的激活函数,让输出结果不再是一条直线。
上图中,使用sigmoid函数进行处理
如果给定合适的参数w和b,就可以得到合适的曲线,能够完成对最开始问题的非线性分割
所以激活函数很重要的一个作用就是增加模型的非线性分割能力
常见的激活函数:
看图可知:
- sigmoid 只会输出正数,以及靠近0的输出变化率最大
- tanh和sigmoid不同的是,tanh输出可以是负数
- Relu是输入只能大于0,如果输入含有负数,Relu就不适合,如果输入图片格式,常用Relu,因为图片的像素值作为输入时取值为[0,255]。
激活函数的作用:
- 增加模型的非线性分割能力
- 提高模型鲁棒性
- 缓解梯度消失问题
- 加速模型收敛等
参考:
肝爆!清华大佬【NLP自然语言处理】保姆级入门教程,干货课程分享,全程精华,没有一丝丝废话!-人工智能/AI/深度学习/机器学习。
更多推荐
所有评论(0)