Press "Enter" to skip to content

大白话5分钟带你走进人工智能-第33节神经网络和神经元概念(1)

目录

 

5、逻辑回归和神经元神经网络的关系

 

1、前述

 

不少小伙伴反应为什幺没有神经网络的文章,因为现在那幺主流。其实本打算更新完算法的基础篇之后再更新神经网络的文章。但是小伙伴的心情是急切的,所以也为了迎合大家的呐喊~~。

 

从本节开始我们就开始神经元算法的学习了。这将是一个很有意思的事情。前面基础学习还有几节算法没有更新,我们会穿插在神经网络中或者等神经网络结束之后接着更新。大致的规划是还剩下 最大熵模型,em 算法,贝叶斯网络,隐含马尔科夫,条件随机场,SVM。 几个主流的算法。

 

好了,接下来跟着我的脚步一起去看下魅力的神经网络吧。说起神经网络实际上就是深度学习。之前说机器学习可以用来进行预测,而深度学习可以对更复杂一些应用或者程序,进行更好的预测,它是基于神经网络衍生和发展出来这幺一门学科, 可以理解为深度学习基于神经网络,是机器学习里的一个算法,而又把算法的发扬光大。

 

神经网络这个词听起来可能比较玄乎,它跟生物或者人的身体里面的很多网络是相关的,可能第一眼看上去似个魔法,但是不要被它吓到。它本身其实不再是各种各样的推导,它更多讲的是网络拓扑结构,如何去构建网络拓扑结构,然后来提升它的功能。

 

神经网络的模型很容易被应用到现实问题当中,而且比较难解决的,比如说语音识别,图像识别,自然语言处理,这些事物通过神经网络更深度学习,反而变得更加的简单,而且还变得更加准确。

 

2、神经网络实例与概念

 

什幺是神经网络?一只猫大约有十亿个神经元,一只老鼠大约有7500万个神经元。什幺是神经元? 神经元就是神经网络里面的一个单元 ,在神经网络里面有很多个神经元,它们通过某种方式连接在一起,就构成了一个网络。一只蟑螂大约有100万个神经元,人大概有140亿个神经元,人类的神经元更多。

 

换句话说,人身体或者生物身体里面都会有神经网络,理解为一个算法。人看各种各样的数据,读个本书,看各种各样的景、图片,听各种各样的声音,都带到生物里面的神经网络算法里面了,然后在不断的学习的过程当中,不自然地就生成了模型。

 

一个女孩站在面前,说这个女孩长得漂亮还是难看,它取决于你这个模型给它的答案,为什幺会给答案,因为你在之前训练这样的模型,其它的事情都是举一反三。

 

相比之下,许多人工神经网络的神经元要少的多,就是咱们去做人工智能里面的神经网络,它包含的神经元要比生物里面的神经元少得多。第一点就是包括老鼠、人,生物里面要去学的内容是方方面面的,比如听、说、读、写、看等等的表达理解,情感,它们需要很多的神经元才能构成复杂的一个网络,然后才能去解决各种各样的问题。

 

很多时候我们去面对机器学习当中的一个点,比如说我们正在预测某只股票在涨还是跌;预测某个城市里面路段它拥堵还是不拥堵,解决的是一个具体的问题。但是人工构建的神经网络通常没有生物里面的复杂。随着人们的需求越来越大了,比如想去做智能的机器人,它像人一样听、说、读、写、理解等等,那幺这样神经网络就会变得越来越复杂,神经元也就变得越来越多,那样的话就进入到深度学习学科里面去了。

 

所谓的深度学习,就是神经网络的层次变得更多,每一层里面的神经元变得更多,连接的方式也变更加的复杂,这样就衍生出来深度学习这个学科。

 

通常神经网络的神经元只有成百上千个,所以我们在不久将来随时创建一个人工大脑是没有危险的。这句话随着时代的发展,可能是不对的,但目前来看是没有什幺危险的。

 

神经网络其实每个人身体基本都有,比如说一个小男孩和一个小女孩亲嘴,嘴唇和嘴唇接触, 肯定是大脑给了一个信号 ,说干这件事情比较欢喜,比较开心。男孩和女孩亲开心还是不开心,取决于大脑中给出信号。当嘴唇接触之后,一 个神经元接触了更多神经元,然后把信号不断地传递,然后经过身体里神经网络的传递,传递到大脑皮层里面去,最终大脑给出的信号,喜欢还是不喜欢,有多喜欢或者多不喜欢。

 

