【深度学习】给初学者的深度学习简介

2017 年 10 月 17 日 产业智能官 数据学习

数据学习(DataLearner)- 关注人工智能算法、学术论文和程序开发


欢迎访问:http://www.datalearner.com

深度学习是计算机领域中目前非常火的话题,不仅在学术界有很多论文,在业界也有很多实际运用。本篇博客主要介绍了三种基本的深度学习的架构,并对深度学习的原理作了简单的描述。翻译自:

简介

机器学习技术在当代社会已经发挥了很大的作用:从网络搜索到社交网络中的内容过滤到电子商务网站的个性化推荐,它正在快速的出现在用户的消费品中,如摄像机和智能手机。机器学习系统可以用来识别图像中的物体,将语音转变成文字,匹配用户感兴趣的新闻、消息和产品等,也可以选择相关的搜索结果。这些应用越来越多的使用一种叫做深度学习(Deep Learning)的技术。

深度学习(Deep Learning)(也称为深度结构学习【Deep Structured Learning】、层次学习【Hierarchical Learning】或者是深度机器学习【Deep Machine Learning】)是一类算法集合,是机器学习的一个分支。它尝试为数据的高层次摘要进行建模。以一个简单的例子来说,假设你有两组神经元,一个是接受输入的信号,一个是发送输出的信号。当输入层接收到输入信号的时候,它将输入层做一个简单的修改并传递给下一层。在一个深度网络中,输入层与输出层之间可以有很多的层(这些层并不是由神经元组成的,但是它可以以神经元的方式理解),允许算法使用多个处理层,并可以对这些层的结果进行线性和非线性的转换。

译者补充:深度学习的思想与人工神经网络思想是一致的。总的来说,神经网络是一种机器学习架构,所有的个体单元以权重的方式连接在一起,且这些权重是通过网络来训练的,那么它就可以称之为神经网络算法。人工神经网络算法的思想来源于模仿人类大脑思考的方式。人类大脑是通过神经系统得到输入信号再作出相应反映的,而接受外部刺激的方式是用神经元接受神经末梢转换的电信号。那么,我们希望通过人造神经元的方式模拟大脑的思考,这就产生了人工神经网络了。人工神经元组成了人工神经网络的计算单元,而人工神经网络结构描述了这些神经元的连接方式。我们可以采用层的方式组织神经元,层与层之间可以互相连接。以前受制于很多因素,我们无法添加很多层,而现在随着算法的更新、数据量的增加以及GPU的发展,我们可以用很多的层来开发神经网络,这就产生了深度神经网络。而深度学习其实就是深度神经网络的一个代名词。关于人工神经网络算法可以参考。

近些年来,深度学习通过在某些任务中极佳的表现正在改革机器学习。深度学习方法在会话识别、图像识别、对象侦测以及如药物发现和基因组学等领域表现出了惊人的准确性。但是,“深度学习”这个词语很古老,它在1986年由Dechter在机器学习领域提出,然后在2000年有Aizenberg等人引入到人工神经网络中。而现在,由于Alex Krizhevsky在2012年使用卷积网络结构赢得了ImageNet比赛之后受到大家的瞩目。

深度学习架构

1、生成式深度架构(Generative deep architectures),主要是用来描述具有高阶相关性的可观测数据或者是可见的对象的特征,主要用于模式分析或者是总和的目的,或者是描述这些数据与他们的类别之间的联合分布。(其实就是类似与生成模型)2、判别式深度架构(Discriminative deep architectures),主要用于提供模式分类的判别能力,经常用来描述在可见数据条件下物体的后验类别的概率。(类似于判别模型)3、混合深度架构(Hybrid deep architectures),目标是分类,但是和生成结构混合在一起了。比如以正在或者优化的方式引入生成模型的结果,或者使用判别标注来学习生成模型的参数。

尽管上述深度学习架构的分类比较复杂,其实实际中对应的模型的例子就是深度前馈网络,卷积网络和递归神经网络(Deep feed-forward networks, Convolution networks and Recurrent Networks)。

深度前馈网络(Deep feed-forward networks)

深度前馈网络也叫做前馈神经网络,或者是多层感知机(Multilayer Perceptrons,MLPs),是深度学习模型中的精粹。

前馈网络的目标是近似某些函数。例如,对于一个分类器,y=f(x)来说,它将一个输入值x变成对应的类别y。前馈网络就是定义一个映射y=f(x;θ),并学习出参数θ使得产生最好的函数近似。

简而言之,神经网络可以定义成输入层,隐含层和输出层。其中,输入层接受数据,隐含层处理数据,输出层则输出最终结果。这个信息流就是接受x,通过处理函数f,在达到输出y。这个模型并没有任何的反馈连接,因此被称为前馈网络。模型如下图所示:

卷积神经网络(Convolution Neural Networks)

在机器学习中,卷积神经网络(简称CNN或者ConvNet)是一种前馈神经网络,它的神经元的连接是启发于动物视觉皮层。单个皮质神经元可以对某个有限空间区域的刺激作出反应。这个有限空间可以称为接受域。不同的神经元的接受域可以重叠,从组成了所有的可见区域。那么,一个神经元对某个接受域内的刺激作出反应,在数学上可以使用卷积操作来近似。也就是说,卷积神经网络是受到生物处理的启发,设计使用最少的预处理的多层感知机的变体。

卷积神经网络在图像和视频识别、推荐系统以及自然语言处理中都有广泛的运用。

LeNet是早期推动深度学习发展的卷积神经网络之一。这是Yann LeCun从1988年以来进行的许多词的成功迭代后得到的开创性工作,称之为LeNet5。在当时,LeNet架构主要用来进行字符识别的工作,如读取邮编,数字等。如下图所示,卷积神经网络主要包含四块:

1. 卷积层(Convolutional Layer)

2. 激活函数(Activation Function)

