Py学习  »  机器学习算法

谷歌机器学习专家江骏 详解 TensorFlow Hub & Tensor2Tensor | DevFest 2018 实录

GDG • 5 年前 • 675 次点击  

大家期待已久的

DevFest 2018 现场实录

终于出炉了!


11 月 25 日,1125 位开发者之约,你在吗?


什么?你错过了 DevFest 2018


不要担心,我们将会在接下来的几期为大家推送本次大会的嘉宾演讲实录,不在现场也能干货满满!


往期回顾:





本期我们带来机器学习技术专家江骏 详解 TensorFlow Hub & Tensor2Tensor,帮助你利用现有模块,迅速上手人工智能



1

关于演讲者

2

演讲实录

蚂蚁金服 机器学习平台 ▪ 技术专家 江骏

这次参加活动的大家既有开发者,也有很多对 AI 感兴趣,希望把这个技术运用到自己的场景里的朋友。GDG 的活动就是希望无论你是什么样的了解程度,都希望你有所收获。今天的题目叫 TensorFlow Hub 和 Tensor2Tensor ,这两个内容对写模型的同学来说可能不是特别关心,但是对于刚刚想把AI运用到自己领域里的人帮助非常大,而这个项目其实解决的也是一个易用性的问题。


TensorFlowHub


随着现在 TensorFlow 这些优秀的框架出来,在机器学习深度学习领域这项工具会越来越多。这是我引用的一个 TensorFlow Summit 上一个人说过的话,整体上机器学习领域的工程化好象要落后软件工程 15 - 20 年,你可以看到很多地方的不方便或者说没法用,这是确确实实的问题。


我们从代码的仓库先来做对比,因为有了 Git 这样的东西,改变了我们写代码和分享代码的习惯,比如现在当你一个项目写出一个demo之后,你可以和你的团队重构代码,然后你发现如果这些库写的更好的话,你可以开源,或者在公司内推广给其他伙伴。最后正是因为这些库,先是让你的这个项目开发更加高效,大家不用重复代码,甚至你做的好可贡献给全世界的开发者。


TensorFlow Hub 就是从这个过来,当你的算法工程师写好了模型之后,这个模型能不能很方便的分享给别人,像你的JAVA库一样,那样很容易被引用就可以跑出来了,尽管那个人什么都不懂。


为什么 TensorFlow Hub 这么重要呢?机器学习基本的组成部分会是这四个部分,一个是算法,第二个是数据,第三个是算力,最后一个是一些专家的经验。TensorFlow Hub 希望达到的是把所有东西提到一个可以复用的程度,就是可以复用的 package,用户只要找到就可以很方便的用,我相信这也是很多非AI工程师或者算法工程师希望达到的一个效果、一个体验。要什么算法去找,找到之后就可以用。



为什么 TensorFlow Hub 提倡一个用 Module 的概念,而不是 Model 呢?因为这两个有很大的区别:Model 是一些数据的文件,它的 INPUT、OUTPUT 是写死的。而一个  Module 是代码片断,是可以分享的。从另外一个角度来讲,一个 Model 训练好之后,被其他人去 INPUT ,然后再去改造的空间自由度没有那么高,Module 都是一些零散的代码,你作为开发者可以灵活的去组织。这对于机器学习灵活的运用,是开发者比较希望看到的一个现象。那一个 Module 里面包含什么东西呢?一个 Module 就是 Saved-Model,这些小方块在你的代码里面可以这样灵活的组合,可以复用,甚至可以插入你的新数据进来。


我们讲这么多主要介绍的是 TensorFlow Hub 是一个分享 Module 这样一个工具,或者一个 SDK,那它长什么样子呢?是大家开发者最关心的一个事情。下面我将会通过两个例子向大家介绍。


一个是图像分类模型的例子。

假如说我们要训练一个图像分类模型,我们知道打标签是很费钱费力的事情,往往你可能非常辛苦,才能准备几百张、一千张的素材,重新训练一个模型这个数量是完全不够的。但是谷歌它有非常多的预先训练好的模型,如果是在它的这个模型基础上面再加上你的分类数据,这样就可以很轻松的把你对你的图片分类达到这样一个准确度。图像分类为什么经常被提?因为把它各种转化之后在你的业务场景里很容易变成你自己的一个 IDEA 。


