吴恩达《Machine Learning》课程笔记

吴恩达在 Coursera 上开设的《Machine Learning》课程。这门课最大的特点就是基本没有复杂的数学理论和公式推导,非常适合入门!本课程将广泛介绍机器学习、数据挖掘和统计模式识别。相关主题包括:

  1. 监督式学习(参数和非参数算法、支持向量机、核函数和神经网络)。
  2. 无监督学习(集群、降维、推荐系统和深度学习)。
  3. 机器学习实例(偏见/方差理论;机器学习和 AI 领域的创新)。

课程将引用很多案例和应用,您还需要学习如何在不同领域应用学习算法,例如智能机器人(感知和控制)、文本理解(网络搜索和垃圾邮件过滤)、计算机视觉、医学信息学、音频、数据库挖掘等领域。

这门课基本涵盖了机器学习的主要知识点,例如:线性回归、逻辑回归、支持向量机、神经网络、K-Means、异常检测等等。而且课程中没有复杂的公式推导和理论分析。Ng 的目的是让机器学习初学者能够快速对整个机器学习知识点有比较整体的认识,便于快速入门。

这门课的笔记网上有很多,但今天推荐一份不错的全面的笔记。该笔记的特点是所有内容都是基于 Jupyter Notebook 写的,集图片、公式、代码、练习题于一体,非常方便实用!另外,这门课配套相应的练习题。Github 上已经有人把作业整理成为 Python 的形式了。有 .py 和 .ipynb 两种格式。

https://github.com/nsoojin/coursera-ml-py

https://github.com/kaleko/CourseraML 

GitHub地址项目 GitHub 地址

 

《统计学习方法》第 2 版课件 + 算法实现代码

李航的《统计学习方法》(GitHub 地址)可以说是机器学习的入门宝典,许多机器学习培训班、互联网企业的面试、笔试题目,很多都参考这本书。该书从 2005 年开始写作一直到 2012 年完成,包含了众多主要的监督学习算法与模型。今年,《统计学习方法》第二版正式发布,通过 6 年时间的努力,在第一版的基础上又增加了无监督学习的主要算法与模型。

这里插入个图表,列举了各个章节所占篇幅,其中 SVM 是监督学习里面占用篇幅最大的,MCMC 是无监督里面篇幅占用最大的,另外 DT,HMM,CRF,SVD,PCA,LDA,PageRank 也占了相对较大的篇幅。
这里插入个图表,列举了各个章节所占篇幅,其中 SVM 是监督学习里面占用篇幅最大的,MCMC 是无监督里面篇幅占用最大的,另外 DT,HMM,CRF,SVD,PCA,LDA,PageRank 也占了相对较大的篇幅。

《统计学习方法》第二版的最新课件,是由清华大学深圳研究院的袁春教授制作的。

所有的课件都是 PPT 格式,总共包含 22 章。正好是《统计学习方法》第 2 版的完整内容。

其中,第 1 章至第 12 章主要是《统计学习方法》第一版的内容。主要介绍统计学习及监督学习概论、感知机、近邻法、朴素贝叶斯法、决策树、逻辑斯谛回归与最大熵模型、支持向量机、提升方法、EM 算法及其推广、隐马尔可夫模型、条件随机场、监督学习方法总结。

第 2 版增加的新内容包括:

  • 第 13 章 – 无监督学习概论
  • 第 14 章 – 聚类方法
  • 第 15 章 – 奇异值分解
  • 第 16 章 – 主成分分析
  • 第 17 章 – 潜在语义分析
  • 第 18 章 – 概率潜在语义分析
  • 第 19 章 – 马尔可夫链蒙特卡罗法
  • 第 20 章 – 潜在狄利克雷分配
  • 第 21 章 – PageRank 算法
  • 第 22 章 – 无监督学习方法总结
