8.神经网络学习
8 神经网络学习
8.1 非线性假设
当特征数量n很大时,使用线性回归或逻辑回归进行拟合会让特征空间急剧膨胀,复杂度高且容易过拟合。

eg当输入是50*50像素的灰度图像时,$n=50\times50=2500$假设我们只考虑二次特征,那么二次特征($x_i\times x_j$)的数量为$\frac{n^2}{2}$,计算量大。

8.2 模型表示
我们定义一个简单的逻辑单元,其中$x_1, x_2, x_3$作为输入,$x_0$称为偏差($x_0$恒为1),$h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}$是输出,sigmoid$g(z)=\frac{1}{1+e^{-z}}$是激活函数.$\theta$称为参数或权重。

当有多个逻辑单元(神经元)连在一起的时候,形成神经网络。其中第一层称为输入层(input layer),最后一层称为输出层(output layer),其余层被称为隐藏层(hidden layer)

$a_i^{(j)}$表示第j层第i个神经元的输出,$\Theta^{(j)}$表示从第j层到第j+1层映射的权重矩阵。$\Theta_{ba}^{(j)}$其实就是表示从第j层的第a个单元到第j+1层第b个单元的权重
若第j层有$s_j$个神经元,第j+1层有$s_{j+1}$个神经元,那么参数矩阵$\Theta^{(j)}$的维度是$s_{j+1}\times(s_j+1)$。其中+1是因为第j层有偏差神经元默认隐藏了。eg$\Theta^{(1)}\in \mathbb{R}^{3\times4}$

前向传播与向量实现:为了统一表示方法,我们将输入$x$表示为第1层的激活项$a^{(1)}=[x_0;x_1;x_2;x_3]$。记$z^{(2)}=\Theta^{(1)}a^{(1)}$, 第2层的激活项为$a^{(2)}=g(z^{(2)})\in \mathbb{R}^3$, 我们添加$a^{(2)}0$项,此时$a^{(2)}\in \mathbb{R}^4$. 重复以上过程,得到$z^{(3)}=\Theta^{(2)}a^{(2)}, h\Theta(x)=a^{(3)}=g(z^{(3)})$

若遮住第1层,我们发现模型剩余部分就是逻辑回归,只是输入不再是$x_1,x_2,x_3$,而是$a^{(2)}_1,a^{(2)}_2,a^{(2)}_3$.这是从输入值学习得到的特征项。即神经网络并没有用输入特征$x_1,x_2,x_3$来训练逻辑回归,而是自己训练逻辑回归的输入$a_1,a_2,a_3$(复杂特征项)
我们也可以使用多项式项作为输入如$x_1x_2,x_2x_3$等,神经网络会灵活的尝试快速学习任意的特征项。体现在参数$\Theta$上。

8.3 例子与直观理解
改变权重就能实现不同的逻辑
与运算:

或运算:

非运算:

同或运算:

通过不断用更深的层,可以计算更复杂的函数。每层都在上一层的基础上计算更复杂的方程。
8.4 多元分类
当有4个类别需要进行分类时,我们让神经网络的输出层拥有4个神经元,即输出$h_\Theta(x)\in \mathbb{R}^4$是4维向量。第i个神经元的输出表示是否为第i类。

我们训练集中一个样本表示为$(x^{(i)},y^{(i)})$, 其中$x^{(i)}$是一张图像,$y^{(i)}$是独热编码,我们要训练模型$h_\Theta(x^{(i)})$,让它尽可能的接近$y^{(i)}$。其中$h_\Theta(x^{(i)})$和$y^{(i)}$都是4维的向量。
