warmhug

技术成长、工作感悟、教训反思

人人都能玩的 TensorFlow - 用深度学习增强产品体验

明天除夕,16年农历年的最后一天,大家新年快乐!

前情简介:关于 AI

13~14 年许多人都在说 O2O,15~16 年许多人都在说 VR/AR,近半年里许多人的话题都转向了它。几个典型事件:微软、苹果、Google 等几大公司联合起来投入AI;无人驾驶汽车技术;16年初和17年初阿尔法狗横扫围棋界;美剧《西部世界》的火热;花费 100 个小时,Facebook 扎克伯格亲写的人工智能助理 Jarvis 在圣诞节前火爆科技圈;许多 AI 顶级专家从学校加入到企业;国内外公司相关领域的投资开始越来越多。。。但理性的说,虽然是潮流涌动,但如果你对这方面没兴趣或没需求、大可不必在此浪费时间;而如果你想找机会应用它,那你不该错过。

很多事情说的多了关注多了,就会产生泡沫或抱有不切实际的期望。就像 AI 能做一些事,但其实有更多不能做或做不好的事情。所以有人发文《为什么现在的人工智能助理都像人工智障》,从人的角度看现状它的确就是个智障,在认知和情感等 EQ 表现上目前的 AI 是完全的无能,这点不说比不上人类、就连小猫小狗和海豚都比不上。

纪录片《海豚湾》里有句话说的很好:“智能并不是最重要的,最重要的是意识(感觉就是 EQ 比 IQ 重要的意思);海豚和人类一样拥有自我意识,也就是说,当我们照镜子时、我们清楚地知道,我们看到的是什么(无自我意识的生物会将镜中影像当成另一个生物)”。再回到 AI 上、它想要有 EQ,可能需要依靠神经科学和脑科学的突破、或者是有效的新思路新方法的产生才行。

不管怎样,微软高管说:未来所有产品都将加入 AI 技术。这点个人觉得其他公司的产品或许也该是如此。我们或许是时候考虑应用 AI 了。

回到正题:利用 TensorFlow 增强产品体验

TensorFlow 是目前最流行的深度学习框架,一般最流行的东西、各方面文档等都会做的比较完善、所以上手门槛也不会很高。事实确实如此,哪怕你完全不懂 AI 技术、甚至完全不懂编程都没关系,你可以仿照 TensorFlow 里提供的示例做一个自己的东西。

如果是懂点编程的同学可能会对这个项目有很好的第一感觉:开源一年在 Github 的关注数达到 40,000 ,应该是近些年增长最快的项目。除了知名编程语言 C++ 和 Python 做基础外,还有大家熟悉的 Java / Go / OC 等做 client,其所有的文件格式都是基于 Protocol Buffers,也涉及到 GPU / 分布式等架构方式,就连新潮的 TypeScript / Polymer 等都用了起来,还有一些懂 JS 的同学很早就开始筹划做 JavaScript (Node.js) Wrapper API 了。

以上还不够震撼?那再来一句极客学院的很唬人的话:你正在阅读的项目(TensorFlow)可能会比 Android 系统更加深远地影响着世界!

TensorFlow 所有的文档内容加起来也不是很多,建议通读一遍。如果对 AI 技术不熟(比如不知道为什么发明个新词叫深度学习呢、机器学习这个词不是已经挺好了~),也忘了大学里有学过的线性代数等基础数学知识,那么遇到文档里的各种数学公式、CNN / RNN 等名词看不懂、就先忽略过去吧。我们现在的重点是会用就行。

一个小目标:识别一些自己标记的东西

大概步骤如下:

现在官方提供的模型,只能识别特定的大概一千个物体,比如你摄像头对着电脑网页、它只会识别出这是 website,而不能更详细地识别出网页上具体的某一区域叫什么。现在想让它识别网页上的“搜索框”、如下图,给它的标记名叫”searchbar”,需要截取几十到几百张这种搜索框的不同状态的图片,输入进去训练即可。

我们按照这个 How to Retrain Inception’s Final Layer for New Categories 文档来训练自己的数据,这是一个在提前训练好的 Inception v3 model 基础之上进行的训练,可以用 TensorBoard 可视化地查看训练过程。你需要做的就是参考文档里的步骤一步步做即可。

过程中,有些编译步骤可能需要一个多小时时间,耐心等待其完成。训练好之后,我们就可以把它集成到 Android 或 iOS app 里了。当然,集成过程需要修改一些配置,所幸官方代码里都已标注好了怎么修改,以安卓为例,需要按这些注释来做修改 (当前 tensorflow 版本是 v0.12.0 和 v1.0.0-alpha)。

如果一切顺利,打开重新编译好的 app ,扫描任何类似这样的搜索框,它就能显示出这是“searchbar”,类似的也可以训练和识别其他物体。回头看看、这个过程是非常简单的。

扩展:利用 AI 激发新的产品体验

近半年自己最常用的三个 AI 相关 APP: Google Allo,微软小娜,度秘。

Google Allo 将谷歌助理融入到聊天中,这是一大特色、它能帮助你跟别人聊天,提示你在聊天中该回复什么话。

更多想象下:如果一个人从小就有个贴身智能助理在身边,它时刻跟你一起,就能记录下你不同年纪、不同心情下的不同聊天或做事方式,当你年纪渐长,成熟稳重时,可能会忘记当年年幼无知、年少轻狂时的想法和说的话,没关系,它能帮你想起来。

微软小娜里最有趣的功能我觉得是,唱歌。听一段不太标准但很真实的歌喉随便唱几句,有时比音乐软件里正经播放的歌曲要有趣。

度秘里最有趣的功能我觉得是,写诗。你给他四个字,他就能帮你做出来一首诗,满足一下你偶尔的文艺情结,增加一点生活趣味。但用用会发现,它做出来的诗时常跟你给它的题目的意思完全不对应,因为它还很难准确理解你的话。

这些助理目前的智能主要体现在这些地方:你提问一个问题,他首先会给你最接近准确的答案,接着会给你推荐相关的答案、或提问方式。所以即便你的提问不对,他也在尽量帮助你找到对的提问方式或者更准确的答案。这些助理都会记录你的使用习惯,会更加理解你。

另外一个 AI 助理能提供一连贯的,全面的,一站到底的服务那是最好的。举个实际场景:比如我没出国过,我说我想在过年时候出国玩,我期望 AI 助理能告诉我这些内容:

  • 他知道我有没有办护照,并且会通知我最好在什么时间之前把护照办好、给我说明办护照的流程,还要通知我办签证最短或最长要用多长时间;
  • 知道我最近的想法,推荐出我想去的地方,他能推荐我坐船去,还是坐飞机去,能帮我筛选出不是半夜或凌晨出发或到达的航班,他能帮我找到哪些平台有优惠机票;
  • 他可能知道我不是很紧急,比如中途转机香港玩一天也没关系,能帮我找到目的地性价比高的酒店,能帮我规划符合我想法的路线,沿途像个导游一样能帮我介绍风景名胜等等。

现在国内很多互联网产品里也都加入了 AI 功能,有很多生产型企业都用机器人代替人工、节省成本。据说已经有人在研究自动写代码的 AI 了,那么还算有点技术含量的程序员是不是也面临失业风险呢?个人觉得是有可能的~ 比如 Google 这样的公司用的技术大多都是自己研发的,或许就能建立内部代码的专项智能搜索,根据输入的需求,自动生成代码片段,再自动生成项目,加入自动化运行功能、自动调试检验是否运行正确。

相信其他更多更有想象力的东西都会产生。希望 AI 能带来更美好的产品创新和产品体验!


January 26, 2017 | by warmhug | product