整个这本书里面各章节也不是完全独立的,这部分希望整理章节之间的联系以及适用的数据集。算法到底实现到什么程度,能跑什么数据集也是一方面。
整个这本书里面各章节也不是完全独立的,这部分希望整理章节之间的联系以及适用的数据集。算法到底实现到什么程度,能跑什么数据集也是一方面。

最后,Github 上有同学将第一版相关的机器学习算法用 Python 实现了一遍,致力于将李航博士《统计学习方法》一书中所有算法实现一遍。

GitHub地址项目 GitHub 地址

机器学习的数学基础

此前,跨象乘云™ 曾发布过由 Marc Peter Deisenroth,A Aldo Faisal 和 Cheng Soon Ong 撰写的《机器学习数学基础》。这个是从大学教材里搜集的机器学习数学基础资料,分为高等数学,线性代数、概率论与数理统计三部分。另外包括了斯坦福大学 CS 229 机器学习课程的基础材料,难度应该在本科 3 年级左右。数据科学需要一定的数学基础,但仅仅做应用的话,如果时间不多,不用学太深,了解基本公式即可,遇到问题再查吧。

GitHub地址项目 GitHub 地址

微软官方教程:在 Windows 进行 Python 开发

在 Windows 上做 Python 开发太痛苦?微软最近发布了一系列官方教程,这些教程将指导使用者如何设置开发环境、是否在原生 Windows 或 Windows Subsystem for Linux (WSL) 系统上安装自己的工具,以及如何集成 VS Code、Git 等工具。

具体教程如下所示:

  • 初学者在 Windows 上使用 Python 的教程
  • Web 开发者在 Windows 上使用 Python 的教程
  • 在 Windows 上使用 Python 编写脚本和自动执行文件系统操作
  • 在 Windows 上使用 Python 执行机器学习任务
在 Windows 进行 Python 开发
在 Windows 进行 Python 开发

 

Joshua Gordon《TensorFlow 2.0讲解》PPT

Tensorflow2.0 对于新手来说更为易用,而对于老手来说,功能更为强大,Josh Gordon 为我们介绍了TensorFlow2.0  的一些新的特征与使用技巧。

在构建模型方面,针对不同的使用人群,TensorFlow2.0 提供了不同层面的 API,针对刚接触 TensorFlow 的新手,提供了Sequential API, 针对工程师,开放了 FunctionalAPI 与 build-in 层,针对有更高需求的工程师,开放了 FunctionalAPI 与可定制的层,评估指标,损失函数等,而针对科研工作者,开放了 Subclassing,可以定制一切函数。

在训练模型方面,从简单到复杂也分很多层次。从快速实验的 model.fit(),到定制回调函数 callbacks,到定制训练循环 batch (使用 GAN 时很有效),到完全定制训练过程,包括优化算法等 (GradientTape).

在数据方面,提供了 tensorflow_datasets,能够轻松地加载数据集。

在并行训练方面,得益于分布式策略,无需改变代码,就可以在多台机器、多个 GPU 上训练(MirroredStrategy, MultiWorkerMirroredStrategy)。

教程最后还介绍了两个项目:TinyML: 轻量级的机器学习项目 与 TF.js.

Joshua Gordon 《TensorFlow 2.0讲解》

零基础入门PyTorch深度学习

Pytorch 是 Torch 的 Python 版本,是由 Facebook 开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(Tensor )库,在机器学习和其他数学密集型应用有广泛应用。与 Tensorflow 的静态计算图不同,Pytorch 的计算图是动态的,可以根据计算需要实时改变计算图。

Vipul Vaibhaw 在 Github 开源了一份关于 Pytorch 深度学习的书册,《First steps towards Deep Learning with PyTorch》,这是一本关于深度学习的开源书籍。这本书应该是非数学的,迎合了那些没有深度学习经验,数学知识和兴趣很少的读者。这本书旨在帮助读者迈出深度学习的『第一步』。

