机器学习实在太受欢迎,以至于它都被当做了AI本身,热度更高的深度学习更是如此。令人高兴的是,你的创业团队已经获得了资金,或者你的团队预算刚刚获得了通过,现在你即将开始进入深度学习领域。
之前,你已经从Keras, Imagenet等人工智能技术中感受到了快乐,这很令人兴奋!可是,当你真的要在商业上开始实践人工智能的时候,那么有几件事是你必须要考虑的。
接下来,我会结合几个例子来阐述我的建议,这些例子都是我去年早些时候和George Hotz一起在comma.ai研究自动驾驶时发生的。
救命,AI!我该往哪走?
1、别让数据和工程师脱节
深度学习是一项数据先行的科学。你的团队或者创业存在的全部意义就是为了让这些数据变得有意义。想想看,你只有将文字变得有意义,你才能研发你的人工智能比特币聊天机器人!你只有理解图像、视频等内容,你才能打造下一个Snapchat Stories式的自动化多媒体拼贴。
你应该把数据处理当做你工作的一个核心。一定要在这方面做好它。例如,如果你觉得“只需要15分钟”来准备和加载数据集,那么每次当你发现了更好的模型架构或者在你的Tensorflow代码中发现了漏洞的时候,都必须要白白等待这15分钟的时间。
规则很简单。版本化你的数据集,并且预处理一次,之后反复使用。一些类似Celery、Luigi这样的工具会是你的好帮手。
如果你是在一个大型的团队工作,团队中的所有任务都需要提交到一个集群,这时应该考虑一个数据解决方案,向模型训练的员工批量提供数据。千万千万不要让团队中的成员在已经知道模型有漏洞的情况下,还必须等到整个数据集都加载完毕才能修改。
小故事:comma.ai可能拥有世界上第二或第三大的驾驶数据集。在comma.ai的早期岁月,为了训练驾驶模型,需要加载时长数小时的视频到拥有700多Gb内存的大型机器上。每当George需要更多数据来训练的时候,他都会立刻增加100gb的内存。我加入的主要工作就是要为这个模型开发一个更好的版本,不过我并不想等15分钟来加载数据。相反,我从一个简单的ZMQ服务开源项目中获得了一些内容。从此,再也没有任何数据让我们干着急了,我们可以扩展我们的训练规模,并且使用更便宜的机器。现在对模型训练的限制,只剩下GPU和它的研发者了。
2、从你能可视化的东西开始
对深度学习而言,我们很幸运有Tensorboard、最近推出的Visdom、以及其他的一些工具来帮我们可视化结果。我相信数据科学一般来说是最适合可视化驱动开发的,因为可视化让你在研发的每一步都能正确处理你所遇到的问题。你没有必要非得学习d3.js来获得有用的可视化,除非你是JavaScript的狂热爱好者。
小故事:在我的离职谈话中,我咨询George的意见,希望获得一些提升工程师效率的建议(相信我,他是我见过的人当中最有效率的,我会抓住每一个机会向他学习)。他的建议是先构建一些东西出来,让这些东西能够可视化我在做的事情。George本人曾经就是这么做的。此外,George 所有的IPython笔记本都有一个滑动小部件,可以在原型设计中迅速显示参数如何影响结果。
3、尽早明确你的验证/疑难案例数据集
我把充满乐趣的可视化内容放在第二位,是为了让你被“准备数据”吓到之后,能稍作休息。可是,如果你想避免成为一只打字机上的猴子,只会随机往神经网络上添加更多的层,你必须要学会如何衡量进度。
问问自己哪些指标与优秀的可交付成果的相关性更好,以及你应该跟踪哪些数据。
这或许超过了简单的“随机验证10%的剩余数据”。验证的数据库最好与产品拥有相同的统计属性。同样的产品也能被用于追踪疑难、边缘甚至失败的案例,以制作未来的验证集。因此,你的验证集或许会不断发展,而且应该像训练集一样进行版本化。