专栏首页Python小屋机器学习没有捷径,根据机器学习算法地图学习是最有效的一种方式!

机器学习没有捷径,根据机器学习算法地图学习是最有效的一种方式!

《机器学习与应用》由清华大学出版社出版,是机器学习和深度学习领域又一高质量的入门与提高教材。该书系统、深入地讲述了机器学习与深度学习的主要方法与理论,并紧密结合工程实践与应用。

https://item.m.jd.com/product/12504554.html

作者简介

雷明,毕业于清华大学计算机系,研究方向为机器学习、计算机视觉。有超过12年的学术研究与产品研发经验,曾发表论文数篇,具有深厚的理论功底与丰富的实践经验。其撰写的系列技术文章在半年内累计阅读量达数百万次,擅长用生动、形象的语言把复杂、抽象的理论和算法解释清楚。

适读人群

计算机,电子,自动化,人工智能等相关专业的本科生,研究生

从事人工智能学术研究与产品研发的人员

对人工智能、机器学习感兴趣的人

本书优势(附精彩试读)

1、内容全面、系统,紧跟技术进步

完整的讲述了机器学习、深度学习主要算法以及在各个领域的典型应用,含括了学术界与工业界截止2017年初的新成果,紧跟时代步伐,弥补了市面上经典教材内容老化的缺憾。

精彩试读:

图像超分辨的目标是由低分辨率的图像得到高分辨率的图像,传统的做法大多采用纯图像处理的技术。用机器学习的思路解决超分辨问题取得了更好的效果,卷积神经网络被成功地用于超分辨问题。文献[7]提出了一种用生成对抗网络框架解决图像超分辨问题的方法,称为超分辨生成对抗网络,简称SRGAN,能够将缩小4倍以上的图像进行复原。

这种方法使用了一种新的损失函数,由对抗损失和内容损失两部分构成。第一部分损失和标准生成对抗框架相同,通过一个判别模型,让生成网络生成的超分辨图像和真实高分辨率图像尽可能接近。

生成器卷积网络采用了深度残差网络;判别模型也是一个层次很深的卷积网络,用于区分一张图像是真实的高分辨率图像还是由生成器网络生成的图像。网络结构如下图所示。

图像超分辨的网络结构

假设低分辨率图像为,这里的目标是根据它估计出高分辨率的图像,在训练样本中与低分辨率图像相对应的真实高分辨率图像为。

2、推导论证清晰、深入、详细

绝大部分核心算法均有详细的推导、证明过程,从问题本源、思想层面对算法进行讲解,让读者不仅知其然还知其所以然,真正掌握算法的思想与精髓。在书的前部对机器学习所需的数学知识也做了系统的讲解

精彩试读:

目标函数的二阶导数为,前面假设二阶导数,从而保证目标函数是凸函数,即开口向上的抛物线,有极小值。如果,或者该怎么处理?对于线性核或正定核函数,由于矩阵的任意一个上述子问题对应的二阶子矩阵半正定,必定有。下面给出证明这个关于两个变量的子问题的目标函数是凸函数,只需要证明它的Hessian矩阵是半正定矩阵。这两个变量的目标函数的Hessian为

和10.3.2节证明整个对偶问题的Hessian矩阵正定的方法相同,如果是线性核,这个矩阵也可以写成一个矩阵和它的转置的乘积形式:

矩阵为训练样本特征向量乘上类别标签形成的矩阵。显然这个Hessian矩阵是半正定的,因此必定有。如果是非线性核,因为核函数相当于对两个核映射之后的向量做内积,因此上面的结论同样成立。

无论本次迭代时和的初始值是多少,通过上面的子问题求解算法得到是在可行域里的最小值,因此每次求解更新这两个变量的值之后,都能保证目标函数值小于或者等于初始值,即函数值下降,所以SMO算法能保证收敛。

3、核心算法配有实现细节介绍,使用示例,知名开源库代码分析

对大部分核心算法的实现细节进行了介绍,并配有示例程序与知名开源库源代码分析,包括OpenCV,libsvm,liblinear,Caffe,这对需要使用、实现机器学习算法的读者至关重要

精彩试读:

求解器的实现是源代码分析的核心,分为可信域牛顿法与坐标下降法两类。可信域牛顿法由TRON类实现,坐标下降法由各个问题具体的求解函数实现。限于篇幅,在这里只分析一部分求解器,其他的实现原理类似。

可信域牛顿法由类TRON实现,这个类为L2-正则化logistic回归和L2-正则化支持向量机的训练提供支持。类定义如下:

class TRON