主要内容覆盖了:

  1. 理解人工神经网络
  2. PyTorch 介绍
  3. 如何让计算机看见?
  4. 如何让计算机记忆?
  5. 下一步学习

GitHub地址项目 GitHub 地址

吴恩达《机器学习训练秘籍》完整中文版 – 更新

此前,我们发布了『吴恩达《机器学习训练秘籍》完整中文版』信息,目前该开源项目已迁移到新的地址。请在新的地址开始在线阅读《机器学习训练秘籍》样稿,相关代码开源地址如下:

Machine Learning Yearning
Machine Learning Yearning

GitHub地址项目 GitHub 地址

微软研究院新版书籍《数据科学基础》PDF 下载

随着大数据、深度学习在学术界和工业界的普及,人们越来越认识到数据对于科研和应用的重要性。虽然现在相关的工具和框架大大降低了构建数据应用的门槛,数据科学基础对应用的构建依然起着核心的作用。本文介绍微软研究院新版书籍《数据科学基础》。

计算机科学学科从 60 年代兴起,当时人们聚焦于编程语言、编译器、操作系统和相关的数学理论。70年代左右,算法被加入作为计算机科学理论中重要的一员。随着计算机的普及,自然科学、商业等领域有着更强的发现、收集和存储数据的能力。如何理解和应用这些数据成为了现在的一个刚需。互联网和社交网络成为人们日常生活一部分的事实,反映了数据理论的机遇与挑战。

微软研究院的新版书籍《Foundations of Data Science》(《数据科学基础》)详细介绍了许多重要的数据科学理论基础。这些理论基础例如奇异值分解(SVD)、马尔科夫链、随机游走等是支撑现在广泛使用在数据应用中的算法的支柱,如推荐系统、语音识别、图神经网络等。《数据科学基础》提纲及下载链接如下:

  • 简介
  • 高维空间
  • 最佳拟合子空间和奇异值分解(SVD)
  • 随机游走和马尔科夫链
  • 机器学习
  • 面向海量数据问题的算法:流式、概述和采样
  • 聚类
  • 随机图
  • 主题模型、非负矩阵分解、隐马尔科夫模型和图模型
  • 其他主题
  • 小波

Foundations of Data Science

TensorFlow 2.0 实战教程

这是一份来自 IJCAI 2019上的一个 TensorFlow 2.0 实操教程,这个教程包含 117 页 PPT,由 Google 资深开发人员 Josh Gordon 讲授,提供了最新 TensorFlow 2.0 的实操介绍,重点介绍了最佳实践。读者将学习编写几种类型的神经网络(Dense, Convolutional, 和 Recurrent),以及生成对抗网络(Generative Adversarial Network)。

Hands on TensorFlow 2.0
Hands on TensorFlow 2.0

TensorFlow 是一个基于数据流编程(Dataflow Programming)的符号数学系统,被广泛应用于各类机器学习(Machine Learning)算法的编程实现,其前身是谷歌的神经网络算法库 DistBelief。

Tensorflow 拥有多层级结构,可部署于各类服务器、PC 终端和网页并支持 GPU 和 TPU 高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究。

如果你想学习新发布的 TensorFlow 2.0 版本,那么本教程非常适合您。不过您需要事先熟悉一些基本的机器学习知识。该教程将介绍深度学习中的关键概念。本教程的目标是帮助您高效地开始使用 TensorFlow,这样您就可以继续自学了。

《Hands on TensorFlow 2.0》教程下载

《动手学深度学习》PyTorch 版

我们知道,作为 MXNet 的作者之一,李沐的这本《动手学深度学习》也是使用 MXNet 框架写成的。但是很多入坑机器学习的萌新们,使用的却是 PyTorch。如果有教材对应的 PyTorch 实现代码就更好了!今天就给大家带来这本书的 PyTorch 实现源码。最近,来自印度理工学院的数据科学小组,把《动手学深度学习》从 MXNet 『翻译』成了 PyTorch,经过 3 个月的努力,这个项目已经基本完成,并登上了 GitHub 热榜。

