如何学习人工智能?

KaipengWu


人工智能领域其实比较广泛,我以计算机视觉为例回答一下你的疑问

哪些必看网站呢?

这些备忘录速查表来源于GitHub网站,这需要你多查阅搜集信息。

那你肯定好奇,计算机视觉有啥用

计算机视觉

计算机视觉应用非常广泛,是人工智能领域应用的重要场景

想要了解一个新知识,首先要知道领域最新的成果

上图是目标检测的最新算法发展情况

计算机视觉有哪些必看的论文会议网站呢?

CVPR:

http://cvpr2019.thecvf.com/

ECCV:

https://eccv2018.org/program/main-conference/

ICCV:

http://iccv2019.thecvf.com/

其次,其他人说书籍了,视频了,你只需要精通学习其中一部分即可,推荐你学习Python语言。


人工智能与计算机视觉


1、掌握一些数学知识,比如说,高数,概率论,数理统计等,还有常见的算法等

2、掌握一门编程语言,比如说Python,在人工智能这方面用的比较多;

把学校的课余时间充分的利用起来,学习技术,到达企业的要求,那些数学知识得靠自己多练习;

想学习Python的话,可以到“ 如鹏网 ”上去看一下,有详细的课程体系,有网络的地方就可以学习,根据自己的时间来灵活安排学习进度,把课余的可支配的时间充分的利用起来,也有更多的时间来练习,夯实基础;

以前在如鹏网上学习的时候,也有很多是利用学校的课余时间来学习的,大二大三就开始工作了,拿着薪资上大学,积累工作经验,等到毕业去找工作的时候,完全不一样了

有问题随时提问,老师实时在线答疑,口碑不错,基本上都是慕名而去的,而且每个章节的后面都有相应的练习题和面试口才题,需要以录音的方式进行提交,为以后的面试做准备,毕业前,老师会专门讲解“如何写简历、如何投简历、如何面试、如何谈薪资避免贱卖”,并对每位同学的就业全程进行指导。

有新的课程更新了,也是可以继续免费申请了来学习的,有详细的课程体系,可以看一下;

第一部分:Python语言基础

第二部分:数据库开发

第三部分:web前端

第四部分:Python web开发

第五部分:Python web项目(截图请访问如鹏网官网)

第六部分:Linux

第七部分:NoSQL

第八部分:数据可视化

第九部分:爬虫技术

第十部分:人工智能


玩着学编程


你有没有想做一件事,睡不着觉的冲动,有没有想做一件事,在睁眼的那一刻就能起来的毅力。这两样你都有,那你可以好好学习这个。真的是持之以恒。

不管是AI也好,其他学科也好,学习、研究的过程中不断反思学科的历史,总结学科的发展现状,找出最重要的理念,总能让人能“吾道一以贯之”。软件工程师James Le近期根据他研究的经验总结出了AI研究必须要知道的十种深度学习方法,非常具有启发性。AI科技评论编译如下。

The 10 Deep Learning Methods AI Practitioners Need to Apply

人们对机器学习的兴趣在过去十年经历了爆炸式的发展。计算机科学项目中、业界会议中、媒体报道中,你都能够看到机器学习的影子。但是似乎所有关于机器学习的讨论中,人们常常会把AI能做什么和他们希望AI能做什么混为一谈。

从根本上来讲,机器学习其实就是使用算法从原始数据中提取信息,并以某种类型的模型表示出来;然后我们使用这个模型来推断我们尚未建模的其他数据。

神经网络作为机器学习的一类模型,它们已经存在了至少50年。神经网络的基本单元是节点,大致上模仿了哺乳动物大脑中的生物神经元的节点;节点之间的链接(也是模仿生物大脑)随着时间的推移(训练)而演化。

在上世纪八十年代中期和九十年代早期,许多重要的神经网络构架都已经做出了,不过要想获得好的结果还需要足够强大的计算能力和大体量的数据集,这些当时在当时很不理想,所以也导致人们对机器学习的热情逐渐冷淡了下来。在21世纪初,计算机的计算能力呈现了指数级的增长——业界见证了计算机技术的“寒武纪大爆发”,这在之前几乎是不可想象的。深度学习作为这个领域中一个重要的架构,在计算能力爆发式增长的十年中,赢得了许多重要的机器学习竞赛。这个红利的热度直到今年仍未降温;今天,我们看到在机器学习的每个角落里都会提到深度学习。

