继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

机器学习从入门到XX(五):神经网络模型

翻过高山走不出你
关注TA
已关注
手记 81
粉丝 31
获赞 66

神经网络

神经网络(Neural Network)是一种十分强大的机器学习算法。神经网络的模型类似脑细胞传递神经信号的方式。下面是单个脑细胞的示意图:

clipboard.png

一个脑细胞通过多个树突接收某种电信号,然后通过轴突将信号传递给下一个脑细胞。大量的脑细胞彼此相连就会形成一个极其庞大的网络。神经网络算法正是模拟了脑细胞传播电信号的过程。

下面是通过课程作业,实现的一个手写体数字识别的机器学习例子。采用的是神经网络算法实现的多元分类问题。在这个例子中,我们试图将一张点阵图识别成0-9的数字,因此,该分类问题的分类结果总共有10类,输入则是每一张20x20的点阵图像素组成的向量。

nn手写体识别测试

模型表示

让我们来看看如何表示神经网络的假设函数。可以把单个神经元看成是一个接收输入信号,经过一定的“激励”后,输出信号的单元。在我们的模型中,输入就好比特征向量x1⋯xn,输出则是假设函数的值。针对输入向量,我们会增加一个x0项,称为偏差单元(bias unit),并且总是为1。使用神经网络解决分类问题时,我们使用g函数

11+e−θTx

来作为激励函数。特征向量在输入神经元前,会有一个表示不同特征权重的向量作用于输入向量,也就是说特征向量在输入前会经过θ向量进行弱化或强化。


clipboard.png

输入节点也称为输入层,输出节点也称为输出层。只有输入层输出层的神经网路其实跟逻辑回归模型没有区别。我们可以在输入层和输出层之前增加若干隐藏层,隐藏层中的单元也叫激励单元(activation units)

clipboard.png

  • a(j)i

    记作第j层的第i个激励值

  • Θ(j)

    记作从第j层向第j+1层传播时的权重矩阵

每个激励值的计算方法如下:


a(2)1=g(Θ(1)10x0+Θ(1)11x1+Θ(1)12x2+Θ(1)13x3)a(2)2=g(Θ(1)20x0+Θ(1)21x1+Θ(1)22x2+Θ(1)23x3)a(2)3=g(Θ(1)30x0+Θ(1)31x1+Θ(1)32x2+Θ(1)33x3)hΘ(x)=a(3)1=g(Θ(2)10a(2)0+Θ(2)11a(2)1+Θ(2)12a(2)2+Θ(2)13a(2)3)


上式描述的是,用一个3x4的矩阵

Θ(1)

乘以输入向量,得到激励节点。最终的输出是激励节点经过另一个1x4矩阵

Θ(2)

后得到的。不难得出如下结论:


如果第j层有

sj

个单元,第j+1层有

sj+1

个单元,那么

Θ(j)

的阶数为

sj+1×(sj+1)

+1源自于每一层的偏差单元(bias unit)


实现逻辑运算

为了更好的理解上述模型,下面通过神经网络算法来训练模型进行逻辑运算。首先先实现一个逻辑或运算

x1

OR

x2


clipboard.png

如上图,我们通过一个简单的2层神经网络实现了一个OR逻辑门。设置

Θ1

为:



Θ1=[−10 20 20]


记得我们的g函数

11+e−θTx

,我们可以得到右边的真值表。因此,对于这个神经网络,上述

Θ1

就是模型需要习得的参数。


对于这个问题似乎使用普通的逻辑回归也能解决,那是因为对于逻辑或而言,仍然属于线性问题。但是下面我们要计算的同或运算,就是非线性问题了:

clipboard.png

我们可以把同或运算写成如下形式:


(x1 AND x2) OR ((NOTx1) AND (NOT x2))


通过组合,我们可以得到下面的神经网络:

clipboard.png

这是个3层神经网络,有一个输入层,一个隐藏层(2个激励节点),一个输出层:


Θ1=[−30 20 20−10 −20 −20]Θ2=[−10 20 20]


实现多元分类

上述逻辑运算的例子最后得到的是一个值(即0或1)。很多实际的问题需要我们解决多元分类问题。其实我们只要让神经网络输出层包含多个节点即可,例如将一个张图的像素输入,预测图片是什么:

clipboard.png

原文链接:https://segmentfault.com/a/1190000014081024

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP

热门评论

有个问题想请教您,但是没法私信咋办

查看全部评论