d2l-pytorch
d2l-pytorch

其中,每一小节都是可以运行的 Jupyter 记事本,你可以自由修改代码和超参数来获取及时反馈,从而积累深度学习的实战经验。

GitHub地址项目 GitHub 地址

滴滴开源的 AoE:工程实践中的图像处理

近期,滴滴开源了 AOE 项目,很多人还是一脸懵逼,不太清楚 AOE 到底是干什么的,所以今天我们再来听听官方工程师是怎么介绍的吧,不信你还是听不懂:近期我们开发了一个银行卡 OCR 项目。需求是用手机对着银行卡拍摄以后,通过推理,可以识别出卡片上的卡号。

工程开发过程中,我们发现手机拍摄以后的图像,并不能满足模型的输入要求。以 Android 为例,从摄像头获取到的预览图像是带 90 度旋转的 NV21 格式的图片,而我们的模型要求的输入,只需要卡片区域这一块的图像,并且需要转成固定尺寸的 BGR 格式。所以在图像输入到模型之前,我们需要对采集到的图像做图像处理,如下图所示:

OCR 案例
OCR 案例

在开发的过程中,我们对 YUV 图像格式和 libyuv 进行了研究,也积累了一些经验。下文我们结合银行卡 OCR 项目,讲一讲里面涉及到的一些基础知识:

  1. 什么是YUV格式
  2. 如何对YUV图像进行裁剪
  3. 如何对YUV图像进行旋转
  4. 图像处理中的Stride
  5. 如何进行缩放和格式转换
  6. libyuv的使用

想要对采集到的 YUV 格式的图像进行处理,首先我们需要了解什么是 YUV 格式。

什么是 YUV 格式

YUV 是一种颜色编码方法,YUV,分为三个分量:

  • 『Y』 表示明亮度(Luminance 或 Luma),也就是灰度值;
  • 『U』和『V』 表示的则是色度(Chrominance 或 Chroma)。
  • 主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0。

这部分专业的知识,网络上有详细的解释。我们简单理解一下,RGB 和 YUV 都使用三个值来描述一个像素点,只是这三个值的意义不同。通过固定的公式,我们可以对 RGB 和 YUV 进行相互转换。工程里常见的 I420,NV21,NV12,都是属于 YUV420,每四个 Y 共用一组 UV 分量。YUV420 主要包含两种格式,YUV420SP 和 YUV420P。

  • YUV420SP,先排列Y分量,UV分量交替排列,例如:NV12: YYYYYYYY UVUV 和 NV21: YYYYYYYY VUVU (上文中我们在安卓上采集到的图像就是这种格式)。

    YUV420SP
    YUV420SP
  • YUV420P,先排列U(或者V)分量,再排列V(或者U)分量。例如:I420: YYYYYYYY UU VV 和 YV12: YYYYYYYY VV UU。

    YUV420P
    YUV420P

了解了 YUV 的图像格式以后,我们就可以尝试对图片进行裁剪和旋转了。我们的想法是先在图片上裁剪出银行卡的区域,再进行一次旋转。

对图片进行裁剪和旋转
对图片进行裁剪和旋转

如何对 YUV 图像进行裁剪

YUV420SP 和 YUV420P 裁剪的过程类似,以 YUV420SP 为例,我们要裁剪图中的这块区域:

YUV420SP
YUV420SP

在图上看起来就非常明显了,只要找到裁剪区域对应的 Y 分量和 UV 分量,按行拷贝到目标空间里就可以了。

我们再来看一张图,是否可以用上面的方法来裁剪图中的这块区域呢?

