提交 cf58d644 编写于 作者: W wizardforcel

style

上级 d6c880d0
......@@ -18,7 +18,7 @@
## 目录结构
* 0.) [前言](docs/0.前言.md)
* [零、前言](docs/0.前言.md)
### 第一部分 机器学习基础
......@@ -45,7 +45,7 @@
### 附录
* [附录 C、SVM 对偶问题](docs/C.SVM_对偶问题.md)
* [附录 D、自动求导](docs/D.自动微分.md)
* [附录 D、自动微分](docs/D.自动微分.md)
## 联系方式
......@@ -80,7 +80,7 @@
| 十六、强化学习 | [@friedhelm739](https://github.com/friedhelm739) | [@飞龙](https://github.com/wizardforcel) [@rickllyxu](https://github.com/rickllyxu) |
| **附录** | - | - |
| 附录 C、SVM 对偶问题 | [@rickllyxu](https://github.com/rickllyxu) |
| 附录 D、自动求导 | [@rickllyxu](https://github.com/rickllyxu) |
| 附录 D、自动微分 | [@rickllyxu](https://github.com/rickllyxu) |
| 其它 | [@片刻](https://github.com/jiangzhonglian) |
## 编译
......
+ [Sklearn 与 TensorFlow 机器学习实用指南](README.md)
+ [第0章 前言](docs/0.前言.md)
+ [第1章 机器学习概览](docs/1.机器学习概览.md)
+ [第2章 一个完整的机器学习项目](docs/2.一个完整的机器学习项目.md)
+ [第3章 分类](docs/3.分类.md)
+ [第4章 训练模型](docs/4.训练模型.md)
+ [第5章 支持向量机](docs/5.支持向量机.md)
+ [第6章 决策树](docs/6.决策树.md)
+ [第7章 集成学习和随机森林](docs/7.集成学习和随机森林.md)
+ [第8章 降维](docs/8.降维.md)
+ [第9章 启动并运行TensorFlow](docs/9.启动并运行TensorFlow.md)
+ [第10章 人工神经网络介绍](docs/10.人工神经网络介绍.md)
+ [第11章 训练深层神经网络](docs/11.训练深层神经网络.md)
+ [第12章 设备和服务器上的分布式TensorFlow](docs/12.设备和服务器上的分布式TensorFlow.md)
+ [第13章 卷积神经网络](docs/13.卷积神经网络.md)
+ [第14章 循环神经网络](docs/14.循环神经网络.md)
+ [第15章 自编码器](docs/15.自编码器.md)
+ [第16章 强化学习](docs/16.强化学习.md)
+ [零、前言](docs/0.前言.md)
+ [一、机器学习概览](docs/1.机器学习概览.md)
+ [二、一个完整的机器学习项目](docs/2.一个完整的机器学习项目.md)
+ [三、分类](docs/3.分类.md)
+ [四、训练模型](docs/4.训练模型.md)
+ [五、支持向量机](docs/5.支持向量机.md)
+ [六、决策树](docs/6.决策树.md)
+ [七、集成学习和随机森林](docs/7.集成学习和随机森林.md)
+ [八、降维](docs/8.降维.md)
+ [九、启动并运行 TensorFlow](docs/9.启动并运行_TensorFlow.md)
+ [十、人工神经网络介绍](docs/10.人工神经网络介绍.md)
+ [十一、训练深层神经网络](docs/11.训练深层神经网络.md)
+ [十二、设备和服务器上的分布式 TensorFlow](docs/12.设备和服务器上的分布式_TensorFlow.md)
+ [十三、卷积神经网络](docs/13.卷积神经网络.md)
+ [十四、循环神经网络](docs/14.循环神经网络.md)
+ [十五、自编码器](docs/15.自编码器.md)
+ [十六、强化学习](docs/16.强化学习.md)
+ [附录 C、SVM 对偶问题](docs/C.SVM_对偶问题.md)
+ [附录 D、自动微分](docs/D.自动微分.md)
# 第0章 前言
# 零、前言
## 1、机器学习海啸
......
# 第1章 机器学习概览
# 一、机器学习概览
大多数人听到“机器学习”,往往会在脑海中勾勒出一个机器人:一个可靠的管家,或是一个可怕的终结者,这取决于你问的是谁。但是机器学习并不是未来的幻想,它已经来到我们身边了。事实上,一些特定领域已经应用机器学习几十年了,比如光学字符识别 (Optical Character Recognition,OCR)。但是直到 1990 年代,第一个影响了数亿人的机器学习应用才真正成熟,它就是垃圾邮件过滤器(spam filter)。虽然并不是一个有自我意识的天网系统(Skynet),垃圾邮件过滤器从技术上是符合机器学习的(它可以很好地进行学习,用户几乎不用再标记某个邮件为垃圾邮件)。后来出现了更多的数以百计的机器学习产品,支撑了更多你经常使用的产品和功能,从推荐系统到语音识别。
......
# 第10章 人工神经网络介绍
# 十、人工神经网络介绍
鸟类启发我们飞翔,牛蒡植物启发了尼龙绳,大自然也激发了许多其他发明。从逻辑上看,大脑是如何构建智能机器的灵感。这是启发人工神经网络(ANN)的关键思想。然而,尽管飞机受到鸟类的启发,但它们不必拍动翅膀。同样的,ANN 逐渐变得与他们的生物表兄弟有很大的不同。一些研究者甚至争辩说,我们应该完全放弃生物类比(例如,通过说“单位”而不是“神经元”),以免我们把我们的创造力限制在生物学的系统上。
......
# 第11章 训练深层神经网络
# 十一、训练深层神经网络
第 10 章介绍了人工神经网络,并训练了我们的第一个深度神经网络。 但它是一个非常浅的 DNN,只有两个隐藏层。 如果你需要解决非常复杂的问题,例如检测高分辨率图像中的数百种类型的对象,该怎么办? 你可能需要训练更深的 DNN,也许有 10 层,每层包含数百个神经元,通过数十万个连接来连接。 这不会是闲庭信步:
......
# 第12章 设备和服务器上的分布式 TensorFlow
# 十二、设备和服务器上的分布式 TensorFlow
在第 11 章,我们讨论了几种可以明显加速训练的技术:更好的权重初始化,批量标准化,复杂的优化器等等。 但是,即使采用了所有这些技术,在具有单个 CPU 的单台机器上训练大型神经网络可能需要几天甚至几周的时间。
......@@ -364,3 +364,5 @@ with tf.device(tf.train.replica_device_setter(ps_tasks=2)):
```
这个例子假设参数服务器是纯 CPU 的,这通常是这种情况,因为它们只需要存储和传送参数,而不是执行密集计算。
(未完成)
\ No newline at end of file
# 第13章 卷积神经网络
# 十三、卷积神经网络
​尽管 IBM 的深蓝超级计算机在1996年击败了国际象棋世界冠军 Garry Kasparvo,直到近几年计算机都不能可靠地完成一些看起来较为复杂的任务,比如判别照片中是否有狗以及识别语音。为什么这些任务对于人类而言如此简单?答案在于感知主要发生在我们意识领域之外,在我们大脑中的专门视觉,听觉和其他感官模块内。当感官信息达到我们的意识时,它已经被装饰了高级特征;例如,当你看着一只可爱的小狗的照片时,你不能选择不看这只小狗,或不注意它的可爱。你也不能解释你如何认出这是一只可爱的小狗,这对你来说很明显。因此,我们不能相信我们的主观经验:感知并不是微不足道的,理解它我们必须看看感官模块是如何工作的。
......
# 第14章 循环神经网络
# 十四、循环神经网络
击球手击出垒球,你会开始预测球的轨迹并立即开始奔跑。你追踪着它,不断调整你的移动步伐,最终在观众的一片雷鸣声中抓到它。无论是在听完朋友的话语还是早餐时预测咖啡的味道,你时刻在做的事就是在预测未来。在本章中,我们将讨论循环神经网络 -- 一类预测未来的网络(当然,是到目前为止)。它们可以分析时间序列数据,诸如股票价格,并告诉你什么时候买入和卖出。在自动驾驶系统中,他们可以预测行车轨迹,避免发生交通意外。更一般地说,它们可在任意长度的序列上工作,而不是截止目前我们讨论的只能在固定长度的输入上工作的网络。举个例子,它们可以把语句,文件,以及语音范本作为输入,使得它们在诸如自动翻译,语音到文本或者情感分析(例如,读取电影评论并提取评论者关于该电影的感觉)的自然语言处理系统中极为有用。
......
# 第15章 自编码器
# 十五、自编码器
自编码器是能够在无监督的情况下学习输入数据的有效表示(叫做编码)的人工神经网络(即,训练集是未标记)。这些编码通常具有比输入数据低得多的维度,使得自编码器对降维有用(参见第 8 章)。更重要的是,自编码器可以作为强大的特征检测器,它们可以用于无监督的深度神经网络预训练(正如我们在第 11 章中讨论过的)。最后,他们能够随机生成与训练数据非常相似的新数据;这被称为生成模型。例如,您可以在脸部图片上训练自编码器,然后可以生成新脸部。
......
# 第16章 强化学习
# 十六、强化学习
强化学习(RL)如今是机器学习的一大令人激动的领域,当然之前也是。自从 1950 年被发明出来后,它在这些年产生了一些有趣的应用,尤其是在游戏(例如 TD-Gammon,一个西洋双陆棋程序)和及其控制领域,但是从未弄出什么大新闻。直到 2013 年一个革命性的发展:来自英国的研究者发起了一项 Deepmind 项目,这个项目可以学习去玩任何从头开始的 Atari 游戏,甚至多数比人类玩的还要好,它仅使用像素作为输入而没有使用游戏规则的任何先验知识。这是一系列令人惊叹的壮举中的第一个,并在 2016 年 3 月以他们的系统阿尔法狗战胜了世界围棋冠军李世石而告终。从未有程序能勉强打败这个游戏的大师,更不用说世界冠军了。今天,RL 的整个领域正在沸腾着新的想法,其都具有广泛的应用范围。DeepMind 在 2014 被谷歌以超过 5 亿美元收购。
......
# 第2章 一个完整的机器学习项目
# 二、一个完整的机器学习项目
本章中,你会假装作为被一家地产公司刚刚雇佣的数据科学家,完整地学习一个案例项目。下面是主要步骤:
......
# 第3章 分类
# 三、分类
在第一章我们提到过最常用的监督学习任务是回归(用于预测某个值)和分类(预测某个类别)。在第二章我们探索了一个回归任务:预测房价。我们使用了多种算法,诸如线性回归,决策树,和随机森林(这个将会在后面的章节更详细地讨论)。现在我们将我们的注意力转到分类任务上。
......
# 第4章 训练模型
# 四、训练模型
在之前的描述中,我们通常把机器学习模型和训练算法当作黑箱子来处理。如果你实践过前几章的一些示例,你惊奇的发现你可以优化回归系统,改进数字图像的分类器,你甚至可以零基础搭建一个垃圾邮件的分类器,但是你却对它们内部的工作流程一无所知。事实上,许多场合你都不需要知道这些黑箱子的内部有什么,干了什么。
......
# 第5章 支持向量机
# 五、支持向量机
支持向量机(SVM)是个非常强大并且有多种功能的机器学习模型,能够做线性或者非线性的分类,回归,甚至异常值检测。机器学习领域中最为流行的模型之一,是任何学习机器学习的人必备的工具。SVM 特别适合应用于复杂但中小规模数据集的分类问题。
......
{% raw %}
# 第6章 决策树
# 六、决策树
和支持向量机一样, 决策树是一种多功能机器学习算法, 即可以执行分类任务也可以执行回归任务, 甚至包括多输出(multioutput)任务.
......
# 第7章 集成学习和随机森林
# 七、集成学习和随机森林
假设你去随机问很多人一个很复杂的问题,然后把它们的答案合并起来。通常情况下你会发现这个合并的答案比一个专家的答案要好。这就叫做*群体智慧*。同样的,如果你合并了一组分类器的预测(像分类或者回归),你也会得到一个比单一分类器更好的预测结果。这一组分类器就叫做集成;因此,这个技术就叫做集成学习,一个集成学习算法就叫做集成方法。
......
# 第8章 降维
# 八、降维
很多机器学习的问题都会涉及到有着几千甚至数百万维的特征的训练实例。这不仅让训练过程变得非常缓慢,同时还很难找到一个很好的解,我们接下来就会遇到这种情况。这种问题通常被称为维数灾难(curse of dimentionality)。
......
# 第9章 启动并运行 TensorFlow
# 九、启动并运行 TensorFlow
TensorFlow 是一款用于数值计算的强大的开源软件库,特别适用于大规模机器学习的微调。 它的基本原理很简单:首先在 Python 中定义要执行的计算图(例如图 9-1),然后 TensorFlow 使用该图并使用优化的 C++ 代码高效运行该图。
......
# Appendix C. SVM 对偶问题
# 附录 C、SVM 对偶问题
为了理解对偶性,你首先得理解拉格朗日乘子法。它基本思想是将一个有约束优化问题转化为一个无约束优化问题,其方法是将约束条件移动到目标函数中去。让我们看一个简单的例子,例如要找到合适的 ![x](../images/tex-9dd4e461268c8034f5c8564e155c67a6.gif) 和 ![y](../images/tex-415290769594460e2e485922904f345d.gif) 使得函数 ![f(x, y) = x^2 + 2y](../images/tex-ec2b11c28f337d90d1a55c83bd738475.gif) 最小化,且其约束条件是一个等式约束:![3x + 2y + 1 = 0](../images/tex-08bc7e7224cfe0e39e04b69d4ed96298.gif)。 使用拉格朗日乘子法,我们首先定义一个函数,称为**拉格朗日函数**:![g(x, y, \alpha) = f(x, y) - \alpha(3x + 2y + 1)](../images/tex-e78acaa101dc94594e813eab3f01f428.gif). 每个约束条件(在这个例子中只有一个)与新的变量(称为拉格朗日乘数)相乘,作为原目标函数的减数。
......
# Appendix D 自动微分
# 附录 D、自动微分
这个附录解释了 TensorFlow 的自动微分功能是如何工作的,以及它与其他解决方案的对比。
这个附录解释了 TensorFlow 的自动微分功能是如何工作的,以及它与其他解决方案的对比。
假定你定义了函数 ![f(x, y) = x^2y + y + 2](../images/tex-162751afe7e0aa904426973dbac3654e.gif), 需要得到它的偏导数 ![\frac{\partial f}{\partial x}](../images/tex-f6e0346d1d3410b0fbe32b41b85999aa.gif)和 ![\frac{\partial f}{\partial y}](../images/tex-408378e8bc55170258126d10000c53d9.gif),以用于梯度下降或者其他优化算法。你的可选方案有手动微分法,符号微分法,数值微分法,前向自动微分,和反向自动微分。TensorFlow实现的反向自动微分法。我们来看看每种方案。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册