机器学习编程作业

2023-12-04 18:33:43 数码极客 bianji01

 

python编程有什么用

网站开发Python的一个开发框架Django改变了python的职业前景,在过去Python在Web开发领域并不多。然而,Django已经将Python变成了一个出色的Web开发工具。今天,像国外Pinterest和I....

数据分析和数据科学提到Python,就一定会说起来数据分析和可视化,这些方面Python往往是首选语言。例如,SciPy和NumPy,它们都是基于Python的工具,用户使用这些库能够显著提高进行数据分析的效率。不仅如此....

人工智能(AI)和机器学习(ML)在人工智能和机器学习领域,一些Python库也已经被明确设计用于对大型数据集进行分类和分析,

该不该坚持学习Machine Learning

MachineLearning的前景怎么样?

MachineLearning作为统计学的一个分支,最近好像特别吃香,请大神们解疑,MachineLearning具体是干什么的,前景什么样?

正好刚回答过类似的问题,直接引用下吧

MachineLearning现在是一个很火的研究方向。机器学习是研究计算机怎么模拟人类的学习行为,并且能组织已有的知识构架使之不断完善的性能的学科。是人工智能的核心,是使计算机具有智能的根本途径。与其说是统计学的分支,不如说是统计学,计算机科学,信息科学的交叉分科。其涉及的知识面很广,涵盖了工智能、哲学、信息论、生物学、认知科学、计算复杂性等众多领域的专业知识。现在存在的一些计算器系统是没有学习的能力的(或者是有的已有了特别局限的学习能力?),因而是不能满足生产的需求的。随意随着科技的发展,machineLearning肯定会得到长足的发展的。只是,machineLearning也有许多发展方向,不是每个方向都发展的起来。

附上这篇文章的链接吧:

数据挖掘和深度学习(deeplearning)哪个更有发展前景?

我再补充下MachineLearning的研究目标吧:

认知模型——即是3M认知模型,是人类对真实世界进行认知的过程模型。认知是个系统的过程,其中包含感知,记忆,判断与学习。因而完成这个认知过程,是个一及其艰难和浩大的工程。

通用学习算法——像是大家熟知deepLearning就是MachineLearning中的一种比较深的算法。其实很多ML算法都是非逻辑性的,输入的信息数据通过数学模型而得出一个新的工具,其实可以说是建立一个人工识别号的数据库。

构造学习系统的方法(面向任务的)——其实就是研究如何通过环境向系统的学习环节提供某些信息。

先说这么多吧,有空的话做个图解释下ML的方法论,觉得还是解释比较抽象,多多包涵吧。

MachineLearning是一门多领域的交叉学科,除了像最常见的统计学、逼近论、算法复杂度分析理论等,也包括一些与生物领域的科学相关的问题,比如说最常见的人工神经网络中的各类神经元与链接方式都是仿照人脑进行操作的、以及遗传算法中模拟基因突变的过程等。

机器学习主要就是研究计算机如何模型或实现像人一样的思维方式去学习知识,通过对新问题的反馈机制,修改或优化自己已经学习到的知识。其是人工智能的核心,也就是说,人工智能非常依赖机器学习的好坏与优良程度。

机器学习的方法以及其效果的好坏对于人类未来的发展至关重要,如果效果很高的话,至少可以替代人工做的一些重复的体力劳动,并可以根据特殊情况进行一定的反映。因此,就前景而言还是很好的,尤其是在现在这个大数据时代,越来越多的人类行为相关数据被记录在案,为机器学习提供了基础内容。此外,机器学习所产生的一些成果,已经应用于许多领域,包括数据挖掘、自然语言处理等等。

虽然机器学习已经取得了一定的突破,但是还是没有达到人工智能的程度,因此有许多问题是需要研究和发展的,因此,未来的发展也是充满机遇与挑战的。MachineLearning是个不错的领域,如果想要进入的话,建议多学习一些基础思想和编程。