答案是否定的,如果你按照上面说的方法来操作,最后你会发现你保存出来的图,颜色基本是不对的,甚至会有内存错误。原因很简单,仔细观察一下,当 ClipLeft 或者 ClipTop 是奇数的时候,会导致拷贝的时候 UV 分量错乱。如果把错误的图像数据输入到模型里面,肯定是得不到我们期望的结果的。所以我们在做裁剪的时候,需要规避掉奇数的场景,否则你会遇到意想不到的结果。

如何对 YUV 图像进行旋转?

对上文裁剪后的图像做顺时针 90 度旋转,相比裁剪,转换要稍微复杂一些。

基本方法是一样的,拷贝对应的 Y 分量和 UV 分量到目标空间里。

在了解了裁剪和旋转的方法以后,我们发现在学习的过程中不可避免地遇到了 Stride 这个词。那它在图像中的作用是什么呢?

图像处理中的 Stride

Stride 是非常重要的一个概念,Stride 指在内存中每行像素所占的空间,它是一个大于等于图像宽度的内存对齐的长度。如下图所示:

Stride 是非常重要的一个概念
Stride 是非常重要的一个概念

回过头来看我们上面说到的裁剪和旋转,是否有什么问题?以 Android 上的 YV12 为例,Google Doc 里是这样描述的:

YV12 is a 4:2:0 YCrCb planar format comprised of a WxH Y plane followed by (W/2) x (H/2) Cr and Cb planes.

This format assumes
• an even width
• an even height
• a horizontal stride multiple of 16 pixels
• a vertical stride equal to the height

y_size = stride * height
c_stride = ALIGN(stride / 2, 16)
c_size = c_stride * height / 2
size = y_size + c_size * 2
cr_offset = y_size
cb_offize = y_size + c_size

所以在不同的平台和设备上,需要按照文档和 stride 来进行计算。例如计算 Buffer 的大小,很多文章都是简单的 “*3/2” ,仔细考虑一下,这其实是有问题的。如果不考虑 stride ,会有带来什么后果?如果 “运气” 足够好,一切看起来很正常。“运气”不够好,你会发现很多奇怪的问题,例如花屏,绿条纹,内存错误等等。这和我们平常工作中遇到的很多的奇怪问题一样,实际上背后都是有深层次的原因的。

经过裁剪和旋转,我们只需要把图像缩放成模型需要的尺寸,转成模型需要的 BGR 格式就可以了。

如何进行缩放和格式转换

以缩放为例,有临近插值,线性插值,立方插值,兰索斯插值等算法。YUV 和 RGB 之间的转换,转换的公式也有很多种,例如量化和非量化。这些涉及到专业的知识,需要大量的时间去学习和理解。

这么多的转换,我们是否都要自己去实现?

很多优秀的开源项目已经提供了完善的 API 给我们调用,例如 OpenCV,libyuv 等。我们需要做的是理解基本的原理,站在别人的肩膀上,做到心里有数,这样即使遇到问题,也能很快地定位解决。

经过调查和比较,我们选择了 libyuv 来做图像处理的库。libyuv 是 Google 开源的实现各种 YUV 与 RGB 之间相互转换、旋转、缩放的库。它是跨平台的,可在 Windows、Linux、Mac、Android 等操作系统,x86、x64、arm 架构上进行编译运行,支持 SSE、AVX、NEON等SIMD 指令加速。

libyuv 的使用

引入 libyuv 以后,我们只需要调用 libyuv 提供的相关 API 就可以了。在银行卡 OCR 工程使用的过程中,我们主要遇到了 2 个问题:

  1. 在Android开发的初期,我们发现识别率和我们的期望存在一定的差距。我们怀疑是模型的输入数据有问题,通过排查发现是使用libyuv的时候,没注意到它是little endian。例如这个方法:int BGRAToARGB(…),BGRA little endian,在内存里顺序实际是ARGB。所以在使用的时候需要弄清楚你的数据在内存里是什么顺序的,修改这个问题后识别率达到了我们的预期。
  2. 在大部分机型上运行正常,但在部分机型上出现了 Native 层的内存异常。