{

public:

// 传入的是基类function的指针,可以使用上面两种损失函数,eps为迭代精度

// max_iter为最大迭代次数,默认值为1000

TRON(const function *fun_obj, double eps = 0.1, int max_iter = 1000);

~TRON();

// 这是求解的接口函数

void tron(double *w);

void set_print_string(void (*i_print) (const char *buf));

private:

int trcg(double delta, double *g, double *s, double *r); // 共轭梯度法,被tron调用

double norm_inf(int n, double *x);

double eps; // 收敛精度

int max_iter; // 最大迭代次数

function *fun_obj; // 目标函数

void info(const char *fmt,...);

void (*tron_print_string)(const char *buf);

};

4、重要算法的实际应用均有讲解

核心算法的实际应用都有介绍,对深度学习技术在计算机视觉、语音识别、自然语言处理、计算机图形学等领域的应用情况有详细而深入的介绍。这些内容能帮助读者掌握算法的实际应用方法、建模的思路。

在本书的核心算法部分介绍了机器学习和深度学习的主要算法,包括

线性回归

岭回归

LASSO回归

贝叶斯分类器

决策树

K近邻算法

距离度量学习

数据降维算法,包括主成分分析、流形学习

线性判别分析

人工神经网络

支持向量机

logistic回归

线性支持向量机

softmax回归

Bagging算法与随机森林

boosting算法

高斯混合模型

隐马尔可夫模型

自动编码器

受限玻尔兹曼机

卷积神经网络

循环神经网络

生成对抗网络

聚类算法,包括层次聚类、k均值算法、DBSCAN算法、OPTICS算法、EM算法、均值漂移算法、谱聚类

半监督学习,包括自训练、协同训练、生成模型、半监督支持向量机、基于图的算法、半监督深度学习

强化学习,包括策略迭代算法、价值迭代算法、蒙特卡洛算法、时序差分算法、深度Q网络、策略梯度算法

在工程实践部分介绍了机器学习算法在工程应用时面临的问题与解决方案,包括

样本的收集与标注

特征工程

算法与模型选择

过拟合问题

安全性问题(对抗样本)

计算与存储成本问题

深度神经网络模型压缩与优化

购买指南:

目前本书已在京东上七五折包邮预售

https://item.m.jd.com/product/12504554.html

目录

全书由21章组成,共分为三大部分。第1~3章为第一部分,介绍机器学习的基本原理、所需的数学知识(包括微积分、线性代数、概率论和优化方法),以及机器学习中的核心概念。第4~20章为第二部分,是本书的主体,介绍各种常用的有监督学习算法、无监督学习算法、半监督学习算法和强化学习算法。对于每种算法,从原理与推导、工程实现和实际应用3个方面进行讲解,对于大多数算法,都配有实验程序。第21章为第三部分,介绍机器学习和深度学习算法实际应用时面临的问题,并给出典型的解决方案。此外,附录A给出各种机器学习算法的总结,附录B给出梯度下降法的演化关系,附录C给出EM算法的推导。

第一部分 基本概念与数学知识

第1章机器学习简介3

1.1机器学习是什么3

1.1.1一个简单的例子3

1.1.2为什么需要机器学习5

1.2典型应用7

1.2.1语音识别7

1.2.2人脸检测8

1.2.3人机对弈9

1.2.4机器翻译10

1.2.5自动驾驶11

1.3发展历程11

1.3.1历史成就11

1.3.2当前进展12

1.4关于本书13

参考文献15

第2章数学知识17

2.1微积分和线性代数17

2.1.1导数17

2.1.2向量与矩阵19

2.1.3偏导数与梯度21

2.1.4雅克比矩阵22

2.1.5Hessian矩阵23

2.1.6泰勒展开24

2.1.7行列式24

2.1.8特征值与特征向量25

2.1.9奇异值分解26

2.1.10二次型26

2.1.11向量与矩阵求导26

2.2最优化方法27

2.2.1梯度下降法27

2.2.2牛顿法28

2.2.3坐标下降法29

2.2.4拉格朗日乘数法30

2.2.5凸优化30

2.2.6拉格朗日对偶34

2.2.7KKT条件36

2.2.8拟牛顿法37

2.2.9面临的问题38

2.3概率论39

2.3.1随机事件与概率39

2.3.2条件概率39

2.3.3随机变量40

2.3.4数学期望与方差41

2.3.5随机向量41

2.3.6最大似然估计42

参考文献43

第3章基本概念44

3.1算法分类44

3.1.1监督信号44

3.1.2分类问题与回归问题45

3.1.3判别模型与生成模型47

3.1.4强化学习47

3.2模型评价指标48

3.2.1精度与召回率48

3.2.2ROC曲线48

3.2.3混淆矩阵50

