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

目录

 

1、前述

2、神经网络实例与概念

3、神经元结构

4、神经元拓扑总结

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逻辑回归,跟神经元,神经网络有什么关系?

逻辑回归的公式是:z=w^{T} x ,写成另一种方式就是\sum \mathrm{xi}^{*} \mathrm{wi}$,那么z=w^{T} x表示的就是神经网络里面的∑这一部分。

逻辑回归还有一个S曲线,是Sigmoid函数,是一个非线性的变化,y=\frac{1}{1+e^{-z}},对应神经元里f激活函数这一部分,只不过在逻辑回归里,激活函数不是ReLU,是Sigmoid函数。

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

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

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

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

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

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L先生AI课堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值