AI学习笔记¶
我对AI的认识一直停留在理论和宏观,记点笔记实操一下。刚开始入门一个领域,从整体,多维度,各个细节切入都影响不大,关键是后续逐渐丰满对一个领域的知识框架,逐渐把点串起来,前期多看,跟对领域主流的框架、技术点,慢慢尝试就行。
突然想到了卡马克的入门AI的博客: 约翰·卡马克(John Carmack):学习神经网络这一周
备注
我想从头开始用C++编写一些神经网络实现。我最喜欢的还是Windows的Visual Studio,所以其实我完全可以回避这些问题。我只是单纯觉得在老式UNIX风格下进行长达一周的沉浸式工作会很有趣,即使进度会慢一些。
我并没有真正探索完整个系统,因为我把95%的时间都花在基础的 vi/make/gdb 操作上了。我很喜欢那些实用的帮助手册页面,虽然一直在摸索自己能在这个系统里做什么,但我实在不想上网直接搜。
在这之前, 我其实已经对大多数机器学习算法有了成熟的了解 ,而且也做过一些线性分类器和决策树之类的工作。但出于某些原因,我还没碰过神经网络,这在某种程度上可能是因为深度学习太时髦了,导致我对它持保守意见,或许也有一些反思性的偏见。“我还不能接受把所有东西丢进神经网络里,然后让它自己整理” 这种套路。
我打印了几篇Yann LeCun的旧论文,然后脱机工作,假装自己正身处某地的山间小屋,但现实是——我还是偷偷在YouTube上看了不少斯坦福CS231N 的视频,并从中学到了很多东西。我一般很少看这种演讲视频,会觉得有点浪费时间,但这样“见风使舵”的感觉也不赖。
个人体验而言, 这是高效的一周,因为我把书本上的知识固化成了真实经验 。我的实践模式也很常规:
先用hacky代码写一版,再根据视频教程重写一个全新的、整洁的版本,然后两者交叉检查,不断优化。
我曾在反向传播上反复跌倒了好几次,最后得出的经验是比较数值差异非常重要!有趣的一点是,即使每个部分好像都错得离谱,神经网络似乎还是能正常训练的,甚至只要大多数时候符号是正确的,它就能不断进步。
如果要说这一周的学习有什么最精彩的心得,那应该就是神经网络非常简单,它只需寥寥几行代码就能实现突破性的进步。我觉得这和图形学中的光线追踪有异曲同工之妙,只要我们有足够的数据、时间和耐心,追踪与光学表面发生交互作用的光线,得到光线经过路径的物理模型,我们就能生成最先进的图像。
大模型的课程: Open AI传奇研究员Andrej Karpathy教你理解和构建GPT Tokenizer
AMD GPU对PyTorch的支持¶
没有明确说支持AMD的显卡驱动,支持ROCm,看来 PyTorch 对 AMD显卡当前支持还不友好。如果是A卡,只能先跑CPU版本了。
PyTorch入门¶
官方的教程例子质量挺高的。
第一个例子手写数字识别¶
详细看下入门代码。