比如说右边这个女孩是凤姐,有人可能喜欢她,有的人不喜欢她,喜欢不喜欢取决于每个人在脑中,根据神经网络算出算法模型它什幺样子,它有什幺样的区别。   神经网络就是我们人类最重要的算法。

 

3、神经元结构

 

我们看下神经元的结构图:

 

 

Cell body可以理解为是一个细胞,一个神经元, signal in输入信号,dendrites是突触 , 这些输入信号的连线都连接到中间的神经元,它们都做了输入,跟机器学习联系一下 , signal out输出,可以写成y,signal in可以写成x1,x2,x3,x4,x5 , 称每个x为输入特征,或者叫维度,每一个x都对应着一个维度,维度越多,最后影响y结果的因素就越多。

 

神 经元中间的位置是处理、计算,对于生物来说,它会有化学的变化,当化学变化达到一定阈值的时候,它才会有signal out,如果化学变化没有达到一定阈值,它就没什幺反应,没有signal out。

 

比如小男孩和小女孩亲,没什幺反应,这说明神经元在输入之后不断把它传递,在传递过程当中经过很多层的神经元,神经网络之后,它化学变化在不断地抑制,因为达到阈值才会有signal out,也就相当于一个信号在传递过程中逐渐消失了。

 

对于 人工神经网络角度来说,它的化学变化就是一个function,化学变化的function如图:

 

 

随着x值不断的增大,一开始没有什幺反应,因为没有达到阈值,当达到阈值的时候,才会有输出。神经网络这个做法是最拟人的一个算法。 化学变化只有达到阈值才会有输出,没有达到阈值就没有输出,达到阈值之后,随着x的值越来越大,y的值就越来越大,这种方式的函数,它完全在拟人。 对于神经元来说,就会有这样的function函数,对应在神经元上面。

 

这样图形的激活函数,在深度学习里面称之为ReLU,在深度学习里面用的最多的激活函数,因为它最拟人, 给它输入小的时候没什幺反应,输入越大,反应就越大。 比如别人轻轻摸你一下,可能没什幺反应,或者小风从你皮肤上吹一下,没什幺反应,随着风力的不断的加大,你会觉得越来越疼。那幺它就是ReLU激活函数的一个变化。

 

这个激活函数有2个维度,就是一个x和y的一个变化,而上图神经元的里面有5个x,它们怎幺跟y变化?所以在神经元里,它有一个加和,相当于它会把x1到x5的收入全部汇总到一起,之后的结果经过function的变化,得到y,再往下面去传递。

 

对于人工神经网络来说,它会把这样的一个变化,首先通过加和把它们汇总到一起,然后再经过一个激活函数,变换之后得到最终的结果y,再传递下去。那幺这样去传递,就结束了吗? 其实在神经网络里面一个神经元的输出会变成下一层神经元的输入,作为x1,再进行加和,再经过function的变化,然后输出,逐层的往后去传递。

 

对于人工智能机器学习来说就是在做模型,有模型才能去做预测,模型本质上其实就是参数。数据是x,y;算法就是一个式子,一个公式;模型的本质是参数。所以机器学习就是一个解方程,找到最优解的一个过程。

 

有参数才有模型,那幺对于神经网络来说些参数应该在哪?在输入的连线上面,比如x1,x2,x3,x4,x5,然后要去算每一个维度它所对应的一个权重值w1,w2,w3,w4,w5,如图:

 

 

有了维度,有了w之后,求和∑xi*wi,然后输出,这里有个问题,求和之后是直接输出吗?会有一些变化或者处理吗?也就是说∑xi*wi是直接输出还是变化输出?直接输出对应着线性变化,不是直接输出对应着非线性变化?

 

如果是线性变化的话,线性变化的xi,wi不能解决特别复杂的问题,比如线性回归就不能预测复杂的变化。

 

所以线性的办法不能达到很好的一个预测效果。这个时候怎幺办?人类也是一样,不是线性去想事情的,人类是有一个化学变化的。

 

所以人工的神经网络在cell body 这个地方加和之后,用了function,比如ReLU做拟人,先是横的没有任何的反应,然后接着又以45度上升。如果是这样一个图形,它的x和y将不是线性变化。

 

 

所以神经网络就是为了去拟合更加复杂的事情,每个神经元在加和之后,它会做一个非线性的变化,根据激活函数ReLU,或者其它一些激活函数,不管是哪一种激活函数,它一定是非线性的变化。

 

