介 绍
当数据科学家最棒的事情之一就是编程。很多时候,我发现自己沉浸在为某个项目从零开始的编程时光中。当你看到你的努力孕育了一个成功的模型时,那是多么的令人兴奋!
但是作为一名数据科学家(或者程序员),在不同阶段创建代码检查点同样重要。了解上一次开始的位置非常有帮助。这样一来,如果你需要查看历史代码或者将代码分支到不同的路径,总会有回退的余地。这也是为什么 GitHub 是一个***的代码平台。
该系列的前几篇文章已经阐述了为什么每个数据科学家都应该有一个活跃的 GitHub 账户。无论是为了合作、重新开始或组合代码,或者为了教育目的,这都是增强代码能力和知识的***平台。
现在让我们进入文章的核心——机器学习代码!我挑选了一些很有意思的项目,我觉得每个数据科学家都应该尝试一下。
除了编程之外,还有许多方面与数据科学家有关。我们需要了解社区中的所有***发展,其他的机器学习专家和思想先锋在谈论什么,在一个有争议的项目中工作的道德含义是什么,等等。这也是为什么我在文章中加入了 Reddit 的讨论内容。
GitHub 热门项目
Open AI 深度强化学习资源
项目地址:https://github.com/openai/spinningup
在这个系列中我们要继续补充强化学习的资源,这里有一个迄今为止***的——OpenAI 的资源大放送!这是一个开源的教育资源,目的是让大家更容易学习深度强化学习。考虑到强化学习对大多数人来说过于复杂,这是一个对新人很友好的知识库。
这个代码库包含了一些便利的资源:
- RL 术语介绍、各种算法和基本理论
- 一篇关于如何成长为 RL 研究人员的论文
- 一份按主题分类的重要论文列表
- 简短的、独立实现的关键算法的代码库
- 一些练手的小练习
NVIDIA 的 WaveGlow
项目地址:https://github.com/NVIDIA/waveglow
这一份是为音频、语音处理领域的人们准备的。WaveGlow 是一个基于流的生成网络,用于语音合成。换句话说,它是一个可以从梅尔谱图中生成高质量语音的网络(没错,一个单独的网络!)
这个项目包含 WaveGlow 的 PyTorch 实现,以及一个预训练模型。这真的是一个不错的框架,如果你想再深入研究,可以点击下面的链接:
BERT 作为服务
项目地址:https://github.com/hanxiao/bert-as-service
我们在上个月的文章中介绍了 BERT 的 PyTorch 实现,这里是另一个版本。对于那些刚刚接触 BERT 的人,它代表转换器的双向编码器表示(Bidirectional Encoder Representations from Transformers)。它是一种预训练语言表示的方法。
BERT 的结果让 NLP 世界为之一亮,Google 的研究人员也非常友好地发布了一些 预训练模型 以方便研究。
这个代码库使用 BERT 作为语句编码器,并且作为一种可以通过 ZeroMQ 访问的服务,你只需要两行代码就可将语句映射成固定长度的特征表示。BERT 使用简单、速度极快、并且扩展性好。试试吧!
谷歌 Quick Draw 游戏 Python 实现
项目地址:https://github.com/1991viet/QuickDraw
Quick Draw 是谷歌开发的一个流行的在线游戏,神经网络会猜测你在画什么。神经网络从每幅图画中学习,提高正确猜测涂鸦内容的能力。开发人员从用户先前绘制的涂鸦中建立了一个庞大的数据集。这是一个开源的数据集,这里是数据集地址:https://github.com/googlecreativelab/quickdraw-dataset。
你现在可以基于这个仓库,用 Python 构建自己的 Quick Draw 游戏。有一个详细教程。使用这个代码,你可以运行一个应用程序,可以在计算机的摄像头前绘制,也可以在画布上绘制。
GAN 理解和可视化
项目地址:https://github.com/CSAILVision/gandissect
GAN 分解是由麻省理工学院的计算机科学和人工智能实验室的研究人员开创的方法,是一种独特的可视化和理解生成对抗网络(GAN)神经元的方法。但这并不仅限于此——研究人员还创建了 GANPaint 来展示 GAN 分解是如何工作的。
GAN 分解通过检查和操纵特定 GAN 模型的内部神经元,探索 GAN 模型学习到了什么。可以先看看研究论文和 视频演示,然后直接进入 GitHub 仓库,直接进入代码!
Reddit 讨论
为什么一开始就需要梯度下降?
在学习基本的机器学习概念时,你的脑海中是否出现过这个问题?梯度下降是我们在初期学习时一定会遇到的基本算法之一,并且已经证明该方法在 ML 中是非常有效的。但是一旦你开始阅读这篇文章,你会对之前学习的内容产生疑问。
起初这个问题直截了当,后来变成了 Reddit 高层人士之间的大讨论。我非常喜欢浏览这些评论,我相信如果你对这个领域感兴趣,对数学抱着严谨的态度,也一定会觉得它很有用的。
大规模神经网络的逆向工程
当复杂庞大的神经网络的开发人员突然消失,而没有留下任何理解网络所需的文档时,你该怎么做?这可不是凭白无故的虚构,而是实实在在会发生的一个常见情况,提问者本人就遇到过。
这种情况经常发生在开发人员身上,但是当涉及到深度学习时,完全是一种新的境况。这篇文章介绍了几种方法,科学家可以用于还原深度模型最初的设计思路。有些回答很实际,而有些则很荒谬,但每种回答都增加了一种视角。或许某天当你也遇到这种情况时,它们会帮到你。
关于 TensorFlow2.0 API 的争论
https://www.reddit.com/r/MachineLearning/comments/9ysmtn/d_debate_on_tensorflow_20_api/
这个话题下大量的评论吸引了我的注意力(撰写本文时有 110 条评论),世界上有什么话题能引起如此大的争议呢?但是,当你接着阅读时,辩论者之间完全不同的意见让人难以置信。除了 TensorFlow 被嘲笑“不是***的框架”之外,还有很多人在点赞 PyTorch(如果你使用过 PyTorch 就会明白这并不奇怪)。
这一切开始于 Francois Chollet 将自己的想法发布到 GitHub 上,在机器学习社区点了一把火。
基于预测奖励的强化学习
这篇文章中另一个 OpenAI 的项目,是他们的又一个巨大突破。标题看上去没那么特别,但是你要理解 OpenAI 团队做出了什么。正如一位 Reddit 用户所指出的,OpenAI 的工作让我们向模仿人类行为的机器更近了一步。
它耗费了大约一年的训练时间,以超越人类的水平通关了蒙提祖马的复仇游戏,这给人留下了十分深刻的印象!
找到***份数据科学家工作
https://www.reddit.com/r/datascience/comments/9xxm3w/landed_my_first_job_as_a_data_scientist/
这是为那些有抱负的数据科学家提供的文章。文章的作者阐述了他是如何得到这份令人垂涎的工作,他的背景,他从哪里学习的数据科学等。回答了这些标准问题之后,他写了一篇非常好的文章,关于处于类似情况的人们可以做些什么来实现他们的抱负。
文章后面还给出了一些有用的意见。当然,你也可以向作者提出你自己的问题。
结束语
这个月的收藏不少。我个人认为 GAN 分析的代码库相当吸引人。我目前正在尝试在自己的设备上复制它,这应该会很顺利。我也在密切关注“大规模神经网络逆向工程”这个主题,因为如果我发现我自己也处在同样的困境中,那么这个帖子给出的想法会真的很有帮助。
你最喜欢哪个 GitHub 项目?你认为哪个 Reddit 的主题能够脱颖而出?可以留言告诉我们。