为了更深入地了解这些,我参加了一门“深度学习”课程,并开发了一个图像识别的神经网络以及基于循环神经网络(RNN)和长短项记忆(LSTM)的自然语言处理。可以去我的Github仓库中查看这些代码:

https://github.com/khanhnamle1994/deep-learning

最近,我也开始阅读一些深度学习方面的学术论文。下面这些是我收集到的几篇对深度学习领域的发展有重大影响的几篇论文:

1、Gradient-Based Learning Applied to Document Recognition (1998)

http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf

意义:向机器学习世界引进了卷积神经网络

作者:Yann LeCun, Leon Bottou, Yoshua Bengio, and Patrick Haffner

2、Deep Boltzmann Machines (2009)

http://proceedings.mlr.press/v5/salakhutdinov09a/salakhutdinov09a.pdf<strong>

意义:为玻尔兹曼机提出了一种新的学习算法,其中包含许多隐藏变量层。

作者:Ruslan Salakhutdinov, Geoffrey Hinton

3、Building High-Level Features Using Large-Scale Unsupervised Learning (2012)

http://icml.cc/2012/papers/73.pdf

意义:解决了仅从未标记的数据构建高层次、特定类别的特征检测器的问题。

作者:Quoc V. Le,Marc’Aurelio Ranzato,Rajat Monga,Matthieu Devin,Kai Chen,Greg S. Corrado,Jeff Dean,Andrew Y. Ng

4、DeCAF — A Deep Convolutional Activation Feature for Generic Visual Recognition (2013)

http://proceedings.mlr.press/v32/donahue14.pdf<strong>

意义:释放了一个深度卷积激活特征的开源实现——DeCAF,以及所有相关的网络参数,使视觉研究人员能够深入地在一系列视觉概念学习范例中进行实验。

作者:Jeff Donahue,Yangqing Jia,Oriol Vinyals,Judy Hoffman,Ning Zhang,Eric Tzeng,Trevor Darrell

5、Playing Atari with Deep Reinforcement Learning (2016)

https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf

意义:提供了第一个可以使用强化学习从高维感官输入中直接学习控制策略的深度学习模型。

作者:Volodymyr Mnih,Koray Kavukcuoglu,David Silver,Alex Graves,Ioannis Antonoglou,Daan Wierstra,Martin Riedmiller(DeepMind 团队)

在这些学习和研究中,我发现大量非常有意思的知识点。在这里我将分享十个深度学习的方法,AI工程师可能会将这些应用到他们的机器学习问题当中。

不过,首先先让我们来定义一下什么是“深度学习”。对很多人来说,给“深度学习”下一个定义确实很有挑战,因为在过去的十年中,它的形式已经慢慢地发生了很大的变化。

先来在视觉上感受一下“深度学习”的地位。下图是AI、机器学习和深度学习三个概念的一个关系图。

AI的领域要相对较广泛,机器学习是AI的一个子领域,而深度学习是机器学习领域中的一个子集。

深度学习网络与“典型”的前馈多层网络之间是有一些区别的,如下:

  • 深度学习网络比之前的网络有更多的神经元

  • 深度学习网络具有更复杂的连接层的方式

  • 深度学习网络需要用强大的计算能力来训练

  • 深度学习网络能够进行自动特征提取

因此深度学习可以被定义为在以下四个基本网络框架中拥有大量参数和层的神经网络:

  • 无监督预训练网络(Unsupervised Pre-trained Networks)

  • 卷积神经网络(Convolutional Neural Networks)

  • 循环神经网络(Recurrent Neural Networks)

  • 递归神经网络 (Recursive Neural Networks)

在这篇文章中,我主要对后三个框架比较感兴趣。

卷积神经网络 基本上就是用共享权重在空间中进行扩展的标准神经网络。设计CNN主要是为了通过内部卷积来识别图片,内部卷积可以看到待识别物体的边。

循环神经网络 基本上是在时间上进行扩展的标准神经网络,因为边进入下一个时间步,而不是在同一时间步进入下一个层。设计RNN主要是为了识别序列,例如语音信号或者文本。它里面的循环意味着网络中存在短暂的记忆。

