全连接神经网络的结构
-
全连接神经网络的整体结构
可以简化为智能函数 \(y = f_θ(x)\)
输入和输出层一般为数据矩阵 -
全连接网络的单元结构
神经网络的思路:从单元到整体
一个单元的结构:
\(X_1, X_2, X_3...\)是很多矩阵,然后这些矩阵分别乘上对应的权重矩阵,再加上偏置矩阵b,输入给激活函数,就会输出结果用数学形式表达就是:
\(y_1 = h(X_1W_1 + X_2W_2 + X_3W_3 + b)\)
(\(h(x)\)为激活函数)所以如果想输出优质结果,就要调整各个输入的权重W
下一层的神经网络以这一层的输出为输入,进行同样的运算:
\(y_2 = h(y_1W + b)\)
激活函数
-
为什么激活函数一般不用线性函数?
若\(h(x) = kx + b\),则下一层的运算结果\(h((h(x)) = k^2x + kb + b\),仍为\(y = kx + b\)形式,也就是说没有体现出层数增加带来的效果
-
sigmoid函数
\(y = \frac{1}{1+e^{-z}}\)
\(y' = y(1-y)\)
特点:值域为(0,1),在x接近0处梯度较好
优点:- 简单,适合分类任务
缺点
- 在远离0的地方梯度过小,反向传播算法会出问题
- 值域不关于0对称
-
tanh激活函数(双曲正切函数)
\(y = \frac{e^z-e^{-z}}{e^z+e^{-z}}\)
\(y' = 1-y^2\)
特点:
- 与sigmoid函数很像
- 值域为(-1,1),关于0对称
优点:
- 比sigmoid收敛快
- 值域关于0对称
缺点
- 可能出现梯度消失问题
-
ReLU函数
\(y = \begin{cases} 0, &x\leq0\\ x, &x>0 \end{cases}\)
\(y' = \begin{cases} 0, &x\leq0\\ 1, &x>0 \end{cases}\)
特点:
- 分段函数
优点:
- 解决了梯度消失问题
- 没有指数运算,运算更为简便
缺点:
- 可能会出现神经元死亡的问题(也就是当x<0的时候,梯度为0,参数不再更新)
-
leaky ReLU函数
\(y = \begin{cases} ax, &x\leq0\\ x, &x>0 \end{cases}(a\neq1)\)
\(y' = \begin{cases} a, &x\leq0\\ 1, &x>0 \end{cases}\)
特点:
- 分段函数
优点:
- 不会出现神经元死亡的问题
缺点:
- 对正、负的输入,对应的函数不同,无法进行一致的关系预测