【成长笔记】神经网络

终于遇到了“神经网络”这尊大神了,瑟瑟发抖,瑟瑟发抖……

老早就听说了神经网络的大名了,听说有深度神经网络,反向传播神经网络,卷积神经网络等等。这些神经网络之间的关系究竟是什么呢?哈哈,以后告诉你们,因为目前我也只是一知半解。

ng在第四周的课程上,为我们启蒙了神经网络——Neural Network。神经网络的历史老悠久了,可能是因为它需要的计算资源过于强大,以上世纪的计算机计算水平难以实现,所以直到本世纪,随着计算机计算能力的突飞猛进,它的门槛不再那么高之后,神经网络迎来了第二春。

像我们耳熟能详的deep learning(深度学习),主要就是利用了神经网络实现的。而在生活中,也有很多地方都运用到了它,多多观察生活,你猜猜是哪些呢?

嚯嚯嚯,闲话不多说,Let's go!

---------------我是萌萌的分割线---------------------

神经网络,顾名思义,它的由来就是模仿生物学中的神经网络。在以前啊,有人脑洞大开,能不能让计算机像人一样去思考问题,解决问题呢?嗯,阿西莫夫的科幻世界为我们描绘了机器人拥有智能的世界,还有我们经常听到的机器人三定律。如果是你的话,你觉得怎样可以让计算机更加接近人的模式。

因为人类最独特的能力来自于学习,一个人出生下来啥也不知道,正是通过不断地接受世界的信息,不断地去学习这些信息,才最终成为了现在的你,我,他。而处理这一切的当然是我们的大脑,而接收与处理这些信息的存在,就是我们身体上的各个神经元。学过高中生物的话,我们应该会更加容易理解,比如膝跳反应:感受器——>传入神经——>神经中枢——>传出神经——>效应器。这一过程就在两个神经元之间完成,感受器受刺激后会形成动作电位,可以简单理解为电流,电流传到突触那儿,转换为化学物质……额,我也忘得差不多了,总之,信息就是从一个神经元传到下一个神经元,每个神经元都会对这个信息进行处理后再传下去。

所以,神奇的人就想着可否模拟这个行为。所以,神经网络就出现了。它的结构是类似这样子的:

【成长笔记】神经网络

以上图分三层,layer1是输入层(原始数据),layer2是隐层(经过变换后的数据),layer3是输出层。当然神经网络不止三层了,它可以在输入和输出层之间加隐层,所有非输入数层的都是隐层。

用数学表示如下:

【成长笔记】神经网络

这里面多出的 【成长笔记】神经网络 ,我们把它称为bias(偏置),它是一个常数,而x映射到a的关系 【成长笔记】神经网络 ,我们称之为weight(权重)。上面具体的运算如下:

【成长笔记】神经网络

【成长笔记】神经网络

【成长笔记】神经网络

【成长笔记】神经网络

为了表示更加简便, 【成长笔记】神经网络 ,则 【成长笔记】神经网络 ,j表示第j层。

其中,g就是我们前面学过的sigmoid函数,这里我们称之为**函数

所以,它其实就是模仿生物的神经传递过程,每一层都可以看成是多个神经元细胞,然后处理上一层神经元细胞传递过来的信息。生物里面,神经元接收到信息后,表现出来的要么是兴奋要么是抑制,我们假设这二类分别为1和0,那么,在神经网络模型里面,我们也模仿神经地这一行为,用sigmoid函数去处理,所以,这一过程,我们称之为**,这个函数我们也称为**函数。

到了这儿,对于神经网络应该有一点点了解吧,可惜个人功力不够,估计还是说得很抽象。那么神经网络怎么应用呢?

比如逻辑运算中的与,或,非,神经网络就可以做到,当然了,你可能会说,前文的逻辑回归等也可以做到啊,可如果是异或运算呢?前面的就做不到了,但是神经网络依然可以完美解决。

比如“与”,我们假设 【成长笔记】神经网络 , 【成长笔记】神经网络 就可以满足与运算。

比如“或”, 【成长笔记】神经网络 就可以得到。

但是异或呢?你会发现,仅仅靠单层神经网络,是无法实现的,它必须要有一个隐层的变换,最后才能输出正确的结果。具体怎样,自行摸索吧,哈哈,不详细讲解。

利用神经网络进行分类是非常方便的一件事儿,如果还是利用前文的逻辑回归,当特征n很大的时候,构建二次项是 【成长笔记】神经网络 ,三次项是 【成长笔记】神经网络 ,几何级数地递增,计算会非常困难。举个栗子,比如图像识别,识别汽车,这么一副图片:

【成长笔记】神经网络

我们看到的是汽车,计算机看到的是这个矩阵,它们表示着像素的强度,表示着图片中每一个像素的亮度值。如果所有图片只有两个像素,x1,x2,我们可以像前文逻辑回归那样去训练,最后进行分类,像这样:

【成长笔记】神经网络

但那只是十分理想化的情况,如果汽车图片是50*50,也就是2500像素,那么,我们就得有2500个维度,这个无法像上图那样画出来,我们可以脑补下。如果使用RGB格式,每个像素包含红,绿,蓝三个字像素,那么就有7500了。这么大的数据,该怎么处理好呢?神经网络可以实现。

比如,对下面四张图片进行分类:

【成长笔记】神经网络

如果是前文中,我们是这么做的,比如第一张标记1,第二张标记2,以此类推,然后四个分类器……

现在我们把结果集设置成这样:

【成长笔记】神经网络

每一个向量 【成长笔记】神经网络 代表一类。接下来,我们只要构建好类似这样的神经网络训练:

【成长笔记】神经网络

就是实现这么类似一个过程: 

【成长笔记】神经网络

这样,如果新来一个数据集,要进行分类,输入这个过程。 

若: 【成长笔记】神经网络 时,就分类为Pedestrain;

若: 【成长笔记】神经网络 时,就分类为Car;

若: 【成长笔记】神经网络 时,就分类为Motorcycle;

若: 【成长笔记】神经网络 时,就分类为Truck。

呐,就酱。

可能你看晕了吧,啊,功力有限,抱歉了,毕竟还不是大神,只能照本宣科地说,还做不到信手拈来,担待担待。

------------------我是萌萌的分割线--------------------

感觉未来的课程会比较有趣的,好像说去年是人工智能元年,嗯,开启人工智能时代,神经网络可是大功臣啊。什么图像识别啊,语音识别啊,人脸识别啊,等等,这些所以如此神奇,神经网络功劳莫大啊。

So,你会不会和我一样,紧张而又兴奋呢?

加油,共勉!