通过多次定位,最后发现是 stride 和 buffersize 的计算错误引起的。由于 libyuv 是 C/C++ 实现的,使用的时候不是那么的便捷。为了提高开发效率,我们提取了一个 AoeVision 组件,对libyuv封装了一层 JNI 接口,包括了一些基础的转换和一些 Sample,这样使用起来更加简单方便,AoeVision组件还在不断开发和完善中。

GitHub地址项目 GitHub 地址

知识图谱教程:从海量文本中挖掘和构建异构信息网络

第 25 届 ACM SIGKDD 知识发现与数据挖掘大会于  2019 年 8 月 4 日- 8 日在美国阿拉斯加州安克雷奇市举行。一年一度的 KDD 大会是最重要的跨学科会议,汇聚了数据科学、数据挖掘、知识发现、大规模数据分析和大数据等领域的研究人员和实践者。

今天整理了关于数据挖掘方面的内容:从文本中构建和挖掘异构信息网络,本文提供了一个全面的综述,总结了在这个方向最近的研究和发展。

第 25 届 ACM SIGKDD

摘要:

现实世界中的数据主要以非结构化文本的形式存在。数据挖掘研究的一个重大挑战是开发有效的、可伸缩的方法,将非结构化文本转换为结构化知识。基于我们的愿景,将这些文本转换为结构化的异构信息网络是非常有益的,可以根据用户的需求生成可操作的知识。

在本教程中,我们将全面概述这方面的最新研究和发展。首先,我们介绍了一系列从大规模、领域特定的文本语料库构建异构信息网络的有效方法。然后,我们讨论了基于用户需求挖掘这种文本丰富网络的方法。具体来说,我们关注的是可伸缩的、有效的、弱监督的、与语言无关的方法,这些方法可以处理各种文本。我们还将在实际数据集(包括新闻文章、科学出版物和产品评论)上进一步演示如何构建信息网络,以及如何帮助进一步的探索性分析。大纲:

一 .介绍

1. 动机:为什么要从大量文本中构建和挖掘异构信息网络?
2. 大量文本网络构建的综述
3. 关于构建网络应用探索的综述

二. 短语挖掘

1. 为什么短语挖掘以及如何定义高质量的短语?
2. 监督方法
2.1. 名词短语分块方法
2.2. 基于解析的方法
2.3. 如何在语料库级别对实体进行排序?

3. 无监督方法
3.1. 基于原始频率的方法
3.2. 基于协调的方法
3.3. 基于主题模型的方法
3.4. 对比方法

4. 弱/远程监督方法
4.1. 短语分词及其变体
4.2. 如何利用远程监督?

5. 系统演示和软件介绍
5.1. 一种多语言短语挖掘系统,它将 AutoPhrase,SegPhrase 和 TopMine 集成在一起,支持多种语言的短语挖掘(例如,英语,西班牙语,中文,阿拉伯语和日语)。

三. 信息抽取:实体,属性和关系

1. 什么是命名实体识别(NER)?

2. 传统的监督方法
2.1. CorNLL03 共享任务
2.2. 序列标注框架
2.3. 条件随机场
2.4 手工制作的特征

3. 现代端到端神经模型
3.1. 双向 LSTM 模型
3.2. 语言模型和语境化表示
3.3. Raw-to-end 模型

4. 远程监督的模型
4.1. 实体输入的数据编程
4.2. 学习特定领域的词典

5. 基于元模式的信息提取
5.1. 元模式挖掘
5.2. 元模式增强的 NER

6. 系统演示和软件
6.1 命名实体识别推理 Python 包:LightNER 。该模块可帮助用户以高效便捷的方式轻松地将预训练的NER 模型应用于他们自己的语料库。

四. 分类构建

1. 分类学基础
1.1. 分类法定义
1.2. 分类应用
1.3. 分类构建方法