3. 池化层(Pooling Layer)

4. 全连接层(Fully Connected Layer)

卷积层(Convolutional Layer)

卷积层是基于单词“卷积(Convolution)”而来,这是一种数学上的操作,它是对两个变量f*g进行操作产生第三个变量。它和互相关(cross-correlation)很像。卷积层的输入是一个m × m × r的图像,其中m是图像的高度和宽度,r是通道的数量,例如,一个RGB图像的通道是3,即r=3。卷积层有k个滤波器【filters】(或者称之为核【kernel】),其大小是n× n× q,这里的n是比图像维度小的一个数值,q既可以等于通道数量,也可以小于通道数量,具体根据不同的滤波器来定。滤波器的大小导致了

激活函数(Activation Function)

为了实现复杂的映射函数,我们需要使用激活函数。它可以带来非线性的结果,而非线性可以使得我们很好的拟合各种函数。同时,激活函数对于压缩来自神经元的无界线性加权和也是重要的。激活函数很重要,它可以避免我们把大的数值在高层次处理中进行累加。激活函数有很多,常用的有sigmoid,tanh和ReLU。

池化层(Pooling Layer)

池化是一个基于样本的离散化过程。其目的上降低输入表示的采样(这里的输入可以是图像,隐层的输出等),减少它们的维度,并允许我们假设特征已经被包含在了子区域中。

这部分的作用是通过提供一种抽象的形式表示来帮助过拟合表示。同样的,它也通过减少了参数的数量降低了计算的复杂度并为内部的表示提供一个基本的不变性的转换。

目前最常用的池化技术有Max-Pooling、Min-Pooling和Average-Pooling。下图是2*2滤波器的Ma-Pooling操作示意图。

全连接层(Fully Connected Layer)

“全连接”的意思是指先前的层里面的所有的神经元都与后一个层里面的所有的神经元相连。全连接层是一种传统的多层感知机,在输出层,它使用softmax激活函数或者其他激活函数。

递归神经网络(Recurrent Neural Networks)

在传统的神经网络中,我们假设所有的输入之间相互独立。但是对于很多任务来说,这并不是一个好的主意。如果你想知道一个句子中下一个单词是什么,你最好知道之前的单词是什么。RNN之所以叫RNN就是它对一个序列中所有的元素都执行相同的任务,所有的输出都依赖于先前的计算。另一种思考RNN的方式是它会记住所有之前的计算的信息。

一个RNN里面有很多循环,它可以携带从输入中带来的信息。如下图所示,x_txt是一种输入,A是RNN里面的一部分,h_tht是输出。本质上,您可以从句子中输入文字,甚至还可以从字符串中输入x_txt格式的字符,通过RNN可以提供一个h_tht。 RNN的一些类型是LSTM,双向RNN,GRU等。

由于任何输入和输出都可以在RNN中变成一对一或者多对多的形式,RNN可以用在自然语言处理、机器翻译、语言模型、图像识别、视频分析、图像生成、验证码识别等领域。下图展示了RNN可能的结构以及对模型的解释。

应用

深度学习有很多应用,很多特别的问题也可以通过深度学习解决。一些深度学习的应用举例如下:

黑白图像的着色

深度学习可以用来根据对象及其情景来为图片上色,而且结果很像人类的着色结果。这中解决方案使用了很大的卷积神经网络和有监督的层来重新创造颜色。

机器翻译

深度学习可以对未经处理的语言序列进行翻译,它使得算法可以学习单词之间的依赖关系,并将其映射到一种新的语言中。大规模的LSTM的RNN网络可以用来做这种处理。

图像中的对象分类与检测

这种任务需要将图像分成之前我们所知道的某一种类别中。目前这类任务最好的结果是使用超大规模的卷积神经网络实现的。突破性的进展是Alex Krizhevsky等人在ImageNet比赛中使用的AlexNet模型。

自动产生手写体

这种任务是先给定一些手写的文字,然后尝试生成新的类似的手写的结果。首先是人用笔在纸上手写一些文字,然后根据写字的笔迹作为语料来训练模型,并最终学习产生新的内容。

自动玩游戏

这项任务是根据电脑屏幕的图像,来决定如何玩游戏。这种很难的任务是深度强化模型的研究领域,主要的突破是DeepMind团队的成果。

聊天机器人

一种基于sequence to sequence的模型来创造一个聊天机器人,用以回答某些问题。它是根据大量的实际的会话数据集产生的。想了解详情,可以参考:https://medium.com/shridhar743/generative-model-chatbots-e422ab08461e

结论

从本篇博客来看,由于模仿了人类大脑,深度学习可以运用在很多领域中。目前有很多领域都在研究使用深度学习解决问题。尽管目前信任是个问题,但是它终将被解决。

原文地址:https://medium.com/shridhar743/a-beginners-guide-to-deep-learning-5ee814cf7706




初学者必读:解读14个深度学习关键词

来源:中国物联网 

尽管在最近的在线搜索中已经占据高的搜索量,深度学习仍然是一个相对较新的概念。由于在各个不同的领域都获得了巨大的成功,机器学习在研究和生产领域中大量涌现。机器学习是应用深度神经网络技术的一个过程——也就是有着多个隐藏层的神经网络构架——去解决问题。像数据挖掘一样,深度学习也是一个进程,它采用了神经网络构架——一种特定的机器学习算法。

近段时间来深度学习已经积累了可观的研究成果。据此,在我看来,将以下下几点牢记在心对机器学习十分重要:

机器学习不是万灵药——它不能够解决所有的问题。

它并不是一个传说中的大师级的算法——深度学习不能够替代其他机器学习的算法和数据科学的技术,或者说,至少它至今还未被证明可以

我们需要对它持以平和的期待——尽管最近各种分类问题,特别是计算机视觉和自然语言处理,强化学习以及其他领域都已取得显著进步,深度学习目前还没有到达可以解决诸如 “实现世界和平”这种复杂问题的水平。

