AI代码到底长什么样?看完是不是头皮发麻?

电子说

1.3w人已加入

描述

AI代码到底长什么样?有美人痣?闲的?圆润吗?

虚竹在想念自己梦姑的时候,好歹还有梦境作为记忆碎片。而那些让人许多AI公司爆火的、融资拿到手软的AI代码是不是也如某国公主一般呢?

直到笔者看到这两张图:

代码

代码

当然以上纯属玩笑,在QUORA上,一位毕业于印度理工学院人工智能与计算机科学专业、工作于Facebook的工程师Sriraman Madhavan。

写了这么一个答案:

这是我写的一个案列:根据名字来确定你是来自印度哪个地区的。根据你名字的不同状态,可以判定你的家庭人员情况,以下是代码片段:

代码

下面这个代码不是我写的,这是个谷歌根据图片生成描述文字的创新。下面是根据图片生成描述的案例:

代码

但等等!别高兴得太早,就上面这个代码也引发了啼笑皆非的笑话。

如果调教不好,AI可能有点愚蠢。

下面再看一个复杂的例子:

我们必须记住,AI主要只是一堆数学逻辑(尤其是在讨论机器学习和深度学习时)。编码的作用只是让计算机去执行它,并从数据中得以学习。我认为要知道AI代码长什么样,并不是要了解背后代码的外观,和如何编写代码,而是要更多理解代码中到底发生了什么。

比如,我们如何创建能够识别MNIST数据库中这些手写数字的东西呢?

如下图,只是一些Python代码,背后有很多数学逻辑。[1]

是不是看完头皮发麻?

我自己都觉得很难理解它。

这到底是个什么玩意儿?其实就是数学逻辑。

每个手写数字由28*28像素组成,那么就共有784个像素。且每个像素都被用作神经网络的输入,我们用它来训练网络。每个像素都被认作为一个输入,并通过中间隐藏层,也就是下图中的15个神经元。经过那里,我们将得到最有可能的数字估计。

即我们就会得出哪个数字的激活率最高。这种感觉就如同下图:[2]

那么我们在执行代码时会发生什么?我们所建立的网络类型称为前馈神经网络,这意味着所有数据都在一个方向上。我们使用反向传播算法来计算我们当前数据的误差,通过更改设置并在此运行神经网络。

我们得出这样的输出:

代码

从中可以看出,在第一轮中,我们神经网络能够正确地对51%的数字进行分类,通过训练最终正确率能达到81%。相当不错的改进吧?随机猜测数字会给你10%的准确率!精度还可以进一步提高,只需要更多的计算能力。此外,对代码的更改还可以优化学习速度。使用普通计算机,你可能就会获得低于4%的错误率,而最佳结果是错误率低于1%。[3]

我们在这里做了什么?

这行代码中,我们告诉网络:

代码

1,784个输入神经元;

2,30个隐藏层;

3,10个输出神经元。

其次,我们使用一种随机梯度下降的方法来训练我们的网络,并“降低我们的成本”。

(备注:关于随机梯度下降法,各位看官请自行搜索。)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分