递归神经网络 更类似于分层网络,其中输入序列没有真正的时间面,而是输入必须以树状方式分层处理。

以下10种方法可以应用于所有这些体系结构。

1、反向传播

反向传播是“误差反向传播”的简称,它是一种计算函数(在神经网络中以函数形式存在)偏微分的方法。当你要用一个基于梯度的方法来解决一个最优问题时(注意梯度下降只是解决这类问题的一种方法),你希望在每一次迭代中计算函数梯度。

对于神经网络而言,目标函数具有合成的形式。那么如何计算梯度呢?一般情况下有两种常见的方法:

1)微分分析法。当你知道这个函数的形式时,你只需要用链式法则计算导数即可;

2)用有限差分方法来近似微分。这种方法的计算量很大,因为函数评估的数量是O(N),其中N是参数的数量。与微分分析法相比,这是比较昂贵的。不过,有限差分通常在调试时验证后端实现。

2、随机梯度下降

一个直观理解梯度下降的方法是去想象一条溯源山顶的河流。这条河流会沿着山势梯度的方向流向山麓下的最低点。

如果让人来走,可能就不一样了,你可能会先随便选一个方向,然后沿着这个方向的梯度向下走;过一会儿再随机换一个方向向下走;最后你发现自己差不多也到了谷底了。

数学化的理解就是:

随机梯度下降主要用来求解类似于如下求和形式的优化问题:

梯度下降法:

当n很大时,每次迭代计算所有的梯度会非常耗时。随机梯度下降的想法就是每次在Delta f_i 中随机选取一个计算代替上面的Delta f_i,以这个随机选取的方向作为下降的方向。这样的方法反而比梯度下降能够更快地到达(局部)最优解。

3、学习率衰减

在训练模型的时候,通常会遇到这种情况:我们平衡模型的训练速度和损失(loss)后选择了相对合适的学习率(learning rate),但是训练集的损失下降到一定的程度后就不在下降了,比如training loss一直在0.7和0.9之间来回震荡,不能进一步下降。如下图所示:

遇到这种情况通常可以通过适当降低学习率(learning rate)来实现。但是,降低学习率又会延长训练所需的时间。

学习率衰减(learning rate decay)就是一种可以平衡这两者之间矛盾的解决方案。学习率衰减的基本思想是:学习率随着训练的进行逐渐衰减。

学习率衰减基本有两种实现方法:

  • 线性衰减。例如:每过5个epochs学习率减半;

  • 指数衰减。例如:每过5个epochs将学习率乘以0.1。

4、dropout

在当前的大规模神经网络中有两个缺点:

  • 费时;

  • 容易过拟合

Dropout 可以很好地解决这个问题。Dropout说的简单一点就是在前向传导的时候,让某个神经元的激活值以一定的概率p停止工作,示意图如下:

每次做完dropout,相当于从原始的网络中找到一个更瘦的网络。

Hinton在其论文中做了这样的类比,无性繁殖可以保留大段的优秀基因,而有性繁殖则将基因随机拆了又拆,破坏了大段基因的联合适应性;但是自然选择了有性繁殖,物竞天择,适者生存,可见有性繁殖的强大。dropout 也能达到同样的效果,它强迫一个神经单元,和随机挑选出来的其他神经单元共同工作,消除减弱了神经元节点间的联合适应性,增强了泛化能力。

5、max pooling

池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上是一种形式的向下采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。

直觉上,这种机制能够有效地原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

6、批标准化

包括深度网络在内的神经网络需要仔细调整权重初始化和学习参数。批标准化使这些变得轻松许多。

权重问题:

  • 无论权重的初始化如何,是随机的还是经验性的选择,它们离学习权重都会很远。考虑一个小批量,初期在所需的特征激活方面会有很多异常值。

  • 深层神经网络本身是病态的,初始层中的微小扰动都会导致后面层的非常大的变化。

在反向传播过程中,这些现象会导致梯度弥散。这就意味着在学习权重产生所需要的输出前,必须对梯度的异常值进行补偿,这将导致需要额外的时段来收敛。

批量归一化使这些梯度从分散到正常值并在小批量范围内流向共同目标(通过归一化)。

