首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >惊喜 | 深度学习不用GPU,浏览器就够了

惊喜 | 深度学习不用GPU,浏览器就够了

作者头像
昱良
发布2018-12-27 14:10:29
5860
发布2018-12-27 14:10:29
举报

编辑/晓坤 & 思源 整理/机器之心

项目地址:https://github.com/GokuMohandas/practicalAI

该项目作者是 Goku Mohandas,是一名硅谷的 AI 研究员,曾就职于苹果公司,并在 O'Reilly Media 从事过教学工作。他开发的这个 GitHub 项目——PracticalAI 目前已经有大约 2500 的收藏量,覆盖了 Jupyter Notebook 和 Google Colab 的使用教程、Python 编程基础、深度学习基础(PyTorch 框架和 CNN、RNN 等算法),以及更高层次的算法和 AI 研究课题。

作者指出,他开发这个教程的目的是让人们能学习到目标导向、产品导向的机器学习思维,而不会停留在课堂。

课程简介

下表概括了整个项目的课程大纲,分成 4 个主要部分:基础、深度学习、高级深度学习算法和 AI 研究课题(蓝色是已经写好 notebook 的部分,可以直接链接到 Colab 页面,黑色是尚未写的部分)。

基础:包括 Jupyter Notebooks 简介、Python 编程基础和基础机器学习算法。作者会介绍 Jupyter Notebooks 的单元格编程界面和操作、执行单元格的方法;然后是 Python 以及两个重要的 Python 库——NumPy、Pandas 的入门;最后是线性回归、逻辑回归等基础 ML 算法的讲解,这些算法覆盖面很窄,不包含 SVM、朴素贝叶斯、隐马尔科夫模型等更复杂的算法。但该项目并不是为经典机器学习而设计的课程,读者可以在学习这些简单算法的过程中了解到 AI 算法的训练、数据集、评估、推理、正则化等基本概念,然后进入深度学习课程。

深度学习:包括 PyTorch 框架介绍和多种经典的深度学习算法。PyTorch 的介绍主要涉及张量计算和梯度计算。深度学习算法涉及多层感知机、CNN、RNN、词嵌入等,作者还写了两个较高层面的主题,分别是数据和模型的关系,以及目标导向的机器学习,让读者对如何利用这些算法有个基本理解。每种算法针对的任务都比较单一,也没有涉及生成模型,但通过深入的理解单个模型应用的每一个过程,可以让你在进阶学习时不被细节拖后腿。

高级深度学习算法:包括高级 RNN 模型、残差网络、自编码器、生成对抗网络、空间变换网络等。这些算法的模型架构设计建立在基础的深度网络之上。作者目前只写了高级 RNN 模型,涉及条件 RNN、编码器-解码器架构以及注意力机制等,其它模型还需等作者更新。或许作者还可以考虑加上基于流的模型、图神经网络等高级算法。

AI 研究课题:包括计算机视觉、时间序列分析、主题建模、推荐系统、预训练语言模型、多任务学习、小样本学习、强化学习等。这些课题不对应具体的模型架构,但会随当前研究现状有所偏好,如计算机视觉领域的主要模型架构就是 CNN 和编码器-解码器,作者目前只写了计算机视觉部分。要把握这些课题,需要读者对要解决的问题本身有很好的理解,从而不限于方法层面的视角。或许作者还可以考虑加上 AutoML、自监督学习、迁移学习、AI 游戏等课题。

可以跑的教程

这一套实践教程都能直接在 Colab 上运行,因此结合解释与代码,我们能更好地入门机器学习。那么小白是不是也能看得懂这个教程?我们可以从最基础的 Python 和 NumPy 出发,看看它们都介绍了些什么,纯小白是不是能在较短的篇幅里了解最核心的思想与技术。

在 Pyhon 实践中,作者给出了一个非常精简的教程,其仅涉及 Python 最核心的模块,包括变量、数据结构、基本语句与结构等。即使没有什么基础的小白,了解这些核心模块后至少能看懂大部分代码,剩下困难的只需要在遇到时谷歌一下就行了。

首先对于最基础的变量,它们就像函数中的自变量一样传递不同的值。如下所示,Python 中的变量可以传递整数、浮点数、字符串和布尔值,它们可以用于不同的运算:

而对于 Python 中主要的数据结构,即组织整数、浮点数、字符串和布尔值的结构,主要可以分为列表、元组和字典。其中列表是最常见的数据结构,我们可以想象为一个表格中的一行,表格每一个单元格都是列表中的一个元素,这样的元素不论存放数值、列表还是字典都没问题,它相当于一个容器。

以下展示了如何取列表中存储的元素,第一个表示取列表中所有元素,第二个表示从第三个元素开始取后面所有的元素:

元组和列表非常类似,只不过元组里面的元素不能修改。最后是字典,字典中每一个元素都由 Key 和 Value 组成,即一个键值对。在字典中,我们需要使用 Key 才能取到对应的 Value。

如下所示字典的构建与索引,它会通过「name」这一个键取对应的值 Goku:

随后对于基础语句,例如条件和循环语句,该教程也给出了很直观的解释。最后,如果我们利用数据结构组织变量、利用基础语句组织数据结构,再用函数或类等程序逻辑组织基础语句,那么我们就能得到完整的程序。

如下所示为基础的类,它能将函数和变量统一在一起,并构建完整的流程。在类中,赋值的变量可以称为属性,而函数则称为方法。下图构建了一个 Pets 类,当我们使用狗或猫实例化这个类时,就能直接调用 change_name 方法以实现改名。入门者跑一跑这几段代码就能知道类的大概作用了:

当然除了这些最基础的 Pyhon 语句,机器学习另外一个很重要的基础就是数值计算。我们需要计算大量的数据以获得最终的分析结果,这就少不了 NumPy,可以说入门机器学习第一个学习的包就是 NumPy。

我们可以使用 NumPy 实现大多数机器学习算法,现在很多深度学习框架都继承了 NumPy 的核心概念或数据结构等。了解了它,学习 DL 框架就没什么阻碍了。在 NumPy 中,最重要的是多维数组这个数据结构,它能以向量、矩阵或高阶张量的形式组织大量的数值,并实现高效的运算。此外,NumPy 还有很多针对多维数组所构建的运算,例如索引、矩阵乘法、矩阵转置或广播机制等。

入门读者首先需要了解多维数组,尤其是矩阵的概念,当然要是数学上不了解矩阵,NumPy 也就爱莫能助了。以下代码构建了一个 3×3 矩阵,并输出它的元素类型、矩阵维度形状和矩阵大小等。所有机器学习中的数据都是以多为数组存储的,它们的计算流也都以数组为媒介,所以先搞定最基础的 NumPy 数组吧!

关于理论基础的学习,只跑这些算法肯定是不够的,小编还是建议结合经典教材和课程视频一起学习。但先在浏览器上跑一跑,或许能让你更快体验到 AI 的魅力所在,并带来学习的动力。学习这个课程并不能让你了解深度学习的现状,但可以快速上手具体的项目,这或许正是作者说的「目标导向、产品导向」的意义所在。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法与Python学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档