发布于 

机器学习III - 神经网络(Neural Networks)

5. 神经网络(Neural Networks)

神经网络是通过模拟大脑的构造,来构建的机器学习模型。模型是由很多个逻辑单元(Logistic Unit)来组成的。

1
2
3
4
5
6
7
8
9
graph LR
x0[x<sub>0</sub>=1]:::trans --> x4
x1((x<sub>1</sub>)):::blue --> x4
x2((x<sub>2</sub>)):::blue --> x4
x3((x<sub>3</sub>)):::blue --> x4
x4(("a")):::white --> y["h<sub>θ</sub>(x)"]:::trans
classDef blue fill:#ebf2ff, stroke:#000000
classDef trans fill:#FFFFFF, stroke:#FFFFFF
classDef white fill:#FFFFFF, stroke:#f5c638, stroke-width:3px

其中$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$之后,我们定义一个

所有层的单元乘以残差的总和

之后我们定义