学习率问题:一般来说,学习率需要保持较低的值,使得只有一小部分的梯度来校正权重,原因是要使异常激活的梯度不影响已学习到的激活。通过批量标准化,可以减少这些异常激活,因此也就可以使用更高的学习率来加速学习过程。

7、long short-term memory

LSTM网络具有以下三个方面,使其与循环神经网络中的常见神经元不同:

1)它能够决定何时让输入进入神经元;

2)它能够决定何时记住上一个时间步中计算的内容;

3)它决定何时让输出传递到下一个时间步。

LSTM的美妙之处在于它能够根据当前的输入本身来决定所有这些。 所以你看下面的图表:

当前时间的输入信号x(t)决定所有上述3个点。 输入门决定点1,遗忘门决定点2,输出门决定点3。任何一条输入都能够采取所有这三个决定。这种设计其实是受到了我们大脑如何工作的启发,并且可以基于输入来处理突然的上下文切换。

8、skip-gram

词嵌入模型的目标是为每个词项学习一个高维密集表示,其中嵌入向量之间的相似性显示了相应词之间的语义或句法相似性。 Skip-gram是一个学习词嵌入算法的模型。

skip-gram模型(以及许多其他的词语嵌入模型)背后的主要思想如下:两个词项相似,如果它们共享相似的上下文。

换句话说,假设你有一个句子,例如“猫是哺乳动物”;如果你用“狗”而不是“猫”,这个句子还是一个有意义的句子。因此在这个例子中,“狗”和“猫”可以共享相同的上下文(即“是哺乳动物”)。

基于上述假设,你可以考虑一个上下文窗口(一个包含k个连续项的窗口),然后你跳过其中一个单词,试着去学习一个能够得到除跳过项外的所有项的神经网络,并预测跳过的这个项。如果两个词在一个大语料库中反复共享相似的语境,则这些词的嵌入向量将具有相近的向量。

9、连续词袋

在自然语言处理问题中,我们希望学习将文档中的每个单词表示为一个数字的向量,使得出现在相似的上下文中的单词具有彼此接近的向量。在连续的单词模型中,目标是能够使用围绕特定单词的上下文并预测特定单词。

我们通过在一个大的语料库中采取大量的句子来做到这一点,每当我们看到一个单词时,我们就提取周围的单词。 然后,我们将上下文单词输入到一个神经网络,并预测在这个上下文中间的单词。

当我们有成千上万个这样的上下文单词和中间词时,我们就有一个神经网络数据集的实例。 我们训练神经网络,最后编码的隐藏层输出表示了特定单词的嵌入。 恰巧,当我们对大量的句子进行训练时,类似语境中的单词得到相似的向量。

10、迁移学习

让我们想一下如何在CNN中处理一张图片。假设有一张图片,你对它进行卷积处理,然后你得到的输出是像素的组合,我们姑且称之为“边”吧。我们再次使用卷积,这时候你得到的输出将是边的组合,我们称之为“线”。如果再次使用卷积,那么你将得到线的组合,等等。

每一层都是在寻找相应的特定模式。你的神经网络最后一层一般会给出非常特定的模式。也许你在处理ImageNet,你的网络最后一层可能是在找孩子、狗或飞机或别的任何东西。如果你向前两层看,网络可能是在找眼睛、耳朵、嘴巴或者轮子。

深度卷积神经网络中的每一层的深入都是在构建越来越高层次的特征表示。最后两层会产生你输入模型的数据中的特定模式。换句话说,早期的层提取的特征则广泛得多,在提取的大量的类中有很多简单的模式。

迁移学习就是当你用一个数据集训练CNN时,砍掉最后的一(些)层,再用另一个不同的数据集重新训练最后一(些)层的模型。直观地说,你在重新训练模型来识别不同的高级层次特征。作为结果,训练时间大幅减少。所以当你没有足够的数据或者训练的资源时,迁移学习是非常有用的一个工具。

