最近在学习机器学习,深度学习,自然语言处理,统计学习方法等知识,所以决定自己将学习的相关算法用Python实现一遍,并结合GitHub上相关大牛的代码进行改进,本项目会不断的更新相关算法,欢迎star,fork和关注。
主要包括:
1.吴恩达Andrew Ng老师的机器学习课程个人笔记 Python实现,
2.deeplearning.ai(吴恩达老师的深度学习课程笔记及资源) Python实现,
3.李航《统计学习方法》 Python代码实现,
4.牛津大学xDeepMind 自然语言处理 Python代码实现,
5.LeetCode刷题,题析,分析心得笔记 Java和Python代码实现,
6.TensorFlow人工智能实践代码笔记 北京大学曹健老师课程和TensorFlow:实战Google深度学习框架(第二版) Python代码实现,
附带一些个人心得和笔记。GitHub上有很多机器学习课程的代码资源,我也准备自己实现一下,后续会更新笔记,代码和百度云网盘链接。
这个项目主要是学习算法的,并且会不断更新相关资源和代码,欢迎关注,star,fork!
Min's blog 欢迎访问我的博客主页!
(Welcome to my blog website !)https://liweimin1996.github.io/
吴恩达老师的机器学习课程个人笔记 Python代码实现
https://study.163.com/course/introduction/1004570029.htm
- ex1-linear regression 作业1 线性回归
有一个变量和多个变量。 - ex2-logistic regression 作业2 logistic回归
包括正则化。 - ex3-neural network 作业3 神经网络
使用两种不同的方法识别手写数字:one-vs-all逻辑回归,以及前向传播预训练的神经网络。 - ex4-NN back propagation 作业4 神经网络反向传播
构建和训练神经网络,包括反向传播,并将其用于手写数字识别。 - ex5-bias vs variance 作业5 贝叶斯和方差
包括学习曲线和多项式回归。 - ex6-SVM 作业6 支持向量机
6.1:在一些样本2D数据集上展示scikit-learn SVM,其中包含线性和高斯核函数。
6.2:使用自然语言处理和scikit-learn SVM构建电子邮件垃圾邮件分类器。 - ex7-kmeans and PCA 作业7 kmeans算法和主成分分析
7.1:构建k-means聚类算法并将其用于图像压缩。
7.2:构建PCA算法并将其用于图像压缩和可视化。 - ex8-anomaly detection and recommendation 作业8 异常检测和推荐
8.1:使用多元高斯模型进行异常检测。 Precision, recall, F1 score.
8.2:构建推荐系统并用它来推荐电影。
deeplearning.ai(吴恩达老师的深度学习课程笔记及资源) Python代码实现
https://mooc.study.163.com/smartSpec/detail/1001319001.htm
Week1 Introduction to deep learning 深度学习概论
Week2 Neural Networks Basics 神经网络基础
Week3 Shallow Neural networks 浅层神经网络
Week4 Deep Neural Networks 深层神经网络
Week1 Practical aspects of Deep Learning(Initialization-Regularization-Gradient Checking) 深层学习的实用
Week2 Optimization algorithms 优化算法
Week3 Hyperparameter tuning, Batch Normalization and Programming Frameworks 超参数调试&正则化&框架
Week1 Foundations of Convolutional Neural Networks 卷积神经网络
Week2 Deep convolutional models: case studies 深层卷积神经网络实例探究
Week3 Object detection 目标检测
Week4 Special applications: Face recognition & Neural style transfer 特殊的应用
Week1 Recurrent Neural Networks 循环序列模型
Week2 Natural Language Processing & Word Embeddings 自然语言处理与词嵌入
Week3 Sequence models & Attention mechanism 序列模型和注意力机制
《统计学习方法》的代码实现李航老师 Python代码实现
http://vdisk.weibo.com/s/vfFpMc1YgPOr
- 第 1 章 统计学习方法概论
- 第 2 章 感知机 [感知机代码-原始形式] [感知机代码-对偶形式]
- 第 3 章 k近邻算法 [k近邻代码] [kd树简化版代码] [kd树完整版代码] [错误kd树代码]
- 第 4 章 朴素贝叶斯法
- 第 5 章 决策树
- 第 6 章 逻辑斯谛回归与最大熵模型
- 第 7 章 支持向量机
- 第 8 章 提升方法 [AdaBoost代码]
- 第 9 章 EM算法及其推广
- 第 10 章 隐马尔科夫模型
- 第 11 章 条件随机场
- 第 12 章 统计学习方法总结
我最近在上这门课程,所以也顺便学习一下。
牛津大学xDeepMind 自然语言处理
https://study.163.com/course/introduction/1004336028.htm
https://github.com/soulmachine/leetcode
这位作者写的十分好,我也会部分参考TA的思路和答案
北京大学曹健老师课程和TensorFlow:实战Google深度学习框架(第二版) Python代码实现
- 第一讲概述
- 第二讲python的常用语法
- 第三讲神经网络的搭建八股
- 第四讲神经网络的优化
- 第五讲实践前向传播和反向传播
- 第六讲手写数字图片输出识别
- 第七讲卷积神经网络
- 第八讲卷积神经网络实践
懒得看书就直接用了著名的麻省理工公开课:线性代数,深入浅出效果拔群,以后会用到的SVD、希尔伯特空间等都有介绍;
http://open.163.com/special/opencourse/daishu.html
还是因为比较懒,也就直接用了著名的斯坦福大学公开课 :机器学习课程,吴恩达教授的老版cs229的视频,讲的非常细(算法的目标->数学推演->伪代码)。这套教程唯一的缺点在于没有介绍最近大火的神经网络,但其实这也算是优点,让我明白了算法都有各自的应用领域,并不是所有问题都需要用神经网络来解决;
http://open.163.com/special/opencourse/machinelearning.html
多说一点,这个课程里详细介绍的内容有:一般线性模型、高斯系列模型、SVM理论及实现、聚类算法以及EM算法的各种相关应用、PCA/ICA、学习理论、马尔可夫系列模型。课堂笔记在:CS 229: Machine Learning (Course handouts),同样非常详细。
http://cs229.stanford.edu/materials.html
继续直接使用了著名的——机器学习 | Coursera ,还是吴恩达教授的课程,只不过这个是极简版的cs229,几乎就是教怎么在matlab里快速实现一个模型(这套教程里有神经网络基本概念及实现)。这套课程的缺点是难度比较低,推导过程非常简略,但是这也是它的优点——让我专注于把理论转化成代码。
https://www.coursera.org/learn/machine-learning/home/welcome
还是因为比较懒,搜到了cs231n的课程视频 CS231n Winter 2016 - YouTube ,李飞飞教授的课,主讲还有Andrej Karpathy和Justin Johnson,主要介绍卷积神经网络在图像识别/机器视觉领域的应用(前面神经网络的代码没写够?这门课包你嗨到爆到处都是从零手写)。这门课程的作业就更贴心了,直接用Jupyter Notebook布置的,可以本地运行并自己检查错误。主要使用Python以及Python系列的科学计算库(Scipy/Numpy/Matplotlib)。课堂笔记的翻译可以参考 智能单元 - 知乎专栏,主要由知友杜客翻译,写的非常好~
https://www.youtube.com/playlist?list=PLkt2uSq6rBVctENoVBg1TpCC7OQi31AlC
https://zhuanlan.zhihu.com/p/22339097
在多说一点,这门课对程序员来说比较走心,因为这个不像上一步中用matlab实现的作业那样偏向算法和模型,这门课用Python实现的模型同时注重软件工程,包括常见的封装layer的forward/backward、自定义组合layer、如何将layer组成网络、如何在网络中集成batch-normalization及dropout等功能、如何在复杂模型下做梯度检查等等;最后一个作业中还有手动实现RNN及其基友LSTM、编写有助于调试的CNN可视化功能、Google的DeepDream等等。(做完作业基本就可以看懂现在流行的各种图片风格变换程序了,如 cysmith/neural-style-tf)另外,这门课的作业实现非常推崇computational graph。
https://github.com/cysmith/neural-style-tf
因为最近手头有论文要撕,时间比较紧,第四步做完就先告一段落。后面打算做继续业界传奇Geoffrey Hinton教授的Neural Networks for Machine Learning | Coursera,再看看NLP的课程 Stanford University CS224d: Deep Learning for Natural Language Processing……
https://www.coursera.org/learn/neural-networks/home/welcome
http://cs224d.stanford.edu/
PS:一直没提诸如TensorFlow之类的神器,早就装了一个(可以直接在conda中为Tensorflow新建一个env,然后再装上Jupyter、sklearn等常用的库,把这些在学习和实践ML时所用到的库都放在一个环境下管理,会方便很多),然而一直没时间学习使用,还是打算先忍着把基础部分看完
关于用到的系统性知识,主要有:线性代数,非常重要,模型计算全靠它~一定要复习扎实,如果平常不用可能忘的比较多;高数+概率,这俩只要掌握基础就行了,比如积分和求导、各种分布、参数估计等等。(评论中有知友提到概率与数理统计的重要性,我举四肢赞成,因为cs229中几乎所有算法的推演都是从参数估计及其在概率模型中的意义起手的,参数的更新规则具有概率上的可解释性。对于算法的设计和改进工作,概统是核心课程,没有之一。
当拿到现成的算法时,仅需要概率基础知识就能看懂,然后需要比较多的线代知识才能让模型高效的跑起来。比如最近做卷积的作业, 我手写的比作业里给出的带各种trick的fast函数慢几个数量级,作业还安慰我不要在意效率,岂可修!)需要用到的编程知识也就是Matlab和Numpy了吧,Matlab是可以现学现卖的;至于Python,就看题主想用来做什么了,如果就是用来做机器学习,完全可以一天入门,如果想要做更多好玩的事,一天不行那就两天。
斯坦福大学2014(吴恩达)机器学习教程中文笔记
课程地址:https://www.coursera.org/course/ml
Machine Learning(机器学习)是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演译。在过去的十年中,机器学习帮助我们自动驾驶汽车,有效的语音识别,有效的网络搜索,并极大地提高了人类基因组的认识。机器学习是当今非常普遍,你可能会使用这一天几十倍而不自知。很多研究者也认为这是最好的人工智能的取得方式。在本课中,您将学习最有效的机器学习技术,并获得实践,让它们为自己的工作。更重要的是,你会不仅得到理论基础的学习,而且获得那些需要快速和强大的应用技术解决问题的实用技术。最后,你会学到一些硅谷利用机器学习和人工智能的最佳实践创新。
本课程提供了一个广泛的介绍机器学习、数据挖掘、统计模式识别的课程。主题包括:
(一)监督学习(参数/非参数算法,支持向量机,核函数,神经网络)。
(二)无监督学习(聚类,降维,推荐系统,深入学习推荐)。
(三)在机器学习的最佳实践(偏差/方差理论;在机器学习和人工智能创新过程)。本课程还将使用大量的案例研究,您还将学习如何运用学习算法构建智能机器人(感知,控制),文本的理解(Web搜索,反垃圾邮件),计算机视觉,医疗信息,音频,数据挖掘,和其他领域。
本课程需要10周共18节课,相对以前的机器学习视频,这个视频更加清晰,而且每课都有ppt课件,推荐学习。