机器学习已经越来越平民化了(democratizing),数学和算法并非一定要很深厚功力,大多通用算法都是现成的,比如微软AzureMachineLearning平台已经有很多打包的示例,如用来分析customerchurn的示例等。至于operationalization(不知怎么翻译),现在也没这么难了。

我觉得如果只是应用机器学习来处理现实问题,最难的还是怎么把通用算法和自己公司的现实问题联系起来,比如怎么定feature,用哪种model,另外怎么评价最终效果等等。难的是深入理解企业的实际业务,而非技术和算法。

个人认为趋势是随着machinelearning平台的成熟以及通用场景的算法普及,datascientist这个称号会逐渐平民化甚至消失,最后你搭个回归模型之类的就像使用Excel处理一些数据这样简单。一个PM或者销售经理可以自己做这事而不需要养一个专门的职位。

机器学习的应用在工业界需求很高,有过工作经验的人可以很轻松的找到工作,供给远远小于需求,而且需求越来越大。

但是招NewGrad(PhD可以考虑)相对较少。原因很多,简单来说,就是NewGrad往往工程经验不够,学术能力也不够。工业界的现状不复杂:大公司搞机器学习的组大、人多、要求高,PhD是进入的门槛;小公司人少,每个人都要独当一面,因此必须要有过搭建实际机器学习系统的经验。因此如果两边都没有优势的话,自然找工作比较吃力。

因此,对于有志于做这个方向的同学来说,建议找工作时调整心态,第一份工作尽量找到工作职责与机器学习相关的组,而不必追求一步到位。人生的职业生涯很长,做好3到5年的职业生涯规划,积累实际工作经验,不断学习与强化自己。人与人的差距并不会在第一份工作中体现,而是在前几年逐渐显现出来。

机器学习早期发展是遵循实用主义糙快猛的路线。基本步骤就是靠直觉构造一个优化目标,然后解这个优化问题。数学工具基本上线性代数和凸优化也就够用了。再深一点涉及博弈论,随机过程,微分方程,测度论,实分析,泛函分析,李群等。

这个学科发展很快,长期处于理论跟不上实践。当前的发展势头,已经到了一个工科那点数学不太够用了的阶段。很需要一批数学大牛来披荆斩棘一下。很多这个领域的人认为过多的数学没必要,其实是因为这些人数学菜。我就看到过用代数几何的方法(resolutionofsingularity,blow-up)漂亮的解singularmodel的问题。可惜很少人follow。总之很多问题是到了需要引入高级数学工具才能漂亮解决的地步了。比如各种不变性和等价性需要黎曼几何,各种illposesingular问题需要代数几何。

结局就是:还是好好去学数学吧。。。。。。

提几个可能的有关机器学习当中的深度学习发展方向,同时也就是尚待解决的问题:

1.让深度学习自动调超参。

最近看到有人在一个AI群里推广自己的一篇论文《DeepQ-NetworksforAcceleratingtheTrainingofDeepNeuralNetworks》,大致是用强化学习的方法训练一个控制器来自动控制学习率以及在一个batch中各个类的样本占比。虽然它那篇论文问题很大,训练出来的控制器极其不通用,只能用在它原本的任务上,但是感觉很容易解决掉,这个另说。想象一下,如果能够训练出一个通用的控制器,对于各类任务都能够自动调整超参(或者只在某个子领域比如图像分类做到通用也好),那我们就再也不用自称调参狗了,同时也可以解放出更多的时间用于设计模型、验证架构,想必深度学习的发展步伐会得到极大加速。

2.自动学习网络架构。