2. 基于实例的分类构建
2.1. 使用的方法综述
2.2. 基于模式的方法
2.3. 监督方法
2.4. 弱监督方法

3. 基于聚类的分类构建
3.1. 分层主题建模
3.2. 一般图模型方法
3.3. 分层聚类

五. 挖掘异构信息网络(结构化分析)

1. 基本分析系统演示
1.1.  AutoNet 系统:它从 PubMed 论文(标题和摘要)构建了一个巨大的结构化网络,并支持在线构建(新文档)和智能探索(搜索)。

2. 概要
2.1. 基于图的总结
2.2. 聚类和排序的总结

3. 元路径引导探索
3.1. 基于元路径的相似性
3.2. 元路径引导节点嵌入

4. 链接预测
4.1. 任务引导节点嵌入
4.2. 构建网络中的链接增强

六. 总结和未来的方向

1. 摘要
1.1. 原理与技术
1.2. 优势和局限

2. 挑战和未来的研究方向

3. 与观众的互动
3.1 如何根据您的文本数据和应用需求构建和挖掘异构信息网络?

原文链接:https://shangjingbo1226.github.io/2019-04-22-kdd-tutorial/

DeepMind 发布星际争霸强化学习课程

此前,跨象乘云介绍了:Pysc2 —— 基于 Python 的星际争霸 II 机器学习环境,这是 DeepMind 和暴雪合作开发星际争霸 II 到强化学习研究的一个丰富环境,为强化学习代理提供了与星际争霸 II 进行交互的界面,获得观察结果并发送动作。

很长时间以来,因为星际争霸这个游戏包含非常多的状态和动作空间,以及只有部分可观察和多玩家的特点,这个游戏一直被机器学习界认为是人工智能的下一个『大挑战』。

于是,一个由澳大利亚开发人员、机器学习工程师和研究人员组成的团队 —— StarAi 就基于星际争霸开发了一个机器学习课程!

课程特色

大多数强化学习课程都是采用高度数学化的方法学习的,但是这个课程使用更加人性化工具 —— 『故事』,来解释基本的强化学习概念。不能自己动手创造的东西你是不会明白的!所以课程提供了易于实际操作的练习,与步骤详解,以帮助学习。

学习方法

所有练习都在谷歌实验室中执行,直接在浏览器中就可以操作,而与硬件无关。所以你所需要的只是一个谷歌帐户和 Chrome 浏览器。学习的步骤就是先观看演讲材料,然后尝试进行练习。当然课程官方就像高中老师一样,也是要求你在自己实际操作很多遍之后如果还不能解决再看答案,不要直接看答案!

而对于基础较好的技术人员,如果想深入了解的话,课程还提供了Sutton & Bartos 的优秀教科书《An Introduction for each week’s material》中相关章节的链接。课程一共六周,每一部分都包含视频讲解、PPT、课后练习和答案,非常完善!赶紧上手进行学习吧!

课程链接

https://www.starai.io/course/

TensorFlow 2.0 构建和部署端到端的图像分类器

2019 年 3 月 6 日,谷歌在 TensorFlow 开发者年度峰会上发布了最新版的 TensorFlow 框架 TensorFlow 2.0 。新版本对 TensorFlow 的使用方式进行了重大改进,使其更加灵活和更具人性化。具体的改变和新增内容可以从 TensorFlow 的官网找到,本文将介绍如何使用 TensorFlow 2.0 构建和部署端到端的图像分类器,以及新版本中的新增内容,包括:

  • 使用 TensorFlow Datasets 下载数据并进行预处理
  • 使用 Keras 高级 API 构建和训练图像分类器
  • 下载 InceptionV3 卷积神经网络并对其进行微调
  • 使用 TensorFlow Serving 为训练好的模型发布服务接口

本教程的所有源代码都已发布到 GitHub 库中,有需要的读者可下载使用。

GitHub地址项目 GitHub 地址