深度学习和人工智能并非同义词。

深度学习可以通过向一大堆数据提供附加的操作和工具从而解决问题。由此,深度学习在数据科学领域是一个十分有用的辅助。

就像上图所示,深度学习深度学习之于数据挖掘,就像(深度)神经网络之于机器学习(进程VS构架)。同时我们也可以看到深度神经网络绝大程度属于当前人工智能的情况。两者概念相互交织几乎已经到了相同意思的程度(但实际上这两者并非相同的事物,人工智能除了神经网络还含有大量其他的算法和技术)同时,在深度学习过程和神经网络技术的带领下,近几年来在相关领域有了卓越的跨越。其中起重要作用的,深度学习/深度神经网络和计算机视觉,自然语言处理,生成模型之间的联系值得关注。由此,让我们通过简明扼要的定义,来了解深度学习和相关术语。

1.深度学习

就像上述定义的一样,深度学习是应用神经网络解决问题的过程。深度神经网络是有着至少一个隐藏层的神经网络(如下图)。像数据挖掘一样,深度学习所指的是一个特定的过程。其中采用了深度神经网络-一种特定的机器学习算法的框架。

2.人工神经网络(ANNs)

机器学习构架最早的灵感来源于生物大脑(尤其是神经元)深度学习就运用到了神经元的概念。事实上,单一的人工神经网络(并非深度神经网络)在很早之前就被发现,在过去已经能解决一些特定的问题。然而,相较于现在,目前的神经网络构架都被设计为包含数个隐藏层(除了简单的输入和输出层)。层数的增加提高了网络的复杂度,使得网络能够进行深度学习,成为一种更强大的问题解决工具。

实际上,人工神经网络ANN一族结构差别很大,因此,目前没有一个确切的神经网络定义。目前两个主流的适用于所有ANN的特征,一个是拥有一个可调整的权重集合,另一个是具有模拟输入信号到神经元的非线性功能的能力。

3.生物神经元

在生物和人工神经网络之间的关系已经有了明确的定义。大量传播开的出版物渲染出这样一个概念:ANN是某种对发生在人(或其他生物)大脑的过程的完全复制。这种观念显然是不准确的。充其量我们只能说早期的人工神经网络是受到生物学的启发。两者间抽象的关系不比原子的组成和功能与太阳系间的抽象关系明确。

也就是说,如果仅仅了解是什么启发了ANN,这提供了一种高层次的解读,可帮助我们去理解生物神经是如何工作的。

以下是我们对生物神经元的最感兴趣的部分,包括:

携带着遗传信息的细胞核(如DNA)

处理输入刺激并转化为输出刺激的细胞体。

从其他神经元接受刺激的树突。

信息传给其他神经的轴突。

轴突末端,和相邻树突之间形成的突触结构。

在轴突末端与相邻树突形成的突出间隙中,扩散着一种叫做神经传递素的化学物质,他实现了神经传递。神经中最关键的部分,是神经通过树突接收到刺激,处理后,通过轴突末梢传输出去。在末梢处会经过突触间隙,然后到达许多接受神经的树突。 该过程将重复进行。

4.感知机

感知机是一个简单的线形二进制分类器。它接收输入和与其相连的权重(表示输入变量的相对重要性),将它们结合来产生输出。输出接下来被用于分类。感知机已经存在很长一段时间了,最早的使用可追溯到1950年代,其中一个也是应用到早期的人工神经网络中。

5.多层感知机

一个多层感知机(MLP)是由几个含有全邻接层的感知机组成,形成一个简单的前馈神经网络(见下)。这个多层感知器在非线性激活函数上有许多好处,这些都是单层感知器不具备的。

6.前馈神经网络

在非周期性连接的神经网络结构中,前馈神经网络是最简单的形式。最初的人工神经网络中,前馈网络中的信息从输入节点单方向前进,而后通过所有隐藏层,到达输出节点,不存在任何周期。前馈网络不同于之后的连接构成有向循环的周期性网络架构(见下文)。

7.循环神经网络

和上文所提到的前馈神经网络不同,循环神经网络的连接构成有向循环。这种双向流动允许内部时间状态表示,继而允许序列处理。并且值得注意的是,它提供了用于识别语音和手写的必要能力。

8.激活函数

在神经网络中,激活函数通过组合网络的加权输入来产生判定边界输出结果。激活函数的范围从标识(线性)到Sigmoid函数(逻辑或软步长),双曲线(正切)和超越。为了采用反向传播(见下文),神经网络必须使用可微的激活函数。

9.反向传播

我所见过的对反向传播的定义中,最基本、简洁的定义是数据科学家Mikio L. Braun在Quora上给出的答案 。我在此列出原文,以防破坏这份答案简洁的完美。

反向传播只是在个别错误上进行梯度下降。通过比较对神经网络预期输出的预测,而后计算相对于神经网络的权重的误差梯度。然后得出了权值空间中减小误差的方向。

我将它列在这里。

10.成本函数

在训练神经网络时,必须评估网络输出的正确性。众所周知,预期上正确的训练输出数据和实际的训练输出是可比拟的。成本函数便能测量实际和训练输出之间的差异。实际和预期输出之间的零成本将意味着训练神经网络成为可能。但这显然是理想化的。

所以,通过什么机制来调整成本函数,以实现将其最小化的目标呢?

11.梯度下降

梯度下降法是求函数局部极小值的一个优化算法。虽然它不能保证全定义域内的最小值,但梯度下降对于难以通过分析 (例如通过将导数取0获得最优解)求得精确解的问题十分有用。

