算法理解境界的思考

来源:互联网 发布:购物网站如何优化 编辑:程序博客网 时间:2024/06/07 00:02

我一直认为对一种算法的理解有很多种层次境界:


1.知道有这么一个算法,是解决什么问题,输入输出是什么。

2. 学会这种算法的工作原理,每一步是怎么做的怎么推导出来的,从而可以做到编程实现该算法。

3.   做到2其实还是不够的,一个算法你算不算基本吃透它还要看,也就是你对它的应用场景的理解。  

       在知道其算法原理的基础上,能够灵活应用该算法,可以对该算法在具体一个应用中,可能出现的结果做到预测分析,分析它每一步作了哪些工作,最后得到怎样的效果。(这里的分析是在具体结果出来之前你就能分析断定出来的)。  

4. 学海无涯,算法可能还有另外的解释更深刻的原理,不断加深对算法的理解。


对上面的境界的理解,我判断自己是否能达到第3境界乃至第4境界一个最简单的方法就是,你用这个算法进行某个以前未进行过的实践。

如果实践应用是该算法的正常应用范围, 你肯定能在结果出来前,做到分析预测的。

而实际过程中会出现各种坏情形,糟糕的输入,不正常的应用范围。 这时候,你能不能做到对最终结果的预测分析,最终坏情形出现的原因,中间经过的过程你能不能了然于心。


简而言之,你知道算法可以hold住哪些情形, 而各种情形下会出现哪些各种问题,你都了然于心!

可能是由于是数学系学生的缘故吧,我一直对自己的要求就是这样,在条件允许的情况下,学会的每种算法,都要做到第3境界,将一切掌控在自己手中。


也是因此,我对一些不能做到以上几点的算法从心底里有种排斥感,虽然不影响我使用它,但毕竟我无法掌控它,以后出问题了怎么办? 比如现在比较火的深度学习。曾经深度学习还没现在这么火的时候,我就接触这种算法了,但自从我稍微对它进行学习后,我发现,这一类算法由于没有所谓的理论保证,也就是其基础还不够扎实。这种算法就像是一个黑箱子,你对其网络内部的实质完全不清楚,最终结果的好坏都是你用了才知道。。。最坏的一点还要各种调节参数,很多时候好的结果竟然还要一步步试出来。。。问别人你的结果为什么这么好,很多人的回答都是  “”我不知道,我试参数试出来的。。。“   你通过试参数试出来后结果好,然后呢,你觉得这部分工作理论上有多大贡献? 
所以对于那些搞深度学习的,我一直认为都是做具体应用的。 我更佩服的是那些可能有的少数 搞深度学习理论研究的大师!

现在深度学习大热,连学术界好多人都在弄深度学习,这样做真的对学术有什么意义吗!也许现阶段会有很多令人惊叹的成果,但这些成果有多少能被后人继承并继续发展出更好的理论?   理论研究的进展很可能对因此减缓许多!
0 0
原创粉丝点击