關于機器學習,這些開源項目必不可少
雷鋒網 AI 研習社按:本文主要編譯于 Github 的文章「Getting started with machine learning」(原文鏈接: https://github.com/collections/machine-learning )。另外,雷鋒網 AI 研習社在原文的基礎上補充了部分開源項目,為 AI 開發者提供更加詳細的 AI 項目和資源。
機器學習是用數據來學習、概括、預測的研究。近幾年,隨著數據的開發、算法的改進以及硬件計算能力的提升,機器學習技術得以快速發展,不斷延伸至新的領域。從模式識別到電子游戲,開發者們通過訓練 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