学习机器学习算法真的是一件令人头疼的事,我们有那么多的论文、书籍、网站可以参考,它们或是精炼的数学描述(mathematically),或是一步一步的文本介绍(textually)。如果你足够幸运,可能还会找到一些伪代码。如果人品爆发,甚至会被告知如何安装。但是,全靠人品毕竟不是长久之计,详尽的算法修炼秘籍也是寥寥。如此窘境,如何是好?
某侠士集成多年所得,指得一条明路:从“只言片语”中抽丝剥茧,多方参照,可获真经。
这“只言片语”并非随意摘选,而是指某一派算法之总。即算法最原始的出处(即文章),以及来自于综述和典籍的二次阐述。这些地方,常藏有算法的代码实现。如若勤加钻研,定会事半功倍。
修习算法,可先广泛涉猎算法知识,以窥全貌,之后代码实现。这不失为一种方法,但是算法为源,代码为支。追宗溯本,算法心经为要。然心经修习,讲究日积月累,需的耐烦、入定。此事甚难。该侠士又提一辅助修炼方法——结构化算法学习。
修习某一算法之前,列出所要关注的若干问题,包括:
- 算法的标准和简称是什么?(What is the standard and abbreviations used for the algorithm?)
- 信息处理策略是什么?(What is the information processing strategy of the algorithm?)
- 算法的目标是什么?(What is the objective or goal for the algorithm?)
- 算法的衍生实践有哪些?(What metaphors or analogies are commonly used to describe the behavior of the algorithm?)
- 伪代码的实现(What is the pseudocode or flowchart description of the algorithm?)
- 算法的使用技巧、注意事项有哪些?(What are the heuristics or rules of thumb for using the algorithm?)
- 算法可以解决哪类问题?(What classes of problem is the algorithm well suited?)
- 描述相关算法的资源有哪些?(What are useful resources for learning more about the algorithm?)
- 算法的源头在哪里?(What are the primary references or resources in which the algorithm was first described?)
日常学习之中,将同一算法的讨论逐一归入如上框架。
这一方法的精妙之处在于,不需要你事先成为某一领域的大家。只是每遇一算法,便归入框架,日积月累,功力自然与日俱增。
参考:
时间: 2024-11-04 06:57:37