实习已经过去了一个月,现在终于有进入状态的感觉了,多亏了这枯燥的任务,实习生果然只能干实习生能干的事情,也不怪,实力有限,慢慢来。
最近几天研究算法比较多,主要看了PCA,MDS和SOM算法,其中PCA算是降维算法中,很古老且行之有效的算法了。
其实算法并不难,以前看公式,觉得这都是些什么啊,怎么会看得懂,所以每次论文也就copy&paste了。因为任务需要,不得不硬着头皮去看这些非常理论的东西,其中线性代数占了80%,基础数学和概率论分别占10%。关于算法的学习,我总结了一下几点:
1、拿到一个算法,首当其冲就是要知道它是做什么的——What;
2、然后你需要弄明白原理及步骤,网上博客很多,干这行就尽量google一下吧,搜搜学术论文,技术博客,都能看懂——How;
3、下来最关键了,把每个步骤所需的CPU操作分析出来,例如PCA中计算协方差矩阵的函数:
(1)求矩阵每一列的平均值操作,主要包括LOAD和累加ADD操作
(2)矩阵列的所有元素与该列所有元素的平均值进行相减操作,主要包括LOAD和SUB操作
(3)列向量之间的向量乘法运算,主要包括LOAD和乘加操作MLA。
如此分析过后,你会更加明白每一步是如何来的了,为什么要进行如此操作,并且,对于后续编程会有指导意义;
4、总结,并记录,时间条件允许的情况下,下载或者自行编程实现。
遇到问题,大多可以百度,google,实在不行,就硬着头皮去stackoverflow里搜吧,师兄说是最好用的论坛。
坚持,努力,加油!
破尘