正如上文所述,在神经网络的情况中,随机梯度下降用于对网络参数做出知情调整,以达到使成本函数最小化的目标,从而使网络的实际输出迭代性地愈加接近在培训期间的预期输出。这种迭代最小化采用微积分,即微分。在训练步骤之后,网络权重根据成本函数的梯度和网络的当前权重接收更新,使得下一个训练步骤的结果可以更加接近正确值(通过更小的成本函数测量)。反向传播(关于错误的反向传播)便用于将这些更新以小份的形式送到网络。

12.梯度消失问题

由于反向传播使用链式规则来计算梯度(通过微分),朝向n层神经网络的“前”(输入)层将使其修改的梯度以一个较小的值乘以n次方,然后再更新之前的固定值。这意味着梯度将指数性减小。 n越大,网络将需要越来越多的时间来有效地训练。

13.卷积神经网络

卷积神经网络(CNN)通常与计算机视觉和图像识别相关联,并采用卷积的数学概念来模仿生物视觉皮层的神经连接网格。

首先,正如 Denny Britz 所描述一样,卷积可以被认为是在图像的矩阵表示之上的滑动窗口(见下文)。



两个月入门深度学习,全靠动手实践!这有一位前端小哥的经验

量子位 

王新民 编译自 Hackernoon

量子位 出品 | 公众号 QbitAI

在当前社会,技术日新月异,一个全栈工程师不及时学习新知识,掌握AI技能,再过两年就算不上“全栈”了。

产品发烧友、前端小哥Shival Gupta在意识到这一点后,通过两个多月的探索,掌握了基本的AI技能,并在Hackernoon上发文分享了自己的学习历程。

量子位搬运过来,各位可以参考他的学习思路。

建立第一个神经网络

大家给初学者的建议,通常是通过吴恩达的Coursera课程来入门。

这样开始很好,但是我在听课时很难保持专注。不是说这个课程不好或存在其他问题,而是我真的非常讨厌专心听课。我习惯于通过实践来学习,所以为什么不这么做呢?

让我们开始动手实现神经网络吧。

我没有直接跳到神经网络,因为还需要熟悉一些基础内容。我先尝试熟悉这个领域的所有专有名词,为下一步的语言学习作铺垫。

也就是说,第一项任务不是学习,而是熟悉这个领域。

我是个用JavaScript和Nodejs做开发的前端工程师,暂时也不想转后端,于是就找到了一个叫做nn的简单神经网络模块,并用它来实现一个带有虚拟输入的“与”门。

我选择了这样一个问题:对于任意三个输入X、Y和Z,输出为X和Y的“与”运算结果。

以下是实现代码:

var nn = require('nn')var opts = { layers: [ 4 ], iterations: 300000, errorThresh: 0.0000005, activation: 'logistic', learningRate: 0.4, momentum: 0.5, log: 100}var net = nn(opts)net.train([ { input: [ 0,0,1 ], output: [ 0 ] }, { input: [ 0,1,1 ], output: [ 0 ] }, { input: [ 1,0,1 ], output: [ 0 ] }, { input: [ 0,1,0 ], output: [ 0 ] }, { input: [ 1,0,0 ], output: [ 0 ] }, { input: [ 1,1,1 ], output: [ 1 ] }, { input: [ 0,0,0 ], output: [ 0 ] } ])// send it a new input to see its trained outputvar output = net.send([ 1,1,0])console.log(output); //0.9971279763719718

选择这个问题,是受一份9行代码构建神经网络教程的启发。地址:https://medium.com/technology-invention-and-more/how-to-build-a-simple-neural-network-in-9-lines-of-python-code-cc8f23647ca1

在我看来,上面的构建过程让我对接下来的学习充满了信心。当输出值为0.9971时,我意识到这个网络学会了如何实现一个“与”运算,并忽略无关的额外输入。

这正是机器学习的主旨。通过向计算机程序输入一组数据,并调整程序的内部参数,使它能够以从训练集观察到的误差减小方式,来得到对新问题的答案。

后来我才知道,这种方法也被称为梯度下降(gradient descent)。

 梯度下降示意图

开始AI之路

在我实现了我的第一个AI程序后,我充满信心,想知道作为一个开发人员,还可以用机器学习来做什么。

1. 我解决了若干个关于监督学习的问题,如回归和分类。

2. 基于非常有限的数据集,我尝试使用多变量线性回归来预测哪个团队将赢得某场给定的IPL电子竞技比赛,实际的预测效果很差,但是我觉得很酷。

3. 我试用了Google机器学习云的一些demo,了解当前AI可以做什么。

地址:https://cloud.google.com/products/machine-learning/

4. 我偶然发现了AI Playbook(文末链接5),这是一个由安德森-霍洛维茨风险基金整理的干货网站,确实是针对开发人员和创业者的最方便资源之一。

 AI Playbook。地址:http://aiplaybook.a16z.com/

5. 我开始在Youtube上观看Siraj Rawal的精彩视频,这是一个以深度学习和机器学习为核心的专栏。

视频地址:

https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A

6. 我读了HackerNoon上一篇讲《硅谷》剧组怎样用Tensorflow做剧中那个Not Hotdog应用的。这是深度学习中我们最容易上手的一个例子。

HBO真的做了这个App(限美国、加拿大):

https://www.seefoodtechnologies.com/nothotdog/

文章地址:

https://medium.com/@timanglade/how-hbos-silicon-valley-built-not-hotdog-with-mobile-tensorflow-keras-react-native-ef03260747f3

