热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:你想开发转算法?我来劝退你

篇首语:本文由编程笔记#小编为大家整理,主要介绍了你想开发转算法?我来劝退你相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了你想开发转算法?我来劝退你相关的知识,希望对你有一定的参考价值。







最近发现许多同学对 算法岗 好奇。一部分准研究生在思考读研以后是该做 算法还是做开发 ,一部分做开发的同学则是想了解做算法的同学是在学什么、做什么。我情况比较特殊,开发和算法都做过,目前我也在做自然语言处理中知识图谱的相关工作。本期我就来给大家讲一讲算法和开发到底有什么区别。并且给面临选择做算法还是做开发的同学一点建议。



其实我在和学开发的同学聊天的过程中,发现大部分同学对于算法这个岗位挺不了解的,有的同学对算法及其崇拜,认为做算法的都是大神,但是其实他并不知道算法是在做什么。而有的同学则对算法不以为然,认为做算法的都是在吹,做算法的人代码能力也不强,在骗老板钱。这两种想法都是错误的。



我并不认为算法岗比开发岗强。目前外界总结的算法岗的优点有两条:


(1)算法岗的工资高。


嗯...这倒是真的,举例来说,美团21届校招算法开出的薪资普遍比开发高 3k。开发的月薪分别是白菜 21k,sp 24k,ssp 27k。算法的月薪分别是白菜 24k,sp 27k,ssp 30k。


(2)算法比开发的职业生涯长。


这我就不认同了,首先你的职业生涯长度完全是看你能力的发展,如果非要说哪个更容易被淘汰,我甚至认为算法比开发更容易淘汰。因为开发的技术栈相对稳定,但算法经常会有一些颠覆性的技术产生。


算法岗目前的情况


我再来介绍下算法岗目前的情况。随着算法泡沫的逐渐消退,以及凭借一腔热血扎进算法岗的人越来越多(我就是),算法岗位目前越来越卷。算法岗在 18年 以前是供小于求的,许多应届毕业生在校招前几个月拿着李航老师的《统计学习方法》这本书好好刷一刷,整理一个算法项目,再有点编程基础就能拿到不错的公司的算法岗 offer。但是随着时间迈过 18年-是否值得进入,19年-供大于求,20年-诸神黄昏,21年-灰飞烟灭后,目前算法岗的要求高的吓人。曾经一位大厂做算法的组长和我说,他们目前筛简历的条件是看以下三个条件是否具备其一:


(1)是否有顶级会议论文。


(2)是否有过重大开源项目。


(3)是否有过大厂的算法实习经历。


其实应该还有个隐藏的筛选条件,就是会卡你的毕业院校。上述仅仅是简历通过的条件~



算法是在做什么


其实算法岗中也分两个方向。一个方向是算法的落地应用,另一个是算法的研究。目前企业招聘的算法岗绝大多数是做算法的落地应用(博士可能会做算法研究),而在读研究生期间大部分是做算法的研究。算法研究要做的事情,说白了就是拿一个现有的比较先进的深度学习模型,看看他有什么缺陷,然后按着这个模型硬改,修改后的模型如果能比原模型在衡量指标上提升1.5个百分点以上,就可以发论文了(写论文也是在写八股文)。当然这个过程其实是很难也很枯燥无味的,许多人做实验很久模型的测试指标也没提升(比如我)。而算法的落地应用不需要你去在现有的模型上进行创新(偶尔也需要),需要的是你根据业务需求,在现有的模型中,选择出一个或多个模型来合适的解决业务需求,并且在实际的场景中可用。当然算法工程师本质上也是一个工程师,所以写代码肯定也少不了。


算法落地系统怎么做


现在算法岗在做一个落地系统时主要采用以下三种方法:


(1)基于模板。


基于模板的方法就是人为制定一套模板,如果输入能和模板匹配,那么就把相应的答案输出。比如对话系统中我检测到你说的是 “xxx,你好”,那么我就回你一个“Hello~”。


(2)基于机器学习方法。


基于机器学习的方法呢,就是根据一些数学的模型,去求一个可能性。现在我来举个手写数字识别的例子让大家体会下什么是机器学习。


我用一个最简单的机器学习模型 KNN 来处理下手写字体识别这个任务。


我们可以先收集 1,2,3,...,9 的标记数据。就像下面这样,这张图会被标记为 9:



我们把图像可以转换成一个二维数组,对应这张图的每一个像素点。有墨的地方为 1,没墨的地方为 0。就像下面这样。



当我们需要识别一张新的手写数字时,只需要同样转换为上面的二维数组,然后分别算一下和提前准备好的标记为数字 1 - 9 的二维数组哪个相同位置数字一致的最多,就说明这两个形状越像,也说明要识别的手写数字最有可能是几。当然这个方法看起来简单,但是漏洞很多,我只是为了让大家体会机器学习是什么,在实际应用过程中要比这复杂的多。