3.2.4交叉验证50

3.3模型选择50

3.3.1过拟合与欠拟合50

3.3.2偏差与方差分解51

3.3.3正则化52

参考文献54

第二部分主要的机器学习算法与理论

第4章贝叶斯分类器57

4.1贝叶斯决策57

4.2朴素贝叶斯分类器58

4.2.1离散型特征58

4.2.2连续型特征59

4.3正态贝叶斯分类器59

4.3.1训练算法59

4.3.2预测算法60

4.4实验程序61

4.5源代码分析64

4.5.1主要数据结构64

4.5.2训练函数65

4.5.3预测函数68

4.6应用70

参考文献71

第5章决策树72

5.1树形决策过程72

5.2分类与回归树73

5.3训练算法74

5.3.1递归分裂过程74

5.3.2寻找最佳分裂74

5.3.3叶子节点值的设定77

5.3.4属性缺失问题77

5.3.5剪枝算法78

5.4实验程序79

5.5源代码分析81

5.5.1主要数据结构81

5.5.2递归分裂84

5.5.3寻找最佳分裂90

5.5.4寻找替代分裂96

5.5.5变量的重要性99

5.5.6预测算法100

5.6应用103

参考文献103

第6章k近邻算法104

6.1基本概念104

6.2预测算法104

6.3距离定义105

6.3.1常用距离定义105

6.3.2距离度量学习106

6.4实验程序107

6.5应用109

参考文献110

第7章数据降维111

7.1主成分分析111

7.1.1数据降维问题111

7.1.2计算投影矩阵111

7.1.3向量降维114

7.1.4向量重构114

7.2源代码分析114

7.2.1主要数据结构114

7.2.2计算投影矩阵115

7.2.3向量降维117

7.2.4向量重构117

7.3流形学习118

7.3.1局部线性嵌入119

7.3.2拉普拉斯特征映射119

7.3.3局部保持投影122

7.3.4等距映射123

7.4应用124

参考文献124

第8章线性判别分析125

8.1用投影进行分类125

8.2投影矩阵125

8.2.1一维的情况125

8.2.2推广到高维127

8.3实验程序128

8.4源代码分析131

8.4.1主要数据结构131

8.4.2计算投影矩阵132

8.4.3向量投影135

8.4.4向量重构136

8.5应用136

参考文献137

第9章人工神经网络138

9.1多层前馈型神经网络138

9.1.1神经元138

9.1.2网络结构139

9.1.3正向传播算法140

9.2反向传播算法141

9.2.1一个简单的例子141

9.2.2完整的算法145

9.3实验程序149

9.4理论解释152

9.4.1数学性质152

9.4.2与神经系统的关系153

9.5面临的问题153

9.5.1梯度消失153

9.5.2退化154

9.5.3局部极小值154

9.5.4鞍点154

9.6实现细节问题154

9.6.1输入值与输出值154

9.6.2网络规模155

9.6.3激活函数155

9.6.4损失函数156

9.6.5权重初始化156

9.6.6正则化156

9.6.7学习率的设定156

9.6.8动量项156

9.7源代码分析157

9.7.1主要数据结构157

9.7.2激活函数160

9.7.3权重初始化163

9.7.4训练函数164

9.7.5预测函数177

9.8应用179

参考文献180

第10章支持向量机182

10.1线性分类器182

10.1.1线性分类器概述182

10.1.2分类间隔182

10.2线性可分的问题183

10.2.1原问题183

10.2.2对偶问题184

10.3线性不可分的问题187

10.3.1原问题187

10.3.2对偶问题187

10.4核映射与核函数190

10.5SMO算法193

10.5.1求解子问题193

10.5.2优化变量的选择196

10.6多分类问题197

10.7实验程序198

10.8源代码分析200

10.8.1求解算法201

10.8.2主要数据结构204

10.8.3求解器211

10.9应用222

参考文献223

第11章线性模型225

11.1logistic回归225

11.2正则化logistic回归228

11.2.1对数似然函数228

11.2.2L2正则化原问题229

11.2.3L2正则化对偶问题232

11.2.4L1正则化原问题233

11.2.5实验程序234

11.3线性支持向量机236

11.3.1L2正则化L1loss SVC原问题236

11.3.2L2正则化L2loss SVC原问题237

11.3.3L2正则化SVC对偶问题237

11.3.4L1正则化L2loss SVC原问题238

11.3.5多类线性支持向量机238

11.3.6实验程序240

11.4源代码分析241

11.4.1求解的问题241

11.4.2主要数据结构241

11.4.3求解器249

11.5softmax回归262

11.6应用263

参考文献264

第12章随机森林266

