机器学习-Ng-week4-简单的神经网络

一、神经网络的表述(neural networks representation )

无论是之前学的逻辑回归还是线性回归,当特征特别多的时候,计算的负荷会非常大!对于计算机视觉的问题来说,比如识别车。我们会利用许多的汽车的图片和非汽车的图片,然后利用这些图片上的一个一个像素的值来作为特征。假设我们选择的是灰度图片,每一个像素只有一个值,我们选择图片上的两个位置上两个像素,然后训练一个逻辑回归算法利用这两个像素来判断图片是否是汽车,但是假设我们只是用50*50像素的图片,这些像素全部视为特征,则有2500个特征,如果我们进一步两两特征组合构成一个多项式模型,那么将会有2500^2/2个特征。那么普通的逻辑回归模型,无法有效的处理这么多特征,这时候需要神经网络!

模型表示:

为了构建神经网络模型,我们需要思考大脑中的神经网络是怎么运行的?每一个神经元都可以被认为是一个处理单元\神经核(processing unit/Nucleus),它含有许多个输入/树突(input/Dendrite),并且有一个输出/轴突(output/Axon)。神经网络 是大量的神经元相互连接并通过电脉冲来交流的一个网络,神经元之间利用微弱的电流进行沟通。这些电流也称为动作电位,如果神经元想要传递一个消息,它就会通过他的轴突,发送一段微弱的电位。

神经网络建立在很多神经元至上,每一个神经元就是一个学习模型。这些神经元采纳一些特征作为输入,并且根据本身的模型提供一个输出。下图是一个逻辑回归模型作为自身学习模型的神经元实例,在神经网络中参数称为权重(weight)。

机器学习-Ng-week4-简单的神经网络

神经网络:

机器学习-Ng-week4-简单的神经网络

x1,x2,x3是输入单元,a1,a2,a3是中间单元,他们负责将数据进行处理,传递到下一层。最后是输出层,它负责计算机器学习-Ng-week4-简单的神经网络

机器学习-Ng-week4-简单的神经网络

这个神经网络是一个三层的网络,第一层是输入层(input layer),第二层是隐藏层(hidden layer),第三层是输出层(output layer),我们给每一层添加一个偏差单元(bias unit)。机器学习-Ng-week4-简单的神经网络表示的是第j层的第i个**单元,机器学习-Ng-week4-简单的神经网络是第j层映射大第j+1层的权重矩阵,以j+1层的单元的数目作为行数,以j层的单元的数目加1作为列数,所以机器学习-Ng-week4-简单的神经网络是一个3*4的矩阵。

机器学习-Ng-week4-简单的神经网络

机器学习-Ng-week4-简单的神经网络

机器学习-Ng-week4-简单的神经网络

机器学习-Ng-week4-简单的神经网络

前向传播算法:(forward propogation)从左到右的传播的算法

机器学习-Ng-week4-简单的神经网络

我们可以得到机器学习-Ng-week4-简单的神经网络

更深一步的表示:向量化的表示

机器学习-Ng-week4-简单的神经网络机器学习-Ng-week4-简单的神经网络机器学习-Ng-week4-简单的神经网络

计算之后我们添加机器学习-Ng-week4-简单的神经网络

最后计算输出:

机器学习-Ng-week4-简单的神经网络

注意:我们只是针对其中一个训练实例所进行的计算,如果我们对整个数据集进行计算,我们需要将整个训练集的特征矩阵进行转置,使得同一个实例的特征都在一列里面。

机器学习-Ng-week4-简单的神经网络

我们把神经网络的左边遮挡住,我们可以看到其实第二层到第三层之间就类似于一个逻辑回归模型,如果我们可以把a0,a1,a2,a3当成更加高级的输入特征值,也就是x0,x1,x2,x3的进化体,是神经网络自己学习得到的一系列用于预测输出变量的新特征,并且他们是由X所决定的,因为是梯度下降的,所以a是变化的,并且变化的越来越厉害,所以这些更高级的特征值远比仅仅是x的次方厉害,也能更好地预测数据。这就是神经网络对比逻辑回归和线性回归的优势。

二、神经网络实现逻辑与、逻辑或

机器学习-Ng-week4-简单的神经网络

机器学习-Ng-week4-简单的神经网络

我们的输出函数:机器学习-Ng-week4-简单的神经网络

机器学习-Ng-week4-简单的神经网络

接着我们实现or操作:我们将theta参数改成-10,20,20这样,

机器学习-Ng-week4-简单的神经网络

三、二元逻辑运算符(binary logical operations)

当输入特征为布尔值(0/1)时,我们可以使用一个单一的**层可以作为二元逻辑运算符,为了表示不同的运算符,我们只需要设置不同的权重即可。

机器学习-Ng-week4-简单的神经网络机器学习-Ng-week4-简单的神经网络机器学习-Ng-week4-简单的神经网络

我们使用神经元之间的组合来实现更加复杂的操作,比如我想实现XNOR=(x1andx2)or((notx1)and(notx2)),即只有输入的变量都一样的时候才能得到1,其他均是0.

我们首先构造一个能够(notx2)and(notx2)的神经元:

机器学习-Ng-week4-简单的神经网络

接着将上述的神经元进行组合:

机器学习-Ng-week4-简单的神经网络

这样我们就实现了xnor的函数,同样的我们可以使用神经网络实现更加复杂的函数,实现更加厉害的特征值。

四、多元分类

当我们的神经网络需要输出多个类别的时候,比如我们需要使用神经网络来识别出是否是行人,汽车,卡车,摩托车,这样我们的输出层存在四个神经元,分别表示四类,那么我们的输入机器学习-Ng-week4-简单的神经网络

机器学习-Ng-week4-简单的神经网络

由上图可以看出,我们的输入层输入三个参数,两个中间层,输出层4个神经元表示四类,也就是说每一个数据在输出层都是四维向量,且这个四维向量一次只能存在一个数字为1,表示当前类。


这周的知识点十分的简单,下一周的神经网络会讲到BP算法会比较的复杂!