这是一个用TensorFlow Hub的一个示意图,这个模型,可以分成三类,但是我们把这个模型拿过来,分类层去掉,换成我们自己的类别,就得到了我们自己的模型。



现在官方有一个TensorFlow Hub这样一个模型仓库,里面已经有非常多的模型,主要左边分了几大类,文本相关的、图像相关的、视频相关的,一共是三类。你在搜索框里找你想要用的模型,这里面最顶尖的模型都在里面。


我们最后要做一个图像分类,在Image这个类别里面,我们主要关注两大块第一块是Classification,这个是直接分类的。Feature Vector的结果是一个向量,这个用途很多,类似服装的搭配就是匹配这种,所有相似度都可以用向量的方式来求得。其实你在视觉上感觉出来的相似,和模型体现出来的向量之间的相似,一致性是非常高的,大家可以自己线下尝试。为什么一致性这么高呢?是因为你使用的这个模型是预先训练过的,它对图像的识别能力已经是非常强了,所以让它直接输出向量,用这样的功能可以做你想做的一些事情,找相似之类的都可以这样做。


那么我们把这个模型怎么放进你的代码里面呢,如你所见就这么四行,四行已经包含了TensorFlow Hub所有的用法,如果是一个Python的程序员看到这个肯定可以用。



它只需要通过这个 URL,TensorFlow Hub 就可以加载这个模型,把 INPUT 加进去,然后把分类层加上,最后就可以得到你自己的输出值,这是一个你不需做任何训练,拿一个现成的模型就可以做的事情。


如果你有自己的图片,你想自己要训练,你只需要在刚才的基础上做哪几个改动呢?所有的改动都在这边,就是第四行,就是选择 train 的 graph



TensorFlow Hub上图像领域已经有很多现成的模型可以用,69个。图像相关的,基本上大体思路都跟刚才提到的两点差不多,要么分类,要么向量拿出来直接可以用,然后你可以再想别的应用场景。


再举一个文本分析的例子。

假设我们想看一个用户的评价是正面的还是负面的,除了有差评这种可以筛选出,后续做用户调查之外,你还可以过滤一部分没有用的消息。


前面我们看到 TensorFlow Hub 模型,我们做这个事情的时候,文本分析对数据的预处理还需要做一些工作,TensorFlow Hub 对文本也是提供了输出向量的功能,向量输出成 embedding。你有了向量之后就知道它偏向正面的还是负面的,可以做聚类这些事情。

第二步同样是进行搜索,我们在这里直接放上了 TensorFlow Hub 的 URL,也是今后的一种趋势,现在 AI 这么热,全球都热衷于研发新的算法,但之后大家普遍发现一个问题:你的准确率各方面都很好,但是这个公司怎么用呢?我们缺乏真正能用的版本,除此之外是怀疑它做的内容不靠谱,你也没有怀疑的依据,或者没有一个可以很方便的跟科学家互动的方式。有了 TensorFlow Hub 之后,他把它放到Hub上去,然后贴一条链接,所有人可以过去试,甚至试了之后可以反馈给这个人,让他改进这个模型。这样的话,让每个科研者的研究成果,就是很实际的立马就看到可以用。如果现场有平时经常做研究的,可以尝试做一个支持 TensorFlow Hub 的模型出来。


第三个也是跟刚才一样,你只需要把 TensorFlow Hub 的URL放进去,这个地方画了两条横线,这个是官方的仓库,今后也可以搭建自己的仓库,这个模型也有版本号,比如画线处的 1。



下面的其实跟前面第一个图像相关的模型是比较类似的,它的这个模型里面其实也包含了数据预处理的部分,基本上是你原始的INPUT进去就可以。我们现在的公司,很多场景也是在直接使用这些模型,当然有能力或者有人才储备的才会去开发出特别新的模型。


关于 TensorFlow Hub 跟广大开发者介绍到这个地方,希望大家以后想要用到 AI 技术的时候,不要第一时间想到自己去学 TensorFlow,你有一个 TensorFlow Hub,可以直接玩起来很多的模型。