12.1集成学习266

12.1.1随机抽样266

12.1.2Bagging算法267

12.2随机森林概述267

12.3训练算法267

12.4变量的重要性268

12.5实验程序269

12.6源代码分析271

12.6.1主要数据结构271

12.6.2训练算法273

12.6.3预测算法282

12.7应用282

参考文献283

第13章Boosting算法284

13.1AdaBoost算法简介284

13.2训练算法284

13.3训练误差分析286

13.4广义加法模型288

13.5各种AdaBoost算法290

13.5.1离散型AdaBoost290

13.5.2实数型AdaBoost292

13.5.3LogitBoost292

13.5.4Gentle型AdaBoost294

13.6实现细节问题294

13.6.1弱分类器的选择295

13.6.2弱分类器的数量295

13.6.3样本权重削减295

13.7实验程序295

13.8源代码分析297

13.8.1主要数据结构297

13.8.2弱分类器300

13.8.3强分类器306

13.9应用——目标检测318

13.9.1VJ框架的原理319

13.9.2模型训练321

参考文献322

第14章深度学习概论324

14.1机器学习面临的挑战324

14.1.1人工特征325

14.1.2机器学习算法326

14.2深度学习技术326

14.3进展与典型应用328

14.3.1计算机视觉329

14.3.2语音识别331

14.3.3自然语言处理331

14.3.4计算机图形学332

14.3.5推荐系统332

14.3.6深度强化学习333

14.4自动编码器333

14.4.1自动编码器简介333

14.4.2去噪自动编码器334

14.4.3稀疏自动编码器334

14.4.4收缩自动编码器335

14.4.5多层编码器335

14.5受限玻尔兹曼机335

14.5.1玻尔兹曼分布335

14.5.2受限玻尔兹曼机336

14.5.3训练算法338

14.5.4深度玻尔兹曼机339

14.5.5深度置信网339

参考文献339

第15章卷积神经网络347

15.1网络结构347

15.1.1卷积层348

15.1.2池化层351

15.1.3全连接层351

15.2训练算法352

15.2.1卷积层352

15.2.2池化层355

15.2.3随机梯度下降法356

15.2.4迁移学习357

15.3典型网络357

15.3.1LeNet5网络357

15.3.2AlexNet网络358

15.3.3VGG网络359

15.3.4GoogLeNet网络360

15.4理论分析361

15.4.1反卷积运算361

15.4.2卷积层可视化362

15.4.3理论解释364

15.5挑战与改进措施365

15.5.1卷积层365

15.5.2池化层365

15.5.3激活函数366

15.5.4损失函数366

15.5.5网络结构366

15.5.6批量归一化370

15.6实际例子371

15.6.1LeNet5网络371

15.6.2训练自己的模型373

15.7源代码分析374

15.7.1Caffe简介374

15.7.2数据层376

15.7.3卷积层376

15.7.4池化层378

15.7.5神经元层378

15.7.6内积层384

15.7.7损失层386

15.7.8网络的实现——Net类396

15.7.9求解器398

15.8应用——计算机视觉413

15.8.1人脸检测414

15.8.2通用目标检测416

15.8.3人脸关键点定位425

15.8.4人脸识别425

15.8.5图像分割428

15.8.6边缘检测429

15.8.7风格迁移432

15.8.8图像增强433

15.8.9三维视觉435

15.8.10目标跟踪436

15.9应用——计算机图形学437

15.9.1几何模型438

15.9.2物理模型439

15.9.3纹理合成440

15.9.4图像彩色化441

15.9.5HDR442

15.10应用——自然语言处理444

15.10.1文本分类444

15.10.2机器翻译444

参考文献444

第16章循环神经网络450

16.1网络结构450

16.1.1循环层450

16.1.2输出层451

16.1.3一个简单的例子452

16.1.4深层网络452

16.2网络的训练453

16.2.1一个简单的例子453

16.2.2完整的算法455

16.3挑战与改进措施457

16.3.1梯度消失457

16.3.2长短期记忆模型458

16.3.3门控循环单元459

16.3.4双向网络459

16.4序列预测问题460

16.4.1序列标注问题460

16.4.2连接主义时序分类461

16.4.3序列到序列学习465

16.5应用——语音识别467

16.5.1语音识别问题467

16.5.2隐马尔可夫模型468

16.5.3高斯混合模型474

16.5.4GMM-HMM框架475

16.5.5深度模型475

16.6应用——自然语言处理478

16.6.1中文分词479

16.6.2词性标注480

16.6.3命名实体识别480

16.6.4文本分类481

16.6.5自动摘要483

16.6.6机器翻译483

