上海交大ACM班出品,动手学机器学习!算法编程人工智能

最近,彪悍的上海交大ACM班俞勇教授团队推出了一本重量级新书——《动手学机器学习》。这对于技术人来说是难得的福音,因为它一次性讲明白了机器学习这回事。

点击封面,即可5折购书,限50人

上海交大ACM班到底有多彪悍?看看它的杰出校友们吧。

科研领域有在斯坦福任教的杨笛一,有在卡耐基梅隆大学任教的陈天奇,他也是XGBoost作者、TVM发起人。企业界则有依图科技联合创始人林晨曦,第四范式创始人戴文渊。MXNet的作者大神李沐,其所著的《动手学深度学习》更是诸多技术人的必读经典。

因此ACM班在业界享有中国AI人才的“黄埔军校”之称。了不起的成就背后是伟大的愿景,ACM班的创立者俞勇教授一直在为培养中国的图灵奖得主而努力。颁发图灵奖的机构就是ACM(美国计算机协会),可见俞勇教授给ACM班取名时就寄予了多么深切的期望。

ACM班总教头:俞勇教授

《动手学机器学习》的内容来自于ACM班的一线教学实践。本书作者之一张伟楠根据自己讲授机器学习课程的体会与学生反馈,将理论知识与练习代码进行体系化整理形成初稿。

02

弄懂机器学习要学会什么

《动手学机器学习》的定位是在引领初学者入门,在内容设置上是从讲解基础理论算法开始,逐渐进入有监督学习模型与无监督学习模型的论述,力求让学习者系统化掌握机器学习的主干知识。

本书的主创团队有三位作者,除了总教头俞勇教授,还有将教学成果整理成书的张伟楠副教授,他在强化学习、数据挖掘、知识图谱等领域颇有建树。作者赵寒烨也在强化学习、机器学习方面有着深入的研究。

实力如此强劲的技术天团,为本书在业界树立了权威的标杆。

下面对书中四个主要部分的内容进行说明。

机器学习基础

在基础部分,主要是帮助学习者抓住最核心的概念和原理,讲解了最基础的两个算法:KNN(K近邻算法)和线性回归。基于这两个算法讨论了机器学习的基本思想与实验原则。

扎实掌握好这部分内容,就具备了在大部分机器学习场景中上手实践解决问题的能力。

参数化模型

本部分主要是讨论监督学习任务的参数化模型,包括逻辑斯谛回归、双线性模型、神经网络与多层感知机、卷积神经网络、循环神经网络等内容。

这些方法的共通特征,主要是基于数据的损失函数对模型参数求梯度,进而更新模型。

非参数化模型

这部分聚焦在监督学习的非参数化模型上,包括支持向量机、决策树、集成学习与梯度提升决策树等内容。

之所以将非参数模型单独作为一个部分,是为了让学习者从原理和代码方面更好地体会与参数化模型的区别、优劣。

无监督模型

本部分讨论了对于没有标注的数据进行处理的无监督学习方法,包括K均值聚类、主成分分析、概率图模型、EM算法、自动编码器等内容。

对无监督学习进行了不同任务、不同技术角度的讨论,让学习者可以充分体会与监督学习的区别。

现在知道了要学什么,接下来再说怎么学。

03

动脑也要动手

《动手学机器学习》的最大亮点就是为动手实践提供了傻瓜式的体验环境,主创团队将ACM班的实践成果精炼出来,理论与代码相结合,让学习者可以平滑上手。

书中包括机器学习的概念定义、理论分析和算法过程和可运行代码。学习者可根据自己的学习状况,灵活选择想要阅读的内容。

不过,毕竟不是零基础入门,在动手之前学习者要具备两项基础能力,一是数学概念和数理统计知识,包括矩阵运算、概率分布和数值分析方法等;二是基本的Python的编程能力,能看懂代码并调试运行。

本书丰富的技术案例涵盖了基础算法、监督学习的参数化模型与非参数化模型,以及非监督模型。对于书中提到的知识点,学习者都可以亲手实践。主创团队对代码示例进行了精心选择,力求功能简洁且易修改。

书中提供的代码都是基于Python3与PyTorch框架实现,可用任意支持ipynb格式的在线或本地工具运行。

示例中用到的Python工具库都有简要说明,每一份示例代码中都包含可以由学习者自行设置的变量,学习者可以实时修改并运行观察结果。

以下是在VisualStudioCode环境中运行KNN算法的实例。

代码区

运行输出结果

是不是意犹未尽?还有更多惊喜的富媒体学习资料,让我们来看一下。

在线教学视频:主创团队贴心地录制了视频课程。观看方式:看到书中出现“扫码观看视频课程”的图示,就立即拿起手机扫码吧。

配套PPT课件:方便学习者温习主干知识,也有利于教师备课。

课后习题:看看自己学得牢不牢,千万不要当半桶水先生,题目都要会做。

学习社群:三人行,必有我师。书中为大家提供了入群学习的方式,可随时随地与同行们交流。

《动手学机器学习》的内容在成书之前就经过了ACM班的教学检验,书中的原理讲解、算法说明、代码案例都在教与学的互动中去芜存菁,可以说这本书就是思考与实践的淬炼结晶。

当先进的教学成果走出校园,在业界传播普及机器学习知识,推动了产业的发展时,也引得大佬们交口称赞。

本书从机器学习的基本概念入手,结合sklearn机器学习算法库,以大量示例和代码带领读者走进机器学习的世界。

——周志华南京大学计算机科学与技术系主任

兼人工智能学院院长

本书源自上海交通大学ACM班机器学习课程讲义,着力帮助读者融会贯通,深入理解机器学习原理并提高动手实战能力,是培养新一代人工智能实战型人才不可多得的好书。

——朱军清华大学计算机科学与技术系博世人工智能冠名教授、IEEE会士

本书是全面、系统的机器学习教材,主要介绍机器学习的核心概念及代表性方法。本书不仅涵盖神经网络、集成学习等经典的机器学习理论,还配备可在线运行的代码,帮助读者通过动手实战来加强对机器学习技术的理解。无论是初学者还是行业人士,都能从本书中得到有价值的帮助和指导。

——李文新北京大学计算机学院教授、北京市教学名师、北京大学计算机实验教学中心主任

本书形态新颖、丰富。纸质图书对机器学习的知识体系进行系统介绍,理论解读视频课程对疑难知识点进行更透彻的讲解,代码支持在线运行、修改,习题帮助读者检验、巩固学习效果,教学课件帮助高校教师备课。本书既能为行业人士自学机器学习提供体系化的学习资源,又能通过动手学的方式帮助高校教师和学生完成机器学习的教学与学习。

——黄萱菁复旦大学计算机科学技术学院、现代语言学研究院教授

智能化升级已成为当代企业在数字化转型后攀登的新阶梯。为此,需要大量具备专业知识的人工智能人才,他们不仅要深入理解人工智能的理论和算法,更应具备实战能力,以应对实际应用场景中的挑战。本书正是为培养这种实战型人工智能人才而编写的,内容详实、示例丰富、代码清晰,强烈推荐给所有希望深入了解人工智能并进行动手实战的读者。

——刘铁岩微软杰出首席科学家、微软研究院科学智能中心亚洲区负责人、微软亚洲研究院副院长

上海交通大学ACM班注重培养学生扎实的专业基础和动手实战能力。俞勇老师团队编写的这本书体现了上海交通大学ACM班在人工智能基础模块人才培养方面的特色理念,在此推荐给各位读者。

——陈天奇卡内基梅隆大学机器学习系、计算机科学系助理教授

04

玩转机器学习要用好非显式编程

从根本上说,机器学习是一门研究算法的学科,而这些算法的作用,就在于能够通过非显式编程(non-explicitprogramming)的形式,利用经验数据提升某个任务的性能指标。

所以这里的难度在于,即使我们理解了算法,也无法从结果倒推回去,这是难以还原的。显式编程则直观得多,直接针对问题给出解答,例如要对一组数据排序,就实现一个快速排序算法。

