网络机器人吧社区

一文说明神经网络,机器学习和深度学习

果壳机动 2018-11-08 14:10:23

       现在提到人工智能,言必称机器学习,但大多数介绍的文章难以理解,里面有太多的专业词汇和数学词汇。机器学习,深度学习,神经网络,这些都是什么,他们之间的相互关系又是什么?今天,我们用一些更简单的例子来说明。

 



我现在要做决策是否吃饭,这个决策的输入变量有两个,一是:“饿不饿”,二是:“有钱没”;输出的变量只有一个:“吃不吃”。然后我需要一个计算机程序来帮我做这个决策,而且要尽可能和自己做一样靠谱,不至于把我饿死,或者让我吃霸王餐,这个程序就是人工智能。

 

“饿不饿”和“有钱没”的权重都有一票否决权,那么这件事的决策模型是什么样呢?

饿不饿

有钱没

吃不吃

饿

饿

不吃

不饿

不吃

不饿

不吃

 

我把这张表写成程序输进电脑,电脑的名字叫“小叽”(你管我为什么这么叫它啊!),然后开始运行,现在是人工智能工作时间:



我:我要不要吃饭啊?

小叽:你饿不饿啊?

我:饿

小叽:你口袋有钱没啊?

我:有

小叽:那你去吃呗。



大吉大利,晚上吃鸡!人工智能得到了正确的答案!



有人要说了,什么鬼!这能叫人工智能??这就是个AND逻辑好不好!

 

嗯哼,最简单的人工智能就是这个啊……

 

别急,现在再加个条件,今天餐馆只卖香菜,而我讨厌香菜,没有饿到半死的时候我是不吃的。于是事情发生了变化:

 

饿不饿

有钱没

有没有香菜

吃不吃

饿

纠结下

不吃

不吃

不饿

不吃

不吃

不吃

不吃

 

我把这个表也编成了程序,输进电脑,然后开始测试:

 


我:我要不要吃饭啊?

小叽:你饿不饿啊?

我:饿

小叽:你口袋有钱没啊?

我:有

小叽:只有香菜哦

我:那我是吃还是不吃呢?

小叽:啊哈哈哈…… 



电脑显然不知所措,那如何才能让她给出更合我心意的答案呢?

 

这个时候就要召唤机器学习了。 


       

小叽暗中观察了我的生活一个月,发现我距离上次吃饭时间越久,越倾向于硬着头皮吃香菜,于是她形成了自己的判断:

 


我:我要不要吃饭啊?

小叽:你饿不饿啊?

我:饿

小叽:你口袋有钱没啊?

我:有

小叽:只有香菜哦

我:那我是吃还是不吃呢?

小叽:你今天去吃的概率是98%,因为为了写这篇文章昨晚就没吃了……


 


撒花!我们通过监督学习成功的优化了程序,现在它可以就吃饭问题给出正确的判断了,再加上一些外围程序,小叽甚至还可以帮我订外卖……

 

看明白了吗?机器学习就是通过大量的数据训练,来优化程序中每个特征的权重和偏移,最终得出最接近真相的答案。特征的权重和偏移,就是机器学习的目标。

 

根据训练的方法不同,机器学习算法可以大致分类为监督学习无监督学习强化学习三种。

 

监督学习,就是训练数据是有标签的,也就是每个数据都是标注过的,是有正确答案的。训练的时候会告诉模型什么是对的,什么的错的,然后找到输入和输出之间正确的映射关系,比如物体种类的图像识别,识别一张图片内容是只狗,还是棵树。

 

非监督学习,就是训练数据没有标签的,只有部分特征。模型自己分析数据的特征,找到数据别后隐含的架构关系,比如说自己对数据进行学习分类等等,常见的算法有聚类算法,给你一堆数据,将这数据分为几类。比如在银行的数据库中,给你所有客户的消费记录,让你挑选出哪些可以升级成VIP客户,这就是聚类算法。

 

还有一种是强化学习,目标是建立环境到行为之间的最佳映射。强化学习的训练是不需要数据的,你告诉他规则或者给他明确一个环境,让模型自己通过不断地尝试,自己根据结果来自己摸索。比如Deep Mind的阿尔法元学下围棋。


 

用一张图来表示上面的决策模型: 

恭喜,我们得到了一个人工神经网络!(ANN)

 

当然,实际上的人工神经网络非常复杂,这里是简化到极点,方便大家理解的。实际各个层级直线的信息传递,也不是线性函数,而是更为复杂的关系。 


       人的大脑是由无数的神经元组成的,不同的神经元负责处理不同的信息并提取这些信息的特征,再激活不同的神经元,传递和汇总特征,最终得到一个结论。

 

       比如我们在看到下图的时候,首先看到的是不同颜色的色块,然后我们的大脑会按照不同的颜色把色块分开(红色,黑色,白色,灰色),给予每个色块一个颜色和形状的概念(红色的圆环,白色的底色,黑色的文字,灰色的背景),再把这些形状和概念抽象成具体的“含义”(红色圆环上有黑色的数字80,它的背景是灰色的天空,),最后把所有的“含义”组合起来(这是一个悬在空中的限速标识)。

       


人工神经网络是基于一组称为人造神经元的连接单元(类似于生物脑中的轴突)。神经元之间的每个连接(突触)都可以将信号传送给另一个神经元。接收(突触后)神经元可以处理信号,然后发出与其连接的下游神经元的信号。神经元可能具有状态,通常由实数表示,通常在0和1之间。神经元和突触也可能具有随着学习进行而变化的权重,这可以增加或减小其向下游发送的信号的强度。

 

通常情况下,神经元是分层组织的。不同的层可能会对其输入执行不同类型的转换。信号从第一个(输入)到最后一个(输出)层传播,可能在多次穿越层之后。

 

         深度学习就建立在多层神经网络的基础上,它:

 -      使用多层非线性处理单元进行特征提取和转换。每个连续的图层使用前一层的输出作为输入。

-      在监督(例如,分类)和/或无监督(例如,模式分析)方式中学习。

-      学习对应于不同抽象级别的多级表示; 这些级别构成了概念的层次结构。


       深度学习是训练多层神经网络的机器学习方法。目标嘛,当然是为了让程序完善每一级神经网络的参数,从而最终实现功能。


       是不是感觉清楚多了?



注:本文参考了一部分许良在知乎上的回答(链接如下),以及维基百科对于人工智能的解释。

https://www.zhihu.com/topic/19813032/top-answers?page=5



长按公众号关注果壳机动,随时保持科技前沿。


Copyright © 网络机器人吧社区@2017