人工智能,就是让机器可以像人一样思考问题。典型的场景有:图像识别、自然语言处理、语音处理、动态物体跟踪、可运动的机器人,等等。

智能,就是人类可以很容易作出判断,但是却根本描述不清楚为什么是这样。比方说,一张人脸,人类盯上不超过一秒钟,然后几乎不需要思考,就立刻认出这是谁。但是人类却根本无法用文字作出该脸特征的描述。读文章,有“语感”,听音乐,有“乐感”。为什么某首乐曲听上去悲伤?感觉,乐感,真的说不清楚悲伤的原因。开车,也是讲“感觉”。只有学驾照的时候,教练才教很多公式,教很多特殊点(雨刷铆钉,右边玻璃的右下角等等)。AlphaGo为什么是人工智能?对了,就是“棋感”。

而早期的深蓝下国际象棋,胜过人类,就不能叫智能。因为它基本上是以穷举为主,深蓝的每一步操作都是精确可描述的,是“可知”的,是机器思维而不是人类思维。相反,AlphaGo就连开发者都搞不清楚这机器是怎么运作的。它就是个“黑匣子”。它模拟的是人的“感觉”而不是一堆人类发明的精确围棋算法公式。感觉是无法用语言描述的。

简单算术运算也不是智能,因为人类列算式计算的每一步都是可精确描述的。同样电子计算器在算术运算时的每一个步骤同样也是如此(虽然它用的是二进制计算,数字电路,泰勒级数展开等与人类不太一样的方法)。

人工智能要模拟人的“感觉”,就必须训练,也可以叫做“学习”。比如让它区分猫和狗,就给它几万张猫和狗的图片,让它自己去慢慢学习。在学习前,人类只需要告诉它某张图是猫或是狗,其他信息一概不用多说。比如完全没有必要提醒它有胡子的就是猫。

从目前的技术来看,训练是非常考验技术和花费时间的。以致于大家一提到人工智能,就是以为在说机器训练(机器学习)。

训练是个反复迭代的过程,就是说需要不断地探索,此路不通,就换一条路,非常艰辛。现实中,往往是不断地调整神经网络的参数,不断地对比训练结果。多数时候还要数据预处理,以及辅助传统的机器学习、传统图像处理、模式识别等技术。

那么,上述过程,谁最擅长?现在公认的就是Python。

Python是解释性语言而,弱类型,用起来很方便,开发效率大大高过C 、JAVA等语言,而且有很多现成的机器学习、深度学习、科学计算库,这些都是它作为人工智能语言的优势。AlphaGo的顶层代码大部分是用的Python,AlphaGo的成功,也对Python起了很大的推动作用。

数据的训练还可以细分为两类。一是前期的算法探索和小样本数据训练,二是后期正式的大规模数据训练。比如实验的1万个样本,可能要训练1个小时才能得到理想的网络。而最终的100万个样本时,可能就需要100个小时。这已经很长了。这时候,C 的作用就体现出来了。可以用C 花很多的人力成本投入去优化算法。概括说来就是,前期用Python进行算法探索,待算法和相关参数确定,后期用C 重写算法实现生产环境的真实的正式的训练。

训练是人工智能的很难的一部分,但是绝对不是人工智能的全部。人工智能还包括前期的数据获取、数据预处理和后期的实际应用。

训练得到的只是一个巨大的神经网络,有了它以后就可以预测了。预测所需要花的时间远远短于训练。比如训练花100个小时,而用训练好后的网络预测可能只需要5秒。可别小看这5秒的短时间。我们仍然有必要优化,比如是否可以1秒就完成,0.1秒完成?试想,设计一个无人驾驶系统,那可是分秒必争啊!稍微反应迟缓就可能酿成事故。

这时候,C 的作用又一次体现出来了!

这还没完。人工智能的载体可能会很精简。比方说嵌入到人体,嵌入到汽车,这么小的系统,不是Python的天下。还有机器人,是可以运动的,如何驱动机器动,这不还是C 的强项嘛。

另外,还涉及到前期的数据采集和预处理。比如图像、音频、视频,需要实时感知,包括必要的预处理(比如灰度化、关键部位快速定位)。这就要用到音频视频的高效处理,数据通信,物联网等技术。这不还是C 的强项吗?

总之,在人工智能开发的整个过程中,Python主要处理算法模型部分,而具体的前期数据获取和后期与外部设备部分的交互则可以用C 来实现。

说个最夸张的例子。假如我们已知X要预测Y,Python做的工作就是找到Y=aX b这测关系式,特别是a和b的具体数值最值钱。而除此之外的所有工作,从数据采集,软件架构设计,数据库设计与读写,后台运作,分布式处理一直到前端展示可能都是用的Python以外的技术(比如C )来实现。Python的工作仅仅是得到a和b,仅此而已!

不过,从目前来看,人工智能最主要和最难的部分依然是由Python来实现的。

谷歌的搜索引擎源自Page和Brin的博士论文,当时他们的程序就是用Python写的,当日他们两就决定让谷歌投入做AI时,首选的语言就是Python。在收购DeepMind之后,谷歌开始发布大量的论文,放出的代码也基本上是基于Python的,所以自然而然……

02

这是由于Python的优点决定的,它具有多平台兼容性,代码简洁、可读性强,丰富的开源库等等。

C++在人工智能方面毫无用处?

恰恰相反,C++在人工智能方面的用处很大。目前机器学习的底层框架和所以来的支持库,几乎都是在使用C++。只是相比之下,Python的需求量更大,并不代表C++就没有市场了。

如果你写的是底层的库,那么C语言是最佳的选择,如果是代码量巨大,且有大量底层库支持,保证速度不至于慢到不能接受的程度,Python还是最佳的选择。

