博主曾多次尝试“学习ML”:
- 各种专业课(涉及到但不教的/教但是一大半是老古董的/…)上:一点没掌握,期末手写个反向传播,卷子一交忘得干干净净;实验是只会疯狂tab的,交完报告了事
- cs231n:CV经典课,质量确实高但博主当时学的时候没开窍
- 同理还有cs224n(NLP)
- 应该还有别的但是往事不可查
现在回想当初乱跑的经历,我现在认为问题出在,自己都不知道自己到底在学一个什么东西,汲取新东西没有目的性。外加花里胡哨的概念太多,一下子涌上来眼花缭乱更是不知所以然了。
其实,学习ml,或者学习任何其它新领域,应当采用做research的思维去思考(本身这些方法也是从research中来的)。
具体来说,以ml为例,首先应该问:
如果 ML 是一个方法,那么它究竟是为了解决什么问题而诞生的?
这个问句的答案是:为了更好地找到一个function的“形状”,我们发明了ml。
自然而然地就有了下面的思考:
-
我们允许学出什么样的 function
我们认为怎样的 function family 更适合描述这个问题?
详细展开来说,function框架长什么样?哪些参数要学?为什么设计成这样?
例如:MLP / Transformer / CNN / GNN。
-
如何学习?
-
从哪里学习?
- 有标准答案,于是可以做 supervised learning。
- 没有逐步的标准答案,只能通过和环境交互获得 reward,于是有了 reinforcement learning。
还有 self-supervised learning、unsupervised learning 等等,本质上也都在回答:learning signal 从哪里来。
我们能获得什么样的 feedback,会进一步决定该怎样构造 loss / objective / reward,以及整个 training procedure。
-
怎么学我们定义的“好”的 function?
- gradient descent、backpropagation、SGD、Adam、learning rate
- PPO / GRPO
-
顺着这种research思路往下学习,才真正能内化零碎的知识。
tips:
- 其实博主的饺子醋是想批判常规的四分格教学思路(先学回归再学分类再学聚类之类的),这样只是提出了一个又一个新概念而已,知道了一大堆名词,却不知道它们为什么会出现在这里,这种上来就进入methodology的思路值得鄙视
- 给了博主巨大帮助的教程:李宏毅老师的ML相关课程,在油管上均可以搜到。感谢老师的无偿分享TT