Stanford机器学习-Neural Networks Representation

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Forlogen/article/details/82789213

一、Non-linearhypotheses

在一般分类问题中,我们可以使用一条直线或是曲线,将其进行一个正确的分类;在如下类似的多分类问题中,我们找到一条曲线进行合理的划分。
在这里插入图片描述

在特征较少时我们使用Logistic回归取得很好的效果,此时表达式中只有x1和x2两个变量的组合。但如果我们的特征很多时,比如有100个特征,比如在房价预测问题中,特征的数目就会有很多,我们如果仍然使用前面的方法去做的话,特征的组合的数组会达到一个惊人的数目,对于当前使用的算法来说,需要计算的时间太长,长到用户无法接受。
在这里插入图片描述
在这里插入图片描述

在实际的应用问题中,比如我们需要来识别上图是不是一辆汽车,对于人来说,我们可以一眼就给出答案,但是在计算机看来是一个一个的灰度值,假设像素是50*50,那么特征就会达到2500个,使用前面的算法就行特征的组合,特征组合结果将会有3百万个之多,如果是RGB,那么结果将会更多,显然不适用前面的回归模型。

二、Neurons and the brain

在这里插入图片描述如果想直到更多关于神经网络的历史发展,可以通过相关的书籍资料得到。
在这里插入图片描述
在这里插入图片描述

之前,科学家通过一系列的“神经重连实验”,了解到通过将处理某个功能的大脑皮层与其他功能的神经相连,通过一定量的学习,它就会有新的功能。那我们能不能写一个东西来模拟实现大脑的这种学习功能呢,这时神经网络模型便应时而出。

三、Model Representation

那么我们具体怎么实现这个模型呢?在此之前我们就需要了解大脑是如何实现这一系列的工作的。

在这里插入图片描述

大脑中神经元如图所示,它包括神经核、许多的树突和一个轴突,这里我们将其分别成为处理单元、许多输入和一个输出。神经网络就是由大量的神经元所组成的一个网络,他们通过电脉冲相互交流,这里是一条连接到输入神经,或者连接到另一个神经元树突的神经,接下来这个神经元接收到这条消息,做计算,然后将结果传给其他的神经元,这就是工作的一般方式。

在这里插入图片描述

神经网络就是建立在很多的神经元上的,每一个神经元(激活单元)就是一个学习模型,它接受一些特征的输入,根据自身模型的一个计算给出相应的输出值。如上图所示,输入的x1、x2、x3经过h(x)的计算从而得到一个输出值,通常为了便于向量化,我们会增加一个x0,对应的参数(这里称为权重)也要改变。

由此我们就可以得到一个如下所示的简单的三层神经网络的模型:
在这里插入图片描述

图中的x1、x2、x3是输入单元,我们可以将原始的数据给它,a1、a2、a3是中间单元,处理输入的数据将结果传给下一层。如图所示的模型中,包括三层:输入层(input layer)、隐藏层(hidden layer)和输出层(output layer),此外为了向量化我们加入了偏置单位(bias unit)。其中的字母标记解释如下:
在这里插入图片描述

那么上图中激活单元相应的表达就可以是这样:
在这里插入图片描述

向量化的效果:
在这里插入图片描述

通过模型的训练我们就可以得到一个结果。上面的模型中的每一个a都是有前面传入的所有x和相应的权重值决定的,所以我们成这样的从左到右的算法为前向传播算法。

我们来计算一下上面模型第二层的值:
我们首先向量化,结果为:在这里插入图片描述

然后我们进行向量的相乘:
在这里插入图片描述

为了简化计算,我们做出如下的操作:
在这里插入图片描述
那么我们的计算就变成了:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

我们将左半部分不看,那么看到的右半部分将其看成是按Logistic 回归进行的,我们同样给定权重,h(x)就变成了如图所示的形式。

在普通的回归算法中,我们得到一系列的原始特征,尽管可以进行不同的线性组合,但还是离不开给定的特征,而神经网络只有在第一层给定原始特征,从第三层起,我们输入的实际是神经网络模型自己学习的更高级的特征,这样我们就不再受原始特征的束缚。

在这里插入图片描述

在上图所示的非线性分类的例子中,我们的x1和x2只取0和1两个值,当给定的数据较多时,我们找到一个合适的决策边界,用表达式写就是图中y的结果。那么我们怎么使用使用神经网络实现这个看起来复杂的结果呢?需要从简单的看起。
在这里插入图片描述

上图表示了AND与运算的实现,利用前面学过的知识,我们知道g(x)的函数图形如图所示,在输入的x0,x1,x2中,我们给定权重为-30、+20、+20,带入到给g(x)的表达式,结果如图中表格所示,我们可以正确实现AND运算。

同理OR运算如下图所示:
在这里插入图片描述

NOT运算如图所示:
在这里插入图片描述

那么将上面的三个进行结合就可以实现想要实现的复杂运算。
在这里插入图片描述

那么计算的结果如表中所示,我们可以看到可以正确实现。

知道了简单的实现后,我们就可以将不同的简单的神经网络组成更加复杂的神经网络模型。
在这里插入图片描述

四、Multi-class classifition

对于简单的二分类问题,我们可以根据输出是0还是1来进行判别,但如果是下图的多分类问题时:
在这里插入图片描述
我们需要分四类,仅要给定四个输出,判断图片中的是什么,我们就使用不同的向量来表示不同的结果,而不再是使用简单的不同的数字进行表示,具体的模型类似于这个:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Forlogen/article/details/82789213