24 KiB
我之前写过一篇机器学习的入门文章,因为我也是在入门和在学习的人,所以,那篇文章和这篇机器学习和人工智能方向的文章可能都会有点太肤浅。如果你有更好的学习方式或资料,欢迎补充。
基本原理简介
我们先来介绍一下机器学习的基本原理。
机器学习主要有两种方式,一种是监督式学习(Supervised Learning),另一种是非监督式学习(Unsupervised Learning)。下面简单地说一下这两者的不同。
我们这么来说吧,监督式学习是在被告诉过了正确的答案后的学习,而非监督式学习是在没有被告诉正确答案时的学习。所以,非监督式学习是在大量的非常乱的数据中找寻一些潜在的关系,这个成本也比较高。非监督式学习经常被用来检测一些不正常的事情发生,比如信用卡的诈骗或是盗刷。也被用在推荐系统,比如买了这个商品的人又买了别的什么商品,或是如果某个人喜欢某篇文章、某个音乐、某个餐馆,那么他可能会喜欢某个车、某个明星或某个地方。
在监督式学习算法下,我们可以用一组“狗”的照片来确定某个照片中的物体是不是狗。而在非监督式学习算法下,我们可以通过一个照片来找到其中有与其相似的事物的照片。这两种学习方式都有些有用的场景。
关于机器学习,你可以读一读 Machine Learning is Fun! ,这篇文章(中文翻译版)恐怕是全世界最简单的入门资料了。
- Data Science Simplified Part 1: Principles and Process
- Data Science Simplified Part 2: Key Concepts of Statistical Learning
- Data Science Simplified Part 3: Hypothesis Testing
- Data Science Simplified Part 4: Simple Linear Regression Models
- Data Science Simplified Part 5: Multivariate Regression Models
- Data Science Simplified Part 6: Model Selection Methods
- Data Science Simplified Part 7: Log-Log Regression Models
- Data Science Simplified Part 8: Qualitative Variables in Regression Models
- Data Science Simplified Part 9: Interactions and Limitations of Regression Models
- Data Science Simplified Part 10: An Introduction to Classification Models
- Data Science Simplified Part 11: Logistic Regression
相关课程
接下来,我们需要比较专业地学习一下机器学习了。
在学习机器学习之前,我们需要学习数据分析,所以,我们得先学一些大数据相关的东西,也就是Data Science相关的内容。下面是两个不错的和数据科学相关的教程以及一个资源列表。
之后,有下面几门不错的在线机器学习的课程供你入门,也是非常不错。
除此之外,还有很多的在线大学课程可以供你学习。比如:
更多的列表,请参看——Awesome Machine Learning Courses。
相关图书
-
- 《[Understanding Machine Learning: From Theory to Algorithms](https://www.cs.huji.ac.il/~shais/UnderstandingMachineLearning/understanding-machine-learning-theory-algorithms.pdf)》。
- 《[The Elements of Statistical Learning - Second Edition](https://web.stanford.edu/~hastie/Papers/ESLII.pdf)》。
- YouTube 上的 Google Developers 的 [Machine Learning Recipes with Josh Gordon](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) ,这9集视频,每集不到10分钟,从Hello World讲到如何使用TensorFlow,非常值得一看。
- 还有 [Practical Machine Learning Tutorial with Python Introduction](https://pythonprogramming.net/machine-learning-tutorial-python-introduction/) 上面一系列的用Python带着你玩Machine Learning的教程。
- Medium上的 [Machine Learning - 101](https://medium.com/machine-learning-101) ,讲述了好些我们上面提到过的经典算法。
- Medium上的 [Marchine Learning for Humans](https://medium.com/machine-learning-for-humans)。
- [Dr. Jason Brownlee 的博客](https://machinelearningmastery.com/blog/) ,也非常值得一读,其中好多的 “How-To”,会让你有很多的收获。
- [Rules of Machine Learning: Best Practices for ML Engineering](http://martin.zinkevich.org/rules_of_ml/rules_of_ml.pdf) ,一些机器学习相关的最佳实践。
- [i am trask](http://iamtrask.github.io) ,也是一个很不错的博客。
- 关于Deep Learning中的神经网络,YouTube上有介绍视频 [Neural Networks](https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi)。
- 麻省理工学院的电子书 [Deep Learning](http://www.deeplearningbook.org)。
- 用Python做自然语言处理[Natural Language Processing with Python](http://www.nltk.org/book/)。
- 最后一个是Machine Learning和Deep Learning的相关教程列表,[Machine Learning & Deep Learning Tutorials](https://github.com/ujjwalkarn/Machine-Learning-Tutorials)。
- [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) ,这是一篇必读的文章 ,告诉你为什么要学RNN,以及展示了最简单的NLP形式。
- [Neural Networks, Manifolds, and Topology](http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/) ,这篇文章可以帮助你理解神经网络的一些概念。
- [Understanding LSTM Networks](http://colah.github.io/posts/2015-08-Understanding-LSTMs/) ,解释了什么是LSTM的内在工作原理。
- [Attention and Augmented Recurrent Neural Networks](http://distill.pub/2016/augmented-rnns/) ,用了好多图来说明了RNN的attention机制。
- [Recommending music on Spotify with deep learning](http://benanne.github.io/2014/08/05/spotify-cnns.html) ,一个在Spotify的实习生分享的音乐聚类的文章。
-
对于监督式学习,有如下经典算法。
- [决策树(Decision Tree)](https://en.wikipedia.org/wiki/Decision_tree),比如自动化放贷、风控。
- [朴素贝叶斯分类器(Naive Bayesian classifier)](https://en.wikipedia.org/wiki/Naive_Bayes_classifier),可以用于判断垃圾邮件、对新闻的类别进行分类,比如科技、政治、运动、判断文本表达的感情是积极的还是消极的、人脸识别等。
- [最小二乘法(Ordinary Least Squares Regression)](https://en.wikipedia.org/wiki/Ordinary_least_squares),是一种线性回归。
- [逻辑回归(Logisitic Regression)](https://en.wikipedia.org/wiki/Logistic_regression),一种强大的统计学方法,可以用一个或多个变量来表示一个二项式结果。可以用于信用评分,计算营销活动的成功率,预测某个产品的收入。
- [支持向量机(Support Vector Machine,SVM)](https://en.wikipedia.org/wiki/Support_vector_machine),可以用于基于图像的性别检测、图像分类等。
- [集成方法(Ensemble methods)](https://en.wikipedia.org/wiki/Ensemble_learning),通过构建一组分类器,然后通过它们的预测结果进行加权投票来对新的数据点进行分类。原始的集成方法是贝叶斯平均,但最近的算法包括纠错输出编码、Bagging和Boosting。
-
对于无监督式的学习,有如下经典算法。
- [聚类算法(Clustering Algorithms)](https://en.wikipedia.org/wiki/Cluster_analysis)。聚类算法有很多,目标是给数据分类。有5个比较著名的聚类算法你必需要知道:[K-Means](https://en.wikipedia.org/wiki/K-means_clustering)、[Mean-Shift](https://en.wikipedia.org/wiki/Mean_shift)、[DBSCAN](https://en.wikipedia.org/wiki/DBSCAN)、[EM/GMM](https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm)、和 [Agglomerative Hierarchical](https://en.wikipedia.org/wiki/Hierarchical_clustering)。
- [主成分分析(Principal Component Analysis,PCA)](https://en.wikipedia.org/wiki/Principal_component_analysis)。PCA的一些应用包括压缩、简化数据便于学习、可视化等。
- [奇异值分解(Singular Value Decomposition,SVD)](https://en.wikipedia.org/wiki/Singular-value_decomposition)。实际上,PCA是SVD的一个简单应用。在计算机视觉中,第一个人脸识别算法使用PCA和SVD来将面部表示为"特征面"的线性组合,进行降维,然后通过简单的方法将面部匹配到身份。虽然现代方法更复杂,但很多方面仍然依赖于类似的技术。
- [独立成分分析(Independent Component Analysis,ICA)](https://en.wikipedia.org/wiki/Independent_component_analysis)。ICA是一种统计技术,主要用于揭示随机变量、测量值或信号集中的隐藏因素。
- 1. Supervised learning
- 2.3 Clustering
- 2.5. Decomposing signals in components (matrix factorization problems)
- 3. Model selection and evaluation
- 4.3. Preprocessing data
- 对于初学者来说,动手是非常非常重要的,不然,你会在理论的知识里迷失掉自己,这里有篇文章"[8 Fun Machine Learning Projects for Beginners](https://elitedatascience.com/machine-learning-projects-for-beginners)",其中为初学者准备了8个很有趣的项目,你可以跟着练练。
- 学习机器学习或是人工智能你需要数据,这里有一个非常足的列表给你足够多的公共数据 – 《[Awesome Public Datasets](https://github.com/awesomedata/awesome-public-datasets)》,其中包括农业、生物、天气、计算机网络、地球科学、经济、教育、金融、能源、政府、健康、自然语言、体育等。
-
GitHub上的一些Awesome资源列表。
-
- [Awesome Deep Learning](https://github.com/ChristosChristofidis/awesome-deep-learning)
- [Awesome - Most Cited Deep Learning Papers](https://github.com/terryum/awesome-deep-learning-papers)
- [Awesome Deep learning papers and other resources](https://github.com/endymecy/awesome-deeplearning-resources)
- 入门篇
小结
总结一下今天的内容。我首先介绍了机器学习的基本原理:监督式学习和非监督式学习,然后给出了全世界最简单的入门资料 Machine Learning is Fun!。随后给出了与机器学习密切相关的数据分析方面的内容和资料,然后推荐了深入学习机器学习知识的在线课程、图书和文章等,尤其列举了神经网络方面的学习资料。最后描述了机器学习的十大经典算法及相关的学习资料。
在机器学习和人工智能领域,我也在学习,也处于入门阶段,所以本文中推荐的内容,可能在你看来会有些浅。如果你有更好的信息和资料,欢迎补充。目前文章中给出来的是,我在学习过程中认为很不错的内容,我从中受益良多,所以希望它们也能为你的学习提供帮助。
从下篇文章开始,我们将进入前端知识的学习,包括基础和底层原理、性能优化、前端框架、UI/UX设计等内容。敬请期待。
下面是《程序员练级攻略》系列文章的目录。
《Deep Learning: Adaptive Computation and Machine Learning series》 中文翻译为《深度学习》。这本书由全球知名的三位专家伊恩·古德费洛(Ian Goodfellow)、友华·本吉奥(Yoshua Bengio)和亚伦·考维尔(Aaron Courville)撰写,是深度学习领域奠基性的经典教材。
全书内容包括3部分:第1部分介绍基本的数学工具和机器学习的概念,它们是深度学习的预备知识;第2部分系统深入地讲解现今已成熟的深度学习方法和技术;第3部分讨论某些具有前瞻性的方向和想法,它们被公认为是深度学习未来的研究重点。这本书的官网为 “deeplearningbook.org”,在GitHub上也有中文翻译 - 《Deep Learning 中文翻译》。
《Neural Networks and Deep Learning》(中文翻译版),这是一本非常不错的神经网络的入门书,在豆瓣上评分9.5分,从理论讲到了代码。虽然有很多数学公式,但是有代码相助,就不难理解了。其中讲了很多如激活函数、代价函数、随机梯度下降、反向传播、过度拟合和规范化、权重初始化、超参数优化、卷积网络的局部感受野、混合层、特征映射的东西。
《Introduction to Machine Learning with Python》,算是本不错的入门书,也是本比较易读的英文书。其是以Scikit-Learn框架来讲述的。如果你用过Scikit这个框架,那么你学这本书还是很不错的。
《Hands-On Machine Learning with Scikit-Learn and TensorFlow 》,这是一门以TensorFlow为工具的入门书,其用丰富的例子从实站的角度来让你学习。这本书对于无基础的人也是适合的,对于小白来说虽然略难但是受益匪浅。
相关文章
除了上述的那些课程和图书外,下面这些文章也很不错。
下面是一些和神经网络相关的不错的文章。
相关算法
下面是10个非常经典的机器学习的算法。
如果你想了解更全的机器学习的算法列表,你可以看一下Wikipedia上的 List of Machine Learning Algorithms。
在 A Tour of Machine Learning Algorithms ,这篇文章带你概览了一些机器学习算法,其中还有一个"脑图"可以下载,并还有一些How-To的文章供你参考。
对于这些算法,SciKit-Learn有一些文档供你学习。