社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

美亚畅销的百页机器学习入门书,不止简单易懂

异步社区 • 5 年前 • 317 次点击  

来源 | 异步 


我与“机器学习”的初次邂逅是在5年前,那时我刚刚决定于新加坡南洋理工大学攻读计算机博士学位。比起计算机学院的主流课程,如数据库、软件开发、嵌入式系统等,“机器学习”这个“新领域”既令人好奇,又让人望而生畏。当时,“学习”还没那么深度, “数据科学家”刚刚被《哈佛商业评论》宣布为“二十一世纪最吸引人的职业”。


回头看来,差不多同一时间,“人工智能”正在为一次空前的崛起积累能量、蓄势待发。


我在新加坡南洋理工大学的研究项目属于工业界的应用问题,因此得以接触各种工业界数据和工具,并在研究工作中尝试部分机器学习模型。


与此同时,与机器学习相关的各种文献、资料、开源项目在网络上大量涌现。作为从业者,我一方面受益于大量信息所带来的便利,另一方面却也时常因为信息量太大而不知从何入手。



2018年下半年,一次偶然的机会,我在职业社交平台上发现《机器学习精讲》作者安德烈的贴子。安德烈是个职场“网红”,经常发些妙趣横生、却可能只有程序员才能理解的段子和图片。

当时,他正积极地为新书《机器学习精讲》做宣传,作者不定期连载和提供免费试读。泛读之后,我被作者精巧的构思和精炼的语言深深吸引。这本百页机器学习入门书英文版进入图书销售总榜单前1000名,得到了Peter Norvig、Aurélien Géron等人工智能和机器学习领域知名专家鼎力推荐。 


在本书之前,我接触过一些关于机器学习技术的教科书。这些书的共同特点是:深、厚、难。首先,它们普遍内容深奥,阅读门槛较高。严谨的论证和详细的数学推导,需要很强的理论基础才能看懂。其次,很多机器学习图书篇幅动辄上千页,让刚入门的读者望而却步。


最后,实现书中所介绍的算法所需要的工程量较大,很难快速应用于实际问题。相比专业教科书,本书更像是一本科普读物,任何具备基本代数知识的读者都可以理解其大部分内容。本书篇幅较短、章节清晰,适合通读与精读。书中介绍的很多实用技巧也可以帮助读者快速上手实践。


虽然篇幅较短,但本书涵盖了关于机器学习的大部分精华要点,并将知识点系统地串联在一起。书中凝炼了大量学术文献的中心内容和结论,权威性很强。同时,作者将多年研究和工程项目中所总结的经验以最容易理解的方式与读者分享,可读性和实用性都非常强。由于篇幅所限,书中省去了大量数学推导过程以及文献引用。不过,有深入研究需要的读者仍可通过配套的网页获取更多内容。 


在本公众号后台回复"51853",获取配套学习资料,其中包括大量推荐阅读、视频、问答、代码、习题等。


01

机器根本不会学习


在开始之前,我们要澄清一个事实——机器根本不会学习。所谓的“机器学习”,只是在寻找一个数学公式。找到之后,我们可以利用该公式和一组输入数据(训练数据)进行运算,并与正确结果进行比较。我们希望该公式能对大多数新的(不同于训练数据)、取自相同或相似统计分布的输入数据进行正确运算。


为什么我们认为这不算学习呢?原因是,如果输入数据发生微小改变,那么新的运算结果可能与正确结果截然不同。相比之下,动物的学习就完全不同。比如,很多人喜欢在计算机或手机上玩游戏。


如果在正常的屏幕上会玩这个游戏,那么屏幕稍微倾斜或者旋转时也不太会影响我们玩游戏。如果换成一个机器学习的算法来玩呢?除非它是专门用来识别屏幕变化的算法,否则很可能无法在屏幕发生变化的情况下正常游戏。


既然如此,我们为什么还要叫它“机器学习”呢?这个名称在很大程度上是一个市场宣传噱头。“机器学习”概念由美国计算机游戏和人工智能领域先驱之一亚瑟·塞缪尔(Arther Samuel)在1959年首次提出。当时他就职于IBM。这个在当时很酷炫的概念帮助公司吸引了客户和高水平员工。后来,IBM又在2010年左右提出了“认知计算”(Cognitive Computing)的概念,再次助公司在激烈的竞争中占得先机。



