首页 智能算法正文

AI神经网络如何辨别事物

52ai 智能算法 2019-06-11 705 0 专业技术

AI与神经网络

人工智能已经发展了六七十年,经历了几度繁荣和衰落。虽然已取得不错的进展,但是与理想中的人工智能差距还是很大。

人工智能三大学派:符号学派、连接学派、行为学派。符号学派认为,任何能够将物理的某些模式或符号进行操作并转化成另外一些模式或符号的系统,就可能产生智能行为;连接学派认为高级的智能行为是从大量神经网络的连接中自发出现的,通过大量神经元来模拟大脑;行为学派并没有把目光聚焦到高级智能的人类身上,而是关注低级的昆虫能灵活走动并快速反应。上世纪的八九十年代形成三足鼎立的形势。

这几年再度让人工智能火起来的是连接学派,连接学派通过深度学习将以往很多领域的表现都大幅提高,连接方式无疑已经成为目前最闪耀的人工智能解决方案。连接派的模型都是以神经网络为基础进行创新的,所以核心部分仍然是神经网络结构。

关于分类

人类对事物的识别其实很大程度就是对事物进行分类。就好比下面图中的各种花,我们看到桔梗时就知道它是一种花,看到曼陀罗时也认为它是一种花,看到不同的花我们都对它们进行分类。类似的还有人、树、汽车等等,都属于分类概念,当看到相应事物时都会对其进行分类。

分类是人工智能的核心部分,神经网络则可以实现像人类这样的识别分类能力。对于机器来说,所有信息都是用离散的数字信号来表征的,神经网络的目标就是通过这些离散的信号来进行分类从而达到识别效果。

最简神经网络

感知器是最基础的神经网络,它可以有多个输入(x1,x2,…xn),每个输入对应有一个权重(w1,w2…wn),除此之外还有一个偏置项w0。每个输入和对应的权重相乘然后进行累加,再通过一个阶跃函数,最简神经网络就是这么简单。这么简单的模型有什么用?其实它可用于线性分类。

假如现在有两类事物,分别用蓝色和黄色表示。我们提取了两个判断因子x1和x2,现在准备使用简单的神经网络函数来决定某个点属于蓝色还是黄色。先计算z = ax1+bx2+c,然后再将z值通过Sigmoid激活函数,Sigmoid函数如图,其值被压缩到0-1之间,0.5作为蓝黄色的分界线。

现在的问题是a、b、c参数该怎么确定才能正确地将蓝色和黄色分开呢?我们先随便猜三个值,比如a=0.20,b=-0.3,c=0.7,则此时的分类效果如下。

继续猜a=-0.20,b=-0.7,c=-0.5,这会运气好,效果看起来挺不错的,都正确分类了。可以肯定的是我们可以无限地猜测下去,而且会找到更加完美的分割线。但是哪条分割线是最好的,而且我们应该如何来寻找这些分割线呢?目前为止我们采取的是猜的策略,也许一猜就中,也许永远都猜不中。

更强大的神经网络

简单的感知机属于线性模型,而通过嵌套多个神经网络层和增加神经元就可以解决很多复杂的问题。

整个神经网络模型包含了三要素:线性变换、非线性变换和线性决策。线性与非线性变换实际上就是坐标变换,将信息聚合到其他空间中。从线性到非线性属于特征变换,将某种特征转成另外一种特征。而多层神经网络就是做表征学习。

从数学上看,神经网络的嵌套就是多个函数嵌套,通过复杂的函数嵌套关系来描述特征关系。

同样是对两类事物进行分类,但这次的任务比较复杂,可以看到黄色和蓝色并不能通过简单的函数进行分割,这时最简单的神经网络已经无能为力了,此时就需要嵌套多个神经网络层并且增加神经元来解决了。

现在我们先对原来中间的网络层增加两个神经元,并再增加一层网络,一共拥有两个隐含层。

最终这种多层的神经网络确实能够完成对这种比较复杂的两类事物的分类。

训练神经网络

我们不可能靠猜测靠运气吃饭,神经网络的参数也一样,还是要踏踏实实地按照科学的方针来训练神经网络。实际上我们常常用误差逆传播算法来训练神经网络,它使用的是梯度下降法,通过反向传播不断调整神经网络中各个权重从而使输出层的误差平方和最小。

神经网络的输出层我们会获取到了一个最终的输出,而这个输出与目标值可能存在误差,可以使用误差平方和作为评判标准,这样我们就可以判断我们找到的函数的好坏。

而且,误差是会反向传播的,每个神经元都会有对应的误差。具体处理时通过梯度下降法便可以更新每一个神经元的权重,这样就能解决了神经网络中连接的参数值了,即能确认所有函数的参数。

大概流程为:

  • 计算从输入到输出的前馈信号。

  • 根据预测值和目标值计算输出误差E。

  • 通过前一层中的权重和相关激活函数的梯度对它们进行加权反向传播误差信号。

  • 基于反向传播误差信号和输入的前馈信号计算参数的梯度

  • 使用计算好的梯度来更新参数,公式为

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论