其实说起来这个问题也可以归入自动调超参,但是感觉应该还是有很大的不同。说起来无非就是两个方面,一是加法二是减法。加法方面可以参考《Net2Net:AcceleratingLearningviaKnowledgeTransfer》,这篇是让CNN自动根据需要自动拓展架构,包括横向的增加filter和纵向的增加layer。减法方面可以参考各类NetworkCompression(网络压缩)的论文中的所谓NetworkPruning(网络剪枝),比如《DeepCompression-CompressingDeepNeuralNetworkswithPruning,TrainedQuantizationandHuffmanCoding》,虽然这些论文出发点不在于自动学习网络架构而在于压缩网络规模,而且它们往往是在训练收敛之后才对网络进行裁剪而非边训练边裁剪,但是感觉只需要再跨一步就可以了。我个人觉得,自动学习网络架构需要解决的最根本问题就是“应该在什么时机进行架构变动”以及“应该怎么变”,第二个问题感觉上述论文算是回答得可以了,但是第一个问题似乎还有很多可以探索的地方。对于第一个问题,似乎强化学习就很适合解决,因为显然可以把它看成一个控制问题。

3.迁移学习。

众所周知,深度学习的直接训练依赖大量数据,而transfer和finetune能够有效利用数据量大的外部任务训练出来特征来迁移到数据量小的目标任务上,使得目标任务对于数据量的要求大大减小。现在的问题在于,迁移学习的思想现在大家其实都在用,很多论文中都可以看到finetune的做法,但是对于两个任务之间需要“多像”才能够迁移这么一个问题还没有一个很好的回答。即使我们不奢求能够给出一个严格的数学理论,至少,如果有人能够做一个非常系统的对比实验,总结出一些规律,使得我们有信心说在如何如何这样一个边界内的任务都是基本上可以transfer的,那将会是一个很大的进步。这个问题也可以这么看,如今我们应该有信心说两个图像分类任务可以transfer,但是这个边界太过狭窄,我个人期待的就是能够有一套理论或者方法论使得这个边界大大拓展,然后在这个边界内我们可以像对两个图像分类任务一样自信满满地用迁移学习。

4.无监督/半监督学习。

像LeCun等大佬其实一直在鼓吹这方面,但似乎还没有搞出像当年CNN(AlexNet)、最近强化学习(阿法狗)这样级别的大新闻来。我理解在这个问题上的努力方向应该是确定“何种representation最有用”。具体来说,就是找到一个指标,然后用深度网络优化这个指标,使得满足这个指标的datarepresentation能够具有非常好的特性。再具体一些,下面举三个实际例子:

autoencoder以重构损失作为指标来学习一个representation。

之前听一个讲座,演讲人介绍他的论文《WhyDeepLearningWorks:AManifoldDisentanglementPerspective》IEEEXploreAbstract,其中定义了三个指标来描述深度网络每一层中datarepresentation的“蜷曲程度”,并发现,越高层的数据蜷曲度越低,换言之,越平展。那么无监督学习是否能够直接以这个蜷曲度作为损失函数来学习一个representation呢?

这篇论文《ContextEncoders:FeatureLearningbyInpainting》提出通过预测周边上下文像素来无监督学习视觉特征,感觉很像word2vec从一维变成二维。

除了上述的重构损失、蜷曲度、预测上下文精度,还有没有别的指标学习出来的representation更好呢?个人认为这些问题就是推动无监督/半监督学习进展的关键所在。

5.基于外部存储(externalmemory)的模型。

如果说RNN、LSTM这样的模型属于internalmemory/long-termmemory的话,那么以神经图灵机(NeuralTuringMachine)、记忆网络(MemoryNetwork)为代表的模型就应该称为externalmemory/reallylong-termmemory了。不过这两个模型刚出来的时候还太过naive,只能做一些很无聊的task,比如序列复制和排序以及非常简单的QA,但是现在已经开始看到它们被用到更加实际的问题上面,例如One-shotLearning:《One-shotLearningwithMemory-AugmentedNeuralNetworks》。往大了说,如果未来要实现强AI,这种外部存储的机制肯定是必不可少的。现在的问题在于,神经图灵机和记忆网络用的外部存储虽然比LSTM那样简单的一个hiddenstate向量更进一步,但也其实就是很简单的一片矩阵,没有任何结构和层次可言,换言之,就是还不够复杂。所以我猜想接下来可能externalmemory会和知识图谱(KnowledgeGraph)结合起来或至少是向知识图谱类似的做法靠拢,因为知识图谱更加结构化。

