粉丝提问:
你好,看星球上做前端,后端,java 的人比较多,好像没有看到有多少人做算法,我现在已经毕业了,是一名 cv 算法工程师,但是我现在很苦恼,感觉自己代码能力很弱,每次都是拿别人的开源代码跑一跑,不会复现论文,也不知道怎么做优化,想请教一下,该怎么去培养自己复现论文的能力,以及怎么去做算法优化,这方面有什么好的建议吗,有没有什么学习路径,学习方法,甚至能够拥有发顶会的能力
千寻(作者)回答:
童鞋您好,其实作为程序员行业来说,没有不卷的方向,我之前在我的公众号中写过算法,后端,前端之间的区别,大部分人对程序员行业大概进行以下的等级排序:
算法>后端>前端>客户端>测试
仿佛算法工程师处于食物链的最顶端,但是实际上并非如此,算法岗与研发岗之间的关系更像是合作关系。
先把你的问题抽丝剥茧,一个一个回答:
第一个问题:代码能力比较弱,不会复现论文
回答:复现论文是算法岗中难度比较大的实践项目,后期我可以出一期简单复现论文的步骤方法,说实话复现论文这个可能除了论文的作者本人,谁也不敢保证100%能复现,因为训练的环境以及模型配置的参数可能不相同。我的建议是找出论文的baseline进行复现,举一个简单的例子。
常用的卷积神经网络VGG-16的网络组成结构,现在需要你进行VGG-19模型代码的复现,类似VGG-16这类经典模型,在github等开源社区有很多现成的代码,为了提高速度可以使用现成的代码进行调试。至于VGG-19模型的复现,你需要读懂模型的网络结构组成,区分VGG-16与VGG-19的模型结构区别,使用torch框架的API对模型结构进行重构,或者网络层的添加,最终完成复现。
第二个问题:不懂怎么优化模型算法,应该怎么做
关于模型算法的优化问题,这个回答其实比较大,不好一概而言,因为针对业务的性能优化,有以下的几个部分,我绘制一张算法应用的工作原理结构图就清楚了。
针对业务算法的性能优化,不仅仅是模型结构,包括数据样本,模型结构,以及接口性能,通常来说,算法工程师通常的优化机制可以通过数据端以及模型端进行优化提升。对以下的两种方式进行检查
数据端:数据端的部分在于针对性的数据样本选择,比如模型识别错误的样本,进行单独的收集,除此之外,一定程度上增加数据的样本可以有效提升模型的泛化能力。
模型端:我想你纠结的点在于如何进行模型优化,这个的部分是算法工程的“干活”,包含的内容更多,比如调参经验,模型结构改进经验,数据加载方式经验,这些需要日积月累,通过看算法的相关论文进行改进方法的积累。
关于学习路线,后续我会在星球里推出一些我自己录制的机器学习算法的课程,从最简单的手写数字做起,一步一步了解深度学习相关的知识。关于这个课程的用涂,我认为有以下几点:
随着chatgpt人工智能模型的飞跃,本科生的毕业设计也开始从管理系统&小程序系列,开始转向深度学习以及算法工程方向,除此之外,可以对从事算法岗就业入门有很大帮助,哈哈哈,今天时间不早了,总之,之后的日子里我会持续输出干货,一起学习进步~
我是千与千寻,一个只讲干货的码农~晚安!