这篇文章只是展示了这些方法的一般概述。我建议阅读下面这些文章以获得对这些概念更详细的解释:

  • Andrew Beam's “Deep Learning 101”

    http://beamandrew.github.io/deeplearning/2017/02/23/deep_learning_101_part1.html

  • Andrey Kurenkov's “A Brief History of Neural Nets and Deep Learning”

    http://www.andreykurenkov.com/writing/a-brief-history-of-neural-nets-and-deep-learning/

  • Adit Deshpande's “A Beginner’s Guide to Understanding Convolutional Neural Networks”

    https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/

  • Chris Olah's “Understanding LSTM Networks”

    http://colah.github.io/posts/2015-08-Understanding-LSTMs/

  • Algobean's “Artificial Neural Networks”

    https://algobeans.com/2016/03/13/how-do-computers-recognise-handwriting-using-artificial-neural-networks/

  • Andrej Karpathy's “The Unreasonable Effectiveness of Recurrent Neural Networks”

    http://karpathy.github.io/2015/05/21/rnn-effectiveness/

深度学习非常注重技术,而对每一个新的想法却没有太多具体的解释。大多数新的idea只是用实验结果来证明它们的工作。深度学习就像玩乐高,掌握它有一定的挑战性,但是入门还是很容易的。


机器人观察员


能在大二这个年纪提出这样的问题真让我们这些80后汗颜,我们大二的时智能手机还没有开始普及,而现在人工智能已经开始逐步进入生活的各个领域。2017年可以说是人工智能的发展迎来了一个拐点,国家层面确定人工智能的发展战略及方向。未来两年,人工智能应用层面将出现爆发式增长,进而出现大量的AI应用人才缺口,所以现在对于一个大二学生来讲,还能有什么比这更幸运?

学习人工智能,我建议参考一下步骤循序渐进:

学习并掌握好数学知识

高等数学是学习人工智能的基础,一起理工科都需要这个打底,数据挖掘、人工智能、模式识别此类跟数据打交道的又尤其需要多元微积分运算基础。线性代数很重要,现行模型是你最先考虑的模型,未来很可能还要处理多维数据,需要用线性代数来简洁清晰的描述问题,为分析求解奠定基础。

概率论、数理统计、随机过程更是少不了,涉及数据的问题,不确定性几乎是不可避免的,引入随机变量顺理成章,相关理论、方法、模型非常丰富。

再就是优化理论与算法,除非你的问题是像二元一次方程求根那样有现成的公式,否则你将不得不面对各种看起来无解但是要解的问题,优化将是你的GPS为你指路。

有了以上基础就可以开始机器学习的理论和算法了,以后再具体针对某一个应用补充相关的知识与理论,比如数值计算、图论、拓扑等。

学习机器学习的理论和算法

机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。

回归算法:常见的回归算法包括:最小二乘法(Ordinary Least Square),逻辑回归(Logistic Regression),逐步式回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing)

基于实例的算法:常见的算法包括 k-Nearest Neighbor(KNN), 学习矢量量化(Learning Vector Quantization, LVQ),以及自组织映射算法(Self-Organizing Map , SOM)

正则化方法:正则化方法是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整。正则化方法通常对简单模型予以奖励而对复杂算法予以惩罚。常见的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及弹性网络(Elastic Net)。

决策树学习:决策树算法根据数据的属性采用树状结构建立决策模型, 决策树模型常常用来解决分类和回归问题。常见的算法包括:分类及回归树(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 随机森林(Random Forest), 多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine, GBM)

