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