欢迎来到加倍考研网! 北京 上海 广州 深圳 天津
微信二维码
在线客服 40004-98986
推荐适合你的在职研究生专业及院校
读研在人工智能、软件工程和网络安全之间该如何选择爱很美

读研在人工智能、软件工程和网络安全之间该如何选择

作为一名计算机专业的研究生导师,主要研究方向集中在大数据和机器学习领域,所以我来回答一下这个问题。人工智能领域的人才培养一直以研究生教育为主,涉及到的方向包括机器学习、计算机视觉、自然语言处理、智能机器人等。目前人工智能领域是科技领域的热门,随着各大互联网公司纷纷布局人工智能领域,相关的人才缺口也比较大,所以人工智能相关方向是不错的选择。人工智能方向对于基础学科的要求比较高,尤其是数学基础,另外人工智能是比较典型的交叉学科,需要学习的内容也比较多。从近几年人工智能方向研究生的就业情况来看,薪资待遇是比较可观的,而且上升趋势也比较明显。软件工程是比较传统的方向,不同的高校往往会根据自身的教育资源情况设置不同的细分研究内容,包括并行操作系统、嵌入式系统、分布式数据库、并行计算、实时操作系统等。软件工程方向由于比较注重学生动手实践能力的培养,同时软件工程方向与行业结合得比较紧密,所以软件工程方向是不错的选择。另外,软件工程方向对于行业内新技术的应用也比较敏感,软件工程方向中也有不少关于人工智能、大数据和云计算方面的细分研究。如果在硕士研究生毕业之后就选择参加工作,那么可以重点考虑一下软件工程专业。网络安全方向虽然看似研究方向比较集中,其实涉及到的内容却非常广泛,因为不论是大数据、云计算还是物联网方向,都需要一个安全的网络运行环境,所以网络安全的细分方向还是非常多的,目前大数据安全、云计算安全都是不错的选择。虽然网络安全的重要程度相对比较高,但是网络安全的就业岗位相对软件工程要稍微少一些。我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!

大巧

软件工程专业的就业前景如何

近些年来,软件工程专业毕业生的就业情况确实不错,整体呈现出供不应求的态势,形成这种情况的原因有以下几点:第一:互联网行业发展迅速。近些年来互联网行业发展迅速,尤其是移动互联网领域开辟出了大量的市场空间,从而形成对人才需求量的持续增长。除了软件工程专业以外,其他计算机相关专业的整体就业情况也不错。第二:专业特点。软件工程专业的培养模式既注重基础学科教育又注重学生动手能力的培养,不少软件工程专业的学生在校期间就能积累大量的实践经验,这是软件工程毕业生就业较好的重要原因之一。在人才培养的过程中,软件工程专业也会采取与企业联合的培养方式,不少科技企业会与学校建立联合实验室,把一些最新的技术引入到校园中,这会明显丰富学生的知识结构,也会提升学生的就业竞争力。第三:IT行业结构性升级。近些年来,伴随着我国整体行业结构升级,IT行业也在进行结构性升级,IT行业整体的研发能力在逐渐提升。行业结构升级必然会带来人才结构的升级,在这个过程中必然会形成较大的人才缺口,这也是软件工程专业就业比较好的原因之一。当前,5G标准即将落地,产业互联网也正蓄势待发,整个IT行业在未来将持续释放出大量的就业岗位,这也为未来软件工程专业的发展奠定了一定的基础,从这个角度来看,未来软件工程专业的就业前景依然十分值得期待。最后,软件工程专业自身不断发展并与时俱进也是保障就业的重要原因,在近几年的毕业答辩上,不少软件工程专业的学生都在做大数据、物联网、云计算、机器学习等方面的课题,这也给我留下了较深的印象。我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续在百度写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。如果有互联网方面的问题,也可以咨询我,谢谢!

禁欲者

小白入门:我是如何学好机器学习的?

作者 | Jae Duk Seo译者 | Tianyu编辑 | 夕颜在我看来,机器学习是一个计算机科学和数学知识相融合的研究领域。虽然这是个很有趣的领域,但它其实没有想象中那么难。我相信只要你有足够的动力、毅力和时间,就可以成为这方面的专家。接下来我要告诉你的是,从事机器学习方面的工作可以赚很多钱。而且在很多行业都有大量机会,所以你可以尝试不同的行业。我发现一件有趣的事,这些年机器学习的基础知识和原理并没有变(当然我很可能说的不对)。我想表达的是,目前的大多数模型都是由一些我们所熟悉的模块组成的,如全连接层、卷积层、残差层以及标准化层。当然并不是每种模型都是由这些模块组成的。也有一些特殊的例子,如空间变换网络或是注意力机制。但对于不同类型的模型来说,其构成模块或多或少都存在类似的部分。那么这意味着什么呢?这意味着,当你学会基础知识以后,再去学习复杂的内容就会变得相当容易,而且会节省大量时间。在此我想分享一些助我学好机器学习的秘诀和技巧。但请注意,我目前仍在学习机器学习,还有大量待研究的内容。享受学习的过程,慢中求稳首先我想强调的是,一定要多花时间去理解机器学习的基础知识。说得更确切一点,要认真学习数学。理解反向传播需要了解向量运算。概率论与统计对于学习信息论至关重要。有关优化的知识也是必须学习的,因为模型训练到最后都需要进行优化这一步骤。我知道对于刚入门的人来说,没必要非得学习这些东西,因为有很多打包好的工具包可以自动完成这些过程。但我不相信只了解这些模块就可以让你成为这个领域的优秀研究者和工程师。不过,我相信学习并理解了这些概念以后,很多事情会变得轻而易举。至少对我来说如此。举个例子,不借助工具包,从头搭建一个神经网络,可以让你对模型的学习过程有更加透彻的理解。与其他研究者进行工作交流我目前是 Ryerson Vision Lab 的一员,正在攻读硕士学位。我在实验室里结交了很多朋友。我时不时会看一眼他们的显示器,观察他们在做什么。我经常会看到一些有意思的内容,比如图像分割结果或是一堆代码。我会问他们一些问题,比如“这段代码是关于什么的?它能用来干什么?你正在解决什么问题?”接下来,一段对话就开启了。他们会告诉我自己正在处理的问题,我总能学到新的知识点和解决方法。这对我来说非常有意义,因为当我以后也遇到类似问题时,就不必从零开始了。同时,我也会接触到一些此前完全不了解的全新话题和论文。找一个你感兴趣的技术理论相关的应用实例我目前正在研究几个感兴趣的课题,例如风格迁移。我最初开始研究这些课题,大都是因为看了相关资料或 YouTube 视频。也存在这样的情况,我开始研究一个课题仅仅是因为我想做出一些很酷的东西。在这个过程中,针对同样的问题,我常常可以找到不同的或者更好的解决方法。当然了,我们无法保证新的方法都可以表现更好。但这是一个学习新知识的过程,要尽量做到完全理解,达到可以自如地使用新方法的程度,这个过程真的帮助我提升很多。另一方面,我之所以如此受益于这个方法,是因为我学习到了如何进行有价值的实践。例如,当一个很酷的项目被开源了,我会把项目文件克隆到本地,然后学习其他研究者的代码。长此以往,我通过这种方式观察其他研究者在做的事情,并从他们的代码中学习知识。不过,经常会出现有些研究者的代码让人很难读懂的情况,因为他们本身不是软件工程师。但这并不影响我观察他们在做的事情,而且我会记下不该做的事情。结论差不多就是这样,这些都是帮助我学习机器学习的秘诀和技巧,我希望它们也能帮得上你。最后,我相信只要你有好奇心和热情,就一定可以研究自己感兴趣的课题,学好机器学习。如今,有很多有关深度学习的优秀线上内容。也许这些方法对你有帮助,也可能完全没用,但没关系。我们都是不同类型的学习者,不是所有人都穿相同尺码的鞋子。但我希望其中个别方法可以帮得上你!原文链接:https://towardsdatascience.com/how-i-got-better-at-machine-learning-63ce0f0e81d7 (*本文为AI科技大本营编译文章,请微信联系 1092722531)◆◆2019 中国大数据技术大会(BDTC)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。

见功多者

机器学习如何影响各行各业?你为什么想成为机器学习工程师

全文共7065字,预计学习时长22分钟图源:unsplash你是否想过亚马逊、甚至Netflix是如何做到不停地为用户推荐产品的?与大众认为的截然不同,它们不适用于Skynet,随时遇到故障是不太可能的。相反,它们依赖于最受欢迎的人工智能技术之一——机器学习。随着技术进步,人们对机器学习和数据分析的需求一直居高不下。几乎没有哪个行业在交易中不涉及机器学习,机器学习算法应用范围极其广泛。从使计算机与人类交流成为可能,到撰写和发表体育报告,机器学习可以做很多事情。先下面看看这些年来它的发展历程。· 1950: 艾伦·图灵提出了“图灵测试”,以判断计算机能否真正比人类“智高一筹”。· 1952: 亚瑟·塞缪尔用一台IBM 计算机研究和发展棋盘游戏,发明了首个计算机学习程序。· 2006:杰弗里·辛顿诠释了让计算机在图像和视频中“查看”和区分对象和文本的新算法,“深度学习”这一术语也应运而生。· 2012: 通过浏览油管识别其中有猫的视频,Google’s X Lab 成为最大的猫咪追踪器。· 2015年及之后: 随着人工智能技术日益发达,其数据可在公开网站上获得,斯蒂芬·霍金、埃隆·马斯克、史蒂夫·沃兹尼亚克、马克·扎克伯格等人对正直和信任在社会影响层面的真正意义上进行争论。在人工智能时代,我们有机器人、自动驾驶汽车、可以进行口头交流的自动拨号电话、管控我们房屋的智能IoT(物联网)服务,以及在做饭时突然问我们问题的Alexa智能助理。一天,13岁的妹妹问我:“为什么我还需要驾驶证?这既浪费时间也浪费钱。等到我能够驾驶的时候,汽车已经能够自动驾驶了。”我意识到她说的可能没错,同时也有些向往汽车能实现自动驾驶的生活,那时我将永远不会浪费时间或者钱来学习驾驶。现在,当我们试图将数据应用于可消费和可生产的产品中时,数据成为了前所未有的新“石油工业”和“淘金热”。这也确实是机器学习发挥作用的地方。机器学习有机会改善许多行业!《福布斯》表明,到2020年,机器学习有可能在市场营销和销售中创造额外的2.6万亿美元,这还不包括制造业的2万亿美元。如果这还不足以震惊你,这儿还有不断发展的市场和数据量。公司一直在寻找成本更低且功能更强大的计算处理方式,更不用说具有成本效益的数据存储了。通过分析数据和构建精确的模型,企业若不能将其增长翻三番,也至少可以翻倍。机器学习具有强大的能力,可以帮助组织识别有利可图的机会并避免风险。微软需求优化主管Anirban Sengupta谈到了机器学习的重要性:“随着我在亚马逊职业生涯的发展(所面临的问题),与传统的统计和计量经济学建模法相比,机器学习是更为明显的解决方法。例如,使用参数统计模型很难实时检测欺诈行为。其功能数量繁多,并且它们之间存在相互作用。图源:unsplash 同样,在这些情况下,预测准确性/精确性/召回率比模型可解释性更重要,这使得机器学习成为更为明智的选择。机器学习将会发展下去。同样,数据投资正在增长且将继续增长下去。对于数据和数据基础架构投资的目标是挖掘这些数据,从中获取可操作性见解,以推动业务价值。对于能够真正进行如此复杂的数据分析和大规模模型构建的人才的需求也将只增不减。”机器学习如何影响多个行业医疗保健图源:Indiatoday 实际上,机器学习的使用已成为医疗保健领域的一种增长趋势,并带来了一些极具吸引力的应用。位于美国马萨诸塞州的PathAI借助机器学习,提出了一项新技术,这将帮助病理学家更快地进行诊断。别小瞧它,它可以解决医院人满为患的情况,并使患者更快地接受治疗。尤其是患有癌症等疾病的患者,早期诊断能够使结果大有不同。金融业随着我们逐渐转向在线交易方式,金融行业的银行和其他企业对机器学习可以提供的实时数据分析的需求也越来越大网络监控和欺诈预防应用程序可以为投资者提供安全保障,使他们能够轻松地进行交易。IdentityMind Global是一家人工智能公司,可帮助金融机构和企业打击在线欺诈行为。该公司已建立50多个数据点,可帮助验证人的身份。此外,他们还提供打击洗钱和反恐融资的服务。图源:ft能源部门多年来,环保主义者一直在要求更清洁的能源。更不用说,每当我们转身时,都会出现另一场天然气危机。石油和天然气是机器学习拥有无限可能的另一个领域。从创建更高效的精炼厂到分析矿物,机器学习可以被应用于其中的无数领域。美国能源业界著名咨询公司提供的天然气和石油数据可通过开发基于多元模型的资源来改善钻井作业它们不仅可以为公司提供精确的地质和地球物理数据,而且还可以减少公司在石油业务中所需要的财力和人力资源。人才需求持续增加!许多工程师患上错失恐惧症(F-O-M-O)正如我刚开始所说,机器学习不会很快过时。事实是,许多求职网站上与机器学习相关的职位发布数量跃升了90%。但困难之处在于,整整两个月后,至少有40%的职位依然空缺。由此得知,尽管对机器学习工程师的需求很大,但人才供应是问题所在。工程师对通用化与专业化存在争论。但需要知道的是,我们采访的大多数行业领导者都希望他们的候选人具有广泛的经验,而不仅仅具备专业领域知识。大多数经理、董事和CTO都非常明确地表明,他们希望员工能主动将机器学习经验应用到各种项目中,而不必局限于个人擅长的领域。如果你专门研究对象识别和计算机视觉,请不要拒绝NLP(自然语言处理)项目,因为它仅与前者略有不同。大多数机器学习领导者都认为经典技术在不同项目中都可使用。公司可能希望其员工偶尔转换一次职位,但并非总是如此。不过,如果能在自己擅长的领域以外获得一些经验,是不会有损失的。专业化的一些热门领域包括推荐系统(由Facebook等技术巨头使用)、计算机和机器视觉(由Snap、Inc.团队使用)和自然语言处理(苹果的Siri)。请听听医疗技术公司Change Healthcare 的AI主管Alex Ermolaev所说:“…我认为这有助于一次专注于一个领域,但是每隔几年在不同领域之间切换仍然会带来一些乐趣。一次只专注于一个领域是件好事,因为要花些时间才能精通它,掌握工具使用方法并学习细微差别……”公司正在寻找在擅长领域表现出色且勇于迎接新挑战的候选人。接受新的挑战并了解公司中的不同领域,这将使你能够跨领域开展不同的项目。最终,你将对多个项目有更多的见解,并了解核心用户和客户。因此,如果决定踏入机器学习行业,那无疑是朝着正确方向迈出的一步。这是一个快速发展的领域,拥有着不断发展的应用程序。实际上,Google趋势报告表明,机器学习即将在搜索结果领域中取代AI。不要纠结于陷入过多细节。这确实是一个竞争激烈的市场,每个人都想采取行动,但最终,取决于工作的水准。将精力集中于获取跨领域的经验,你就能主动学习自我交流。磨练头脑,理性看待整个世界,并提出创新的解决方案,这将使你、你的雇主乃至整个社会受益。如何成为一名机器学习工程师看看好莱坞流行的参考词如“Hal”,也难怪人们对机器学习可以提供的可能性有些担忧。值得庆幸的是,当今世界上机器学习的现实与一台具有自尊心问题的杀手式感知计算机差得很远。机器学习可以极大地改变我们的生活,以至于有些人甚至将其比作工业革命。说到工业革命,你是否知道机器学习使外包焊接等危险工作变得更加容易。工业级焊接中产生的热量、噪音和有毒烟雾,这对工人是巨大的风险。但是,配备了计算机视觉和深度学习功能的机器人焊机具有更强的灵活性来完成工作,且不会危及生命。图源:sproutsocial而且这只是机器学习对我们的生活方式产生的积极影响之一。无论是中小型企业还是大型企业,都表现出将向数字化转型纳入其关键计划的意愿。作为技术招聘人员,我最近有机会采访了机器学习行业的领导者,了解他们对求职者能力的要求。后来我想要知道的是他们加入该领域的动机。是对创新的热爱,还是他们想成为可能改变数百万人生活方式的一份子?下面是Geocaching数据科学与数据分析负责人LeeSherry关于他为何投身机器学习领域的原因。“对我来说,没有什么比沉浸于数据和了解新事物的感觉更好了。这要与数字背后的现实联系起来。我喜欢通过数据研究世界,并将复杂的信息提炼成最简单的事实而获得的理解。数据可以是变革性的;它可以被用来克服我们已经学会过,去尽可能简单处理的障碍。”对我来说,这就是为何许多人发现自己被机器学习吸引的本质。并没有多少人有能力摆脱混乱,但这就是职位描述中包含的内容。我知道我们都听过这个笑话,“数据已经足够长了,它会告诉你任何事情”,但信任统计数据而不是“直觉”的企业往往会表现更好,这是有缘由的。像国际数据公司(IDC)这样的公司预测AI支出到2021年将超过500亿美元,这也是有原因的。机器学习已经成为预测未来的方式。没有任何时代能像现在这样使人们参与其中了。而且,我知道许多人都有兴趣进入机器学习行业,只是他们不是很确定该怎么做。本文为此可以提供帮助。从所需的教育到面试中的常见错误,我们将揭秘成为ML工程师所需要了解的知识。硕士学位还是博士学位——哪个更重要?对ML感兴趣的每个人总是会问一个问题——硕士学位还是博士学位?让我们从这个问题开始。图源:unsplash机器学习工程师学历的不确定性是真实存在的。人们通常想知道硕士学位是否足以使他们找到合适的工作,还是需要获得博士学位作为储备。理学硕士可以帮助你在许多实际情况下积极贡献。ML的大多数硕士课程都有一种通用的方法,可以帮助学生准备计算机视觉编程、软件设计、语音识别、自然语言处理等主题。该学位课程的重点是提高学生的分析技巧和统计、数学和编程能力。此时,你可能正在思考,一名理学硕士涉猎已如此广泛,那博士学位能带来什么呢?尽管博士学位有时会受到抨击,但他们可以在职业生涯中发挥决定性作用。通常,培养博士生不采取通用的方法,它们可以成为基于研究的职业起点。拥有博士学位,可以推动ML的前沿发展,并专注于开发下一代算法。或者可以将机器学习应用于社会上重要的问题并提出可行的解决方案。对于AI社区的许多领导者来说,机器学习巨大的一个好处就是能够参与研究和出版,并帮助开源社区开发将要发展到下一代的模型。如果你正在攻读博士学位,毕业前需要先参与到多个出版工作中。对于专注于研发的企业,这是一个非常大的优势。与我交谈过的不少行业领导者并不要求候选人拥有硕士学位或博士学位。但是,Softmax Data的执行合伙人Jia Chen非常清楚他为什么倾向团队中的人员有较强的学术背景。他发现具有较强学术背景的人能更好地处理论文和进行研究,丰富的数学经验可以帮助他们实现ML所需的突破。在ML中,数学直觉和研究技能的重要性不可忽视。像博士学位这样的资格证书是获得此类经验并深入掌握算法内部工作原理的绝佳方法。训练数据机器学习是一个不断发展的领域,因此,必备的基本技能涉猎广泛。尽管如此,具有丰富经验的扎实学术背景仍可作为加分项。机器学习的主要技能是统计、概率、编程和数据建模。这也正是Softmax Data的执行合伙人Jia Chen的想法。当被问及机器学习工程师应具备哪些技能时,陈先生说:“…数据工程、软件开发、数学技能和沟通技能。”要了解ML中数据建模的重要性,可以看看Geocaching数据科学与数据分析主管Lee Sherry的看法:“…尽管编程经验很有用,但我认为建模非常重要:机器学习工程师应该知道如何有效地解决问题。这意味着识别一种情况的主要特征,弄清楚如何构建一个能够产生所需答案的问题,确定何种近似方法有意义,并知道适用于当前问题的算法和方法。”这只是冰山一角。数字、日期和字符串等结构化数据可以轻松地被存储为行和列。而视频、图像和电子邮件等非结构化数据却无法轻松指定。但是,非结构化数据是数据建模的基础。根据Gartner的数据,它构成了80%的企业数据。在机器学习算法中使用非结构化数据可提供至关重要的见解。它在业务运营策略中具有极大的可适用性。它可以提高准确性,促进新的思维方式和信息使用方式。最后,还必须全面了解监督学习和无监督学习。这是两种最流行的机器学习方法。让我们从有监督的学习开始。它是可以使用输入和输出变量的系统,通常你会使用一种算法从数据中确定映射函数。目标是提出一种精确的映射函数,以便算法在进行新的输入时可以预测结果。如果技术术语有些沉重,可以这样想——监督学习非常有价值,其中数据在预测未来事件中起着至关重要的作用。金融机构如何利用监督学习来预测可能具有欺诈性的信用卡交易便是一个很好的实例。另一方面,无监督学习的功能更像是训练集。系统获得输入数据,但没有可比较的输出值,目的是探索数据并发现结果。在市场营销等领域,无监督学习非常有用,它可以帮助识别客户行为模式。然后,企业可以使用这些模式来建立营销策略,其准确性几乎令人瞠目(如Facebook)。基本编程技能和经验朋友可能会告诉你,你所需要的只是一些必要的编程技能,便可以成为一名合格的ML工程师。但是,即使学习基础知识可以帮助您适应ML特定的编程技能,成为一名工程师也可能需要丰富的编程经历。图源:unsplash Change Healthcare的AI主管AlexErmolaev建议ML工程师需要具有构建高性能/可扩展产品的经验、数据管理技能以及构建AI / ML模型或工具的经验。全球最流行的编程语言是Python、JavaScript和C ++等。通常,Python是首选的数据分析工具,而C ++是深度学习和计算机视觉的必备工具。选择使用的编程语言在一定程度上会影响你的体验。收集有关语言语法、分析库和合适的集成开发环境(IDE)的信息也将有所帮助。您还需要关注诸如部署和扩展模型之类的内容。可能还需要部署和扩展模型方面的经验。部署是机器学习生命周期中最重要的部分之一,它与扩展一起有助于简化大规模消耗的过程。有些公司拥有软件工程师团队来处理此类细节,但有些公司则没有。这是为什么最好在面试日期之前解决这些细节。对于那些对编码实践感兴趣的人,可以查看我的文章——“我没有通过该死的编码面试”。尽管如此,无论特定工作是否需要编码,大多数ML领导者都希望潜在应聘者了解将模型交付给工程师所涉及的内容。能够根据数据量、运行时间和复杂性等因素对模型是否值得生产进行现实评估是非常重要的。ML中的建模ML中的术语“模型”是指来自训练过程中的产品或人工制品。图源:unsplash 建模是一组数学参数和表达式,它们以给定数据集的不同元素的类和动作的形式,与输入和输出链接在一起。建模的任务是处理数据的回归、分类和增强。或简单来说,建模需要大量的数学运算。通常不是在学校教授的那类。这既是ML工程师的数学造诣非常重要的原因,也是为何博士学位这样的资格证书可以带来优势的原因。在机器学习中使用“学习”的人并不是在开玩笑,因为你需要熟悉几种学习类型(甚至是子领域)。尽管我十分乐意在这里谈论它们,但我打算在机器真正发挥作用之前结束这篇文章。错误的面试和应避免的错误面试中应该避免的三大错误是什么?微软需求优化负责人AnirbanSengupta表示,潜在候选人的三大致命错误,就是用复杂术语使面试官加深印象,把重点放在工作量而不是质量上,并且无法描述过去的项目。还有其他错误——面试者慌慌张张,没有花时间正确地回答问题。恕我直言,如果你不是万事通,也没关系,只要精通某些领域即可。始终注重质量。如果不了解某一事物,请直接承认,并表现学习的热情。图源:unsplash 在整个过程中向潜在的雇主证明,只要你想,就可以学习到新知识。在与一些机器学习领导者的对话中,我发现机器学习工程师有一种趋势,表现出他们快速学习新事物的能力,能够显示出学习的高度。此外,不要机械式地回答问题。例如,如果你不确定面试官想要什么,不要回避提出关于自己的问题。对知道或不知道的事物保持乐观态度。面试官想体验的是与你共事一天的感觉。如果在面试中缺乏协作或澄清问题的能力,那么他们自然会假设你在工作时也会避免澄清问题。面试官通常喜欢判断你的分析能力以及处理问题的方式。他们想评估你的思考过程。这就是为什么面试时应保持诚实和一丝不苟的原因。夸大简历是大禁忌,千万不要这样做。如果你撒谎,很快会被察觉出来。一旦面试官深入探讨你不完全理解的主题,发表自己的想法时便会露馅。成功候选人表现的共同特征成功的人总有一些共同点,以下是大多数成功候选人拥有的特质。图源:unsplash 具有协作精神。机器学习不是单人游戏。它更像是一项团队运动。当你开启ML工程师职业生涯时,可能会与技术人员和非技术人员一起工作。你应该具有出色的沟通能力和领导才能,从而与团队共事并领导团队。要有自知之明。能够从错误中吸取经验尤为重要。为犯错而狡辩则不会走得太远。这只是一种告诉全世界你无法接受失败的方式。最后一点也很重要,保持谦虚,并对自己的工作充满热情,因为这是你将能够积极贡献的方式。送给你Xyonix创始人Deep Dhillon的一句名言:“人才难遇。现在,他们的劳动报酬过高却且未发挥充分作用。”Facebook、Google和Amazon正在招聘所有顶尖人才。去这些公司的博士毕业生正在努力改善市场营销活动、广告收入和点击率,以便他们可以像在Xyonix一样从事其他项目。我们永远专注于AI。其中一些项目包括:· 医院单位患者人口普查预测指标· 基于智能手机和音频的异常心跳检测器· 体内手术的自动视频注释和分段引擎· 摇滚明星听众自然语言文本对话解析器和轻生意念检测器· 用于情绪分析和自动化观点提取的 医学手术文本审查解析器如果想在大型公司工作,使用大型数据集,这也不错。他们的某些项目不只是营销和销售。图源:unsplash 关键是确定你真的对此充满热情吗?机器学习工程师和数据科学家的需求量很大。无论在哪里工作和从事什么都无所谓。你都将获得丰厚的报酬。其区别只在于影响世界的方式以及在日常生活中技术的用途。留言点赞关注我们一起分享AI学习与发展的干货如转载,请后台留言,遵守转载规范

标心者

读博熬不住了,拿个硕士学位投身业界如何?看过来人怎么说

机器学习硕士毕业后,读博或工作,这是一个忧桑的人生抉择。67% 的研究生说他们在过去一年里至少有一次感到绝望;54% 的人情绪低落,无法正常工作。对于许多人来说,读研究生并不是一种乐趣或个人的充实。它可能受很多因素影响,例如可怜的薪资和不确定的就业条件等等。但是在读研,尤其是博士生期间,我们又会遭受各种打击、遇到各种问题,甚至怀疑到底值不值得花那么多时间读博。所以,在硕士毕业后,我们到底是继续读博还是直接工作?博士期间「心跳」波动图,第二年到第三年是心态最接近「崩溃」的时间。读博还是投入业界的怀抱?一位博士三年级的学生表示,Ta 敢肯定几乎每一位机器学习博士生在做项目中都会萌生这样的想法,就 Ta 自己而言,在完成第三年博士课程后,Ta 认真考虑要投入业界。虽然与研究团队成员相处愉快,但节奏太慢了,Ta 觉得自己学不到任何东西了。过去三个暑假,这位博士生一直都在实习(一次是在一家较大的工业研究实验室,另外两次是在两家较小的创业公司从事工程师相关研究工作),并发现相较于单纯的研究,Ta 更享受创业公司的工作环境。Ta 称自己更喜欢构建一个能够在现实世界运行的系统,而不是想出一个性能在 CIFAR100 数据集上提升 0.5% 的架构。Ta 宁愿从事研究性工程,而不是「数据科学」或通用软件工程,但 Ta 不认为自己能够进入一家研究实验室。最好的情况是,在度过 6 年博士生涯后顺利毕业,然后有可能从事那些只要求工科硕士学位的研究工程师工作。一方面,Ta 觉得自己会后悔没有拿到博士学位并因此错失了一些工作机会,但另一方面,虽然放弃了再熬三年获得高薪的机会,但可以在一个更有趣的地方度过青春年华(这位博士生的大学在一个无聊的大学城中)。看着 Ta 的那些本科毕业即开始工作的朋友们正在职业之路(工程师)上大展宏图,而 Ta 自己只能苦逼地一天天呆在实验室赶制一篇又一篇论文,这真是太丧了!Ta 想问问大家,你们当中那些拿到工科硕士学位后即认真考虑投身业界的朋友有没有后悔呢(或者那些继续选择读博的有没有后悔呢?)大神们怎么看观点 1:支持继续读一位即将毕业的 PHD 表示,Ta 也因为这个问题挣扎过很长时间,很多次都想拿个硕士学位走人。但有一个信念一直支撑着 Ta——Ta 觉得读博就像开一家创业公司:你投入了很多,并希望收获丰厚的回报。这么想的话,写论文就不单单是为了发表,而是为了解决真正重要的问题。对于 ML 研究者来说,这是一个很好的时代,许多刚出校门的 PhD 就得到了不错的职位和薪水。因此,如果坚持读下去,即使志在业界,你也会往前迈进一大步。这位准 PhD 自己也在业界找到了很好的工作,所以 Ta 认为博士学位在未来还是很有帮助的。另外,对于「实战经验更好」或「PhD 只是一纸文凭」之类的论调,这都是太想当然了,因为有很多具有丰富经验的博士在和你竞争相同的职位。对于谷歌之类的大公司,如果不是 PhD,甚至都不会有面试的机会。而且对于博士生来说,实习的机会有很多,因为它们想在毕业后雇佣你。一位过来人表示,对于工科博士和硕士而言,薪水、待遇、升职空间的确存在很大差异。博士的额外收入和能够拿到的项目的确和硕士不一样。大家对硕士的要求可能是「做出昨天需要的东西,立刻、马上」;而对博士的要求可能就是「尝试做出 10 年后还能卖出去的东西」。另外,尽管薪水可能相差无几,但博士在时间管理上更加自由,可以在家办公等。有人在工作之后才看到这些差异,于是决定回去继续读书。一位重返学界的硕士工程师表示,尽管在工作中已经拼尽全力,但还是有人跟 Ta 说,「如果有博士学位,你会有更多选择(薪水、职责范围等)」。因此,他觉得自己被学历限制住了,所以痛下决心重返学界,本着赶早不赶晚的心态继续读书。尽管读博之路可能非常辛苦,但有人觉得,职业生涯是一场长达 35 年的马拉松,现在不应该贪图压力较小的生活,而应该将这种生活留到以后。「尽管职业生涯已经过半,我还在考虑回去读博。」如果硕士毕业后就离开学界,这没什么问题,但你需要做更多才能展示你的价值。如果你是在博士期间辍学,那么就需要在简历上解释这一段经历,解释为什么没能完成博士学业。这对于公司而言是一个很重要的信息,也会引起很多顾虑。所以先准备好硬着头皮走下去,那么就继续读博吧。观点 2:不读博影响不大当然,也有人表示学历对自己的影响不大。一位 ML 的资深从业者表示,自己读大学的时候就已经开始核心机器学习工作了。幸运的是,Ta 刚入行时,这个领域还没有那么火。Ta 觉得业界经验更加重要,你可以在业界学到关键的沟通和业务逻辑技巧,公司也更加注重这些。而且,积累模型部署整个流程的上手经验比拿到数据科学领域的硕士或博士学位更有价值。Ta 回忆说,自己之所以放弃攻读硕士学位,是因为 Ta 看到周围都是这样的人,并很快意识到,只要你工作出色,无论学历高低,公司都会欣赏你。Ta 告诉自己,「你的工作很出色」,而且 Ta 也不喜欢纯研究环境的节奏,因此选择去了私企。Ta 表示,这也许是自己做的最好的决定。当然,Ta 也不否认博士学位的好处,尤其是在数据科学领域。因为在这一领域,没有正规第二学历的人确实在写文档、做研究方面存在短板。Ta 建议题主问一下自己。你真的喜欢做研究、发表论文吗?还是愿意躬身从基层做起,构建系统并解决问题。对于不读博就进不了大公司的说法,有人也提出了反驳。Ta 表示,谷歌的很多团队都会雇佣软件工程师来做 ML 工作,即使这些人没有博士学位。Ta 个人认为相关的实习/工作经验比学术研究更加有吸引力。有人说博士候选人可能拥有更好的批判性思维能力、交流技巧,也可以用一两篇已发表的论文来展示自己的工作。但发表过优质论文的硕士毕业生差不多也有这些东西。博士毕业生可能起点和薪资都比较高,但硕士能早几年起步,利用这几年升到相同的职位,所以最后的差距就看不出来了。至于放弃读博对于公司来说是不是一个危险信号,有人提出了另一种看法。Ta 认为,6 年是一段很长的时间,因此利用这六年同时了解业界和学界也很有价值。题主想要转战业界只是想弄清楚自己究竟最喜欢什么,而不是无能为力的表现。当然,每个人关于是否继续读博都有自己的理由,但前提是想清楚自己到底喜欢什么、想要什么,愿不愿意为选择所带来的机会成本买单。如果选择继续读博,那么在身体和心理上都要做好准备。一周多前,Nature 发表了一篇社论,表明现在许多博士生和博士后都处于身体过于疲劳、精神过度紧张的状态,这已经严重影响了他们的心理健康。Nature 社论:读博有害健康?Nature 表明,过去很多研究都揭示了这种趋势,比利时 Flanders 的一些 PhD 学生发现,他们出现心理健康问题的风险是受过高等教育学生的两倍以上。这群博士生中有三分之一目前已经出现心理问题,或者有患上心理疾病的风险。对美国亚利桑那大学博士生进行的一项调查发现,约四分之三的博士生承受着「高于平均水平」的压力。这些研究都揭示了一些明显的问题:1)短期博士和博士后合同,会让雇主和导师根本不重视博士生的心理健康问题,而这本来就是学校与导师的义务。而且目前学术界经常会对长时间工作持鼓励态度,这会极大助长过度劳动的状态和气氛。2)职业生涯刚刚起步的研究者和他们导师之间的权利平衡是有问题的。资深科学家既需要充当学生的强力支持者,同时还需要成为独立的评估者。这两者之间的矛盾关系将阻碍学生分享潜在的健康问题,因为学生也会担心影响专业上的进步。总之会有很多因素影响博士生的压力与心理状态,所以很多博士/博士生都会告诫学弟学妹们,读博之前一定要有完善的准备。那么有什么办法能减轻读博期间的心理问题吗?Nature 表明,目前也有很多基金在帮助研究机构建立心理辅导机制,很多研究在积极探讨合理的解决方案。Nature 表示,其实解决方案就在眼前,导师需要有一个全面、强制性的培训,从而识别、帮助和理解面临心理健康问题的研究生。此外,学生也可以不止有一个导师,这样他们就能在不担心职业生涯受阻的情况下得到支持。大学校园也需要确保为本科生提供的精神健康服务,能帮助研究生和博士后远离心理健康问题。当然还有一点也非常重要,研究社区应该尊重研究者寻找生活与研究之间的平衡点。对于很多人而言,读博确实面临着巨大的挑战,还不如拿到硕士文凭后就加入产业界。但是我们应该相信,以后读博并不会或很少影响健康,我们能在「适当」的压力下学会做最前沿的研究工作。参考链接:https://www.reddit.com/r/MachineLearning/comments/bt0m8v/d_to_finish_or_to_master_out/https://www.nature.com/articles/d41586-019-01492-0

君子道

搞懂这些,你也能转型70W年薪的机器学习工程师

作者 | 寇冠东编辑 | 韦玮题图 | 视觉中国人工智能的热潮依旧,相关人才缺口随势增长,顶着“高薪”、“稀缺”、“大佬”标签的机器学习专家成为了程序员、工程师、数据分析师的转型风向标。根据 Indeed 在美国 2018 年的最佳工作报告,机器学习工程师在美国前十的“最佳”工作排名中占据前列,年薪高达 13.62 万美元。机器学习是什么?应用场景有哪些?成为机器学习专家难不难? 11月1日的数据侠实验室,Tapas数据仓库管理员寇冠东和大家分享了机器学习的那些事儿~本文为其演讲实录。大家好,我是寇冠东,是一名数据仓库管理员,今天分享的主要内容,包括:机器学习的定义机器学习的应用场景机器学习的上下游学习机器学习所要掌握的相关知识点机器学习与人类学习之间的关系。▍验证码与机器学习上网的时候,我们会看到很多各种各样的验证码,有的简单,有的复杂。普通用户非常讨厌这些验证码,因为它浪费了大家的时间,但这些验证码的作用是能够阻拦爬虫爬取数据。在实际的网络请求中,只有非常少的一部分是真正的用户行为,大部分的网络请求都是由爬虫发起的,爬虫的目的就是为了采集数据。实际工作中,爬虫工程师会使用一些机器学习技术解决验证码的问题,比如利用计算机视觉识别数字和字母,利用语义识别文字,并且将二者进行匹配处理。而后端开发工程师的任务则是防止爬虫爬取数据及减轻服务器的压力。除了采用验证码防止爬虫,另一种方式是采用机器学习中的异常检测。异常检测是指识别出哪些是普通的用户访问的行为,哪些是爬虫或恶意的网络请求。通过这样的识别,让正常的用户请求获取到正常的数据,让爬虫和其他的恶意网络请求获取到假数据、脏数据或者验证码。▍到底什么是机器学习?根据Tom Mitchell 1997年提出的定义,机器学习是一种计算机程序,这种程序能够针对特定任务,表现随经验的增加而增加,即机器学习包含三大要素,分别是经验、任务和性能。机器学习的经验来自于数据,它的任务是解决特定的问题,它的性能取决于我们如何评估模型的表现。▍机器学习的上下游机器学习的上游是数学和计算机科学,它的下游是软件工程和商业应用。其中,各个环节不是完全绝对划分的,各环节彼此之间有非常高的重叠度。比如说数学和计算机科学,两个学科在算法方面有很大重叠度,计算机科学和机器学习重叠度更高。机器学习和软件工程一样,因为机器学习工程师很大一部分任务就是在编写软件代码,而软件工程又与商业应用最接近,我们日常所用的一些所谓机器学习的应用,大部分都是通过软件工程师经过封装之后才能够使用。▍要想入门机器学习,你需要掌握哪些知识点?机器学习中的数学机器学习最上游靠近学术研究方向的是数学,机器学习中的数学包含但不限于微积分、线性代数、统计学、凸优化。其中,统计学研究的对象就是数据和数据背后的规律。在学统计学专业的人看来,机器学习就是统计学的一种应用,但二者之间存在细微的差别,统计学的侧重点在于统计结果的可解释性,要用人类能够听懂的语言来解释它的结论;而机器学习的重点在于模型预测的准确性,而不是人类能不能理解模型的原理。总的来说,数学是一门理论指导学科。如果不懂这些数学原理,其实也可以做机器学习工程师,但是如果偏学术方面的话,还是要更多地掌握一些数学原理。机器学习中的计算机科学相比于数学这一门纯粹性的学科,计算机科学更讲究实用主义,因为计算机科学会经常提及计算成本、效率这些非常实际的问题。所以有一些问题在数学上是可解的,但因为计算机的计算能力有限,所以我们认为它是不可解的。比如说HTTPS的RSA加密算法、比特币的加密算法,从数学角度而言都是可以暴力破解的,但是以目前计算机的算力,要完成暴力破解,需要非常长的计算时间。从实用方面来考虑,我们认为这些加密算法是不可破解的。决定机器学习过程中计算成本的最大因素是算法复杂度,算法复杂度分为两方面,一方面是时间复杂度,另一个是空间复杂度。其中时间复杂度是我们更关心的。严格的说,时间复杂度不是指计算时间的长短,而是计算所需的操作次数。如上图所示,随着输入数据量的增加,不同的算法复杂度,增长不同。其中增长最快的是指数增长、幂增长,增长较慢的是平方根增长、对数增长。当数据量在1000条的时候,以上几种不同复杂度的算法的耗时都是一毫秒。对于线性增长的模型,数据每增加一千倍,它的时间也会扩大为原来的一千倍,这是比较常见的一种模式,就如一个人1分钟吃1个混沌,10分钟吃10个馄饨,这是日常生活中最常见的算法。对数增长非常慢。当数据量从1000增大到100万的时候,数据量变成了原来的平方,而实际的计算时间只增加了两倍。平方根增长也比较慢。当数据量增加1000倍的时候,1000个平方根相当于32左右,比线性增长要慢很多。平方和立方这类幂增长则非常可怕,当我的数据量增加1000倍的时候,平方增长变成了原来的100万倍,立方增长变成了原来的10亿倍。为机器学习选择算法的时候,尽量选择算法复杂度比较低的算法,尤其是在数据量比较大的时候。▍机器学习的经验来源:数据数据是机器学习的原料,是机器学习的经验来源。机器学习输入的是数据,输出的是一个具有预测能力的模型。数据有多种形式,狭义的数据指数字形式,比如说网站的访问量、用户数量;广义的数据则包含一切能够被记录下来的信息,比如说文本、图片、视频、音频,虽然它们的编码格式和数据压缩的方式不一样,但它们都是基于二进制的数据。这些数据都可以用来训练机器学习的模型。数据经过采集、预处理、探索性数据分析之后,确定机器学习的任务和算法,进行机器学习的模型训练,通过数据可视化输出一个产品。这样一个循环不是一次性完成的,它往往要经过多次迭代。在数据采集过程中会涉及网站本身积累的用户数据、爬虫数据、人工标注数据;数据的预处理包括数据清洗、特征工程,通过预处理将数据去重、剔除脏数据;探索性数据分析(EDA)能够做一些统计性的描述,帮助我们更好地定义问题。用来训练机器学习的数据非常重要,但是并不是所有的数据都用来训练模型。一般而言,使用60%的数据训练模型,使用20%的数据验证模型,并且调节优化模型参数,最后剩余20%的数据用于评估模型表现。通过对数据的这样一种划分,能够让模型得到一个最初的训练、优化和评估。▍如何定义机器学习的任务?机器学习的任务类型主要分为监督式学习和无监督学习,除此以外,还有半监督学习和强化学习。监督式学习与无监督式学习监督式学习,表现为训练数据的因变量有标注。在定义一个函数的时候,往往包括自变量和因变量,自变量是函数的输入值,因变量是函数的输出值。训练数据的因变量指的是预测模型所输出的值。比如利用一个房子的面积来预测一个房子的价格,房子的面积是自变量,价格是因变量。而这样一条既有面积又有价格的数据,它就是一个因变量有标注的训练数据,可以用来做监督式学习。无监督学习,表现为训练数据的因变量没有标注。比如我们采集了很多的用户行为数据,但是我们并不知道哪一类用户和哪一类用户是相似的,通过机器学习可以让用户行为相似的群体划分成小的分组,这就是无监督学习,其中的训练数据并没有提供一个明确的标注。监督式学习:回归问题、分类问题监督式学习中通常可以分为两类,一类是回归问题,一类是分类问题。所谓回归问题,表现为因变量是连续值或者有序整数。比如说产品销量、房价和股票等市场预测问题;温度、湿度、风速等天气预测问题,它们的输出值都是连续数值或有序的数字,属于回归问题。(图片说明:坐标轴中横坐标是特征,纵坐标是输出;横坐标是自变量,纵坐标是因变量,使用一条直线或者曲线去拟合模型,这个模型解决的是一个回归问题。)监督式学习中另外一种常见的问题叫做分类问题,表现为因变量是离散并且无序的。(图片说明:图中横、纵坐标都是特征;象限中的数据是模型的因变量)解决分类问题的目的在于找到一个分类器,划分出不同类数据之间的区别。分类问题不仅限于二分类,也可以是多分类,即对多种类进行划分。验证码识别是一个典型的分类问题,如果是数字和字母验证码,对它的识别就是把验证码中的每一个数字或大小写字母分到可能的62个(26+26+10)分类中;垃圾与正常邮件识别也是一个二分类问题;文章分类则是个多分类(科技、经济、军事、体育等)问题。(图片说明:在微软应用how old上,上传一张带有人物照片的图片,能自动识别出人脸的位置,并标注出其中人物的性别和年龄。其中,关于性别预测是一个二分类问题,关于年龄的预测是一个回归问题。)无监督学习:聚类、降维无监督学习中常见的一种问题是聚类问题。(图片说明:聚类问题的应用及未经过人工标注的数据坐标图。)聚类问题的目的在于解决如何使机器自动将相近的数据点划分为一组。聚类问题的应用非常广泛,包括电商消费者划分、基于用户位置的商业选址、动植物种群划分等。无监督学习中的另一类常见问题是降维问题。降维的目的在于降低数据的维度、计算成本、以信息损失最少的代价压缩数据和高维数据可视化。降维常用的方法包括主成分分析、奇异值分解等。▍模型训练机器学习中的算法选择数据量对于机器学习训练的效果有什么影响?一般数据量越大,算法训练出来的模型结果表现越好,而有的算法是在数据量比较小的时候表现更好,而有的算法则是在数据量更大的时候表现更好。(图片说明:某公司根据文本进行的模型训练,随着数据量的增加,不同模型的表现都在提升)如何选择合适的算法?以线性回归问题为例,其中有两种常见的算法,一种是正规方程,直接用数学去求出它的解析解,这种算法的复杂度是N的立方;另一种算法叫做梯度下降法,其中又分为批量梯度下降和随机梯度下降,他们的算法复杂度分别是N的平方和N。对比正规方程和梯度下降,正规方程的精确度比较高,因为它是解析解,而梯度下降的精确度在可接受范围内,它最大的优点在于计算成本非常低,所以在数据量很大的时候,倾向于选择用梯度下降法来训练线性回归模型。简单来说,梯度下降法就是把一个函数的梯度求出来,然后选择一个初始位置,让它进行梯度方向的迭代。梯度下降法的优点是算法复杂度较低,可以降低到N的平方或者N,缺点在于它有可能会陷入一个局部最优解。(图片说明:右图中,如果用梯度下降法进行模型训练的起始位置是靠近右侧的凹坑,那么它最终迭代的结果则会是一个局部最小值,而不是中间这个凹坑的全局最优解。)模型训练最重要的是要通过大量的迭代来达到最优解。▍模型评估泛化能力模型的评估涉及模型的泛化能力,模型的泛化能力包括欠拟合、刚好拟合和过拟合。什么是过拟合?什么是欠拟合?举例来说,比如大家对亲戚中某一个熊孩子非常不喜欢,你可以送她一件最好的礼物——五年高考三年模拟,如果熊孩子背下了所有往年的高考题,但遇上没有见过的题他就不会做,这就是一种过拟合;如果熊孩子并没有学会往年的高考题,在面临真实高考题时,他自然答得不好,这是一种欠拟合。过拟合就是模型对于训练数据表现得非常好,对于新数据它不能够很好的预测;欠拟合与过拟合相反。评估机器学习模型时,最好能够达到刚好拟合,在此状态下,不论是训练数据还是新的数据,它都能够有非常好的一个拟合的状态。为了更好地理解欠拟合和过拟合,需要引入两个新概念,分别是偏差(bias)和方差(variance)。模型评估时,最不希望看到的结果,就是偏差方差都很大。不同模型复杂度对于模型表现会有怎样的影响?(图片说明:横轴是模型的复杂度,纵轴是模型的预测出来的误差。)当模型非常简单的时候,即靠左的时候,我们可以看到模型的偏差非常大,但是方差比较小;随着模型复杂度的增加,到中间这部分时,模型的偏差和方差都相对比较小,这是模型评估希望看到结果;随着模型进一步变得复杂化,它的的偏差会变得比较小,但是方差变得比较大,出现了过拟合。过拟合和欠拟合都是模型评估不希望看到的结果,但是它们的原理和情况是不一样的。欠拟合是由于模型过于简单,过拟合是由于模型过于复杂。在训练机器学习模型的时候,更多遇到的是过拟合。▍机器学习与人类学习机器学习和人类学习之间是有一定联系的。不积跬步,无以至千里机器学习中的“跬步”,就是降低代价函数过程中的每一次迭代,每一次迭代,模型参数的更新可能都比较小,它只是沿着梯度的方向下降了一小步,但是迭代次数只要足够多,那么最终的模型还是能够收敛到全局最优解。机器学习模型要经过大量的迭代。吾尝终日而思矣,不如须臾之所学也基于现有知识进行思考,相当于是基于现有的数据去训练模型;学习新知识,增加新的训练数据。很多情况下,在一个有限的数据集上进行更多的迭代次数的训练,不如增加训练数据的量,这样最终达到的模型,它的表现会更好。机器学习和大数据之间的结合非常紧密,因为足够的数据量是机器学习的一个先决条件。吾尝跂而望矣,不如登高之博见也当使用梯度下降法训练模型时,如果只是基于当前位置去做小步长迭代,很可能会陷入一个局部最优解,而不是全局最优解。一旦梯度下降方法陷入局部最优解,就再也没有办法跳出局部最优解。我们所做的每一个小决定,就像模型训练中的一次次迭代,要放眼全局考虑问题,而不能只看到眼前的一点点。注:以上内容根据嘉宾寇冠东在数据侠线上实验室的演讲实录整理。图片来自其现场PPT,已经本人审阅。点击“阅读原文”,获取作者直播回放。▍数据侠门派本文数据侠寇冠东,Tapas数据仓库管理员,挪威东南大学学院硕士,武汉理工大学学士。▍加入数据侠“数据侠计划”是由第一财经旗下DT财经发起的数据社群,包含数据侠专栏、数据侠实验室系列活动和数据侠联盟,旨在聚集大数据领域精英,共同挖掘数据价值。

城之大者

计算机科学与技术和软件工程等计算机专业有何区别

首先,计算机相关专业在基础课程的设置方面还是比较统一的,大部分计算机专业都会开设高数、线性代数、概率论、离散数学、物理等基础课程,由于数学对于计算机相关专业比较重要,所以往往数学占据了较大的比例。计算机科学与技术专业(计科)是一个相对比较传统的专业,计科比较注重知识结构的全面性,包括操作系统、算法设计、数据结构、编程语言、计算机网络、数据库、编译原理、数电、模电等课程,所以计科专业的毕业生在就业方面比较灵活,目前整个IT领域中有大量的技术人员都是计科专业毕业的。网络工程专业比较专注于计算机网络的相关知识,包括计算机网络体系结构、数据通信原理、现代计算机网络、现代交换原理、网络操作系统、网络编程、网络安全等课程,所以网络工程专业的毕业生主要就职于网络相关的技术岗位,随着产业互联网的发展,网络工程专业的发展空间还是比较大的。软件工程专业是目前就业比较好的专业之一,软件工程专业比较注重学生动手能力的培养,不少软件工程专业的学生在学习期间就能接触到一些实践项目,这会明显提升学生的就业竞争力。软件工程专业也是一个与时俱进的专业,不少软件工程专业毕业生的毕业题目都比较贴近技术流行趋势,比如大数据、机器学习等方向。信息安全专业在大数据时代具有重要的意义,信息安全专业专注于数据安全领域的相关知识,包括信息安全体系结构、密码学、数字鉴别、网络安全检测与防范技术、防火墙原理、网络安全协议等。当前正处在大数据时代,信息安全对于大数据非常重要,从这个角度来看,学习信息安全专业也是个不错的选择。我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。如果有互联网方面的问题,也可以咨询我,谢谢!

生之质也

与软件工程比较接近的专业有哪些

在本科阶段,计算机相关专业在基础知识层面都具有较多的共性,虽然不同专业各有侧重,但是由于本科阶段的基础知识结构占比较大,所以差别往往并不是特别明显。比如软件工程专业虽然比较偏重于软件知识,但是课程设置中也有电子电路等硬件相关内容。目前与软件工程专业关联度比较高的专业有计算机科学与技术、计算机软件、计算机应用、信息安全、物联网工程、计算机与信息管理、电子商务、多媒体等,另外近些年来新开设的大数据和人工智能专业与软件工程专业也有较为密切的关系。软件工程专业比较侧重学生动手实践能力的培养,同时比较关注目前技术的发展趋势,比如不少软件工程专业的毕业生会把毕业设计的方向定在物联网、机器学习、计算机视觉等领域,这些领域未来也具有较为广阔的发展前景。从知识结构上来看,软件工程专业的知识结构是比较健全的,基本上涵盖了大部分计算机基础知识,虽然不同高校在课程设置上会各有侧重,但是整体知识结构还是比较趋同的。由于知识结构健全且动手实践能力比较强,所以软件工程专业的就业情况一直有不错的表现,在计算机相关专业当中也是比较突出的。从就业领域来看,软件工程专业的本科生在就业面上还是比较广的,既可以在IT行业从事软件开发等相关岗位,也可以在传统行业从事信息系统、计算机网络等方面的技术型岗位。随着大数据、云计算和物联网的发展,软件工程专业的就业渠道将进一步得到拓展。最后,在当前的就业背景下,计算机相关专业的本科生最好读一下研究生。我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!

巨蛛怪

软件工程专业好就业吗?HR:薪资待遇高,6大方向任你选择!

在大学报考志愿的时候,家长和考生们对于专业的选择会非常头疼,今天跟大家讲一讲软件工程这个专业,希望对广大考生和家长有所启发!软件工程的薪资待遇如何?说到专业大家最关心的就是毕业之后的薪资待遇,那么软件工程薪资待遇如何呢?在校园招聘的时候最能体现出来,软件工程专业通常毕业之后都会去互联网公司或者从事跟互联网相关的单位。下表是2017年中国大学专业薪酬水平排行榜前20,软件工程专业夺取第一名。软件工程在毕业之后通常都会去哪些单位,最常见的有百度、阿里巴巴、腾讯、网易、京东、小米、科大讯飞等一系列顶尖的互联网企业。随着互联网的发展,尤其是移动互联网的发展,让软件工程专业迎来了好的就业浪潮。加之近来被大家推崇的大数据、人工智能和区块链等新技术的推波助澜,使得软件工程专业的就业更是被大家广泛看好!软件工程就业的6大方向软件工程专业毕业之后其实可以选择的方向也很多大体包括6个方向,分别是:研发工程师、算法工程师、测试岗、运维岗、产品经理岗、运营岗,那么这6个方向又都是做什么的呢?1、研发工程师其实说白了就是大家常说的“程序员”,比较厉害一点的会成为项目经理。虽然都是程序员,但又细分为网页前端研发、网页后端研发和软件研发等,分别对应着大家前端看到网页展示、后台逻辑及数据存取、安卓iOS等不同终端的研发。常用的语言有C++、Java等,专业性很强。2、算法工程师分为图像算法工程师、通信算法工程师、数据挖掘/机器学习的算法工程师,通常主要负责数据开发、数据挖掘算法。目前市场上对于大数据的需求量非常大,我们用到的很多的算法匹配的功能都是这个岗位开发的。3、测试岗主要负责在产品开发完成后,根据需求文档书写测试用例,对产品的性能和功能进行测试,检查是否有BUG,测试稳定性兼容性等。4、运维岗运维是负责把控工程的正常运行,在互联网产品测试工作完成后,对产品进行的发布和发布之后的运营维护工作。5、产品经理岗这是个神奇的岗位,看似什么都不会,但是什么都要懂。最重要的就是收集和分析客户的需求,确定研发哪种产品,选择哪种技术、商业模式,书写产品需求文档,推动产品研发、测试进度,不断优化用户体验。6、运营岗主要从事内容建设、用户维护、活动策划、数据分析四个层面来保证产品与用户之间的连接。产品上线之后,要不断的去运营产品,维系用户黏度和活跃度。以上就是软件工程专业常见的就业方向,大家有什么疑问可以留言讨论!

绿荫岛

让代码更出色的小技巧:防止Jupyter notebook陷阱带来的噩梦

全文共3766字,预计学习时长10分钟图源: realpython如果你对数据科学感兴趣,那么可能对这个工作流程很熟悉:通过运行Jupyter notebook开启一个项目,然后开始编写python代码、运行复杂的分析甚至训练模型。随着notebook文件的函数、类、图和日志的大小不断增长,你会发现自己面前堆积了巨大的一团代码块。运气好的话,一切都能顺利进行。那你真的很厉害!但是,Jupyter notebook隐藏了一些严重的陷阱,可能会让代码变成噩梦。让我们看看这是如何发生的,然后讨论一下防止这种情况出现的最佳编码方法。Jupyter Notebook的问题通常,如果你想使Jupyter原型开发更上一层楼,事情结果可能会不符合你的预期。这是笔者在使用此工具时遇到的一些情况,你应该也很熟悉:· 将所有对象(函数或类)定义并实例化后,可维护性就变得非常困难:即使想对函数做些小改动,也必须将其放在笔记本中的某个位置进行修复,然后重新运行重新编码。你一定不希望这种事情发生。将逻辑和处理功能分离在外部脚本中不是更简单吗?· 由于其交互性和即时反馈,jupyternotebook促使数据科学家在全局名称空间中声明变量,而不是使用函数。这在python开发中是不好的做法,它限制了有效的代码重用。由于笔记本电脑变成容纳所有变量的大型状态机,因此也会损害其可重复性。在这种配置下,必须记住要哪个结果被缓存,哪个结果没有被缓存,还必须期望其他用户遵循你的单元执行顺序。· 笔记本在后台格式化的方式(JSON对象)使代码版本控制变得困难。这就是为什么笔者很少看到数据科学家使用GIT提交不同版本的笔记本,或合并分支以实现特定功能。因此,团队协作变得低效笨拙:团队成员开始通过电子邮件或Slack交换代码段和笔记本,回滚到以前的代码版本成为一场噩梦,文件组织开始变得混乱。这是在没有正确版本控制的情况下, 使用Jupyter notebook两到三周后,我在项目中通常看到的内容:analysis.ipynbanalysis_COPY(1).ipynbanalysis_COPY(2).ipynbanalysis_FINAL.ipynbanalysis_FINAL_2.ipynbJupyter notebook非常适合探索和快速制作原型。它们肯定不是为可重用性或生产用途而设计的。如果你使用Jupyter notebook开发了数据处理管道,那么最好的情况是代码仅按照单元执行顺序以线性同步方式在笔记本电脑或VM上运行。但这并没有说明你的代码在更复杂的环境中的行为方式,例如,较大的输入数据集,其他异步并行任务或分配较少的资源。实际上我们很难测试笔记本,因为它们的行为有时是不可预测的。· 作为一个将大部分时间花在VSCode上的人,我常常利用功能强大的扩展来进行代码添加、样式格式化、代码结构、自动完成和代码库搜索,因此当切换回Jupyter时,笔者不禁感到有些无能为力。与VSCode相比,Jupyter notebook缺少强制执行最佳编程实践的扩展。好了,抱怨到此为止。笔者真的很喜欢Jupyter,认为它对设计工作非常有用。你肯定可以用它来引导小项目或快速创建想法原型,但你必须遵循软件工程的原则。当数据科学家使用notebook时,有时会忽略这些原则,让我们一起回顾下其中一些吧。让代码再次出色的小技巧这些技巧是从不同的项目、笔者参加的聚会以及过去合作过的软件工程师和架构师的讨论中汇编而来的。注意,以下内容皆假设我们正在编写python脚本,而不是notebook。1.清理代码代码质量最重要的维度是清晰,清晰易读的代码对于协作和可维护性至关重要。这样做可以帮你获得更简洁的代码:· 使用有意义的描述性和暗示型变量名。例如,如果要声明一个关于属性(例如年龄)的布尔变量来检查一个人是否老了,那么可以使用is_old使其既具有描述性又具有类型信息性。声明数据的方式也是一样的:让它具有解释性。# not good ...import pandas as pddf = pd.read_csv(path)# better!transactions = pd.read_csv(path)· 避免使用只有你能理解的缩写和没有人能忍受的长变量名。· 不要直接在代码中编码“魔术数字”。在变量中定义它们,以便每个人都能理解它们所指的内容。# not good ...optimizer = SGD(0.0045, momentum=True)# better !learning_rate = 0.0045optimizer = SGD(learning_rate, momentum=True)· 遵循PEP8约定给对象命名:例如,函数和方法名用小写字母表示,单词用下划线分隔,类名遵循UpperCaseCamelCase约定,常量用大写字母表示,等等。· 使用缩进和空格使代码更加美观。有一些标准约定,例如“每个缩进使用4个空格”,“单独的节应该有额外的空行”等等。图源: prettier.io/2.使代码模块化当你开始构建可以在相同或其他项目中重复使用的东西时,你必须将代码组织为逻辑功能和模块,这有助于构建更好的组织和可维护性。例如,你正在研究NLP项目,并且你可能具有不同的处理功能来处理文本数据(标记,剥离URL,修饰词等)。你可以将所有这些单元放入名为text_processing.py的python模块中,然后从中导入它们,主程序将更轻巧。这是有关编写模块化代码的一些技巧:· 不要自我重复。尽可能泛化或合并你的代码。· 函数应该用来做一件事。如果一个函数执行多项操作,则很难被概括。· 在函数中抽象逻辑,但又不要过度设计,否则最终可能会有太多的模块。运用你的判断力,如果你没有经验,请查看scikit-learn等流行的GitHub存储库,并学习其编码风格。3.重构代码重构旨在重新组织代码的内部结构,而不改变其功能,通常是在有效(但仍未完全组织)的代码版本上完成的。它有助于消除重复功能,重组文件结构,并添加更多抽象。图源:unsplash4.提高代码效率编写高效的代码以快速执行并消耗更少的内存和存储空间,是软件开发中的另一项重要技能。编写高效的代码需要多年的经验,但是以下一些小技巧可以帮助你确定代码是否运行缓慢以及如何提高代码运行速度:· 在执行任何操作之前,请检查算法的复杂性以评估其执行时间。· 通过检查每个操作的运行时间来检查脚本可能遇到的瓶颈。· 尽可能避免for循环并使操作向量化,尤其是在使用NumPy或pandas等库的情况下。· 通过使用多处理来利用计算机的CPU内核。5.使用GIT或任何其他版本控制系统使用GIT + Github帮助我提高了编码技能,更好地组织了项目。由于我是在与朋友和同事合作时使用它的,所以我遵守了过去不遵守的标准。图源: freecodecamp无论是在数据科学还是软件开发中,使用版本控制系统都有很多好处。· 跟踪你的更改· 回滚到任何以前的代码版本· 团队成员之间通过合并和请求进行有效的协作· 提高代码质量· 代码审查· 为团队成员分配任务,并提供“持续集成”和“持续交付”挂钩,以自动构建和部署项目。图源: Atlassian6.测试代码如果你要构建一个执行一系列操作的数据管道,且要确保它能够按照设计的目的执行,其中一种方法是编写可检查预期行为的测试。测试可以像检查函数的输出形状或期望值一样简单。图源:https://pytest-c-testrunner.re为功能和模块编写测试有很多好处:· 它提高了代码的稳定性,并使错误更容易发现。· 防止意外输出· 有助于检测边缘情况· 防止将破损的代码推向生产环境7.使用日志记录一旦代码的第一个版本运行了,你需要监察每个步骤,以了解发生了什么、跟踪进度或发现错误,你可以使用日志记录。以下是有效使用日志记录的一些技巧:· 根据要记录的消息的性质,使用不同的级别(调试,信息,警告)。· 在日志中提供有用的信息,以帮助解决相关问题。import logginglogging.basicConfig(filename='example.log',level=logging.DEBUG)logging.debug('This message should go to the log file')logging.info('So should this')logging.warning('And this, too')图源:techgig告别代码噩梦,这些小技巧要学起来。留言点赞关注我们一起分享AI学习与发展的干货如转载,请后台留言,遵守转载规范