正如人工智能不是真正的智能,机器也不能真正学习。然而,这并不影响“机器学习”逐渐成为一个被广泛接受的名词——构建一种计算机系统的科学和工程方法。使用“机器学习”构建的系统,无须明确地用指令编程,即可输出正确结果。总而言之,机器的“学习”只是一种比喻,并非实际意义上的学习。


比起四处搜罗学习资料,收藏几十G的学习资源在网盘里“生灰”,不如来看看这本精巧构思的百页科普图书《机器学习精讲》,从机器学习的2种基本算法入手!


02

机器学习基本算法


1

线性回归

线性回归(linear regression)是一种流行的回归算法,从样本特征的线性组合(linear combination)中学习模型。

问题陈述:给定一个有标签的样本集{(xi,yi)}i 的N次方=1,N 是总样本数量,x i 是每个样本 i=1,…,N 的 D 维特征向量。y i 是一个实数标签 [1] ,每个特征 ,j=1,…,D 也是一个实数。
我们想要得到一个基于样本特征 x 的线性组合的模型 f w,b (x):

f w,b 表示 f 是一个参数化的模型,有 w 和 b 两个参数。其中,w 是一个维度等于 D 的向量,b 是一个实数。

利用该模型,我们可以对含有未知标签 y 的样本 x 进行预测,表示为 y←f w,b (x)。在输入样本相同时,两个含有不同参数组(w,b)的模型的预测结果很可能截然不同。学习的目的是找到一组最优参数(w * ,b * )。当参数最优时,模型的预测最准确。

细心的读者可能发现式 1.1 中定义的线性模型与 SVM 模型相差无几,只是缺少 sign 运算。的确,这两个模型非常相似,主要区别在于 SVM 的超平面是决策边界,用于分隔两类样本。因此,它与两类样本间的距离越远越好。

而另一方面,我们希望线性回归中的超平面离所有训练样本越近越好。下图很直观地解释了这一点。图中呈现了多个一维训练样本(蓝点)和它们的回归线(红线)。利用回归线,我们可以预测新样本 x new 的标签y new 。如果样本的特征是 D 维(D>1),训练得到的线性模型则是一个平面(二维特征向量)或一个超平面(D>2)。

10 个一维样本的线性回归

这就是为什么回归模型中的超平面与训练样本越近越好:如果上图中的红线远离代表训练数据的蓝点,预测标签 y new 正确的机会就会减少。

解决方案:为满足回归超平面需要尽量靠近训练样本这一需求,我们通过最小化以下表达式来求最优参数 w * 和 b * :

在数学中,我们称需要最大化或最小化的表达式为 目标函数(objective  function),或简称为“目标”。在式1.2 中,(f w,b (x i )-y i ) 2 为 损失函数(loss function),用来惩罚一个错误的分类结果。具体来说,式 1.2 中用到的是一个方差损失(squared error loss)。所有基于模型的学习算法都有一个损失函数。

为了找到最优模型,我们需要将整个目标函数[又称 成本函数(cost function)]最小化。线性回归中的成本函数是平均损失,也称为经验风险(empirical risk)。一个模型的平均损失(经验风险)是将其应用于所有训练数据后累积的总损失的平均数。

那么,为什么线性回归的损失是一个二次函数(quadratic function)呢?为什么不用实际值 y i 与预测值 f(x i )之差的绝对值计算惩罚呢?当然可以。我们甚至可以用立方替代损失中的平方运算。

读者可能已经发现,在设计一个机器学习算法时,我们做了许多看起来随意的决定。比如,使用特征的线性回归预测结果,我们同样可以使用平方或其他多项式组合特征。

我们也可以选择其他有意义的损失函数,譬如 y i 与 f(x i )差的绝对值和立方损失。同样,使用 二元损失(binary  loss)(y i 和 f(x i )的值不相等时为 1,否则为0)不也很合理吗?

