2017 开源机器学习项目¶
机器学习是用数据来学习、概括、预测的研究。近几年,随着数据的开发、算法的改进以及硬件计算能力的提升,机器学习技术得以快速发展,不断延伸至新的领域。从模式识别到电子游戏,开发者们通过训练 AI 算法实现了各种各样好玩的应用:
- MarI/O - 一段用神经网络和遗传算法写的程序,可以玩「超级马里奥世界」。
- Richard-An/Wechat_AutoJump - AI 玩微信跳一跳的正确姿势。
- lllyasviel/style2paints - AI 漫画线稿自动上色工具。
- tensorflow/magenta - 机器智能音乐与艺术生成器。
- jbhuang0604/awesome-computer-vision - 很不错的计算机视觉资源。
虽然研究者们在机器学习领域取得了让人兴奋的成果,不过我们仍然处于机器学习发展的早期阶段。 对于刚接触机器学习的开发者来讲,想要理解什么是机器学习,首先要搞懂三个部分:输入、算法、输出。
输入:驱动机器学习的数据¶
输入指的是算法和训练模型需要的数据集,从源代码到统计数据,数据集可以包括任何东西:
- GSA/data - 来自美国总务管理局的分类数据。
- GoogleTrends/data - Google 开源数据的索引
- nationalparkservice/data - 一个非官方的美国国家公园数据库。
- fivethirtyeight/data - 新闻网站 FiveThirtyEight 上的一些代码和数据。
- zalandoresearch/fashion-mnist - 一个类似 MINIST 的时尚产品数据库。
- beamandrew/medical-data - 机器学习医疗数据清单。
- src-d/awesome-machine-learning-on-source-code - 与机器学习相关的链接和论文的代码。
- PAIR-code/facets - 机器学习数据集可视化工具。
由于我们需要这些数据来训练机器学习算法,所以获取高质量的数据集是如今机器学习领域的最大挑战之一。
算法:如何处理和分析数据¶
机器学习算法可利用数据执行特定的任务,最常见的机器学习算法有如下几种:
1.监督学习。¶
监督学习使用以及标注过的和结构化的数据,通过制定一组输入数据集合所需的输出,机器可以学习如何识别目标并且映射到其他的学习任务上。 例如,在决策树的学习中,数值可通过应用一组输入数据的决策规则来预估:
- igrigorik/decisiontree - 基于 ID3 的机器学习决策树算法的实现。
2.无监督学习¶
无监督学习是使用非结构化数据来发现模式和结构的过程。监督学习可能会使用电子表格作为数据的输入,而无监督学习可能会用来理解一本书或者一篇文章。 例如,无监督学习是自然语言处理中非常流行的方法:
- keon/awesome-nlp - 专门用于自然语言处理(NLP)的资源清单列表。
3.增强学习¶
增强学习可要求算法实现一个特定的目标,它通过奖惩的方式使 Agent 行为性能达到最大。 例如,增强学习可以用于开发自动驾驶汽车或者教会一个机器人如何生产物件。
- openai/gym - 一个用于开发和比较增强学习算法的工具包。
- aikorea/awesome-rl - 专门用于强化学习的资源清单。
一些可以用于练习的项目:¶
- umutisik/Eigentechno - 音乐循环的主成分分析
- jpmckinney/tf-idf-similarity - 在 Ruby gem 上用 tf * idf 来计算文本之间的相似度。
- scikit-learn-contrib/lightning - Python 的大规模线性分类、回归和排名。
- gwding/draw_convnet - 用于说明卷积神经网络(ConvNet)的 Python 脚本。
一些库和工具:¶
- scikit-learn/scikit-learn - 用 Python 实现机器学习。
- tensorflow/tensorflow - 一个采用数据流图(data flow graphs),用于数值计算的开源软件库
- Theano/Theano - 可以高效定义、优化、评估涉及多维数组数学表达式的 Python 库。
- shogun-toolbox/shogun - 高效的开源机器学习工具。
- davisking/dlib - 用 C++ 编写的机器学习与数据分析应用工具包。
- apache/predictionio - 面向开发者和机器学习工程师的机器学习服务器,基于 Apache Spark,HBase 和 - Spray。
更多的深度学习框架,可查看文章:迎来 PyTorch,告别 Theano,2017 深度学习框架发展大盘点
输出:最终的结果¶
机器学习的输出结果可以是一种识别颜色的模式,也可以是简单的网页色调分析,或者是某个置信区间里的预估值。总之,输出的结果可以是任何事情。
获取输出结果的方式有以下几种:
- 分类:为数据集中的每一个项目生成一个输出值
- 回归:给出数据,预测所考虑变量最可能的值
- 聚类:将相似模式的数据聚集在一起
以下是几个应用例子:
- deepmind/pysc2 - DeepMind 用增强学习玩星际争霸 2。
- gokceneraslan/awesome-deepbio - 一个用于生物计算领域的深度学习应用程序清单。
- buriburisuri/ByteNet - 用 DeepMind ByteNet 实现的,基于 Tensorflow 的法语转英语翻译器。
- OpenNMT/OpenNMT - Torch 上的开源神经机器翻译。
准备好开始上手机器学习了吗?¶
好好利用开源项目来掌握机器学习,你也可以像下面的开发者那样贡献出你的资源:
机器学习:¶
- josephmisiti/awesome-machine-learning - 一些机器学习框架、库和软件的清单。
- ujjwalkarn/Machine-Learning-Tutorials - 机器学习和深度学习的教程、文章以及其他的一些资源。
深度学习¶
- awesome-deep-learning一些不错的深度学习教程、项目和社区。
- fastai/courses - fast.ai 课程。
Tensorflow¶
- jtoy/awesome-tensorflow - TensorFlow 资源清单 http://tensorflow.org。
- nlintz/TensorFlow-Tutorials - TensorFlow 的简单教程。
- pkmital/tensorflow_tutorials - 一些 TensorFlow 的基础知识和有趣的应用。
佛¶
最后,雷锋网 AI 研习社再附上两个程序员佛系注释,愿佛祖保佑你们编程无 Bug。