Jack的「算法能力」是从什么时候开始突飞猛进的?

共 1825字,需浏览 4分钟

 ·

2021-04-12 19:14

大家好,我是 Jack。

最近逛知乎,看到个提问:

在做算法工程师的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?

正好工作满两年,回答了一波,也在公众号也分享一下,这篇文章纯属工作上的一些感悟,有其他见解的,也欢迎留言讨论~


以下是正文:

没有一蹴而就的成功,只有日复一日的坚持

从事视觉算法工作两年,谈一谈我的感受。

主要从以下六个方面进行说明:


基础扎实

算法基本功很重要,需要很清晰地知道比较经典的算法,能说明这些算法的优缺点,适合的应用场景,以及算法的实现细节。

这些如果没有掌握好,谈何针对业务场景优化算法?

身边同事发展快的,很多都是这些算法基本功就掌握牢固的

算法的学习资料、方法和视频,可以参考我之前发过的文章:

我是如何成为算法工程师的,超详细的学习路线

B站优质视频资源推荐,起飞!

数据处理能力

学校里学各种算法的时候,用的数据集都是开源的,干净的,网上下载下来直接用。

而在工作中,用到的数据都是脏乱的业务数据。这些数据不仅乱七八糟,什么都有,而且还没有标签。

针对项目需求,要考虑如何解决这个问题,使用有监督学习,还是无监督学习,脏数据怎么过滤?

举个非常简单的例子,想做一个动物垂类的项目,但是能拿到的业务数据,人、车、房子什么都有,这时候可以用一些检测+分类的算法,挑出置信度比较高的数据。

当然,这个例子非常简单,实际业务场景可能要比这个复杂的多。

我们需要做的就是,针对项目需求,清洗数据,并制定算法 or 人工的清洗标准。

什么样的数据要,什么样的数据不要,什么样的数据先解决,什么样的数据后解决,等等一系列问题。

问题细化能力

算法工程师,其实最头疼的一件事是:无论怎么优化,效果就是没有显著提升。

要不断地想 idea ,然后测试效果,至于好坏,只有试了才能知道。

PM 如果催着问:算法的效果多久能优化好?说实话,做算法的人心里可能也没谱。

算法效果不好,怎么优化?这就需要一项很重要的能力:拆解问题的能力

针对项目需求,算法效果还没有达到要求,需要分三个步骤进行优化:明确和理解问题拆分和定位问题提出解决方案

明确和理解问题

需要先沟通对齐问题的本质,举个简单的例子,对一个分类任务,需要优化效果,准召不能都有效提高的时候,需要明确是保召回率,还是保准确率?

或者说对于业务,召回率更重要还是准确率更重要?哪个对用户影响小?然后,明确解决问题的目标,准召要达到多少,才能上线?

拆分和定位问题

一个问题,我们可以将其分为,复杂问题和元问题。复杂问题就是参杂了多个维度跟变量的问题,不可直接解决。

而一个需要优化的项目,往往是这种复杂问题。元问题就是最本质、最小的待解决的问题。

我们需要将复杂问题进行拆分和细化,通过解决多个元问题,进而解决复杂问题。是不是很像 dp 算法?都是这种思想。

提出解决方案

最后就是根据拆解的各种元问题,提出具体的解决方案。

一个复杂的问题可能不好解决,但是逐一击破,每一个环节效果提高一些,最终算法效果可能会提升一大截。

这个道理很多人都懂,但是在实际项目中,真正能做好的人,并不多。这项能力需要经验,慢慢的培养。

工程能力

算法工程师,首先得是一名合格的工程师。做项目,最终是要看落地产出的。

这不仅涉及算法本身,还涉及前端、后端等多方的合作。同时,需要将自己优化好的算法,进行工程化。

比如,为了算法的效率,落地一个后端算法,需要将Python代码改写成C++代码。等等诸如此类的工程化问题。

持续学习能力

算法更新很快,新的paper层出不穷,跟踪最新的研究成果,寻找业务场景落地的可能,要保持一个持续学习的态度。

这个也挺难做到,毕竟业务压力大的话,真的没时间看论文。还能怎样,做一名时间管理大师呗。

检索能力

找到合适的搜索关键词,百度 or Google。

别笑,面向搜索引擎编程,看其他人分享的经验,吸取精华,那编程能力,还不得突飞猛进啊。

·················END·················



推荐阅读

•   你说,我画,AI工具人石锤•   万字长文,60分钟闪电战•   保姆级人工智能学习路线



浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报