7. 我读了Andrej Karpathy的博客(https://karpathy.github.io/),他是特斯拉的AI主管。虽然我无法理解里面的一些内容,这让我很头疼,但是我发现,在多花一些时间以后,我对这些概念有了一定理解。

8. 带着信心,我开始通过复制和粘贴来逐行实现一些深度学习教程中的代码,并在我自己的电脑上运行代码,尝试训练相关模型。很卡……因为大多数模型需要很长的训练时间,我也没有GPU。

渐渐地,我将编程语言从Javascript转换到了Python,并在Windows机器上安装了Tensorflow。

这整个过程集中在被动地接受知识和建立知识库上,因此当我遇到一个实际的用户问题时,可以利用已有知识来解决。

正如乔布斯说过,你只能通过回溯过去理解其中的关联。

抓住chatbot的热潮

作为电影“Her”的狂热粉丝,我想构建一个聊天机器人。我设法在两个小时内学会了Tensorflow的使用,并将这个经历和我对用户需求的理解整理成了一篇文章。

在做这个聊天机器人之前,我对NLP的了解仅仅限于概念层面。

尝试了市面上众多聊天机器人之后,我发现,它们在本质上只是图形用户界面的替代品。如果在图形用户界面上操作超过两步点击,用聊天机器人的用户体验会比较好,反之,用聊天的形式就显得多余了。

开始构建聊天机器人的时候,我先给自己确定了两条原则:

1. 聊天机器人应该说人话,也就是说它得理解自然语言;

2. 要用聊天机器人解决图形UI中需要两步以上操作的问题。

经过分析,我选择构建一个通过自然语言命令找到正确日期的聊天机器人。比如说你可以问它“6天以后是几号?”、“下个9月过完之后再过5周”之类的。

架构是这样的:

然后,我跟着网上的一份教程,(地址:https://chatbotsmagazine.com/contextual-chat-bots-with-tensorflow-4391749d0077),用基础的NLP技能和基于softmax的神经网络,不到两小时就构建了一个查询意图分类器。

在确定了用户的意图之后,系统会对字符串进行语法分析并输入,然后返回我想要查询的日期。

说真的,并不难。如果你用Facebook Messenger Platform、Telegram的Bot Platform,或者api.ai、wit.ai、recast.ai等等工具,可能比我还快。

更多关于构建聊天机器人的心得,见这个链接::

https://hackernoon.com/i-built-a-chatbot-in-2-hours-and-this-is-what-i-learned-f5dbb4ba5fcc

在我的AI学习之旅中,这篇文章具有里程碑式的意义。

它让我在Twitter和LinkedIn上交到了很多朋友,他们长期深入地和我讨论AI技术的发展,甚至可以在我遇到困难时帮我一把。我收到了一些关于咨询项目的Offer,更让我开心是,开始有一些年轻的开发人员和AI初学者来问我是如何入门AI的。

这也促使了我写下这篇文章,希望能帮助更多的人从我的经历中得到线索,并开始他们的学习之路。

万事开头难。

一些理解

这绝不是一件简单的事。

我最开始时用的是Javascript,后来突然换成Python,并学会如何用Python编程。

当我的模型在i7电脑无法训练,或是经过数小时训练,只返回一个无用结果时,我会感到烦躁。

学习AI的过程与学习一个Web框架不同。

这项技能要求你明白在微观层面计算是如何进行的,并确定最为影响输出结果的内容是代码还是数据。

AI也不只是一个学科。这是一个总括性术语,其适用范围可从简单的回归问题到未来的杀手机器人。与其他学科一样,你可能要选择AI中比较热门的领域,如计算机视觉、自然语言处理,或者其他具有潜在发展空间的方向。

在和AI金融公司Atlantis Capital的Gaurav Sharma的交流中,他对我说:

在人工智能时代,“聪明”意味着某些完全不同的东西。我们要求人们去完成非常关键、具备创造性和有个人见解的任务,和那些需要高情感投入的工作。

对于计算机是如何突然学会自主决策的,你要为之着迷。你应该坚持的两个关键原则是耐心和求知欲。

这是一个非常漫长的旅程,很累也很刺激。

但最重要的是,所有旅程都是相同的,千里之行始于足下,想上手AI就开始动手吧。

原文地址:https://hackernoon.com/how-i-started-with-learning-ai-in-the-last-2-months-251d19b23597


深度学习真的可以零基础入门吗?

雷锋网

我们先来谈谈自学深度学习最大的问题。

现在搞深度学习的,十之八九并不是“科班出身”。

这就导致:如果你想要跨行成为一名深度学习工程师,从头到尾的一切,都基本靠自学。但是,开发者很快就会发现自己遇到了第一个障碍:

绝大多数的学习资源以理论研究为导向,轻工程实践。

其实这也难怪。这几年,深度学习是火了,但大牛们都来自学界,例子不胜枚举:比如谷歌云首席科学家李飞飞、主管 FAIR 的 Yann LeCun、在谷歌大脑的 Ian Goodfellow,以及在过去三年里任百度首席科学家的吴恩达。大牛出身高校,他们编写的教材、录制的慕课也是,不可避免带有很强的学术属性,总给人一种“听大学老师讲课”的感觉(本来就是)。即便有意避免研究导向,甚至弱化数学理论部分(比如吴恩达老师在 Coursera 上的“Machine Learning”),仍然离产业界的需求相去甚远。

用一句话来概括:现有的深度学习资源,对学生群体很友好,但对在职工程师并不如此。许多人花大半年时间(有毅力的会更久)研读了几本深度学习教材,发现实际操作时仍然不知道该怎么实现一个具体的东西。


Jason Brownlee 的故事

我们的老熟人——澳大利亚的机器学习(ML)专家 Jason Brownlee,就常用自己的“惨痛经历”劝诫深度学习学习者切勿迷信学校里的东西。

他本是一名普通的软件工程师,对 ML 感兴趣之后,花几百澳刀买了几本教材自学,但效果不是很好,以为需要“科班”学习经历才能读懂那些学术语言。一咬牙辞职,从 AI 专业的研究生读到博士。毕业了,却发现“搞” ML(而不是研究 ML),其实在 IT 技能的基础上,一步步边实践边摸索就够了,饶了一大圈回来,还是重拾程序猿的老本行,成为一名几年前的自己其实就能胜任的 ML 工程师。

Jason Brownlee

有感于自己绕的弯路,Jason Brownlee 创建了一个 ML 学习网站 Machine Learning Mastery,把自己的学习心得分享给大家。他写的教程和书,首重开发者最关心的具体模型的实现,对其背后的理论一带而过,结果大受工程师的欢迎。

如今, “Machine Learning Mastery” 已成为业界最知名的 ML 教育品牌之一。

关注雷锋网的读者应该也发现了,但凡 Jason 有符合国内读者需求的技术教程,雷锋网总在第一时间翻译出来分享给大家。而这实际折射了一个趋势:凡是冠以“实战”二字的深度学习、ML 文章,会更受欢迎。

这直接反映出:工程实践导向的深度学习、ML 学习资源有多匮乏。


面向开发者的培训


有句话怎么说来着——“需求产生供给”。巨大的市场缺口,吸引着越来越多产业界的 ML 工程师投身教育培训。比如说,除了 Machine Learning Mastery,国外的英伟达 DLI 深度学习学院(详情见雷锋网此前报道“你听说过英伟达深度学习学院 DLI 吗?”)、fast.ai,国内雷锋网创立的mooc.ai,都是以工程实践为导向、面向开发者的深度学习培训项目。这些培训,弥补了大多数深度学习慕课偏重理论讲解、缺乏代码实现的短板,可说是互为表里。

但由于深度学习开发者培训需要经验丰富的工程师现场指导如何设置环境、如何操作开发工具,以及如何 troubleshooting,慕课的万人在线、线上学习形式难以满足要求。高品质的培训,往往在线下进行,这大幅限制了参与人数,导致资源依旧稀缺。

鉴于此,AI 慕课学院(mooc.ai)联合 fast.ai 中文社区,邀请了四名中外深度学习工程师,6 月 17 -18 日在北京太库(Techcode)进行“12小时零基础入门深度学习”线下培训,目标是提供业内对新手最友好的深度学习入门指导,降低学习者跨行从事深度学习开发的门槛。开课前夕,几位指导老师同雷锋网进行了交流——为什么在他们眼中,深度学习可以“零基础入门”


零基础入门?


雷锋网对指导老师中的三位:杨杰、Max 和赵伊丹进行了采访。

其中,杨杰老师曾在南方航空动力机械有限公司从事多年的生产线设计,转型深度学习后进行算法金融项目的研发;Max 本是金融学博士,在“深度学习”和“无人驾驶”领域有丰富教学经验;赵伊丹老师在致力于深度学习之前,从事校园 VC 的深度学习与无人驾驶项目。

为什么实战培训如此重要?

杨杰:现在的学习资源太倾向数学理论。比如 Ian Goodfellow、Yoshua Bengio、Aaron Courville 编写的教科书《Deep Learning》,初学者看了也不知道该怎么做。深度学习的理论研究已经进入到很深的层次,对于想要真正做好、精通的人,我认为这本书是必读的,但不适合初学者。

Max:fast.ai 的创始人 Jeremy Howard 喜欢举这么个例子:对于足球运动员,不需要学习物体的物理运动原理,只需要喜欢这项运动,然后去踢,不断在练习中提高技艺。对于开发者,在一开始上手时,只需要知道怎么做,而不需要知道为什么。

杨杰:(补充道) 数学理论可以上手后再慢慢学。一开始就往里钻容易产生畏难情绪, “觉得不是他的菜”,因而放弃。可以先用起来,感兴趣之后慢慢再研究理论。

新手入门深度学习的主要障碍是什么?

杨杰:心理障碍。

Max (经雷锋网编译,下同):知识点太多,需要理解的术语、概念太多。因此在一开始深度学习看上去很难。但真正上手之后,会发现其实没有想象中那么难。

赵伊丹:环境配置(杨杰和 Max 点头赞同)。这一关会把很多初学者吓跑——很多人靠自己很难把第一步的开发环境设置起来。这里需要的东西很多也很麻烦,容易遇到各种系统问题。因此,“12小时零基础入门深度学习”会把环境调好让大家可以直接上手。

新手最需要掌握的技能是什么?

Max :Python 和 numpy。

杨杰:什么都不需要,一张白纸最好。什么都没学过更容易入门,不然容易和以前学到的编程知识混淆。虽然深度学习开发必须要用 Python,但一开始不会 Python 用不着介意。相比主流编程语言,比如 C++,Python 上手更简单,对普通人更友好。

赵伊丹:基础编程技巧,以及计算机命令行。虽然这些可以慢慢学,但事先就会的话能省些功夫。

推荐哪些辅助开发工具、框架?

三位老师:Keras+TensorFlow,后者已经成为行业标准,前者是后者的 API。

conda 和 Anaconda。

另外,由于硬件基本都是用 GPU,需要 CUDA。

对于各个深度学习模型,你们认为新手应从哪一个上手?

Max:CNN。图像处理问题一般基于 CNN,它也很适合应用于分类问题。简单来说就是:它最基础,应用频繁,很多更复杂的模型都是基于 CNN,非常适合入门。

三年前,世界屈指可数的顶级研究机构才能实现的一些算法,现在任何一个开发者都可以利用各种开发工具借助 CNN 实现。

深度学习入门课程,比如”12 小时零基础入门深度学习“,能为学习者带来的最大的提升在于哪个方面?

杨杰:信心——明白“I can do it”。

赵伊丹:指导老师手把手带着尝试过了,在实战中就知道怎么去做、朝什么方向去做。

你们当初入门深度学习的过程中都遇到了哪些困难,又是如何解决的?

Max:搭建环境是个很大的坎儿。另外,当时我没有 GPU,训练速度特别慢。后来就想办法减少数据加快速度。

我觉得新手可以多看看 “help”帮助文档。再有就是 Google 和百度——从我的经验来看,99%的问题都能搜索解决。绝大多数问题别人已经遇到过,并且已经解决过了,只需要多点耐心找出来。

赵伊丹:缺乏实践项目的磨炼, 理论学得太多,但不知道怎么用。举个例子,有很多深度学习模型的优化方法,但只凭理论是无法判断出应该用哪个的,也不知道怎么去调。这里就需要实践经验并结合实际项目来做选择。

有许多原本从事其他行业的程序员、甚至非程序员,想要跨行做深度学习,对他们的建议是?

杨杰:(笑)我们以前就是跨行的。这次的培训也是针对这一点,不需要深厚基础,不需要对深度学习数学理论有多深的理解。程序员也未必优势很大,他们上手新编程语言更容易,仅此而已。

Fast.ai 的座右铭是”make deep learning uncool again“,即“让深度学习不再高冷”。你们的理解是?

Max:深度学习不应该是只有科学家才能做的事情。各行各业的技术人员,都应该有能力把深度学习技术整合进他们的工程应用中,把产品做得更好。现在,只有谷歌等少数互联网巨头才称得上是大范围地应用深度学习。但在不远的将来,无数公司的服务、产品都会有这个需要。这其中的关键,就是让深度学习不局限于内行、专家,让任何专业背景的技术人员借助工具都能掌握。而且,它本来就不难学。

赵伊丹:(补充道)现在还存在大片市场空白。在许多尚未涉及的领域,一旦应用深度学习就很容易产生很大的效果。




人工智能赛博物理操作系统

AI-CPS OS

“人工智能赛博物理操作系统”新一代技术+商业操作系统“AI-CPS OS:云计算+大数据+物联网+区块链+人工智能)分支用来的今天,企业领导者必须了解如何将“技术”全面渗入整个公司、产品等“商业”场景中,利用AI-CPS OS形成数字化+智能化力量,实现行业的重新布局、企业的重新构建和自我的焕然新生。


AI-CPS OS的真正价值并不来自构成技术或功能,而是要以一种传递独特竞争优势的方式将自动化+信息化、智造+产品+服务数据+分析一体化,这种整合方式能够释放新的业务和运营模式。如果不能实现跨功能的更大规模融合,没有颠覆现状的意愿,这些将不可能实现。


领导者无法依靠某种单一战略方法来应对多维度的数字化变革。面对新一代技术+商业操作系统AI-CPS OS颠覆性的数字化+智能化力量,领导者必须在行业、企业与个人这三个层面都保持领先地位:

  1. 重新行业布局:你的世界观要怎样改变才算足够?你必须对行业典范进行怎样的反思?

  2. 重新构建企业:你的企业需要做出什么样的变化?你准备如何重新定义你的公司?

  3. 重新打造自己:你需要成为怎样的人?要重塑自己并在数字化+智能化时代保有领先地位,你必须如何去做?

AI-CPS OS是数字化智能化创新平台,设计思路是将大数据、物联网、区块链和人工智能等无缝整合在云端,可以帮助企业将创新成果融入自身业务体系,实现各个前沿技术在云端的优势协同。AI-CPS OS形成的数字化+智能化力量与行业、企业及个人三个层面的交叉,形成了领导力模式,使数字化融入到领导者所在企业与领导方式的核心位置:

  1. 精细:种力量能够使人在更加真实、细致的层面观察与感知现实世界和数字化世界正在发生的一切,进而理解和更加精细地进行产品个性化控制、微观业务场景事件和结果控制。

  2. 智能:模型随着时间(数据)的变化而变化,整个系统就具备了智能(自学习)的能力。

  3. 高效:企业需要建立实时或者准实时的数据采集传输、模型预测和响应决策能力,这样智能就从批量性、阶段性的行为变成一个可以实时触达的行为。

  4. 不确定性:数字化变更颠覆和改变了领导者曾经仰仗的思维方式、结构和实践经验,其结果就是形成了复合不确定性这种颠覆性力量。主要的不确定性蕴含于三个领域:技术、文化、制度。

  5. 边界模糊:数字世界与现实世界的不断融合成CPS不仅让人们所知行业的核心产品、经济学定理和可能性都产生了变化,还模糊了不同行业间的界限。这种效应正在向生态系统、企业、客户、产品快速蔓延。

AI-CPS OS形成的数字化+智能化力量通过三个方式激发经济增长:

  1. 创造虚拟劳动力,承担需要适应性和敏捷性的复杂任务,即“智能自动化”,以区别于传统的自动化解决方案;

  2. 对现有劳动力和实物资产进行有利的补充和提升,提高资本效率

  3. 人工智能的普及,将推动多行业的相关创新,开辟崭新的经济增长空间


给决策制定者和商业领袖的建议:

  1. 超越自动化,开启新创新模式:利用具有自主学习和自我控制能力的动态机器智能,为企业创造新商机;

  2. 迎接新一代信息技术,迎接人工智能:无缝整合人类智慧与机器智能,重新

    评估未来的知识和技能类型;

  3. 制定道德规范:切实为人工智能生态系统制定道德准则,并在智能机器的开

    发过程中确定更加明晰的标准和最佳实践;

  4. 重视再分配效应:对人工智能可能带来的冲击做好准备,制定战略帮助面临

    较高失业风险的人群;

  5. 开发数字化+智能化企业所需新能力:员工团队需要积极掌握判断、沟通及想象力和创造力等人类所特有的重要能力。对于中国企业来说,创造兼具包容性和多样性的文化也非常重要。


子曰:“君子和而不同,小人同而不和。”  《论语·子路》云计算、大数据、物联网、区块链和 人工智能,像君子一般融合,一起体现科技就是生产力。


如果说上一次哥伦布地理大发现,拓展的是人类的物理空间。那么这一次地理大发现,拓展的就是人们的数字空间。在数学空间,建立新的商业文明,从而发现新的创富模式,为人类社会带来新的财富空间。云计算,大数据、物联网和区块链,是进入这个数字空间的船,而人工智能就是那船上的帆,哥伦布之帆!


新一代技术+商业的人工智能赛博物理操作系统AI-CPS OS作为新一轮产业变革的核心驱动力,将进一步释放历次科技革命和产业变革积蓄的巨大能量,并创造新的强大引擎。重构生产、分配、交换、消费等经济活动各环节,形成从宏观到微观各领域的智能化新需求,催生新技术、新产品、新产业、新业态、新模式。引发经济结构重大变革,深刻改变人类生产生活方式和思维模式,实现社会生产力的整体跃升。





产业智能官  AI-CPS



用“人工智能赛博物理操作系统新一代技术+商业操作系统“AI-CPS OS:云计算+大数据+物联网+区块链+人工智能)在场景中构建状态感知-实时分析-自主决策-精准执行-学习提升的认知计算和机器智能;实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链