咳咳,路过,进来小小的装一下。本人现在大三,所以说在这个话题上可能并没有什么话语权,不过因为最近再跟老师搞项目,正好是这方面的,戳进来分享一下感受吧。

第一是:机器学习前景很好。这是真的,最近看了很多论文,有关数据挖掘数据分析类别的,里面用到的百分之八九十都是机器学习,这可能也是人工智能发展的最大需求吧,人工智能无非是模仿人类,而人类最开始也是对世界充满了无知,通过学习才慢慢认知这个世界的,个人感觉这就是为什么机器学习会被提出来吧,像真的实现人工智能就要从根源开始模仿人类,也就是从学习这个技能上入手。

说完了这个想说的是为什么前景好呢,上面说过的用途和提出愿景好是一方面,另一方面是因为这方面人才还比较少,其实这也是一种发展前景吧。就像前几年计算机刚刚火起来的时候那些最早接触计算机的人突然就变得很出名,然后社会上一大部分人都涌入到这个领域中,这是一个道理。机器学习现在还处在起步阶段,下一阶段怎么发展决定于人们对他的研究深度和重视程度。就目前人工智能不断得到重视来看,应该还是很有发展前景的,说不好会成为继计算机时代后的又一个新的时代。

以上观点仅仅是个人观点,我觉得至少在短时间内这个研究方向只会更火不会被冷,就像大数据一样,同样也有人在不断质疑大数据的发展,不过目前发展的还是很好的不是吗?

---------------------------------

2016机器学习之路:一年从无到有掌握机器学习

译者:闻菲

今天是2016年9月12日AIWORLD2016世界人工智能大会倒计时36天启航期5折抢票倒计时7天

【导读】程序员PerHaraldBorgen在Medium刊文,介绍了他在一年的时间里,从入门到掌握机器学习的历程。Borgen表示,即使没有博士学位和高深的数学造诣也能掌握机器学习。这一点相信对不少人都挺有吸引力和启发。不过,博士学位或许真的并非必须,但要掌握机器学习,学再多的数学也不会嫌多。下面就来看Borgen不脱产,从菜鸟变熟手提升业绩的故事。

第一步:HackerNews和Udactiy

Borgen对机器学习的兴趣始于2014年。跟很多人一样,他最初是看到HackerNews的帖子,单纯觉得教计算机学东西很酷。那时候他还只是个业余的编码爱好者,连程序员都谈不上。

于是,Borgen开始了他的机器学习之路。首先,到Uadcity看监督学习的视频,然后阅读所有能找到的、跟机器学习有关的读物。

Borgen总结说,“这给了我一点概念上的理解,不过没有实践技巧。”

同时,他也十分坦承,Udacity的MOOC他并没有上完——只要是MOOC,他几乎都没有坚持上完过。这一点,无论怎么说,至少让篇文章的置信度倍增。

第二步:挂掉Coursera机器学习课

2015年初,Borgen为了成为正式的开发人员,参加了FoundersandCoders(FAC)在伦敦的训练营。在FAC,他和同学一起,每周二晚上会看Coursera上机器学习课程的视频。

不用说,大名鼎鼎的吴恩达的机器学习课。Borgen表示课很赞,学了很多,然而他个人觉得这门课不适合新手。至少他自己,就需要反复看视频才能掌握里面讲的概念——当然,这是Borgen的个人感受。不过,Borgen在FAC学的同学也一个个掉队,最终他自己也挂掉了。

Borgen总结说,他当时应该学一门用机器学习库编代码的课,而不是从零开始建算法,至少应该用他已经知道的编程语言写算法。

一句话,“对新手来说,一边学语言一遍写机器学习算法代码难度是很高的”。这句话有一定的参考价值。

