神经网络基础知识


概念区分

机器学习>神经网络>深度学习=深度神经网络

机器学习

  • 神经网络
    • 浅层神经网络
    • 深层神经网络/深度学习:一种机器学习算法,“深度”指的是神经网络中的层次很深。
  • 逻辑回归:没有隐含层的神经网络
  • ……

标注习惯

  • 上角小括号:训练集里的值
  • 上角中括号:神经网络的层数
  • 大括号:不同的mini-batch

逻辑回归

正向传播

$z=w^{T}x+b$

激活函数:$a = \hat{y} = \sigma (z)$

损失函数(衡量在单个训练样本上的表现):

$L(\hat y, y) = -ylog\hat y - (1-y)log(1-\hat{y})$

成本函数(衡量在全体训练样本上的表现):$J\left( {w,b} \right) = \frac{1}{m}\sum\limits_{i = 1}^m {L({\hat{y}^{(i)}},\mathop y\nolimits^{(i)} )}$

反向传播

梯度下降算法:

$$da = \frac{\partial L}{\partial a} = - \frac{y}{a} + \frac{1 - y}{1 - a}$$

$$dz = \frac{\partial L}{\partial z} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} = ( - \frac{y}{a} + \frac{1 - y}{1 - a}) \cdot a \cdot (1 - a) = a - y$$

$$\left{ {\begin{array}{l}
{d\mathop w\nolimits_1 = \frac{\partial L}{\partial \mathop w\nolimits_1 } = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial \mathop w\nolimits_1 } = \mathop x\nolimits_1 \cdot (a - y)}\
{d\mathop w\nolimits_2 = \frac{\partial L}{\partial \mathop w\nolimits_2 } = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial \mathop w\nolimits_2 } = \mathop x\nolimits_2 \cdot (a - y)}\
{db = \frac{\partial L}{\partial b} = a - y}
\end{array}} \right.$$

更新:
$$\left{ {\begin{array}{l}
{\mathop w\nolimits_1 : = \mathop w\nolimits_1 - \partial \cdot d\mathop w\nolimits_1 }\
{\mathop w\nolimits_2 : = \mathop w\nolimits_2 - \partial \cdot d\mathop w\nolimits_2 }\
{b: = b - \partial \cdot db}
\end{array}} \right.$$

m个样本的梯度下降:
$$\left{ {\begin{array}{l}
{d{\rm{ }}{w_1} = \frac{\rm{1}}{\rm{m}}\sum\limits_{i = 1}^m {x_1^{(i)} \cdot ({a^{(i)}} - {y^{(i)}})} {\rm{ }}}\
{d{\rm{ }}{w_2} = \frac{\rm{1}}{\rm{m}}\sum\limits_{i = 1}^m {x_2^{(i)} \cdot ({a^{(i)}} - {y^{(i)}})} {\rm{ }}}\
{db = \frac{\partial L}{\partial b} = \frac{\rm{1}}{\rm{m}}\sum\limits_{i = 1}^m {({a^{(i)}} - {y^{(i)}})} }
\end{array}} \right.$$

深层网络的向前传播:
$$z^{[l]}=w^{[l]}a^{[l]-1}+b^{[l]}$$
$$a^{[l]} = \sigma (z^{[l]})$$

常见激活函数

sigmiod函数

$$
f(x) = \frac{1}{1 + e^{-x}}
$$

使用范围:常用于二分类问题。被广泛地使用在输出单元/最后一层上,在隐藏层使用较少。

输出特点:值在0和1之间。

具有平滑性、可导性、单调性等良好的性质,使用sigmod激活函数的神经网络可以学习到非线性的特征,提高模型的拟合能力。

存在输出值偏置的问题,当输入值很大或很小时,函数的斜率会趋近于0,导致梯度消失,使得神经网络难以进行有效的学习。

softmax函数

$$
S_i = \frac{e^i}{\sum_j e^j}
$$
使用范围:多分类问题。用在输出单元。

输出特点:每一项的区间范围是(0, 1),所有项相加的和为1。

tanh函数

$$
tanh(x) = \frac{1 - e^{-2x}}{1 + e^{-2x}}
$$

ReLU函数

$$
ReLU(x) = max(x, 0)
$$
使用范围:当搭建的神经网络层数较多时,此时不宜选择sigmoid、tanh函数,应选用ReLU。

ReLU函数的求导表现得很好,要么让参数消失,要么让参数通过。ReLU减轻了神经网络的梯度消失问题。

常见损失函数

交叉熵

$$
L(\hat y, y) = -ylog\hat y - (1-y)log(1-\hat{y})
$$

均方差

$$
MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
$$


Author: CuberSugar
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source CuberSugar !
  TOC