如何学习一个新算法
3个回答
展开全部
文前声明:这篇文章没有一个观点是自己的,我只是把同事大牛的观点给汇总了起来。
接触算法到现在满打满算也就两年的时间,但是甚至就在两个月前我还处于拣起一篇paper就开始读,然后去实现他们的算法。然后去测试一下效果好不好。很久的时间下来,我都感觉自己其实没什么太大的进步,甚至感觉遇到了一个瓶颈。因为我觉得自己其实并没有真的对算法知识形成一个体系,除了书上讲的皮毛之外,自己其实一直在沉迷于实现一些算法的奇技淫巧,而看着身边的那些PHD们,我有的除了自卑也没剩下其他的了。于是我开始请教那些大神级同事们,于是自己总结了一下,也在这段时间来试用了一个多月的时间,发现其实效果不错,那么就在这里分享下,算是给自己一个里程碑式的纪念,也希望能帮到和我以前一样处在迷茫期的大家~
来到算法组两年的时间有三个人是对我影响最大的,我分别说下每个人对我说的话吧:
1. 还记得我刚来算法组的时候,我不懂TFIDF是什么,更不要说什么SVD,LDA了听都没听过,不懂user-based和item-based的区别,甚至连贝叶斯公式都写不全。在最初的一段时间,我看别人的代码,半懂不懂地听组会分享,然后实现一个又一个现在看来很幼稚的算法,感觉进步是飞速的。接过来一个算法需求,我就去网上找篇paper,然后把算法给实现了就丢给产品线用。
这个时候,同事A对我讲,“算法工程师不是懂一些数学,会写些算法就行了,算法工程师最重要的技能,在于如何定义问题,然后接下来才是如何解决这个问题。”从那以后,当面临一个需求时,我更愿意分析这个需求的关键点在哪,然后从大脑里搜索已有的东西能不能解决这个问题,比如FM的算法缺乏多样性,那么我想一下我看过的解决多样性的paper都有什么?能不能用在这个上面。如果不能,我再对应去搜问题的关键字,而不是算法的关键字。
2. 转眼间一年过去了,虽说看过的paper不够多,但是可以应付大部分的需求了。但是我开始迷茫起来,我觉得自己在实现一个又一个的算法trick,知道一个算法可以用,我就去网上down一个对应的算法包,然后把数据丢进去。没了......那么我的出路到底在哪?我的核心竞争力在哪?在于知道这么个东西,然后变成跑准备数据的么?
第五,递归再去看这个缺点是否有其他的研究者已经解决掉了。
1. 学习目的,扩展思路,如果处于这种目的,理解paper的精髓是最重要的。
2. 解决实际问题。那么应该丢弃的观点是我最初那样拿过来一篇paper也没理解透彻也不知道能不能解决问题,也不知道到底是不是可行,就先实现了再说。劳民伤财~
最后,补充一个同事D,无意间的话让我发觉自己要变得更优秀才行:
同事D在搜Resys,有一个快照上面写着:本科生Resys十佳论文。同事扭头对我说,靠,现在本科生都可以发Resys paper了。让我意识到了自己其实在原本上差距有多大,我要付出更大的努力才能弥补这些也许别人觉得无法跨越的鸿沟。
接触算法到现在满打满算也就两年的时间,但是甚至就在两个月前我还处于拣起一篇paper就开始读,然后去实现他们的算法。然后去测试一下效果好不好。很久的时间下来,我都感觉自己其实没什么太大的进步,甚至感觉遇到了一个瓶颈。因为我觉得自己其实并没有真的对算法知识形成一个体系,除了书上讲的皮毛之外,自己其实一直在沉迷于实现一些算法的奇技淫巧,而看着身边的那些PHD们,我有的除了自卑也没剩下其他的了。于是我开始请教那些大神级同事们,于是自己总结了一下,也在这段时间来试用了一个多月的时间,发现其实效果不错,那么就在这里分享下,算是给自己一个里程碑式的纪念,也希望能帮到和我以前一样处在迷茫期的大家~
来到算法组两年的时间有三个人是对我影响最大的,我分别说下每个人对我说的话吧:
1. 还记得我刚来算法组的时候,我不懂TFIDF是什么,更不要说什么SVD,LDA了听都没听过,不懂user-based和item-based的区别,甚至连贝叶斯公式都写不全。在最初的一段时间,我看别人的代码,半懂不懂地听组会分享,然后实现一个又一个现在看来很幼稚的算法,感觉进步是飞速的。接过来一个算法需求,我就去网上找篇paper,然后把算法给实现了就丢给产品线用。
这个时候,同事A对我讲,“算法工程师不是懂一些数学,会写些算法就行了,算法工程师最重要的技能,在于如何定义问题,然后接下来才是如何解决这个问题。”从那以后,当面临一个需求时,我更愿意分析这个需求的关键点在哪,然后从大脑里搜索已有的东西能不能解决这个问题,比如FM的算法缺乏多样性,那么我想一下我看过的解决多样性的paper都有什么?能不能用在这个上面。如果不能,我再对应去搜问题的关键字,而不是算法的关键字。
2. 转眼间一年过去了,虽说看过的paper不够多,但是可以应付大部分的需求了。但是我开始迷茫起来,我觉得自己在实现一个又一个的算法trick,知道一个算法可以用,我就去网上down一个对应的算法包,然后把数据丢进去。没了......那么我的出路到底在哪?我的核心竞争力在哪?在于知道这么个东西,然后变成跑准备数据的么?
第五,递归再去看这个缺点是否有其他的研究者已经解决掉了。
1. 学习目的,扩展思路,如果处于这种目的,理解paper的精髓是最重要的。
2. 解决实际问题。那么应该丢弃的观点是我最初那样拿过来一篇paper也没理解透彻也不知道能不能解决问题,也不知道到底是不是可行,就先实现了再说。劳民伤财~
最后,补充一个同事D,无意间的话让我发觉自己要变得更优秀才行:
同事D在搜Resys,有一个快照上面写着:本科生Resys十佳论文。同事扭头对我说,靠,现在本科生都可以发Resys paper了。让我意识到了自己其实在原本上差距有多大,我要付出更大的努力才能弥补这些也许别人觉得无法跨越的鸿沟。
展开全部
首先要分析出这个新算法都包含了那些知识点,然后在书上找出这些知识点的应用方式,结合新算法来将这些知识点融汇贯通,这样就能学会新算法了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
算法,具体要看你的是什么算法咯!如果是乘法,那当然就是要先被乘法跟除法口诀了!如果口诀都不会,那还算啥呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询