Python 与机器学习

Python & Machine Learning


  • 首页

  • 分类

  • 标签

  • 归档

  • 搜索

PyML

发表于 2017-04-19

【 这里是本博客的配套 GitHub,所有涉及到的代码都涵盖在了里面;如果觉得本博客有帮助的话,希望观众老爷们能给个 star ~ ( σ’ω’)σ 】

其实要说搭博客的想法的话,在相当久之前就已经有了。然而由于种种原因(懒),导致一直搁置至今

不过搭一个相对好看的博客比我想象的要难不少,我在经历了打算从头搭建打算使用 WordPress打算使用 Jekyll 这三个阶段后,最终还是选择了 Hexo + Next 主题这一个组合

主旨

虽然我大言不惭地将站点命名为了“Python 与机器学习”,但其实该博客更像是针对我的个人 repo——MachineLearning 的一个文档(另一个文档为我的个人知乎专栏)。这里所说的文档不仅包括了代码的实现思路、调用方法,还包括了背后的理论基础等等。不过囿于本人学识尚浅,许多地方可能都会有错漏,届时希望大家能不吝指出 ( σ’ω’)σ

内容

由于我也在苦逼绝赞学习中,所以内容会不断更新;特别是在当前这种几乎一个星期就出一个新技术的时代,“啃老本”这种想法几乎是不可行的(说得好像你有老本似的)

截止至 2017-4-19、本博客的内容包括:

  • Python 与机器学习绪论(Introduction)
  • 朴素贝叶斯(Naive Bayes)
  • 决策树(Decision Tree)
  • 集成学习(Ensemble Learning)
  • 支持向量机(Support Vector Machine)
  • 神经网络(Neural Network)
  • 卷积神经网络(Convolutional Neural Network)
  • 具体的应用实例(Applications)

对于有相应博客的内容,链接会导向相应的综述,否则会导向相应的源代码

卷积神经网络综述

发表于 2017-05-06 | 分类于 卷积神经网络

卷积神经网络是 Convolutional Neural Network 的直译、常简称为 CNN,它是当今非常火热的话题——深度学习中的一种具有代表性的结构。如果提起卷积神经网络的话、许多人可能都会觉得是一个非常深奥的魔法,但如果不考虑其背后的数学理论而只想理解并应用的话、学习 CNN 其实也并不是特别困难(而且事实上相比起比较传统的机器学习算法而言、CNN 经常会由于其缺乏理论支撑而受到批评)

以下是目录:

  • 从 NN 到 CNN
  • 利用 Tensorflow 重写 NN
  • 将 NN 扩展为 CNN
  • “卷积神经网络”小结

需要特别指出的是,本系列的文章基本不会涉及任何卷积神经网络数学上的细节;一方面是因为它们相当繁复、另一方面则是因为它们也并不完全 Make Sense。卷积神经网络在因其效果拔群而大红大紫的同时、其“黑箱”程度也是非常著名的,因此我们会较多地从实现和应用层面来介绍卷积神经网络、理论方面的叙述则大多采取直观说明的方式来进行

此外,CNN 的性能分析会放在具体的应用实例(Applications)中进行,故本系列将略去这部分的内容

从 NN 到 CNN

发表于 2017-05-06 | 分类于 卷积神经网络

从名字也可以看出、卷积神经网络(CNN)其实是神经网络(NN)的一种拓展,而事实上从结构上来说,朴素的 CNN 和朴素的 NN 没有任何区别(当然,引入了特殊结构的、复杂的 CNN 会和 NN 有着比较大的区别)。本文主要会说一下 CNN 的思想以及它到底在 NN 的基础上做了哪些改进,同时也会说一下 CNN 能够解决的任务类型

阅读全文 »

利用 Tensorflow 重写 NN

发表于 2017-05-06 | 分类于 卷积神经网络

本文将会使用 Tensorflow 框架来重写我们上个系列中实现过的 NN、观众老爷们可能会需要知道 Tensorflow 的基本知识之后才能比较顺畅地阅读接下来的内容;如果对 Tensorflow 基本不了解的话、可以先参见我写的一篇 Tensorflow 的应用式入门教程

阅读全文 »

将 NN 扩展为 CNN

发表于 2017-05-06 | 分类于 卷积神经网络

往简单里说、CNN 只是多了卷积层、池化层和 FC 的 NN 而已,虽然卷积、池化对应的前向传导算法和反向传播算法的高效实现都很不平凡,但得益于 Tensorflow 的强大、我们可以在仅仅知道它们思想的前提下进行相应的实现,因为 Tensorflow 能够帮我们处理所有数学与技术上的细节

