机器学习以及计算机公开课汇总帖
之前在简书上发过两个帖子,分别总结了CS以及机器学习的课程资源,现在也学习了几个月,就把学完的记录在这里,部分课程做了笔记的也会列出。
系统自学计算机课程:
https://www.jianshu.com/p/8f2646a825e8
机器学习资料:
https://www.jianshu.com/p/dc9020fd03b1
计算机计算机基础
哈佛大学 CS50
https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x
如果0基础想要学习计算机知识,非常推荐这门课,课程生动有趣。这门课面非常广,介绍了C语言,SQL,HTML,Python以及Javascript,如果时间有限,可以着重学习C语言部分。
Nand to Tetris
https://www.coursera.org/learn/build-a-computer
https://www.coursera.org/learn/nand2tetris2
https://www.nand2tetris.org/
非常非常好的课 ...
未完成的课程汇总
由于时间或者个人原因,在学习的过程中难免有没有学习完的课程,这里会将其列出,方便后续填坑。
未完成列表
MIT 6.172(完成4讲)
MIT 概率课程
台交大信息论(完成10讲)
台交大随机过程(完成6讲)
Information Theory, Inference and Learning Algorithms(完成8讲)
MIT 18.605 Matrix Methods in Data Analysis, Signal Processing, and Machine Learning(上传6讲,完成到21讲)
CS236 Deep Generative Models(完成8讲)
CS234 强化学习(完成1讲)
EE364 凸优化(完成8讲)
Deep Learning for Human Language Processing (完成语音部分)
斯坦福算法专项课程(完成9周内容)
博客主题配置
记录博客主题的配置以及相关优化。
博客内容整理
记录对博客内容整理的过程。
Xmixers(1) 初始化对于模型的影响
在本博客中,我们将正式开始xmixers的旅程,我们将讨论一个问题,初始化对于模型的收敛性的影响。
模型架构这里我会选择四个模型架构进行研究(这里的LLaMA使用了LayerNorm,事实上,我发现LayerNorm和RMSNorm效果基本一致):
LLaMA
事实上,这里和标准的Llama有一些不同,我会在最后讨论该问题;
GPT;
Transformer with learnable pe,和nanoGPT中相同;
GPT-sincos;
Transformer with sincos pe;
另一方面,为了验证我的实现是否正确,我还将nanoGPT中的GPT模型作为我的baseline。
我们会测试三个尺寸的模型,分别是:
small: 124M
medium: 350M
large: 774M
具体参数请参考nanoGPT.
实验Method1Method1来自于huggingface的初始化策略:
使用$\mathcal N(0, 0.02^2)$初始化所有层;
下面是学习曲线的对比:
从上图中我们可以看到几个现象:
GPT和GPT-base ...
Xmixers(0) Introduction to the Xmixers Project
This blog began in January 2018 as a record of my learning process. Over the past two to three years, the posting frequency has gradually decreased due to my focus on sequence modeling research, which has led to several publications, such as Cosformer, Transnormer, Hgrn1, and Hgrn2. I have been wanting to consolidate my past models, which led to the creation of the xmixers project. This blog is written in Chinese, and once complete, it will be translated into English by ChatGPT to broaden its re ...
Xmixers(0) xmixers项目简介
本博客从18年1月份开始写,一开始是主要是记录一些学习的过程,到最近2,3年更新频率逐渐降低,这是因为这几年一直在做sequence modeling的研究,也产出了一些paper,例如cosformer, transnormer, Hgrn1, Hgrn2等等。一直想找一个机会把自己做过的模型整合成一下,于是便有了xmixers这个项目。本博客是以中文撰写,撰写完成后会用chatgpt翻译成英语(为了更广泛的传播),英语版本请参考Xmixers(0) Introduction to the Xmixers Project。
动机之所以要做该项目,主要是碰到了如下几个痛点:
现在huggingface实际上成为了模型接口定义的标准,所有的测评库都会以符合huggingface接口的来定义;
训练好的模型需要以huggingface接口进行发布,所以如果用非huggingface接口定义的模型需要经历一个xxx to hf的转换过程,这个过程其实挺容易出错的,而且每次研究一个新的模型都要搞一个这样转换脚本,非常的浪费时间;
我自己之前做过不少模型,但是一直没整理,所以传播度不高,希望 ...
23年终总结
有半年没发博客了,最近实在太忙,之前的公开课学习也基本都搁置,马上24年了,希望有个新气象,这里先跟风写个总结,本文也发于知乎,以下为原文:
跟风写个年终总结吧,之前所有的博客都是写在自己的博客网站上,马上新的一年了,尝试一下知乎上写写。其实最近半年多已经没有更新过博客了,原因是各种事情导致太忙,实在没啥时间学习公开课,所以也一直停滞了。
发生的事情细想一下,今年真的发生了很多事:1月孩子出生;2到4月换工作,面了几十次,同期也和合作者开发了HGRN;5月去新公司;6月对Linear Transformer结构做升级改进,加起来的ablation前后得有几百个;7月对Linear Transformer做加速,也学了triton,这期间经历过无数次3,4点睡觉;8,9月训练,测评Transnormer-LLM 7B,中间真是踩了无数的坑;10月之后做TransnormerLLM的开源,sft等工作;11月到12月初对我们之前的工作做了一些总结,测评1B, 3B level相比于Llama结构的效果,也同步测评了Mamba,具体见链接;12月之后也启动了15B模型的训练,整个过程(包括 ...
Deep Learning Systems Lecture 24 Model Deployment
这里回顾dlsys第二十四讲,本讲内容是模型部署。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
大纲
模型部署概述;
机器学习编译;
模型部署概述到目前为止我们在这门课上学到了什么
如何构建深度学习系统,在标准计算环境(使用 GPU)上高效地训练深度学习模型;
自动微分;
深度模型;
硬件加速和扩展;
规范化、初始化、优化;
模型部署将学习到的模型部署不同的应用环境:
模型部署注意事项
应用环境可能会带来限制(模型大小,no-python);
利用本地硬件加速(移动GPU、加速 CPU 指令、NPU)与应用程序集成(数据预处理、后处理);
模型导出并部署到推理引擎
推理引擎内部
许多推理引擎被构造为计算图解释器;
为中间激活分配内存,遍历图并执行每个运算符;
通常只支持一组有限的运算符和编程模型(例如动态);
机器学习编译库驱动的推理引擎部署的局限性需要为每个硬件后端构建专门的库,大量的工程优化工作。
机器学习编 ...
Deep Learning Systems Lecture 22 Implicit Layers
这里回顾dlsys第二十二讲,本讲内容是Implicit Layers。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
大纲
复杂函数作为深度网络中的层(运算符);
implicit layer的微分;
implicit layer的例子;
复杂函数作为深度网络中的层(运算符)深层网络中的“层”术语“层”在深度学习中是一个重载。我们需要区分两件事:
Operators在计算图中定义“原子”操作,以及它的显式梯度传递:即矩阵乘法、卷积、逐元素的非线性等。
Modules定义了运算符的集合,其中反向传递是通过计算图的构造隐式创建的。
将函数定义为运算符而不是模块有什么好处?
例子:卷积回想一下我们之前的讲座,卷积可以根据许多矩阵乘法运算来指定:
def conv_matrix_mult(Z, weight):
N,H,W,C_in = 2.shape
K,_,_,C_out = weight.shape
...
Deep Learning Systems Lecture 20 Transformers and Attention
这里回顾dlsys第二十讲,本讲内容是Transformer和Attention。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
大纲
时间序列建模的两种方法;
Self-attention和Transformer;
超越时间序列的变形金刚;
时间序列建模的两种方法时间序列预测让我们回顾一下之前课程中的基本时间序列预测任务:
更根本的是,时间序列预测任务可以写成如下预测任务:
y_{1: T}=f_\theta\left(x_{1: T}\right)其中$y_t$只能依赖于$x_{1:t}$。
这样做有多种方法,可能涉及也可能不涉及RNN的隐状态表示。
RNN“隐状态”方法我们已经看到了时间序列的RNN方法:保持“隐状态”$h_t$,它总结了到$t$时刻为止的所有信息。
优点:潜在的“无限”历史,紧凑的表示;
缺点:历史和当前时间之间的长“计算路径”⟹消失/爆炸梯度,难以学习;
“直接预测”方法相比之下,也可以 ...
Deep Learning Systems Lecture 18 Sequence Modeling and Recurrent Networks
这里回顾dlsys第十八讲,本讲内容是序列建模和RNN。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
大纲
序列建模;
RNN;
LSTM;
超越“简单”的序列模型;
序列建模序列建模任务在我们目前考虑的示例中,我们假设每个输入输出对$x^{(i)},y^{(i)}$是独立同分布的(i.i.d.)。
在实际中,很多情况下输入/输出对是以特定序列给出的,我们需要使用关于这个序列的信息来帮助我们进行预测:
例子:词性标注给定一个单词序列,确定每个单词的词性:
单词的词性取决于使用它的上下文,而不仅仅是单词本身。
例子:语音to文本给定一个音频信号(假设我们甚至知道词的边界,并将每个片段映射到一个固定大小的向量描述符),确定相应的变换:
同样,单词的上下文非常重要(例如,参见任何试图“wreck a nice beach”的糟糕语音识别系统)。
示例:自回归预测序列预测的一种特殊情况,其中要预测的元素是序列中的下一个元素 ...