机器学习笔记-6(神经网络的表示)

神经网络,哟呵呵~ 一看上去就很高端大气上档次 XD

最近很火的概念“Deep Learning”(深度学习),就是缘于神经网络,在上个世界70~90年代,这个概念曾经火过一段时间,但是后面发现在处理当时的问题(当时的计算机需要处理的问题,咳咳~ 是有其时代局限性的,要求不高。现在的计算机介么强大,配合“大数据”这一流弊的概念,神经网络终于再一次展现出其强大的潜力)效果居然还不如其他的一般机器学习算法,便沉寂了下来。不过时至今日,这个概念由于神经科学研究的深入,神经网络的升级版本“深度学习”开始展现出其强大的威力。神经网络由于基于生理学上的科学研究,所以跟人工智能的联系非常密切。当年吴恩达教授在刚进入大学接触到人工智能这个观念时,甚至根本就不看好人工智能的发展,还劝学生放弃这个“不切实际的梦想”,另一方面吴恩达教授从小的梦想就是发明能像人类一样思考的机器(笑)。不过直到他接触到了霍金斯(Jeff Hawikins,有神经科学研究背景的人工智能专家)的”单一演算法”假说,他重新拾起儿时的梦想。

so,这里大概的解释一下何为”单一演算法”。在之前的人工智能观念里,要模拟智能,就意味着咱需要模拟大脑内的N多处理单元,比如视觉,听觉和触觉等等。这将涉及到N多的Sensor,还有N多的处理单元。每一个单元,都需要被单独设计开来,后面还要用某种方法把他们整合起来再处理,复杂到了”不切实际”的地步。因为当时的神经科学研究认为,大脑的每一个信息处理模块都是相对独立的,所以有这个想法蛮正常的。八过到了新世纪,随着神经科学研究的进一步深入,科学家们发现大脑中的任何部分都是可以互相通用的,也就是说大脑在初期就是一台通用超级计算机! 这里的通用,通俗的讲就是如果咱把视觉神经与大脑相应的视觉处理模块断开,接入听觉神经到该处理模块,它会慢慢自主学习处理听觉信息!!!这个就很逆天了,根据这项研究,有人便提出了一个新的理论,那就是”人类的智慧源自于一个演算法”。这便是”单一演算法”的由来。稍微敏感一点的人,可能会觉察到人工智能中最主要的目标”自主学习”,如何找到那个通用的算法,让计算机可以自主学习任何信息呢?现在计算机科学、神经科学等等交叉科学的专家们已经集结起来,为此而努力着。

The

“单一演算法”的理论基础

课程前面的机器学习算法在处理一般的回归问题和分类问题应该是足够的,八过到了更高阶的问题,之前 的方法就有点心有余而力不足了。例如视觉分析,语音分析这类逼近人工智能的课题。

那为什么在处理这方面问题的时候,前面的方法就不怎么给力了呢。Ok,其实真要理解还是很简单的。比如说,俺给一张汽车的图片让计算机判断这到底是不是汽车捏?这时候按照咱之前的方法就是导入各个特征,然后用逻辑回归来推测出概率。嗯,正常想法。不过,这时候问题就来了,对于图片来说,数据就是一堆像素值,那咱的特征就是这些东西吗? 按理来说,是的~ 不过,你慢慢地你会觉得不太对劲,单纯从每个像素来看,完全没法看出到底是不是汽车。。。。这时候,让我们往高一层去看,汽车的特征到底是些什么,那就是轮子,车门把手和车的样式等等。咱人类判断的是无非就是这几个更抽象一层的特征。所以,一般的线性/非线性/逻辑回归已经不能满足这类问题的需求了,因为单纯从一堆像素中,咱没法找到需要的信息。

Non-linear Classification

非线性分类问题

Car

汽车的像素特征

Computer Vision: Car detection

电脑视觉:汽车检测

在扯到具体处理之前,咱们还是要理解些许神经网络结构的,这个网络由一个个神经细胞连接而成。神经细胞大致由树突,神经元和轴突构成,最重要的概念就是这三个,因为树突对应着输入、神经元对应着处理单元和轴突对应着输出。而神经网络就是由这些神经细胞一个个连接而成,一个神经脉冲(信息)从上一神经细胞的轴突输出,然后由下一神经细胞的树突接收之后转入神经元进行处理,然后再从轴突输出到下一神经细胞。这便是一个神经网络的大致结构。

Neuron in the brain

神经元图解

Neuron model: Logistic unit

神经元模型:逻辑单元

上面的概念对于理解神经网络来说是很重要的,反正捏,一言蔽之~ 这是一个多层处理的结构,前面的东西不能丢噢,之前的东西是实现的根基。意思就是在高阶问题上来说之前的单层回归结构不够给力,咱需要在像素级别的特征上进行再加工,直到特征足够明显到可以推出判断结果为之。然后就要用到神经网络这种结构了。

神经网络这种模型非常适合处理这类型问题,也就是特征太多/不明显的情况。现在在课程的第八部分讲得总体来说,还不是很详细,更多细节估计要等之后的课程,应该还有的说,但是貌似现在只发到八节,有点纳闷。

Neural Network

神经网络

这部分结合上面的知识,这个多层结构里,第一层与输出层之间存在额外的处理层,这些层被称之为隐层,对初始特征进行额外的处理,每一层的输出为下一层的输入,层层递进,直到结果层推出为之。专业而装逼的来说,这种行为叫正向传播(forward propagation)。按照俺的理解是,每层的结果不断地经过处理之后,特征抽象层次会越推越高,直至得到最后结果。

每层的处理单元依旧可以使用之前的线性/非线性/逻辑回归算法来进行处理,通过正向传播这种机制,导出结果。

Forward propagation

正向传播

在这种多层结构里面,参数也称之为权,两个都是一样的东西。不同的权会构造不同的H函数,导致不同的输出结果。下一层的结果其实就是对上一层输出的整合。

课程上给出了AND,OR和XNOR的学习例子,来让你对这种模型有更为直观的感受,咱现在有点不明白为何只用一条回归方程经过多层正向传播之后,便可以得出结果就是了,咱以为在每一层的处理单元都是不同的,但是就例子来上不同的只有参数(weight)。

Neural Network Example

神经网络:例子

多类分类的情况,跟之前差不太多,不同的是这里输出的是一个结果向量,同时包含多个结果的判断。

Multiple output units: One vs all

多输出单元:一对多

现在咱还不是很理解这个机制,所以不太好说。之后补充吧,感觉一定要上图了,不然以后连自己都看不懂自己写的啥玩意儿了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注