Andrew Ng带我漫步机器学习 - 第四周

为什么还需要神经网络?

线性回归和逻辑回归确实可以解决大量的监督学习问题,但是在非线性多项式假设方程中,随着样本集特征数的增多,参数会成指数级的增长,给算法带来几乎不显示的巨大计算压力,此时,我们需要引入神经网络

最典型的神经网络问题就是计算机视觉,每个像素都是一个特征量,组成多项式后参数可以达到百万级别,线性回归和逻辑回归用于解决此类问题已经不现实了

神经网络模型

模型展示

在神经系统中,神经元接受其它细胞传递的信息,然后以电脉冲的形式向目的地提供反馈。依此我们产生类似的神经网络模型:
[x0x1x2]T[   ]hθ(x)\begin{bmatrix}x_0 \newline x_1 \newline x_2 \newline \end{bmatrix}^T\rightarrow\begin{bmatrix}\ \ \ \newline \end{bmatrix}\rightarrow h_\theta(x)

  • 输入数据层称为输入层,最左端
  • 输出数据层称为输出层,最右端
  • 中间级称为隐藏层,中间

如:
[x0x1x2x3][a1(2)a2(2)a3(2)]hθ(x)\begin{bmatrix}x_0 \\ x_1 \\ x_2 \\x_3\end{bmatrix}\rightarrow\begin{bmatrix}a_1^{(2)} \\ a_2^{(2)} \\ a_3^{(2)} \\\end{bmatrix}\rightarrow h_\theta(x)

Andrew Ng带我漫步机器学习 - 第四周

  • 注意中间层在向下一层传递时也要加上a0(i)a^{(i)}_0

公式参数

ai(j)="activation" of unit i in layer j,即**函数,是逻辑方程a_i^{(j)} = \text{"activation" of unit $i$ in layer $j$,即**函数,是逻辑方程} \newline Θ(j)=matrix of weights controlling function mapping from layer j to layer j+1,即权重\Theta^{(j)} = \text{matrix of weights controlling function mapping from layer $j$ to layer $j+1$,即权重}\newline hΘ(x)=logistic function,h_{\Theta}(x)=\text{logistic function},逻辑方程

Andrew Ng带我漫步机器学习 - 第四周

  • 包括x0,a0(i)x_0,a^{(i)}_0在内,设前一层数为sjs_j,下一层层数为s(j+1)s_{(j+1)},则Θ(j)\Theta^{(j)}s(j+1)s_{(j+1)} x (sjs_j + 1)矩阵

矩阵实现向前传播

说话说不清,一图解千愁
Andrew Ng带我漫步机器学习 - 第四周

  • 输入层可以视为a(1)a^{(1)}
  • 逐层向前传播。每层加上偏移项,对每个**单元进行矩阵运算后带入逻辑方程
  • a(3)a^{(3)}最终输出结果,z(i)z^{(i)}为矩阵,最终hΘ(x)=a(j+1)=g(z(j+1))h_\Theta(x) = a^{(j+1)} = g(z^{(j+1)})

自学习特征

神经网络的中间层其实就是通过前一组权重,带入逻辑方程计算后的得到的新的一组特征,最后由这组神经网络自己获得的特征来求解最终的结果,这样就可以逐层增加或者减少特征
Andrew Ng带我漫步机器学习 - 第四周

接下来的举例仅贴图

  • OR逻辑运算
    Andrew Ng带我漫步机器学习 - 第四周
  • XNOR逻辑运算
    Andrew Ng带我漫步机器学习 - 第四周

多类分类

一对多模型

面对多类分类问题,n类则将输出层设置为n个单元,如
Andrew Ng带我漫步机器学习 - 第四周

则:
Andrew Ng带我漫步机器学习 - 第四周

每个矢量表示不同的种类,每个矢量内部都是一对多,即只有一个是1

根据学习获得的参数Θ(j)\Theta^{(j)},我们进行向前传播,比如获得结果为:
hΘ(x)=[0010]h_\Theta(x) =\begin{bmatrix}0 \\ 0 \\ 1 \\ 0 \\\end{bmatrix}
则可以确定为第三类,那就是摩托