贝叶斯算法:贝叶斯方法算法是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题。常见算法包括:朴素贝叶斯算法,平均单依赖估计(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。

基于核的算法:最著名的莫过于支持向量机(SVM)了。 基于核的算法把输入数据映射到一个高阶的向量空间, 在这些高阶向量空间里, 有些分类或者回归问题能够更容易的解决。 常见的基于核的算法包括:支持向量机(Support Vector Machine, SVM), 径向基函数(Radial Basis Function ,RBF), 以及线性判别分析(Linear Discriminate Analysis ,LDA)等。

聚类算法:聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。

关联规则学习:关联规则学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则。常见算法包括 Apriori算法和Eclat算法等。

人工神经网络:人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法。(其中深度学习就是其中的一类算法,我们会单独讨论),重要的人工神经网络算法包括:感知器神经网络(Perceptron Neural Network), 反向传递(Back Propagation), Hopfield网络,自组织映射(Self-Organizing Map, SOM)。学习矢量量化(Learning Vector Quantization, LVQ)

深度学习:深度学习算法是对人工神经网络的发展。 很多深度学习的算法是半监督式学习算法,用来处理存在少量未标识数据的大数据集。常见的深度学习算法包括:受限波尔兹曼机(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷积网络(Convolutional Network), 堆栈式自动编码器(Stacked Auto-encoders)。

降低维度算法:降低维度算法是以非监督学习的方式试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者用来简化数据以便监督式学习使用。常见的算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘回归(Partial Least Square Regression,PLS), Sammon映射,多维尺度(Multi-Dimensional Scaling, MDS), 投影追踪(Projection Pursuit)等。

集成算法:集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。常见的算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆叠泛化(Stacked Generalization, Blending),梯度推进机(Gradient Boosting Machine, GBM),随机森林(Random Forest)。

掌握一种编程语言Python

一方面Python是脚本语言,简便,拿个记事本就能写,写完拿控制台就能跑;另外,Python非常高效,效率比java、r、matlab高。matlab虽然包也多,但是效率是这四个里面最低的。

行业动态及论文

了解行业最新动态和研究成果,比如各大牛的经典论文、博客、读书笔记、微博微信等媒体资讯。

实践练习

找一个开源框架,自己多动手训练深度神经网络,多动手写写代码,多做一些与人工智能相关的项目。

找到自己感兴趣的方向

人工智能有很多方向,比如NLP、语音识别、计算机视觉等等,生命有限,必须得选一个方向深入的专研下去,这样才能成为人工智能领域的大牛,有所成就。


AI猎人


我是16年转向机器学习开发。我讲一下我的转换过程和学习方法,希望对大家有所帮助。
开发阶段:
首先,AI开发目前来说基本可以等价于机器学习,机器学习里包含深度学习。选择一门机器学习的开发语言很重要,我选择是python,原因是数据处理功能强大,对机器学习支持广泛和开发入门快。
基础学习阶段:
  1. 学习了python的基础
  2. 爬虫开发
  3. pandas数据处理
  4. python可视化开发
这个阶段是打基础的,主要目的是熟练python的开发,函数调用,数据处理。因为后面做机器学习开发,很大一部分工作是过滤数据,去掉噪音,留下高质量的数据再进行建模和训练。
机器学习阶段:
  1. 学习算法,从最基础,最重要的开始。最小二乘法,贝叶斯,逻辑回归,决策树。
  2. 学习机器学习流程,预处理,特征工程
  3. 学习应用scikit-learn来建模训练数据
  4. 在kaggle上找个比赛题目,下载数据放入sk-learn中去实战
  5. 学习神经网络,深度神经网络,卷积神经网络
  6. 在kaggle上找个比赛题目,应用神经网络去训练
大家可以看出来,主要的流程就是学习新的算法然后找到训练的数据,应用框架去训练,是一个反复的过程,在实战中去体会。因为工作中暂时没有合适的场景,所以从一些机器学习的比赛中去寻找实战案例是个很好的方式,国内的比赛有天池,滴滴的。
总结:
机器学习的核心是算法,虽然后可以通过一些框架去建模训练,而且也很好上手,但是如果算法方面薄弱的话,也不会走的太远,所以建议前期先通过比赛实战来快速入门,后面要多花时间来深耕算法,把算法作为自己的长板,让长板更长。

5分钟机器学习


  1. 大学阶段涉及到的人工智能技术的基础知识有高等数学、线性代数、概率统计论、图论、数据结构和基本计算机算法等,需要掌握。大二到大四这个阶段,你有足够的时间与精力把它们掌握。

  2. 有了上面的基础知识,接下来可以从一些基础的AI课程开始学习,推荐:麻省理工的人工智能视频课程https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-034-artificial-intelligence-fall-2010/lecture-videos/ ; Peter Norvig讲的人工智能教程 https://classroom.udacity.com/courses/cs271, 对新手,推荐一定要学习。

  3. 当你有了上面的基础之后,就具备了进入较高级阶段的条件。记住不要做资料收集的高手,切忌只收集不学习。good luck.


人工智能技术精粹


我计划用半年时间自学人工智能,已经开始第六天了,目前刚学完Python,准备进入机器学习阶段。总结了一些心得经验,你可以参考一下。希望能对你有帮助。


分享到:


相關文章: