title: BP-network
mathjax: true
date: 2018-11-21 13:03:36
tags:
- 机器学习
- 神经网络
- 误差反向传播
categories: 机器学习
BP神经网络
写在前面:
一、神经元模型
神经元,也叫做感知器,是神经网络中计算的基本单元,一个典型的神经元结构如图所示:
图1 神经元结构图
- 输入向量 ( x 1 , x 2 , . . . , x n ) T (x_1,x_2,...,x_n)^T (x1,x2,...,xn)T,每一个输入上还有一个对应权值向量 W = ( w 1 , w 2 , . . . , w n ) T W=(w_1,w_2,...,w_n)^T W=(w1,w2,...,wn)T,此外还一个偏置项 b b b,
- 激活函数 神经元的激活函数 f ( x ) f(x) f(x)可以有很多选择,比如阶跃函数,sigmoid函数,tanh函数等。
- 输出一个神经元的输出计算如下:
o u t p u t = f ( w 1 x 1 + w 2 x 2 + . . . + w n x n + b ) output=f(w_1x_1+w_2x_2+...+w_nx_n+b) output=f(w1x1+w2x2+...+wnxn+b)
实际计算的时候我们很少使用这样的式子来计算,我们的做法是,在输入向量的最前面添加一个1,输入向量变为
X = ( 1 , x 1 , x 2 , . . . , x n ) T X=(1,x_1,x_2,...,x_n)^T X=(1,x1,x2,...,xn)T
另 w 0 = b w_0=b w0=b添加到权值向量中变为
W = ( w 0 , w 1 , w 2 , . . . , w n ) T W=(w_0,w_1,w_2,...,w_n)^T W=(w0,w1,w2,...,wn)T
这样我们就可以将神经元的计算写成为矩阵计算的形式 o u t p u t = f ( W T X ) output = f(W^TX) output=f(WTX)
二、神经网络
2.1神经网络结构—全连接神经网络
神经网络实际上就是按照一定的规则连接起来的多个神经元。如下图,图2所示,展示了一个全连接的三层神经网络结构
神经网络介绍及图参考博客 https://www.zybuluo.com/hanbingtao/note/476663
图2 神经网络结构
- 神经元按照层结构来布局,分为输入层,隐藏层,输出层。
- 同一层神经元之间没有连接。
- 第N层的神经元和第N-1层的所有神经元相连,第N-1层神经元的输出就是第N层神经元的输入。
- 每一个连接代表一个权值。
2.2 全连接网络的网络的输出
神经网络我们也可以理解成为一个复杂的不知道具体函数解析式的函数,即从出入向量X到输出向量Y的映射关系:
在神经网络中我们可以根据输入向量以及其连接方式一层一层的计算各层的输出,最终来计算网络的输出。为了方便说明我们将上图中给每个单元编号,得到图3:
note:有的教程中不认为输出数据作为一层这里我们将输出数据看为神经网络的一层,即输入层的结果就是输入向量X
接下来我们按照神经元的计算方式分别计算a4,a5,a6,a7神经元的输出,即计算隐藏层的输出,这里我们激活函数为 f ( x ) = s i g m o i d ( x ) f(x)=sigmoid(x) f(x)=sigmoid(x):
a 4 = f ( w 40 + w 41 x 1 + w 42 x 2 + w 43 x 3 ) a 5 = f ( w 50 + w 51 x 1 + w 52 x 2 + w 53 x 3 ) a 6 = f ( w 60 + w 61 x 1 + w 62 x 2 + w 63 x 3 ) a 7 = f ( w 70 + w 71 x 1 + w 72 x 2 + w 73 x 3 ) a_4=f(w_{40}+w_{41}x1+w_{42}x_2+w_{43}x_3)\\ a_5=f(w_{50}+w_{51}x1+w_{52}x_2+w_{53}x_3)\\ a_6=f(w_{60}+w_{61}x1+w_{62}x_2+w_{63}x_3)\\ a_7=f(w_{70}+w_{71}x1+w_{72}x_2+w_{73}x_3)\\ a4=f(w40+w41x1+w42x2+w43x3)a5=f(w50+w51x1+w52x2+w53x3)a6=f(w60+w61x1+w62x2+w