对于学习者来说,要将机器学习在自己的业务领域内应用好,就要转变思维,“往后站一步”,从显式编程转为编写机器学习算法程序。这就是非显式编程的含义,在不同任务中,基于任务自身的数据,训练出一个解决问题的模型。

1-1传统的显式编程与机器学习的非显式编程

《动手学机器学习》就是要帮助学习者系统化地理解机器学习,弄明白算法原理,学会用非显式编程解决自己的问题。书中对每种算法都给出了开箱即用的示例代码,学习者轻松扩展一下就可以用在实际工作中。

▲点击封面,即可5折购书

现在,分析一下手头上的任务和数据,赶紧把机器学习方法用起来,成为智能时代的超级个体吧!

THE END
1.编程的多种方式组成编程方式分为,编程方式的多样性,编程方式分类编程,作为现代科技的核心,已经渗透到我们生活的方方面面,无论是手机应用、网页游戏,还是大型的软件开发、人工智能算法,都离不开编程的支撑,编程方式多种多样,各有其特点和适用场景,本文将详细介绍编程的几种主要方式组成。 编程的基本方式 1、命令式编程 http://www.skypure.com.cn/post/32601.html
2.算法解析:从二分查找到最小生成树二、分治算法--Divide-and-Conquer 1、基本介绍 分治算法是非常重要的一种算法,基本思想就是将一个大问题化解成俩个或多个子问题,直到子问题可以直接求解为止,将每个子问题的解合并。如:归并排序,汉诺塔问题,快速排序 2、基本步骤 分治法在每一层递归上都有三个步骤: https://blog.csdn.net/aetawt/article/details/122239186
3.关于表彰常州市第八次自然科学优秀科技论文的决定43、基于H.26L关键算法模块软件编码器的设计与实现 朱金秀(河海大学常州校区) 44、遗传编程局部最优化问题分析 高波、查志琴(常州工学院) 45、基于亲脂性β-环糊精的普萘洛尔对映体选择性电极 孙成俊、孙贤祥(江苏工业学院) 46、一种自组装的包裹不对称硫醚链金簇的内部结构的分子模拟 https://www.changzhou.gov.cn/gi_news/134260614932368
4.信息学竞赛宝典基础算法本书中的每一章都分为普及组和提高组两部分。普及组涉及的内容对应NOIP普及组难度,读者可初步掌握每种算法的思想和用法;提高组涉及的内容对应 NOIP提高组难度,读者可复习和提高已讲解过的算法内容。 本书既适合作为学习了C++语言和算法入门知识的读者的进阶教材,也适合作为有一定编程基础的读者学习算法的独立用书。 https://labs.epubit.com/bookDetails?id=UBd1a15f91dc9b
5.年薪50万!北航合肥创新研究院招募研究员!澎湃号·政务4、了解CV、机器学习、深度学习或强化学习、大数据分析等常用算法及模型,具备较强的编程能力,熟悉Tensorflow等机器学习平台; 5、有重大基础研究和应用研究经验者以及具备产学研合作和科技成果转化经验者优先; 6、能紧跟自身科研领域的发展方向,具有较强的团结协作、拼搏奉献精神,能够协助团队负责人开展科研管理工作。 https://www.thepaper.cn/newsDetail_forward_4985535
6.Rust实现八种排序算法排序是非常基础的算法问题之一,本文将使用排序是非常基础的算法问题之一,本文将使用Rust编程语言实现八种排序算法,通过实现排序算法来学习Rust。在本文中,我们限定对n个数字进行从小到大的排序。 冒泡排序每次从头到尾比较每个相邻的数字,如果前面的数字小于后面数字,那么交换它们的位置。第i次遍历后,第i大的https://juejin.cn/post/6844904053353218062
7.我是如何成为算法工程师的,超详细的学习路线C++是一种面向对象的程序设计语言,无论你是做算法,还是做开发,亦或者是做测开。C++ 都应该掌握,它是一个基础的编程语言。学会了这门编程语言,再学其它,就会更得心应手。 视频:这部分推荐慕课网的免费教程,很好的入门视频,老师讲得绘声绘色、形象生动、通熟易懂。 https://cuijiahua.com/blog/2020/10/life-73.html
8.Python基础知识Python编程基础算法Python作为目前编程开发的主流语言之一,在企业中的应用范围越来越广,广阔的发展前景吸引了很多小伙伴想要入行Python,在学习Python时,一定要对基础技术知识有一个良好的了解,这样才会事半功倍,今天八维职业学校就和大家一起来看看Python编程中的基础算法,希望对各位学子有帮助。 https://www.bwie.com/jsgh/66.html
9.python基础面向对象编程51CTO博客1.编程的复杂度远高于面向过程,不了解面向对象而立即上手基于它设计程序,极容易出现过度设计的问题。一些扩展性要求低的场景使用面向对象会徒增编程难度,比如管理linux系统的shell脚本就不适合用面向对象去设计,面向过程反而更加适合。 2.无法像面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对https://blog.51cto.com/lyndon/1961392
10.算法基础MOOC中国算法基础 课程概况 算法代表着用系统的方法描述解决问题的策略机制,北京大学《算法基础》课程将带你一一探索枚举、二分、贪心、递归、深度优先搜索、广度优先搜索、动态规划等经典算法,体会他们巧妙的构思,感受他们利用计算解决问题的独特魅力。顺利完成本课程,你将不但能够掌握这些算法的原理,还能够对这些算法进行灵活https://www.mooc.cn/course/1516.html
11.计算机语言入门先学什么电脑知识对于计算机语言入门初学者,首先需要掌握计算机基础、算法和数据结构,然后选择一种入门级编程语言,如 python、java 或 c++,并系统学习其语法和基本概念。 计算机语言入门先学什么? 对于初学者来说,学习计算机语言入门时,首先需要掌握以下几个基本方面: 1. 计算机基础 https://m.php.cn/faq/794310.html
12.一周拿下多线程+源码+微服务+分布式+调优,金九银十轻松跳槽!10.垃圾收集算法、GC最基础的算法有哪几种? 设计模式 有哪几种设计模式?(单例模式、工厂模式、观察者模式、外观模式、模版方法模式状态模式)解释一下? 2.简单工厂和抽象工厂有什么区别?(简单工厂、工厂方法、抽象工厂)解释一下? 容器 1.Java容器都有哪些? https://maimai.cn/article/detail?fid=1745524493&efid=M16y-pf4BEk-X2Gzv9ldpg
13.编程之五大算法在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快http://www.360doc.com/content/13/0312/23/11692178_271144642.shtml
14.游戏编程算法与技巧带目录完整pdf[41MB]电子书下载《游戏编程算法与技巧》介绍了大量今天在游戏行业中用到的算法与技术。《游戏编程算法与技巧》是为广大熟悉面向对象编程以及基础数据结构的游戏开发者所设计的。作者采用了一种独立于平台框架的方法来展示开发,包括2D 和3D 图形学、物理、人工智能、摄像机等多个方面的技术。《游戏编程算法与技巧》中内容几乎兼容所有游https://www.jb51.net/books/631728.html
15.算法详解(卷1)——算法基础算法详解系列图书共有4卷,本书是第一卷——基础算法。本书共有6章,主要介绍了4个主题,它们分别是渐进性分析和大O表示法、分冶算法和主方法、随机化算法以及排序和选择。附录A和附录B简单介绍了数据归纳法和离散概率的相关知识。本书的每一章均有小测验、章末习题和编程题,这为读者的自我检查以及进一步学习提供https://mc64e8402.ptpress.cn/bookDetails?id=B22553
16.程序员应该知道的十个基础算法腾讯云开发者社区程序员应该知道的十个基础算法 作为一名程序员,掌握各种算法可以帮助我们解决各种复杂的问题,提高代码的效率和性能,同时也是面试中常被考察的重要内容之一。无论是开发新的软件应用、优化现有的算法逻辑还是解决各类计算问题,算法都是不可或缺的工具。因此,程序员必须掌握一系列常用的算法,以确保能够高效地编写出稳定、https://cloud.tencent.com/developer/article/2352039