为什么招聘的需求不同?

再看一个例子,你就明白了。来自腾讯人工智能职位的招聘。

招聘岗位有:语言识别/合成研究员,机器学习研究员、自然语言处理研究员、计算机视觉研究员、语音识别开发工程师……

阅读一下这些岗位要求,你会发现一条几乎通用:至少精通一种技术语言,包括但不限于Java、C/C++、C#、Python等。

另外,要么就是要求你同时精通C++和Python。

结合上面对C++和Python的阐述,你应该知道为什么有些企业会招聘C++,有些企业会招Python了吧。

编程语言,谁是核心?

python的人工智能和c++的有什么区别_为什么人工智能岗位有些招聘C/C 有些招聘Python到底哪门编程语言更重要(恰恰相反C++在人工智能方面的用处很大)...相关推荐

  1. dnf剑魂buff等级上限_剑魂完美换装BUFF!远古遗愿的用处很大么?

    BUFF装在游戏中存在的时间已经很长了,而从90版本上线了BUFF登记系统之后,BUFF装就再也不是大佬们才会去关心的事情了,每一个玩家基本上都需要打造自己的BUFF装,那么剑魂的BUFF装应该如何去 ...

  2. 贴片电阻上写着“0”,所谓的“零欧电阻”,在电子电路中的用处很大

    这就是0欧电阻,不能用普通电阻替代, 0欧电阻作用大致如下: 1,在电路中没有任何功能,只是在PCB上为了调试方便或兼容设计等原因. 2,可以做跳线用,如果某段线路不用,直接不贴该电阻即可(不影响外观 ...

  3. python字符串处理方法与函数有什么区别_傻傻分不清系列 | Python中各种字符串处理方法...

    Python易混淆知识系列:Pandas字符串方法和字符串内建函数,使用Python的一个优势就是字符串处理起来比较容易. Python的初学者在学习字符串内建函数的时候往往会很困惑:字符串的内建函数 ...

  4. python中序列类型和数组之间的区别_「Python」序列构成的数组

    一.Python 标准库的序列类型分为: 容器序列: 能够存放不同类型数据的序列(list.tuple.collections.deque). 扁平序列: 只能容纳一种类型的数据(str.bytes. ...

  5. python代码删掉了几行怎么撤回_仅78行代码实现微信撤回消息查看 | Python itchat

    前言 今天一大早奔来图书馆,想想了微信很简洁也很强大的一个工具,最近微信的新闻还是比较多的, 比如:小程序.时间轴等,这不是重点,重点是看到了一个基于python的微信开源库:itchat,玩了一天. ...

  6. python一个等号和两个等号的区别_请问Python语言中is与双等号==有什么区别及作用...

    试了下如下代码,似乎是行得通的? >>> n = 1 >>> n is 1 True >>> b = '1' >>> b is ...

  7. python中分支语句elif与else的区别_浅谈对python中if、elif、else的误解

    今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..." ...

  8. python如何将两个list合并成字典_怎么把两个列表合并成字典 论Python怎样将两个list合并为一个字典...

    Python怎样把2个列表合成为一个字典? 怎样把2个列表合成一个字典里了?如果你从一开始就选择低下头的话你就可以一直低着头.可是如果你一开始选择了昂着头的话你就永远不能低头了.荣辱说到底只是一瞬间的 ...

  9. python编写一个判断完数的函数过程_第4章-30 找完数 (20分)python

    所谓完数就是该数恰好等于除自身外的因子之和.例如:6=1+2+3,其中1.2.3为6的因子.本题要求编写程序,找出任意两正整数m和n之间的所有完数. 输入格式: 输入在一行中给出2个正整数m和n(1 ...

最新文章

  1. Redis基数统计——HyperLogLog小内存大用处
  2. 20172311《程序设计与数据结构》第八周学习总结
  3. VR: AR和VR演进哲学
  4. 错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.ap
  5. Hadoop源生实用工具之distcp
  6. 谷歌浏览器服务器协议url,谷歌浏览器在地址栏输入URL到页面展示时中间发生了什么?...
  7. Java内存运行机制
  8. Floyed(floyd)算法详解
  9. linux workon 命令,安装python虚拟运行环境,linux下配置workon切换虚拟环境
  10. 10款精选的后台管理系统,收藏吧!
  11. 截止到 2019 年 6 月 14 日在 LeetCode 中文版上写的题解
  12. nodejs+vue+elementui企业考勤管理系统
  13. NetXray使用说明之(6)----捕捉oicq message报文
  14. 在linux启动docker时,报告XIO: fatal IO error 错误
  15. js赋值改变后,原数据也发生改变
  16. 【大数据开发必看】可视化BI神器---FineBI
  17. docker白话版(一)简介+使用命令
  18. 关于Java,你想知道的一切,这里说透了
  19. Arduino网络编程实战-ADC数据可视化(仪表)
  20. lan pci 联想开机_电脑开机老是显示 Boot Menu ATA HDD0 PCI LAN 怎么办?禁用网卡启动...

热门文章

  1. filename: core/loader.php,使用第三方包后出现的这个错误,你们都遇到过吗?
  2. flash 用 html 播放,使用flash插件在HTML上播放音频
  3. linux系统优化篇之---top
  4. Linux安装CUDA的正确姿势
  5. All men are brothers【并查集+数学】
  6. 148. Sort List 1
  7. Git 2.19 对Diff、Branch和Grep等做了改进
  8. CES 2017前瞻之AI:无人机依旧小巧,机器人主打家庭服务
  9. vs2017下开发C++MFC动态库实现
  10. Vim常用按键操作学习