第二版《机器学习基础》发布

Foundations of Machine Learning

从 05 年到 19 年,Mehryar Mohri 在纽约大学已经教过 14 年的 Foundations of Machine Learning 课程。在 2012 年,他就完成了第一版的《机器学习基础》,这本书的数学氛围非常浓厚。2018 年 Mohri 等研究者又完成了第二版,现在第二版及其资料都已经开放下载。

书籍主页:https://cs.nyu.edu/~mohri/mlbook/

百度云下载地址:https://pan.baidu.com/s/194wEpl5fsyJHKE49uc92pg;提取码: xud2

机器学习基础》(Foundations of Machine Learning)是对机器学习的通用简介,可作为研究者的参考书和学生的教科书来使用。该书覆盖机器学习领域的基础现代话题,同时提供讨论和算法证明所需的理论基础与概念工具。这本书还介绍了算法应用的多个关键方面。

这本书旨在呈现最新的理论工具和概念,同时提供准确的证明。该书写作风格力求简洁,同时讨论了机器学习领域的一些关键复杂话题,以及多个开放性研究问题。一些经常与其他话题混合的话题以及没有得到足够关注的话题在本书中得到了单独讨论和重视,例如,这本书专门有一个章节讲多类别分类、排序和回归。

这本书覆盖了机器学习领域的大量重要话题,但作者也省略了个别话题,如图模型和流行的神经网络,这是出于简洁性的考虑,以及这些方法暂时缺少一些坚实的理论保证。

什么样的读者适合读

这本书针对的读者群体是机器学习、统计学及相关领域的学生和研究者。它可用作机器学习研究生和高年级本科生的教材,或者科研讨论会的参考书。

本书前三四章主要讲理论,为后续章节夯实理论基础。其他章各自独立,第 6 和 13 章除外,第六章介绍了和后面章节有关的一些概念,第 13 章和 第 12 章关联度很高。每一章的最后都有一系列练习题(附完整答案)。

本书希望读者熟悉、概率和算法分析。但是,为了进一步帮助到大家,这本书的扩展附录中还包括:对线性代数的概述、简介、概率论简介、对书中算法分析和讨论有用的一些集中不等式(Concentration inequality),以及简介。

第二版的小目标

Mehryar Mohri 等作者的目标是为多个主题和领域提供统一的内容框架,而不是其它书籍采用的专题展示。这些专题书籍只描述某个特殊的视角或主题,例如贝叶斯视角或核方法主题。这本书有比较强的理论基础,证明与分析也会着重强调,因此它相比很多书籍都有较大的差别。

在第二版中,作者们更新了整本书。其主要改变体现在很多章节的写作风格、新的图表可视化、简化的内容与推导过程、对现有章节的一些补充,特别是第 6 章与第 17 章等一些新的章节。此外,作者们新添了完整的章节「模型选择」(第四章),这是非常重要的一个主题,但以前只简要讨论过。

对于第二版的最后,作者在附录中添加了很多新内容,包括线性代数和概率论等数学基础,也包括了信息论等机器学习基础。另外,作者为新章节提供了很多练习题与解决方案,读者也可以做做习题。

补充资料

这本书提供了很多材料,其中大多数都是纽约大学 Mehryar Mohri 的课程机器学习基础(Foundations of Machine Learning)提供的。这门课已经开展了 14 年,这本书也是该课程的内容概述。Mehryar Mohri 表示,正因为该课程学生的一些好建议,第二版才能最终出版。

课程主页:https://cs.nyu.edu/~mohri/ml18/

该课程主页上有额外的家庭作业、课件和项目等资料,配合书籍使用效果更佳。

目录

1~4.3
1~4.3
4.4~7.2
4.4~7.2
7.3~10.3
7.3~10.3
10.4~12.9
10.4~12.9
12.1~16.1
12.1~16.1
16.2~17.6
16.2~17.6