| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 工作两年的算法工程师的小反思(1) -> 正文阅读 |
|
[人工智能]工作两年的算法工程师的小反思(1) |
欢迎大家关注我的公众号:CV伍六七,定期分享成长干货~
技术
Python
C++
CV知识工作第二年的时候接触了很多新的知识,对于计算机视觉这个方向有了新的理解。对于如何做好一个CV项目也有了新的认识。 做算法的本质,就是在找规律 深度学习是不是黑盒这个问题对于目前我们做的很多项目来说,并不重要,重要的是它可以学习到数据的规律。不管是CV还是NLP,深度学习在这一点上的能力毋庸置疑。 CV算法的领域这么多,方向这么多。但是不同领域的的算法模型,我发现其实最根本的区别还是在于网络target和真实数据之间是如何建模的。 sigmoid和softmax虽然很简单,但是其蕴含的能量真的不一般,随处可见它的身影。分类、检测、分割是三大CV基础任务。但是其实差别就是在于他们最后的target一个是一维向量通过函数映射与实际类别对应。一个是网络输出和位置+类别对应。一个是像素点和类别对应。 一个功能的优化就是两个步骤:
我感觉我和刚开始做CV项目的时候最大的一个改变就是思想上,就和很多人刚开始做算法类项目的时候就是会觉得得用创新的、fancy的方法去解决这个问题,然后当性能提了0.5%的时候开始自我安慰嗯!我做到了!我用XXX的方法提高了精度。这个问题我发现不仅我有过,很多刚开始做CV或者其他机器学习项目的人也有。 在工业界,做算法的本质是先解决问题,再考虑性能 当沉浸在提点的时候,猛然回头发现自己的测试集根本不完备。当把错误的case都看一遍的时候,发现精度提升了,但是也没解决啥问题。刚开始工作的时候,老板就说我的思维是top-down的而不是bottom-up的,所以会导致思路不完备,容易做无用功,方向走偏。我觉得后面的这一年的时间,我也在为这句话反复斟酌,反复思考。 在工业界,完备的思路是这样:
算法工程师的核心竞争力肯定是要包括上述的这种全流程上工作能力。我愿称之为“稳”的能力。 从老板的工作风格中,稳字随处可见。一个项目处于什么样的阶段,数据分布是怎样,测试场景是否补全,紧急迭代的时候流程把控,数据处理自动化,算法方案调研分析、代码实现等等。稳健性是一个非常核心的点,这是我个人的看法。而稳健性的底层,还是要依托于对业务的理解,对论文的理解,代码实现能力等有关系。这块有很多事想说,后续打算举些例子详细聊聊。 入了机器学习这个坑之后,每当见到一篇新奇的文章去建模出输出和GT之间联系的时候,就有种初高中时代见到某种解法解决了压轴题的那种豁然开朗的感觉。就如同第一次看faster-rcnn的时候,惊讶于其中利用Anchor作为桥梁去链接输出和GT之间的关系,降低了学习能力。第一次看objects as points的时候,我有种耳目一新的感觉,热力图的建模方式还可以这么用,原来CNN输出的feature map中的每一个点,它自身就是一个Anchor!有一次看论文分享的时候,了解到年龄估计任务中采用高斯分布去估计年龄,我也被作者的思想所折服。 我觉得也是做算法工作非常重要的点,学会建立相关的模型把业务数据和模型输出联系起来,学术论文都是一些参考答案,在实际应用的时候其实有很多改动的地方。比如一个序列任务,假设你想去对一种序列做一个多分类,那么肯定要去思考这不同类别的序列有什么差异,如果把这些差异提取出来作为新的特征给到模型,其实也是所谓的特征工程。在模型的选择上也不是一提到序列就是transformer/LSTM/,当时我第一次看完HCN的时候,发现CNN竟然也可以用于序列建模。并且巧妙地应用了卷积去学习序列关系,对于数据特征处理上也用了很多巧妙的方法。 其他知识盘点一下自己的研发工具:
路漫漫其修远兮,机器学习无止境 工作的第二年,我感觉更多的是在于方法论的积累,以及在自己的所负责的业务上去研读更多的paper,把业务强相关的几个方向的文章吃透一点,挖深一点。CV这么卷,大佬云集。做一个默默潜行的学习者,不断积累经验,不断提高能力。 有几句话我时刻提醒自己。 先想好问题是什么,再去想解决方案,再考虑创新 工作就是不断遇到问题然后解决问题 ,要享受解决问题后的成长,而不是享受没有问题的轻松 算法的核心在于将业务数据和模型之间相结合,先把性能提上去,再考虑把华丽但没什么卵用的trick放到PPT 机器学习如星辰大海,不能局限于一隅之地,很多时候没有广度,很难做好一个项目
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:54:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |