算法理解境界的思考
来源:互联网 发布:购物网站如何优化 编辑:程序博客网 时间:2024/06/07 00:02
我一直认为对一种算法的理解有很多种层次境界:
1.知道有这么一个算法,是解决什么问题,输入输出是什么。
2. 学会这种算法的工作原理,每一步是怎么做的怎么推导出来的,从而可以做到编程实现该算法。
3. 做到2其实还是不够的,一个算法你算不算基本吃透它还要看,也就是你对它的应用场景的理解。
在知道其算法原理的基础上,能够灵活应用该算法,可以对该算法在具体一个应用中,可能出现的结果做到预测分析,分析它每一步作了哪些工作,最后得到怎样的效果。(这里的分析是在具体结果出来之前你就能分析断定出来的)。
4. 学海无涯,算法可能还有另外的解释更深刻的原理,不断加深对算法的理解。
对上面的境界的理解,我判断自己是否能达到第3境界乃至第4境界一个最简单的方法就是,你用这个算法进行某个以前未进行过的实践。
如果实践应用是该算法的正常应用范围, 你肯定能在结果出来前,做到分析预测的。
而实际过程中会出现各种坏情形,糟糕的输入,不正常的应用范围。 这时候,你能不能做到对最终结果的预测分析,最终坏情形出现的原因,中间经过的过程你能不能了然于心。
简而言之,你知道算法可以hold住哪些情形, 而各种情形下会出现哪些各种问题,你都了然于心!
可能是由于是数学系学生的缘故吧,我一直对自己的要求就是这样,在条件允许的情况下,学会的每种算法,都要做到第3境界,将一切掌控在自己手中。
也是因此,我对一些不能做到以上几点的算法从心底里有种排斥感,虽然不影响我使用它,但毕竟我无法掌控它,以后出问题了怎么办? 比如现在比较火的深度学习。曾经深度学习还没现在这么火的时候,我就接触这种算法了,但自从我稍微对它进行学习后,我发现,这一类算法由于没有所谓的理论保证,也就是其基础还不够扎实。这种算法就像是一个黑箱子,你对其网络内部的实质完全不清楚,最终结果的好坏都是你用了才知道。。。最坏的一点还要各种调节参数,很多时候好的结果竟然还要一步步试出来。。。问别人你的结果为什么这么好,很多人的回答都是 “”我不知道,我试参数试出来的。。。“ 你通过试参数试出来后结果好,然后呢,你觉得这部分工作理论上有多大贡献?
所以对于那些搞深度学习的,我一直认为都是做具体应用的。 我更佩服的是那些可能有的少数 搞深度学习理论研究的大师!
现在深度学习大热,连学术界好多人都在弄深度学习,这样做真的对学术有什么意义吗!也许现阶段会有很多令人惊叹的成果,但这些成果有多少能被后人继承并继续发展出更好的理论? 理论研究的进展很可能对因此减缓许多!
0 0
- 算法理解境界的思考
- 高境界撒谎的思考
- 算法的三重境界
- 理解SVM的三层境界
- 理解SVM的三层境界
- 理解SVM的三层境界
- 理解SVM的三层境界
- MapOutputBuffer理解的三重境界
- EM算法的九层境界:Hinton和Jordan理解的EM算法
- 我所能理解的编程境界
- 像程序员一样思考——程序员的四个境界
- 求质数算法的N种境界
- 求质数算法的N种境界
- 求质数算法的N种境界
- 0034 求质数算法的N种境界【算法】
- 关于算法的思考
- 算法的哲学思考
- 贪心算法的思考
- linked-list-cycle-ii
- JSON.parse()和JSON.stringify()
- java ArrayList数组中如何插入一个元素
- 关于Android Studio打包jar,aar,Eclipse依赖library问题
- asp.net单点登录
- 算法理解境界的思考
- Qt之QRoundProgressBar(圆形进度条)
- 手工编译mysql-5.7.x全过程
- 《一道有趣的面试题》的疑问
- [Headset]如何在ADB shell中读取耳机状态和读取ACCDET寄存器
- 对称加密算法(AES)
- 集合框架一:List接口
- Uiautomator框架(The UI Automator testing framework)简单介绍
- javascript的settimeout