(3)基于深度学习方法。


我不确定大家看了我的讲解以后能否理解深度学习,深度学习是最玄学的一种方法。我还是举个例子吧,比如我们接到一个任务是要识别A、B两个句子是否相似。为了让学开发的同学容易懂,我在介绍上简化一些


A句:今天的天气不错。


B句:这是阳光明媚的一天。


大家会发现这两个句子其实是一个意思,但是这两个句子并没有几个字是一样的。如果简单的通过统计共同出现的汉字,绝对不会把这两句判断为相似句。这种情况下,深度学习就派上用场了。


一个深度学习模型解决相似句判断问题的步骤如下:


(1)为了将这两个句子能够输入到深度学习模型中(深度学习模型目前只接受数字输入),只能将这两个句子向量化。比如”老师“这个词,就会转换成一个向量,就像这样 [0.15,0.23,0.32.....,0.17],这个向量能表示词的意思,将”教师“这个词转换成向量时,应该和”老师“转换的词向量差不多,因为它两词义相近所以表示也相近。通过这样转换,就把 A句 和 B句 分别转换成各自的向量矩阵了。


(2)然后我们可以把这两个矩阵拼接,然后再用大量可训练的参数矩阵对这个拼接后的矩阵相乘,可能要用好几套参数乘很多次(不同的参数起到不同的作用),最后得到一个在 0 - 1 之间的值,数值大于 0.5 就说明两句是相似句,小于 0.5 就说明两句不是相似句。


(3)深度学习是怎么学习的呢?这就需要你标记大量的句子对,两个句子是相似句标记为 1,不是相似句标记为 0。比如通过上面说的一个相似的句子对经过大量参数相乘后得到的值为 0.3,和实际相似句的标记1数值上相差较远,那么就需要多调整一些参数,如果得到的值是 0.8,和 1 数值上接近,那么就少调整些参数。经过不断的重复这个过程,就训练出一组或多组参数,用相似的句子对和这些参数相乘得到的值就跟接近 1,不相似的句子和这组参数相乘,得到的值就更接近 0。这样任务就完成了。



什么情况下可以选择做算法


好的,算法岗是在做什么就介绍完了。接下来,通过我的经验来给一些建议,什么样的人适合搞算法。首先,由于现在算法就业的环境,对于本科就毕业准备找工作的,我就不建议做算法了(当然本科的一些有天赋的大佬另当别论,我读研的那个学校,有几位本科大佬在算法上完全吊打我)。然后下面主要聊一聊,准备读研的同学在什么情况下适合学算法。我认为需要具备的条件如下:


(1)你的学校不错,至少是 211 级别以上。


(2)你导师在算法领域有积累(发表过顶会或顶刊的论文,实验室显卡也够),如果你导师没积累的话看看你导师放学生出去实习不。


(3)你的数学要好,你的英语阅读能力要好。如果你做了算法,那么你需要阅读大量的学术论文,基本都是用英文写的,并且上面会有大量的数学公式推导。所以数学基础和英语基础是必备的。


做个总结


好了,上面这些条件应该劝退的差不多了。其实通过这篇文章,我是想让大家了解算法是在做什么,也想让大家在面临方向的选择时更为理性。面对现在快速变化的互联网形式,了解清楚各个方向的情况,并且了解清楚自身情况,扬长避短才能有更好的发展。





数据结构和算法、操作系统、计算机网络、计算机组成原理


后台回复 “计算机基础” 即可获取下载链接。


欢迎关注 「CS指南」





推荐阅读
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 深度学习与神经网络——邱锡鹏
    深度学习与神经网络——邱锡鹏-一、绪论人工智能的一个子领域神经网络:一种以(人工))神经元为基本单元的模型深度学习:一类机器学习问题,主要解决贡献度分配问题知识结构:路线图:顶 ... [详细]
  • 必备核心算法神经网络通俗讲解
    深度学习传统算法VS人工智能算法传统算法:都是人为去计算人工智能算法:部分人为需要做的事情交由机器去做【把更多的问题简单化】IT的发展比较高端的就是A ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文详细介绍了商汤科技面试中涉及的CV算法面经内容,包括CornerNet的介绍与CornerPooling的解决方案、Mimic知识蒸馏的实现方式、MobileNet的特点、普通卷积和DW PW卷积的计算量推导、Residual结构的来源等。同时还讨论了在人脸关键点和检测中的mimic实现方式、pose对人脸关键点的提升作用、目标检测中可能遇到的问题以及处理检测类别冲突的方法。此外,还涉及了对机器学习的了解程度和相似度分析的问题。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
  • 渗透测试基础bypass绕过阻挡我们的WAF(下)
    渗透测试基础-bypass ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
  • Two Sigma人均22万英镑~
    近期原创文章: ... [详细]
author-avatar
布景tamimi_498
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有