当前人工智能发展根本问题--无法理解算法本质的问题
近期以来,由于对人工智能的好奇,学习了不少关于人工智能的知识。但是无论学习什么都发现当前与人工智能有关的算法确实不能做到与人脑相提并论的那种对万物都能适应般的“通配性”。
虽然人工智能能在某些领域确实是有着能够超越人类的能力,但是这种能力脱离了具体的环境就发挥不出作用了。就拿在人工智能中广泛运用的图像识别来说,虽然能够经过训练后识别某一类的物体,但是训练之后的模型并不能具有“通用”的这一特征,看似并不碍事,但这点却至关重要,甚至关乎于为啥现如今人工智能无法模拟人脑智能。换句话来说,由现在的人工智能算法训练之后的模型,对于输入数据具有严格要求,甚至于让图片颠倒一下,原来能识别的物体,颠倒图片后就识别不出来了。更别说让输入图片的大小随意更改后还能识别出具体的目标。
上述的话如果没有接触过图像识别的人来说有点难以理解,没关系,下面用一个更加通俗的例子来更好地理解这一过程。
如果现在有一堆没有排序好的数据,那么我想训练一个模型,来让这个模型能够实现输出从小到大排序输出数据(数据中只包含0-10,为啥不是任意数下面会解释)的这一功能的话,那么当前人工智能训练模型的方法一般是如下:
先拿一个没有排序好的数据集作为一组训练集
【1,3,2】,【4,2,1】,【6,3,2】,【5,2,1】,【2,6,7】,....... 这样的数据等等N项作为训练集
现在到这里,可以看到训练集输入的输入全部都是一个统一的大小,即数列的长度必须为3,这就是当前一般的人工智能算法存在的第一个问题,如果有一个训练集的大小不符合要求,那么这个数据就没办法输入到模型的训练里面。
为了发展当前的人工智能算法,首先需要解决第一个问题就是解决输入数据大小的问题。
到了这里,只有一组训练集还没办法训练模型,因为仅仅凭训练集数据,人工智能是不知道从小到大排序是什么。因此我们还要给出对应训练集从小到大排序好的数据
【1,2,3】,【1,2,4】,【2,3,6】,【1,2,5】,【2,6,7】,........等等N项对应训练集的从小到大排序好的数据
有了训练集数据和排序好的数据之后,我们就能训练出来这个能够输入数据长度为3 数据只包含0-10,后能输出从小到大排序还不一定准确的模型了。有了这个模型后,小明兴高采烈地将其拷贝回家等有机会的时候使用。
有一天,小明想突然利用这个模型输出一个从小到大排序好的数组,但是,他不小心输入了其中有一个数范围不在0-10的数组【0,11,8】
结果模型返回给他的数组是【0,8,10】 他很纳闷为啥他输入的数中没有10,但是为啥模型返回给他个10呢
这里又发现了当前一般的人工智能算法的另一个问题了,输出的数据只能从训练数据里面的数据给出而不能给出一个通配的解。
得到了这个模型之后,发现他的排序功能实在是太弱了,还不如直接自己编写一个排序来的痛快一些,即快还没有大小限制。
所以,为了发展当前的人工智能算法,需要解决的另一个问题是给出答案的通配解而不是具体值。
所以换个思路,我们再来重新一个从小到大排序函数,这次,我们利用函数拟合而不是现如今人工智能之一的训练方式,(虽然神经网络的本质就是函数拟合)。
依旧还是上述的数据,训练值作为函数的X值,排序好的数据作为函数的因变量,
就有如下的排序函数F(X1,Y1,Z1)=(min(X1,Y1,Z1),middle(X1,Y1,Z1),max(X1,Y1,Z1))
这次小明重新输入【0,11,8】,得到的输出数据是【0,8,11】,排序好的数据,这样就解决了第二个问题了。这是之前的一个实现过程:计算机语言函数提取算法
虽然现在得到了能排序3个整数的通配函数了,但是如果更换数据的长度,依旧还是无法排序。例如【1,2,4,3】,此时函数能够输入的位置只有3个,而需要我们输入的数列大小有4个就无法代入函数中了。
函数仅仅只是模拟数据的规律,却没理解这些数据之中存在的本质问题。
但在我们人脑看来,(这里只说在一般而言可以接受的长度,无论如何我们理解了如何排序的这一规律)数据长度对我们解决排序基本没有影响,我能知道排序的规律,我们了解排序的本质,因而长度对我们排序的过程没有影响。
而第一个问题,大小改变后无法代入训练过程的问题,也就是当前人工智能只是模拟而不知道具体的本质是什么的问题。
最近我花了很长的时间,想让其能提取从小到大排序任意长度任意数的函数,但均以失败告终。是否函数也存在某种局限呢?
如何才能让当前的人工智能理解问题的本质呢,如何训练出来模型后,让这个模型在任意场景都能使用的问题。如何让其能理解问题的本质呢?