阅读全文 »

“卷积神经网络”小结

发表于 2017-05-06 | 分类于 卷积神经网络
  • 相比起 NN 的全连接来说、CNN 使用了局部视野和权值共享,这使得 CNN 更适合处理结构性的数据(比如图像)
  • Tensorflow 框架能帮助我们处理梯度并更新参数,这可以给实现带来极大的便利
  • CNN 大体上可分为“卷积块”与“NN 块”两部分,其中卷积块为特征提取器、NN 块为“附带”的分类器
  • 比起 NN 而言、CNN 的参数量会少很多,这也是许多近现代的 CNN 网络不采用全连接层而采用全局平均池化层(GAP)的原因之一
  • CNN 的强大之处更多在于其提取特征的能力而非分类的能力,使用 CNN 进行特征提取后、再使用其它模型(比如 NN)进行相应的训练是一种常见的做法。事实上、这种做法有个学名叫做“迁移学习(Transfer Learning)”,感兴趣的观众老爷可以参见这里

神经网络综述

发表于 2017-05-05 | 分类于 神经网络

之前所介绍的算法可算是比较“经典”、“传统”的算法;它们其实都属于统计学习方法、有着相当深厚的统计学理论作为支撑。而本章所讲的神经网络(Neural Network,常简称为 NN)则是近代比较火热的算法。尽管该算法的提出已经颇有些年头,相应的数学理论亦提出了不少,而且也有不少人认为它归于统计学习方法,但相当多的人还是认为,该算法更像一门“手艺”

以下是目录:

  • 从感知机到多层感知机
  • 前向传导算法
  • 反向传播算法
  • 特殊的层结构
  • 参数的更新
  • 朴素的网络结构
  • “大数据”下的网络结构
  • 相关数学理论
  • “神经网络”小结

从感知机到多层感知机

发表于 2017-05-05 | 分类于 神经网络

“神经网络”这个概念本身其实是一个庞大的交叉学科,而在机器学习领域里、“神经网络”则是“人工神经网络(Artificial Neural Network)”的简称。顾名思义,本系列所将介绍的神经网络模型多少借鉴了神经生理学关于神经网络的研究、并尝试通过数学建模来描述机器智能,这也正是为何许多机器学习相关书籍对神经网络的介绍都会从“真正的”神经网络开始(比如介绍细胞体、树突、轴突和突触之类的)。然而个人认为,直到目前为止、我们一般应用的神经网络结构其实和真正的神经网络之结构之间的差距还是相当大的;如果按照生物学意义上的神经网络来理解人工神经网络的话,虽说从直观上来说可能更加易懂、但在逻辑和原理的层面上反而会造成混淆

阅读全文 »

前向传导算法

发表于 2017-05-05 | 分类于 神经网络

时至今日,在各个编程语言的世界里、神经网络的成熟的库都可谓不在少数;这可能就导致有许多人虽然能够熟练应用神经网络、但对于其内部机制却不甚了解。事实上就笔者所展开的简单调查来看,有不少平时经常用到神经网络的程序员其实对神经网络的数学部分有一种“望而生畏”的感觉、其中各种梯度的计算更是让他们发出“眼花缭乱”的感叹

虽然很想说一些令人鼓舞的话,但是如果从繁复性来说、神经网络算法确实是我们目前为止介绍过的算法中推导步骤最多的;不过可以保证的是,如果把算法的逻辑理清,那么静下心来好好演算一下的话、就会觉得它比想象中的简单

阅读全文 »

反向传播算法

发表于 2017-05-05 | 分类于 神经网络

本文要讲的就是可能最让我们头疼的反向传播(Backpropagation,常简称为 BP)算法了。事实上,如果不是要做理论研究而只是想快速应用神经网络来干活的话,了解如何使用 Tensorflow 等帮我们处理梯度的成熟的框架可能会比了解算法细节要更好一些(我们会把本章实现的模型的 Tensorflow 版本放在下一个系列中进行说明)。但即使如此,了解神经网络背后的原理总是有益的,在某种意义上它也能告诉我们应该选择怎样的神经网络结构来进行具体的训练

阅读全文 »
12…6
射命丸咲

射命丸咲

一个啥都想学的浮莲子

57 日志
7 分类
6 标签
RSS
GitHub 知乎
© 2017 射命丸咲
由 Hexo 强力驱动
主题 - NexT.Muse