16.7应用——机器视觉485

16.7.1字符识别485

16.7.2目标跟踪486

16.7.3视频分析488

参考文献490

第17章生成对抗网络494

17.1随机数据生成494

17.2生成对抗网络简介495

17.2.1生成模型495

17.2.2判别模型496

17.3模型的训练496

17.3.1目标函数496

17.3.2训练算法497

17.3.3理论分析498

17.4应用与改进499

17.4.1改进方案500

17.4.2典型应用503

参考文献505

第18章聚类算法506

18.1问题定义506

18.2层次聚类507

18.3基于质心的算法507

18.4基于概率分布的算法508

18.5基于密度的算法512

18.5.1DBSCAN算法512

18.5.2OPTICS算法514

18.5.3Mean Shift算法516

18.6基于图的算法517

18.7算法评价指标518

18.7.1内部指标518

18.7.2外部指标518

18.8应用519

参考文献519

第19章半监督学习521

19.1问题假设521

19.1.1连续性假设521

19.1.2聚类假设521

19.1.3流形假设521

19.1.4低密度分割假设521

19.2启发式算法522

19.2.1自训练522

19.2.2协同训练522

19.3生成模型522

19.4低密度分割523

19.5基于图的算法523

19.6半监督深度学习524

参考文献525

第20章强化学习527

20.1强化学习简介527

20.1.1问题定义527

20.1.2马尔可夫决策过程528

20.2基于动态规划的算法532

20.2.1策略迭代算法532

20.2.2价值迭代算法534

20.3蒙特卡洛算法535

20.3.1算法简介535

20.3.2状态价值函数估计536

20.3.3动作价值函数估计537

20.3.4蒙特卡洛控制537

20.4时序差分学习538

20.4.1Sarsa算法538

20.4.2Q学习539

20.5深度强化学习540

20.5.1深度Q网络541

20.5.2策略梯度算法544

20.6应用547

参考文献547

第三部分工程实践问题

第21章工程实践问题概述551

21.1实现细节问题551

21.1.1训练样本551

21.1.2特征预处理552

21.1.3模型选择552

21.1.4过拟合问题552

21.2安全性问题553

21.2.1对抗样本553

21.2.2形成原因分析555

21.3实现成本问题556

21.3.1训练样本量556

21.3.2计算与存储成本556

21.4深度模型优化557

21.4.1剪枝与编码557

21.4.2二值化网络558

21.4.3卷积核分离562

参考文献563

附录A各种机器学习算法的总结565

附录B梯度下降法的演化关系(见第15章)569

附录C EM算法的推导(见第18章)570

本文分享自微信公众号 - Python小屋(Python_xiaowu)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微课|中学生可以这样学Python(8.3节):递推算法例题讲解

    Python小屋屋主
  • 微课|中学生可以这样学Python(8.1节):解析算法例题讲解

    Python小屋屋主
  • 微课|中学生可以这样学Python(8.2节):枚举算法例题讲解

    Python小屋屋主
  • 真正统治世界的十大算法,你知道吗?

    本期责编:Sophie 文|Marcos Otero 译|伯乐在线 - Justin Wu 不久前的某一天,我在浏览Reddit发现了一篇有趣的文章《统治世界的...

    CDA数据分析师
  • 数据结构与算法-概述

    数据结构(Data structure)是指一组相互 之间存在一种或多种特定关系的数据的组织方式和它们在计算机内的存储方式,以及定义在该组数据上的一组操作。

    越陌度阡
  • 算法 – Algorithm

    比如你想要木头桌子,那么制造桌子的工厂就是“一套算法”。提供(输入)木头,就会得到(输出)桌子。

    easyAI
  • 收藏!计算机、数学、运筹学等领域的32个重要算

    导读:奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Kout...

    华章科技
  • 五分钟学编程:怎样才能学好笔试面试最爱考察的算法

    上回我们有一篇文章,讲述了作为一个新人程序员,如何学习数据结构这门课程,其实呢,数据结构和算法是息息相关的,为什么这么说呢,因为数据结构本身只是一个载体,而在数...

    黄小斜
  • 4种最常问的编码算法面试问题,你会吗?

    导语:面试是测查和评价人员能力素质的一种考试活动。最常问的编码算法面试问题你知道多少呢?

    AI科技大本营
  • 算法系列1 初识算法 算法复杂性模型 算法复杂度的计算

    定义:由若干条指令组成的有穷序列,且满足:输出输入,确定性,有限性 输入:有零个或多个由外部提供的量作为算法的输入 输出:算法产生至少一个量作为算法的输出 ...

    一只胡说八道的猴子

扫码关注云+社区

领取腾讯云代金券