机器学习之——初识神经网络

  1. 云栖社区>
  2. 博客>
  3. 正文

机器学习之——初识神经网络

郭家少爷 2016-05-05 17:57:00 浏览1196
展开阅读全文

在讨论神经网络之前,我们先回顾一下之前的一系列讨论。

之前我们已经讨论过,非线性假设(Non-Linear Hypothesis),使用非线性的多项式能够帮助我们建立更好的分类模型(Classification)。假设我们有非常多的特征,例如大于10000个变量,我们希望用这10000个特征来构建一个非线性的多项式模型,那么结果将是数量非常惊人的特征组合,即便我们只采用两两特征的组合(x1x2+x1x3+x1x4+...+x9999x10000),我们也会有接近500000哥组合而成的特征。这对于一般的逻辑回归(Logistic Regression)来说,需要计算的特征太多了。

我们举一个假设:

假设我们希望训练一个模型来识别视觉图像(例如识别一张图片上是否是一辆汽车,Google之前做过一个根据YouTube的视频来准确的识别出一只猫),我们怎么样才能这样做呢?一种方法是,我们利用很多汽车的图片和很多非汽车的图片,然后利用这些图片上一个个像素的值来作为特征。

假如我们只选用灰度图片,每个像素只有一个值(非RGB值),我们可以选取图片上的两个不同位置的两个像素,然后训练一个逻辑回归模型来利用这两个像素的值来判断图片上是否是一辆汽车:


假如我们采用的都是50x50像素的小图片,并且我们将所有的像素视为特征,则会有2500个特征,如果我们要进一步将两两特征组合构成一个多项式模型,则会有2500x2500/2(接近300万)个特征。普通的逻辑回归模型,不能有效的处理这么多的特征,这时候,我们就可以使用神经网络。

那么神经网络是从何而来的呢?

神经网络算法(Neural Network)源自于人类对大脑的模仿。在20世纪80到90年代被广泛的使用过,之后的应用逐渐减少,直到最近几年又变得开始流行起来。原因是,神经网络是非常依赖计算能力的算法,在较早之前的应用时,由于计算机的计算能力瓶颈,导致一度消退,随着计算机性能的不断提高,神经网络算法又成为了很有效的一门技术。

神经网络算法的目的是发现一个能够模仿人类大脑学习能力的算法。有一个实验,如果我们将视觉信号传递给大脑中负责其他感觉——如触觉——的大脑皮层区,我们发现负责处理触觉的大脑组织将能够很快地学会如何处理视觉信号。我们就推断,在大脑的不同组织不同神经之间,使用着一套学习算法,使得将外界的刺激作为输入,能够对输入进行相同的处理。


有另外一个案例,让舌头学会如何去“看”东西。再一个盲人的头顶配置了一台低像素的照相机,然后将照相机拍摄的照片的像素转换为不同的电极,每个像素都按照亮度被赋予一个不同的电压值。结果随着实验的进行,这个盲人开始能够利用舌头看到眼前的东西。目前这一项技术正在逐渐的应用到帮助盲人恢复视觉上,例如Google、微软。(希望我们中国也很快能够有这样一家造福社会的公司!)


为了构建神经网络模型,我们首先要思考:大脑中的神经网络是什么结构?

每一个神经元都可以被认为是一个处理单元/神经核(Processing Unit/Nucleus),它含有许多输入/树突(Input/Dendrite),并且有一个输出/轴突(Output/Axon)。神经网络是由大量的神经元相互链接并通过电脉冲来交流的一个网络结构。


神经网络模型建立在需要的神经元智商,每一个神经元又是一个个学习模型。这些神经元,也叫激活单元(Activation Unit)采纳一些特征作为输入,并且根据本身的模型提供一个输出。下面是一个以逻辑回归模型作为自身学习模型的神经元的示例,在神经网络中,参数也可以被称之为权重(Weight)


这一次我们先讨论到这里。下一次我们将讨论,神经网络模型的具体表达。


网友评论

登录后评论
0/500
评论
郭家少爷
+ 关注