【成长笔记】神经网络

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

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

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

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

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

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

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

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

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

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

用数学表示如下:

\left[ \begin{array}{ccc} x_{0} \\ x_{1} \\ x_{2} \\x_{3} \end{array} \right]\rightarrow \left[ \begin{array}{ccc} a_{1} ^{(2)} \\ a_{2} ^{(2)}\\a_{3}^{(3)} \end{array} \right]= h_{\theta}(x)

这里面多出的 x_{0} ,我们把它称为bias(偏置),它是一个常数,而x映射到a的关系 \Theta ,我们称之为weight(权重)。上面具体的运算如下:

a_{1}^{2} = g(\Theta_{10}^{1}x_{0} + \Theta_{11}^{1}x_{1} + \Theta_{12}^{1}x_{2} + \Theta_{13}^{1}x_{3})

a_{2}^{2} = g(\Theta_{20}^{1}x_{0} + \Theta_{21}^{1}x_{1} + \Theta_{22}^{1}x_{2} + \Theta_{23}^{1}x_{3})

a_{1}^{2} = g(\Theta_{30}^{1}x_{0} + \Theta_{31}^{1}x_{1} + \Theta_{32}^{1}x_{2} + \Theta_{33}^{1}x_{3})

h_{\theta}(x) = a_{1}^{3} = g(\Theta_{10}^{2}a_{0} + \Theta_{11}^{2}a_{1} + \Theta_{12}^{2}a_{2} + \Theta_{13}^{2}a_{3})

为了表示更加简便, a^{(j)}= g(z^{(j)}) ,则 g(z^{(j)}) = \Theta^{(j)}a^{(j)} ,j表示第j层。

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

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

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

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

比如“与”,我们假设 g(\theta_{0} + \theta_{1}x_{1} + \theta_{2}x_{2}) , \theta = [-30,20,20] 就可以满足与运算。

比如“或”, \theta = [-10,20,20] 就可以得到。

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

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

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

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

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

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

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

y^{(i)} = \left[ \begin{array}{ccc} 1 \\ 0 \\ 0\\0 \end{array} \right], \left[ \begin{array}{ccc} 0 \\ 1 \\ 0\\0 \end{array} \right], \left[ \begin{array}{ccc} 0 \\ 0 \\ 1\\0 \end{array} \right], \left[ \begin{array}{ccc} 0 \\ 0 \\ 0\\1\end{array} \right]

每一个向量 y^{(i)} 代表一类。接下来,我们只要构建好类似这样的神经网络训练:

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

\left[ \begin{array}{ccc} x_{0} \\ x_{1} \\ x_{2}\\...\\x_{n} \end{array} \right]\rightarrow \left[ \begin{array}{ccc} a_{0}^{(2)}\\a_{1} ^{(2)} \\ a_{2} ^{(2)}\\a_{3}^{(2)}\\... \end{array} \right] \rightarrow \left[ \begin{array}{ccc} a_{0}^{(3)}\\a_{1} ^{(3)} \\ a_{2} ^{(3)}\\a_{3}^{(3)}\\... \end{array} \right] \rightarrow...\rightarrow \left[ \begin{array}{ccc} h_{\Theta}(x)_{1}\\h_{\Theta}(x)_{2}\\h_{\Theta}(x)_{3}\\h_{\Theta}(x)_{4}\end{array} \right]

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

若: h_{\Theta}x\approx \left[ \begin{array}{ccc} 1 \\ 0 \\ 0\\0 \end{array} \right] 时,就分类为Pedestrain;

若: h_{\Theta}x\approx \left[ \begin{array}{ccc} 0\\ 1 \\ 0\\0 \end{array} \right] 时,就分类为Car;

若: h_{\Theta}x\approx \left[ \begin{array}{ccc} 0\\ 0 \\ 1\\0 \end{array} \right] 时,就分类为Motorcycle;

若: h_{\Theta}x\approx \left[ \begin{array}{ccc} 0 \\ 0 \\ 0\\1 \end{array} \right] 时,就分类为Truck。

呐,就酱。

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

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

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

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

加油,共勉!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值