向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(一)

发布于:2022-11-09 ⋅ 阅读:(429) ⋅ 点赞:(0)

目录

一.神经元和大脑

二.需求预测

三.举例-图像感知

四.神经网络中的网络层

五.更复杂的神经网络

六.神经网络前向传播


一.神经元和大脑

神经网络是一种很古老的算法,它最初产生的目的是制造能模拟大脑的机器。

在这门课中,我将向你们介绍神经网络。因为它能很好地解决不同的机器学习问题。而不只因为它们在逻辑上行得通,在这段视频中,我想告诉你们一些神经网络的背景知识,由此我们能知道可以用它们来做什么。不管是将其应用到现代的机器学习问题上,还是应用到那些你可能会感兴趣的问题中。也许,这一伟大的人工智能梦想在未来能制造出真正的智能机器。另外,我们还将讲解神经网络是怎么涉及这些问题的神经网络产生的原因是人们想尝试设计出模仿大脑的算法,从某种意义上说如果我们想要建立学习系统,那为什么不去模仿我们所认识的最神奇的学习机器——人类的大脑呢?

神经网络逐渐兴起于二十世纪八九十年代,应用得非常广泛。但由于各种原因,在90年代的后期应用减少了。但是最近,神经网络又东山再起了。然后还换了一个名字:深度学习。其中一个原因是:神经网络是计算量有些偏大的算法。然而大概由于近些年计算机的运行速度变快,才足以真正运行起大规模的神经网络。正是由于这个原因和其他一些我们后面会讨论到的技术因素,如今的神经网络对于许多应用来说是最先进的技术。当你想模拟大脑时,是指想制造出与人类大脑作用效果相同的机器。大脑可以学会去以看而不是听的方式处理图像,学会处理我们的触觉。

我们能学习数学,学着做微积分,而且大脑能处理各种不同的令人惊奇的事情。似乎如果你想要模仿它,你得写很多不同的软件来模拟所有这些五花八门的奇妙的事情。不过能不能假设大脑做所有这些,不同事情的方法,不需要用上千个不同的程序去实现。相反的,大脑处理的方法,只需要一个单一的学习算法就可以了?尽管这只是一个假设,不过让我和你分享,一些这方面的证据。

尽管今天神经网络算法已经与大脑的学习方式无关了。

二.需求预测

举一个例子,预测畅销衣服,然后可以根据哪个是畅销的衣服,可以补充库存

 a代表激活;

右下角是一个简单的神经元示例,这个神经元由输入(一个或多个数),有一个或多个输出,输出的就是那个f(x),输出是概率。

构建一个神经网络,需要这样的一堆神经元并将它们连接起来。

现在举一个更复杂的例子

首先现在一件T-shirt有4个特征,即下图左侧那4个(分别是价格,运费,营销额以及衣服的材料);然后影响一件T-shirt是否成为畅销品的有如下几个因素,一是顾客对于这件T恤的承担能力(即对于顾客来说这件T恤是贵了还是买的起),二是顾客对于这件T恤的认知程度,三是顾客对于这款衣服的质量的认知程度。

负担能力主要是价格和成本的函数,我们会在这里使用一个神经元(逻辑回归单元)来输入价格和运费,来预测人们认为这件衣服是否负担得起;

然后在认知程度(awareness)那里也需要一个神经元(逻辑回归单元)来判断人们对于这件衣服的认知程度,这个神经元的输入是marketing(与营销有关,所以输入时销售额)

同理最后一个因素也需要一个神经元(逻辑回归单元),这个神经元的输入是价格price和材料material。

最后三个神经元都有输出,它们的输出再作为一个神经元(又一个逻辑单元)的输入,最后的输出就是最终的概率(预测)。

在神经网络中,我们将神经元分层,一层就是一组,同一层的神经元输入相同或相似的特征,同时也有一些输出;最右边的单个神经元自己单独成为一层,成为输出层,因为它的输出就是神经网络的最终输出概率;那三个因素,affordability,awareness,perceived quality是作边那层神经元的“激活”(activations),最终的输出(probability of being a top seller)是最右侧那个单个神经元的激活。最左侧要输入的特征数据是输入层,中间的那层叫做隐藏层。

 输入层的数据是向量的形式,同样的,中间那三个值(激活值)也组成一个向量传到输出层里。

神经网络的一个强大的功能就是不要你去指定中间那三个激活值与输入的特征向量之间的关系,它自己可以计算。

当构建自己的神经网络的时候,我们需要确定需要多少隐藏层和每个隐藏层有多少神经元,

三.举例-图像感知

在这个例子中没人告诉神经网络第一个隐藏层寻找短边,第二个隐藏层从寻找各个部位(鼻子,眼睛等),第三个隐藏层聚合各个部位成一张脸,这都是神经网络自己做的工作。神经网路可以从数据中自行找出这些东西。

神经网络真的很神奇,我们并没有告诉它去识别哪些图像,但是它却自己能够进行分类,so wonderful!

四.神经网络中的网络层

右上角的方括号里的数字就是代表是神经网络的第几层,通常输入层算作第0层。

将第一层展开,看看里面具体是怎么计算的,可以看到每一个神经元都是一个逻辑回归单元,然后里面执行的计算就是之前我们在逻辑回归当中学的计算过程。

现在将第二层(即输出层)展开,计算同理

 

 最后输出一个概率进行预测

五.更复杂的神经网络

用sigmoid函数计算输出了激活值,所以一般把sigmoid函数叫做激活函数,现在我们知识接触到了这一种激活函数,等后面我们还会学到其他的激活函数。

然后我们定义了一个激活值的计算公式,比较好理解,看看都能看懂。

另外通常我们说神经网络有几层的时候,通常不算输入层。

六.神经网络前向传播

以识别手写体为例讲解,为了简单起见,我们只区分0和1,这样就成了二元分类问题。

先计算第一个隐藏层的输出的激活值

第一个隐藏层有25个神经元,第二个隐藏层有15个神经元。看到右下角的第一层输出的激活值的计算公式,可以看到是个25行1列的列向量,因为第一个隐藏层有25个神经元,所以w,就得有25个小分量,b也同理。

 然后计算第二个隐藏层的输出的激活值

计算输出层输出的激活值 

可以看到这个模型是从左到右计算并传递激活值的,这叫做前向传播,与之对应的还有反向传播,后面我们也会学到。

本文含有隐藏内容,请 开通VIP 后查看