长按上方二维码关注微信公众号: AI-CPS,更多信息回复:


新技术“云计算”、“大数据”、“物联网”、“区块链”、“人工智能”;新产业:“智能制造”、“智能驾驶”、“智能金融”、“智能城市”、“智能零售”;新模式:“案例分析”、“研究报告”、“商业模式”、“供应链金融”、“财富空间”


点击“阅读原文”,访问AI-CPS OS官网




本文系“产业智能官”(公众号ID:AI-CPS)收集整理,转载请注明出处!



版权声明产业智能官(公众号ID:AI-CPS推荐的文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,与您共同协商解决。联系、投稿邮箱:erp_vip@hotmail.com





登录查看更多
8

相关内容

前馈神经网络(FNN)是人工智能领域中最早发明的简单人工神经网络类型。在它内部,参数从输入层经过隐含层向输出层单向传播。与递归神经网络不同,在它内部不会构成有向环。
Yoshua Bengio最新《深度学习》MLSS2020教程,附104页PPT及视频
专知会员服务
126+阅读 · 2020年7月10日
最新《深度学习行人重识别》综述论文,24页pdf
专知会员服务
80+阅读 · 2020年5月5日
《强化学习》简介小册,24页pdf
专知会员服务
261+阅读 · 2020年4月19日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
76+阅读 · 2020年2月3日
【强化学习】深度强化学习初学者指南
专知会员服务
178+阅读 · 2019年12月14日
深度学习自然语言处理综述,266篇参考文献
专知会员服务
225+阅读 · 2019年10月12日
深度学习详解
人工智能学家
5+阅读 · 2019年4月25日
干货 | 深入理解深度学习中的激活函数
计算机视觉life
16+阅读 · 2019年1月29日
博客 | TensorFlow系列专题(三):深度学习简介
AI研习社
6+阅读 · 2018年11月13日
深度学习综述(下载PDF版)
机器学习算法与Python学习
27+阅读 · 2018年7月3日
【286页干货】一天搞懂深度学习
七月在线实验室
9+阅读 · 2018年1月30日
深度学习之CNN简介
Python技术博文
20+阅读 · 2018年1月10日
机器学习、深度学习 知识点总结及面试题
全球人工智能
17+阅读 · 2018年1月4日
深度学习入门指南:初学者必看!
专知
7+阅读 · 2017年11月30日
入门 | 一文概览深度学习中的激活函数
深度学习世界
4+阅读 · 2017年11月3日
给初学者的深度学习简介
36大数据
3+阅读 · 2017年10月19日
A Survey on Bayesian Deep Learning
Arxiv
60+阅读 · 2020年7月2日
A Comprehensive Survey on Transfer Learning
Arxiv
117+阅读 · 2019年11月7日
Arxiv
12+阅读 · 2019年3月14日
Arxiv
13+阅读 · 2019年1月26日
Arxiv
3+阅读 · 2017年12月18日
VIP会员
相关VIP内容
Yoshua Bengio最新《深度学习》MLSS2020教程,附104页PPT及视频
专知会员服务
126+阅读 · 2020年7月10日
最新《深度学习行人重识别》综述论文,24页pdf
专知会员服务
80+阅读 · 2020年5月5日
《强化学习》简介小册,24页pdf
专知会员服务
261+阅读 · 2020年4月19日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
76+阅读 · 2020年2月3日
【强化学习】深度强化学习初学者指南
专知会员服务
178+阅读 · 2019年12月14日
深度学习自然语言处理综述,266篇参考文献
专知会员服务
225+阅读 · 2019年10月12日
相关资讯
深度学习详解
人工智能学家
5+阅读 · 2019年4月25日
干货 | 深入理解深度学习中的激活函数
计算机视觉life
16+阅读 · 2019年1月29日
博客 | TensorFlow系列专题(三):深度学习简介
AI研习社
6+阅读 · 2018年11月13日
深度学习综述(下载PDF版)
机器学习算法与Python学习
27+阅读 · 2018年7月3日
【286页干货】一天搞懂深度学习
七月在线实验室
9+阅读 · 2018年1月30日
深度学习之CNN简介
Python技术博文
20+阅读 · 2018年1月10日
机器学习、深度学习 知识点总结及面试题
全球人工智能
17+阅读 · 2018年1月4日
深度学习入门指南:初学者必看!
专知
7+阅读 · 2017年11月30日
入门 | 一文概览深度学习中的激活函数
深度学习世界
4+阅读 · 2017年11月3日
给初学者的深度学习简介
36大数据
3+阅读 · 2017年10月19日
相关论文
A Survey on Bayesian Deep Learning
Arxiv
60+阅读 · 2020年7月2日
A Comprehensive Survey on Transfer Learning
Arxiv
117+阅读 · 2019年11月7日
Arxiv
12+阅读 · 2019年3月14日
Arxiv
13+阅读 · 2019年1月26日
Arxiv
3+阅读 · 2017年12月18日
Top
微信扫码咨询专知VIP会员