机器学习III - 神经网络(Neural Networks)
5. 神经网络(Neural Networks)
神经网络是通过模拟大脑的构造,来构建的机器学习模型。模型是由很多个逻辑单元(Logistic Unit)来组成的。
1 | graph LR |
其中$x_1, x_2, x_3$为输入变量,经过神经后传递数据给单元,最后输出一个值。$h_\theta(x)$为单元的激活函数(Activateion Funtion)。例如常用的激活函数为Sigmod函数,$h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}$
另外也会有$x_0$这种偏置单位(biased unit) = 1
神经网络其实就是单元互相的结合
其中第一层Layer1称之为输入层(Input Layer),最后一层Layer3称之为输出层(Output Layer),其他中间层称之为隐藏层(Hidden Layer)。其他定义:
$a_i^{(j)} =\ $第$j$层的第$i$个单元
$\Theta^{(j)}$ = 从第$j$层映射至第$j+1$层的加权矩阵
例如上图中的神经网络:
如果神经网络在$j$层有$s_j$个单元,在$j+1$层有$s_{j+1}$个单元,则$\Theta^{(j)}$的维度为$s_{j+1} \times (s_j+1)$
例如上图中的神经网络,$\Theta^{(j)} = 3 \times (3+1) = 12$
$z_k^{(j)} = \ $ 第$j$层的第$k$个单元的所有输入的加权集合$\ = (\Theta_{k,0}^{(k-1)}x_0+\Theta_{k, 1}^{(k-1)}x_1+\Theta_{k, 2}^{(k-1)}x_2+ … +\Theta_{k, n}^{(k-1)}x_n)$
矩阵形式为
用$a^{(1)}$来表示$x$,则
而$h_\Theta(x)$则是最后一层的$a^{(j)}$
5.1 基础应用 逻辑单元(Logistic Unit)
假设我们的输入层有两个单元$\{x_1,x_2\}$且$x_1, x_2 \in \{0, 1\}$代表$Ture, False$,以及偏置单位$x_0 = 1$,我们可以设计一个$\Theta$矩阵进行逻辑判断$AND, OR, XOR$等。
$g(x)$依然是sigmod函数
- 与 AND
- 或 OR
- 或非 NOR
- 异或非 XNOR
异或非是指当且仅当$x1 = x2$时为真,此时组合以上三个逻辑单元形成一个两层的神经网络
5.2 代价函数
如以下的实例神经网络
$L$ = 神经网络的层数,例如示例有4层
$s_l$ = 第$l$层单元的个数,例如示例的$s_1=3$
- 如果是二分类(Binary Classification)问题,$s_L = 1$,因为$y = 0\ or\ 1$
- 如果是多分类问题,例如$k$个分类,则$s_L = k$,因为$y\in\mathbb{R}^k,\ h_\Theta(x)\in\mathbb{R}^k$
逻辑回归带正则项的代价函数:
对于神经网络来说,代价函数是上函数的一般化形式(逻辑回归为二分类,神经网络为多分类)
5.3 反向传播算法(Backpropagation Algorithm)
反向传播算法是类似梯度下降,用于优化代价函数的算法。
代价函数为
我们需要$min_\Theta J(\Theta)$,也就是计算$\frac{\partial}{\partial \Theta_{ij}^{(l)}J(\Theta)}$
例如以下例子:
按照我们之前的方法,计算最后的输出层为以下步骤:
可以理解为是正向传播(Forward Propagation)
定义:$\delta^{(l)}_j$ = 第$l$层的第$j$个单元$a_j^{(l)}$的残差
对于每个单元
Layer4作为输出层,其中$\delta^{(4)}_j = a_j^{(4)} - y_j$,但是中间的隐藏层我们该如何计算残差呢?这就用到了反向传播,也就是倒推。
没有$\delta^{(1)}$因为第一层是输入层,没有残差
计算好每一层的$\delta^{(l)}_j$之后,我们定义一个
所有层的单元乘以残差的总和
之后我们定义
而