专栏名称: 中山医iGEM
中山大学中山医学院
目录
相关文章推荐
游戏研究社  ·  《无限暖暖》带来了开放世界新解法 ·  3 天前  
梦幻西游  ·  帮战伐木264次?任务大BOSS超多任务细节 ... ·  3 天前  
定锚  ·  抓启动期牛股,选股公式及思路 ·  4 天前  
定锚  ·  抓启动期牛股,选股公式及思路 ·  4 天前  
51好读  ›  专栏  ›  中山医iGEM

​数学建模神器

中山医iGEM  · 公众号  ·  · 2016-09-14 19:02

正文

不知大家是否想过这么一个问题~~

人们看到一张喵喵的图片时,立马就能知道这是一只猫,时间非常快,而且很少出错,这是为什么呢?

因为大脑本质上是一个非常高效的处理器。而这个处理器其实是由巨量神经细胞组成的神经网络。
 
LONG LONG AGO(20世纪40年代),人们就开了脑洞,为什么不尝试通过“模拟神经元网络的行为”这种手段解决实际问题呢?随着机算能力的提高(20世纪80年代以后),神经网络算法逐渐形成了热点。
 
现实中,很多常见的问题都可以用神经网络轻松处理好。

例如:提供手写的字的图片,神经网络算法就可以完成内容的识别;提供股票历史交易日的信息,神经网络可以判断股票明天是涨是跌,甚至可以告诉你最可能的收盘价是多少(准不准另说,反正人脑也未必准hhh)。
 
他是怎么工作的??


 大脑中的神经元细胞

                        
                     
上图就是一个标准的神经元结构。

神经元通过树突来接收信息(来自别的神经元传递过来的信息,或是直接物理刺激),然后细胞体对这些信息的综合处理,最后将处理结果通过轴突传递给别的神经元。

对于大脑的神经细胞来说,通常有两种状态:兴奋不兴奋(即抑制)。

神经细胞通过某种方法,把所有从树突上进来的信号进行相加,如果信号总和超过某个阀值,就会激发神经细胞进入兴奋(fire)状态。此时神经细胞就会发出一个电信号,并且通过轴突发送给其他神经细胞。如果信号总和没有达到阀值,神经细胞就不会兴奋起来。
 

神经元细胞网络

                                             
团结就是力量!单个神经细胞处理不了任何复杂的问题,必须形成神经网络!!

神经元细胞网络中、细胞间的联系错综复杂。神经网络综合每个细胞的成果,最终完成了非常复杂的任务。

虽然人类目前还没有完全弄清楚神经网络的运作,但并不妨碍开脑洞,自己设计一套模型heyheyhey)
 

经网络算法——神经元和神经网络
人工神经元——模拟神经元细胞行为

人工神经元的结构如下:

 
左边的箭头模拟神经元的输入信号,右边的箭头模拟神经元的输出信号。

神经元主要做了两部分的工作:首先对于输入信号进行综合,其次通过综合后的信号进行处理,得到输出信号。

信号的综合,常用的方法是对输入信号加权求和。信号的处理,常用的方法是通过sigmoid函数处理(好像好高大上的样子*.*)
 
sigmoid函数的表达式:g(z) = 1/(1+e-z) 图像:


sigmoid函数的处理结果和真实神经元的处理结果比较类似(sigmoid函数值集中于1和0,类似于神经元的兴奋和不兴奋状态),而且sigmoid函数可以根据函数值很容易的得到导数值。

这样,一个人工神经元就搭建起来了。
 

人工神经网络-神经元网络简化版

人工神经网络在一定程度上就是真实神经网络的简化。一个典型的人工神经网络如下图所示:


神经网络由三层组成:输入层,隐含层,输出层。需要注意的是,输入层和输出层都只有一层结构,隐含层可以是一层,也可以包含多层结构(本图中只有一层)。图中x1和x2是输入数据,y1是输出数据。黄色的圈表示对于神经元的恒定刺激,a1和a2是隐含层输入信号的信号综合结果,z1和z2是隐含层的信号处理结果,s1是输出层输入信号的信号综合结果。
 
这么说有点抽象,我们举个栗子(各位乘客,跟紧老司机的节奏!!)

实际推演一下:上面这个神经网络可以用来计算异或。异或(xor)是一种运算:如果输入的a、b两个值不相同,则异或结果为1。如果输入的a、b两个值相同,异或结果为0。

那用神经网络如何做到异或呢?

当输入的x1 = 1,x2 = 1的时候:
a1= 1*(-30) + x1*20 + x2*20 = 1*(-30) + 1*20 + 1*20 = 10
z1= sigmoid (a1) ≈ 1
a2 = 1*10 + x1*(-20) + x2*(-20) = 1*10 + 1*(-20) + 1*(-20) = -30
z2 = sigmoid (a2) ≈ 0
s1 = 1*(10) + z1*(-20) + z2*(-20) = 1*(10) + 1*(-20) + 0*(-20) = -10
y1= sigmoid (s1) ≈ 0
同理,当x1 = 1,x2 = 0的时候,y1=1;
当x1 = 0,x2 = 1的时候,y1 = 1;
当x1 = 0,x2 = 0的时候,y1 = 0。
Dee ~~ 车到了!
 
相信大家对于神经网络算法有一个直观的认识,关于神经网络的非线性分类能力、神经网络的训练等过程等比较复杂。请大家继续关注未来推送~

(部分图片来自网络)