Borgen的建议是,可以选择Udacity的《机器学习入门》(IntrotoMachineLearning),更容易入门,上来就能实践,在提升经验值的过程中,学习的趣味性也会增多。

【经验】从简单的实践学起,之后再学困难的、偏理论的东西。

第三步:一周学会机器学习

Borgen在FAC做的最后一件事情,就是“一周学会机器学习”。他的目标是,一周以后能够实用机器学习解决实际问题,而他也成功做到了这一点。

具体的经验Borgen写在了另一篇文章里。有兴趣进一步了解,可以访问:

简单说,在一周的时间里,Borgen做了以下几件事情:

学会了ScikitLearn

在真实世界数据库跑了一次机器学习

从零(用Python)写了一个线性回归算法

做了一点儿NLP

【经验】腾出一周时间来全身心地沉浸到机器学习里面去,效果惊人。

第四步:挂掉神经网络

成功在一周的时间里拿下机器学习给了Borgen自信。因此,在他结束FAC回到挪威时,他计划进行第二次挑战——一周内学会神经网络。

然而,事实是残酷的。离开FAC那种沉浸式学习环境后,要一天写10小时的代码可不容易。

【教训】找一个合适的环境做这种事情。

不过,Borgen到底还是学上了神经网络。去年7月份的时候,他写完了一个网络的代码。虽然很粗糙,但完成比完美重要,对吧?

下半年,Borgen换了一份新工作,这在某种程度上影响了他的机器学习学习进展。这一阶段他主要做的是实现神经网络,他把大学时学的线性代数重新看了一遍。年底时,Borgen写了篇总结:

《学习如何编写神经网络代码》

也是在这篇文章里,Borgen记录了他从零开始写代码的过程。这篇文章在Medium上点赞的数量接近600。

第四步:在Kaggle竞赛中实践

2015年圣诞节,Borgen参加了Kaggle竞赛。当然,实践的效果是显著的,他得到了通过算法和数据实际迭代实验的经验,也学会了在做机器学习项目时要相信自己的逻辑,“如果调参或特征工程从逻辑上看有用,那么一般都会有用”。

第五步:在工作中建立学习的习惯

2016年初,Borgen想将他在去年年底获得的动力持续到工作中,便询问经理是否能在上班时学新的东西——经理答应了。虽然Borgen在文中没有多写,实际上,从这个经历中也能学到东西:

勇于提出需求,它们才有机会得到满足——当然,你的需求需要合理。

于是,Borgen就在上班时也能学机器学习啦(拿钱做想做的事情!)。在2016年积累了相关经验以后,Borgen的第一站是Uadcity的深度学习课程。然而,事实证明,对于现在的他来说,Udacity的这门课已经太浅。不过,课后的IpythonNotebook作业却太难。Debug浇灭了他的大部分兴趣。又一次地,一门MOOC被他放弃。

但随后,Borgen发现了斯坦福的CS224D,这门课让他获益匪浅。Borgen总结斯坦福CS224D的好处是:

尽管难,但做题从来没有debug;

课程提供答案,便于加深理解。

尽管Borgen仍然没有把这门课上完,但他推荐有兴趣的人去学。

另外,Borgen在学这门课的过程中,为了完成题目,请了一位家教,时薪40美元,这位家教帮他发现了很多问题。因此,他得到了这么一条经验。

【经验】花50美元/时的金额聘请机器学习家教,绝对值得。(如果你有机器学习经验,你可以获得时薪50美元的打工机会。)

学以致用,提高销售额

Borgen在工作中实践机器学习,他搭建了一个系统,节省了公司销售部门同事的很多时间。相关代码:

以上就是Borgen在实际工作中一年掌握机器学习的历程。不管带不带感,至少十分真实。Borgen在文章末尾写道:“如果我做得到,你也做得到。”

尤其是工作中的程序员,你不想试试吗?

声明:易趣百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系315127732@qq.com
广告位招租
横幅广告