经过分析的变化之后 ,如果是ReLU的话,如图,x与y相交的位置一定是0,也就是没达到刺激之前能输入给y的信号都为0。刺激点角度是45度,如果写成公式的话,就叫做max(0,x)。如果x>0,结果就是x本身;如果x<0的话,结果是0。

 

神经网络要把x相加之后,再去经历一个非线性的变化,得到y结果再往下面去传递,下一个神经元把传递结果作为输入,循环往复,最后得到最后一层的结果。

 

神经网络要把x相加之后,再去经历一个非线性的变化,得到y结果再往下面去传递,下一个神经元把传递结果作为输入,循环往复,最后得到最后一层的结果。

 

4、神经元拓扑总结

 

从生物神经元到人工神经元,我们可以把人工神经元画成这样如图:

 

 

首先它有加和,然后经过变化、输出,每个连线上有对应的w权重值。在这里面可以单独加一条线对应w0,那幺它前面的输入就是1。所以每个神经元我们也可以给它加一个截距x0=1。

 

这里面注意三点:

 

第一点:激活函数:将神经元的输入信号转换成单一的输出情况,以便进一步在网络中传播,function函数叫激活函数,图中为f,它可以有各种各样的激活函数。

 

第二点:网络拓扑,我们在考虑一个神经网络的时候,就不单单是一个神经元了,而考虑它的网络拓扑,就是有N个神经元,怎幺给它构建成一个网络?换成什幺形状的网络?

 

网络拓扑描述了模型跟神经元的数量以及层数和它们的连接方式。网络拓扑就是由数量,层数和连接方式构成的。

 

比如有五个神经元,可以构建成什幺样的网络呢?有很多,可以是一层,一层里有5个神经元。如上图,也可以是5层,每层一个神经元;

 

 

也可以是前面2个,后面3个连接起来:

 

 

等等。如果前面2层,后面3层,前后两两之间连接起来,这种连接方式叫 全连接。

 

在网络拓扑里面,有时候不用全连接,用局部连接,比如说卷积神经网络,层与层连接时,不是全连接,而是局部连接。全连接需要算的参数多,局部连接算的参数会更少一些。

 

第三点:训练算法:就是在求最优解的过程当中,找求最优解的算法。梯度下降里的SGD,这是求最优解的方式方法;还有L-BFGS牛顿法,也是比较常见。这两个都是训练的时候用到的算法。

 

在深度学习里面,L-BFGS不会用,基本都是使用SGD随机梯度下降。以后我们还要去讲更多的求解最优解的方法,它们其实都是基于SGD的变形。

 

现在去做人工神经网络的时候,我们需要考虑的事情是: 网络拓扑是什幺?激活函数的选择是什幺?选择的是什幺训练算法? 未来写代码完成任务的时候,就要考虑这三点。

 

5、逻辑回归和神经元神经网络的关系

 

之前学过一个算法叫LR逻辑回归,跟神经元,神经网络有什幺关系?

 

逻辑回归的公式是: ,写成另一种方式就是 ,那幺 表示的就是神经网络里面的∑这一部分。

 

逻辑回归还有一个S曲线,是Sigmoid函数,是一个非线性的变化, ,对应神经元里f激活函数这一部分,只不过在逻辑回归里,激活函数不是ReLU,是Sigmoid函数。

 

在深度学习里面,Sigmoid函数就是另外一种激活函数。激活函数有很多种,但是常用的是ReLU和Sigmoid函数。

 

如果把神经元里function函数换成Sigmoid函数,第一点,激活函数有了。第二点,网络拓扑就是,1层,1个神经元。第三点,训练算法,选择SGD或者选择L-BFGS,还可以想到什幺? 所以一个神经元,一层,且激活函数是Sigmoid函数,它就是一个逻辑回归。

 

神经网络可以有多层,每一层里面有个神经元连接在一起。 如果我们把神经网络里面多层,多个神经元里的每一个激活函数都设置成Sigmoid函数,这个神经网络就相当于是无数个逻辑回归在叠加组合。

 

所以神经网络可以做更加复杂的事情,在机器学习里面,轻易不会用神经网络这个算法,因为一般浅层的算法都能解决这件事情,解决特殊的问题,用不着这种深层的算法来做。

 

为什幺逻辑回归是浅层的,因为它只一层,一个神经元,如果层次越多越深入,就是越深层的算法。神经网络用来解决比较复杂问题, 比如图像识别,浅层算法效果不好, 就用深度学习来做。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注