事实上,一旦我们选择了不同的模型或损失函数,或者用不同的算法来最小化平均损失从而得到最优函数,我们就创造了一个新的机器学习算法。是不是听起来很容易?不过,先别急着发明新算法,因为新的未必更好用。


通常,人们发明新的学习算法有两个目的


新算法在解决一个特定实际问题时,效果比现有算法更好;
新算法有更好的理论基础,保证输出模型的质量。

下图中的回归模型是一个过拟合的例子。图中的训练数据(蓝点)与上图中见到的一样。区别在于,这里的回归模型(红线)是一个 10 元多项式回归(polynomial regression)。回归线对训练样本的预测结果近乎完美。


拟合示意图


2

对数几率回归

对数几率回归(logistic regression) [3] 并不是一个回归模型,而是分类学习模型。它的命名来自于统计学,因为其数学表达式与线性回归很类似。在此我们只解释对数几率回归在二分类问题上的应用。

问题陈述:在对数几率回归中,我们还是想用 x i 的线性函数对 y i 建模。只不过当 y i 是二元时,问题就没有那么简单了。特征的线性组合 wx i +b 是一个从负无穷到正无穷的函数,而 y i 只有两个可能值。

在计算机被发明之前,科学家需要进行大量手动运算,急需一个线性分类模型。他们发现,如果把负标签定义为 0、正标签定义为 1,我们只需要找到一个域值为(0,1)的简单连续函数。这样一来,当模型对 x 的结果接近 0 时,我们给 x 一个负标签;反之,x 得到正标签。

标准对数几率函数(standard  logistic  function),又称为sigmoid 函数,便是一个具有这一特质的函数:f(x)=1/1+e的-x次方。

其中,e 是一个自然对数的底数,也称为欧拉数(Euler̓s Number)。许多编程语言使用 exp(x)表示 e x 。
sigmoid 函数的曲线如下图所示。


标准对数几率回归


对率回归模型的具体表示式为:


其中包含我们在线性回归中见过的 wx+b。

通过观察标准对数几率函数的曲线,我们可以理解它如何满足我们的分类去求:如果我们正确地优化得出w 和 b 值,便可以将 f(x)的结果理解为 y i 为正值的概率。举个例子,如果结果大于或等于一个阈值 0.5,我们认为 x 的类型为正;反之为负。

在实际操作中,阈值的选择可以因具体问题的不同而调整。接下来,我们要如何找出最优参数 w * 和 b * 呢?回顾一下,在线性回归中,我们最小化平均误差损失,也称为均方误差(Mean Squared Error,MSE)。


03

百页机器学习图书


和其他图书不一样,《机器学习精讲》仅152页就可以把您需要了解的所有有关机器学习的知识介绍清楚。



作者安德烈·布可夫(Andriy Burkov),加拿大魁北克市的机器学习专家。他领导着Gartner的机器学习开发团队长达7年,这个开发团队致力于使用浅层和深度学习技术,构建用于生产的最先进的多语言文本提取和规范化系统,可谓是机器学习这一领域的先锋行者!




《机器学习精讲》



作者: [加拿大] 安德烈·布可夫(Andriy Burkov)

译者: 韩江雷


本书语言精炼,是机器学习领域必备图书。涵盖了监督学习和非监督学习、支持向量机、神经网络、集成学习、梯度下降、聚类分析、维度降低、自编码器、迁移学习、强化学习、特征工程、超参数调试等众多核心概念和方法。


本书适合想要学习和掌握机器学习的软件从业人员、想要运用机器学习技术的数据科学家阅读,想要了解机器学习的一般读者参考。


全书最后提供了一个较为详尽的术语表。本书能够帮助读者了解机器学习是如何工作的,为进一步理解该领域的复杂问题和进行深入研究打好基础。



-END-






《留言赠书》




留言说说你对本书的看法?

选取3位读者获得本书

时间:截止3月16日


异步小助手

扫码添加好友,回复“进群”

微信号:epubit2017

学习交流 | 赠书活动 | 免费领取电子书






点击“阅读原文”,免费试看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56072
 
317 次点击