Tensor2Tensor


首先这个项目号称是谷歌自己的研究人员和工程师都在用的东西,它解决了一个什么问题呢?很多搞科研的人员他可能写 TensorFlow,他要把 TensorFlow 全学一遍成本很大,比如搞生物的,我有数据,我大概知道这个地方要用一个 DNN,他是领域专家,他在领域的知识储备很深厚,但是他去写这个 code 或者如何去写算法不一定很深入,对于这部分人提供 Tensor2Tensor,缩写是 T2T这个东西的目标,就是让深度学习更加的贴近大家,然后更触手可及,然后加速机器学习相关的研究。


那Tensor2Tensor里面它的效果是什么?

它的用法有两种,一种是你可以进去看它的 CODE,用 SDK 相对高端的玩法,另外一种你直接用命令行,直接提供工具,你知道那些 Model 叫什么名字就可以串起来,你定义一个类型,你的数据集、方法可以自由变换,这种可以给科研人员很灵活的应用。


对于大多数情况,我们现在已经有这么多的模型,如果写模型的人他天生已经支持 Tensor2Tensor,你可以一行代码不用写,各个组件挑一挑,你就可以跑 Tensor2Tensor了。


TensorFlow Hub & Tensor2Tensor 区别

TensorFlow Hub 主要是关心程序员如何在你的代码引入模型,Tensor2Tensor 不仅仅是考虑模型,它把数据的获取也放在里面了,做完这个图像的模型,如果你专攻分类的或者其他什么,我新研究出一个结构,快速的把这种结构在我的模型里面跑一遍,你只要基于 Tensor2Tensor,提供数据集,你可以快速的验证它的效果,用户不需要知道数据在哪里下载,你只要想你要用哪个数据就行了。这样科研人员在做模型的时候,只需要动到他需要的那一块就可以了。



如何定义一个 Tensor2Tensor 的 Problems? Problems 相当于我指定了好了 INPUT、OUTPUT ,中间就像填空题一样,你把Problems定义清楚,具体你可能要进去看它的 CODE。


Tensor2Tensor对于开发者,它的价值在于什么呢?你可以进去看它的CODE,看他如何写的,因为它已经包括了全流程,你看它每块细节的实现,都可能给你一些启发,这个本身也是一个很好的学习 TensorFlow 的一个教材。还会有一些实际案例,应该也是可以把它拷贝下来放在自己本地运行。



总结


今天面向的是科研人员或者是普通的开发者,或者想把 AI 运用到自己业务中的某一个环节的,都可以尝试一下这两个,而不用要非常辛苦的等你全部学完 TensorFlow 才能玩 AI 。我们今天针对这样一群需求的人群,对TensorFlow Hub 和 Tensor2Tensor 做了介绍,谢谢大家。





请保持关注哦,我们后续还会分享更多嘉宾的演讲实录。

嘉宾演讲资料请点击:DevFest 2018 再见!附资料链接。



关于我们


GDG , 即 Google Developer Groups 谷歌开发者社区,是谷歌开发者部门发起的全球项目。 GDG 是面向对 Google 和开源技术感兴趣的人群而存在的公益性开发者社区,内容涵盖 Web/Chrome、Android 和其它 Google API 等。全世界各大城市都成立了自己的 GDG 社区,GDG Shanghai (上海谷歌开发者社区)也是其中之一。作为全球GDG 社区中最活跃的技术社区,GDG Shanghai 自创立之初就一直专注 Google 技术和开源技术为主的交流, 基本每周都有 Meetup,我们服务 IT 男,更服务 IT 女!


社区中的各位组织者均是来自各个行业有着本职工作的互联网从业者,我们需要更多新鲜血液的加入!如果你对谷歌技术感兴趣,业余时间可调配,认同社区的价值观,愿意为社区做出贡献,欢迎加入我们成为社区志愿者!

加入方式:关注上海 GDG 微信公众号:GDG_Shanghai,并回复:志愿者。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/3aWc7krXOp
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/27198
 
675 次点击