35

AI神经网络如何辨别事物

 4 years ago
source link: https://www.tuicool.com/articles/UbuiArz
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

AI与神经网络

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

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

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

Ev6vyy2.jpg!web TIM图片20190609102449

关于分类

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

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

zMziQfM.jpg!web image

最简神经网络

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

Yb22mai.jpg!web 这里写图片描述

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

mMzEzyZ.jpg!web TIM图片20190610142942

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

eYjie2e.jpg!web TIM图片20190610123658

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

7BzMjum.jpg!web TIM图片20190610162721

更强大的神经网络

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

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

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

neQv6bU.jpg!web image

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

YrQbyeI.jpg!web TIM图片20190610165801

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

YVri22b.jpg!web TIM图片20190610171547

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

bYzmQbR.jpg!web TIM图片20190610172050

训练神经网络

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

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

bUjIRnZ.jpg 这里写图片描述

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

EZ3u2iv.jpg!web 这里写图片描述

大概流程为:

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

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

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

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

    image

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

    6JFv2eq.jpg!web

Mvq2aeN.jpg!web image

-------------推荐阅读------------

我的开源项目汇总(机器&深度学习、NLP、网络IO、AIML、mysql协议、chatbot)

为什么写《Tomcat内核设计剖析》

2018汇总数据结构算法篇

2018汇总机器学习篇

2018汇总Java深度篇

2018汇总自然语言处理篇

2018汇总深度学习篇

2018汇总JDK源码篇

2018汇总Java并发核心篇

2018汇总读书篇


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK