【吴恩达机器学习笔记】第九章:神经网络学习

非线性假设

非线性分类中,要想给出一个较为准确的拟合曲线,必须要加很多多次项。如下面的例子:
在这里插入图片描述
当有100个特征时,光包含所有的二次项,就会新产生5000个特征,三次项,就会有大约170000个特征。
在这里插入图片描述
再看一个计算机视觉中的例子
计算机通过输入的图片来识别物体,而这些图片是通过对每个点的“描述”,即输入每个点的灰度值,来让计算机“看到”这个图片的。
在这里插入图片描述
要是只给出一个50×50像素的图片来作为训练的样本,那么特征就会达到2500个,要是用RGB(计算机中彩图的表示形式,red,green,blue),那么将会有7500个特征。那么要想包含所有的二次项,将会有3百万个特征。
在这里插入图片描述
这样的话,运算成本太高了。

神经网络

起源

利用算法模拟人脑的学习方法。
经过神经重接实验,人们发现人脑中某一块之前做其他工作的部位,经过重接之后会学会其他的功能。比如,将处理触觉的大脑皮层接到视觉信号上,那么这块皮层将学会“看东西”。
在这里插入图片描述
人们由此联想到,有没有一种通用的算法可以同时处理视觉、触觉等等。

神经元

大脑中一个神经元由细胞体、树突、轴突等组成。树突和轴突是各个神经元之间的联系通道。树突向细胞体输入信息,细胞体处理之后,通过轴突输出。简而言之,神经元就是一个计算单元,将树突输入的信息处理之后通过轴突传递给其他神经元。
在这里插入图片描述

模拟神经元

  • 单个的神经元
    在这里插入图片描述
    中间的圆圈代表神经元中的细胞体,在神经网络中被称为一个计算单元。它处理输入的 x 0 , x 1 , x 2 , x 3 x_0,x_1,x_2,x_3 ,然后输出 h θ ( x ) = 1 1 + e θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^\mathrm T x}} 。其中 x 0 x_0 被称为偏置单元,恒等于1。
  • 神经网络
    在这里插入图片描述
    由多层神经元组成,每层都有多个神经元(最后一层视问题而定,可能只有一个),其中第一层被称为输入层,最后一层被称为输出层,除了这两层其余的全部被称为影藏层。每层都有一个恒等于1的偏置层。
  • 神经网络是如何计算的
    在这里插入图片描述
    a i ( j ) a_i^{(j)} 表示第j层的第i个神经元的激活项,即就是该神经元计算并输出的值。
    θ ( j ) \theta^{(j)} 表示第j层到第j+1层映射的参数(/权重)矩阵。

神经网络的向量化计算(前向传播)

在这里插入图片描述

如上图右半部分所示,定义x向量和 z ( 2 ) z^{(2)} 向量,其中 z 1 ( 2 ) z_1^{(2)} 表示第二层中第一个神经元的输入,它的输出就为 g ( z 1 ( 2 ) ) g(z_1^{(2)}) ,为了统一,我们把输入层表示成 a ( 1 ) a^{(1)} ,神经网络的向量化计算表示就为 z ( 2 ) = θ ( 1 ) a ( 1 ) a ( 2 ) = g ( z ( 2 ) ) z^{(2)}=\theta^{(1)}a^{(1)} \\ a^{(2)}=g(z^{(2)})
其中 θ ( 1 ) \theta^{(1)} 为一个3×4的矩阵, a ( 1 ) = x a^{(1)}=x 表示输入,为一个四维列向量。计算结果 z ( 2 ) z^{(2)} 为一个三维列向量。对 z ( 2 ) z^{(2)} 每个元素作用Logistic函数,得到第二层每个神经元的输出,将其表示为一个三维列向量 a ( 2 ) a^{(2)} 。最后加一个偏置单元 a 0 ( 2 ) a_0^{(2)} ,使 z ( 2 ) z^{(2)} 成为一个四维列向量,作为最后一层的输入。计算 a ( 3 ) a^{(3)} 也就是最后的假设函数 h θ ( x ) h_\theta(x)
这个计算 h θ ( x ) h_\theta(x) 的过程也被称为前向传播,从输入单元的激活项开始,进行前向传播给隐藏层,计算隐藏层的激活项,然后继续前向传播给输出层,计算输出层的激活项。

  • 神经网络的架构
    神经网络可以有不同的架构,如下图
    在这里插入图片描述

通过神经网络计算的具体例子

一个简单的神经网络
在这里插入图片描述
这个例子中只有两个特征 x 1 x 2 x_1和x_2 ,为了简单介绍,其取值都只为0或1。将其可以扩展为右图所示的非线性分类问题。对于这个问题,我们需要求出假设函数 y = x 1 y=x_1 XNOR   x 2 \ x_2

  • 利用神经网络模拟出AND
    在这里插入图片描述
    给每个输入指定一个权重(-30,20,20),根据右上角的Logistic函数图像,我们可以确定当输入为不同的组合时,这个神经元的激活项的值。同过真值表,我们可以发现,这个真值表表示的是 x 1 x_1 AND x 2 x_2
  • 利用神经网络模拟或
    在这里插入图片描述
  • 逻辑非
    -
  • 组合在一起
    在这里插入图片描述
  • 总结
    在这里插入图片描述
    当神经网络有很多层时,在第二层有一些关于输入的相对简单的函数,第三层又在此基础上计算更加复杂的方程,往后计算的函数越来越复杂。这样就能利用神经网络来计算非常复杂的非线性假设。

用神经网络区分多类别

下面是一个多分类的问题,判断图片是什么物体。
在这里插入图片描述
这时,输出层就不止一个神经元了。因为要分四类,所以输出层有四个神经元。其结果就表示了特定的输入位于哪个类别。训练集的表示如下:
在这里插入图片描述
( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) 表示样本中的一个数据, x ( i ) x^{(i)} 就是四种物体中的某一种图像, y ( i ) y^{(i)} 就是上面的向量中的一个,表示图像对应的分类。
多类别分类就是要找到一个函数 h θ ( x ( i ) ) y ( i ) h_\theta(x^{(i)}) \approx y^{(i)} ,这里的输出值 h θ ( x ( i ) ) h_\theta(x^{(i)}) y ( i ) y^{(i)} 都为四维向量,表示输入的 x ( i ) x^{(i)} 所在的分类。

猜你喜欢

转载自blog.csdn.net/weixin_42017042/article/details/86491050