摘要:
大语言模型(Large Language Models, LLMs)的训练主要分为预训练(pre-training)和后训练(post-training)两个部分。 预训练(Pre-Training) 获取预训练数据集 为了让模型学会语言,首先需要收集大量人类语言的数据。以ChatGPT为例,人们首 阅读全文
摘要:
\(\newcommand{\l}{\lambda}\)在之前的讨论中,我们用等号\(=\)表示“可以演算得到”,并且规定等号具有自反、对称、传递的基本性质。这就意味着,我们不仅可以说\((\l x.xx)N\)能演算得到\(NN\),根据对称性也可以说\(NN\)能演算得到\((\l x.xx)N 阅读全文
摘要:
\(\newcommand{\l}{\lambda}\)图灵证明了图灵机可计算的函数等价于由\(\lambda\)-calculus定义的可计算函数。\(\lambda\)-calculus定义的可计算函数就是能用\(\l\)-term表示的函数(从自然数到自然数的映射)。在\(\l\)-calcu 阅读全文
摘要:
图灵(Turing)和丘奇(Church)都为“计算”建立了模型,图灵的模型是图灵机,丘奇的模型是\(\lambda\)-calculus。可以证明这两个模型在计算能力(可计算的问题的集合)上是等价的。基于图灵机的原理诞生了Fortran,Pascal等等的编程语言,他们称为指令式编程语言(impe 阅读全文
摘要:
在应用层编程只需假设通信的两设备拥有通信能力,而不用考虑具体如何实现通信,通信的具体细节将会交给下方的层级。 精确地说,通信的不是设备,而是设备上的进程。我们把长期运行的进程称为server(服务器),把一般用户开启的时常关闭的进程称为客户(client)。于是,应用层的通信分为两类,一类是客户与客 阅读全文
摘要:
如果说应用层报文是信,网络层报文是邮车,那么运输层就是负责把信放进邮车的邮递员。运输层不关心报文的具体内容, 也不关心报文的运输方式,而关心报文的发送方式,如何把进程中的报文提取给主机的发送端,如何把主机的接收端收到的报文交给某个正在运行的进程。Internet的运输层有两个,分别是传输控制协议(T 阅读全文
摘要:
端系统位于网络的边缘。当一个端系统向另一个端系统发送报文时,报文首先传输到一个与之相连的路由器(router),该路由器再转发到另一个与之相连的路由器,……报文最终通过路由器的转发路径到达另一个端系统。其中,端系统到路由器以及路由器到路由器之间如何传输报文的问题是链路层将会讨论的问题,网络层我们默认 阅读全文
摘要:
网络层规划出了端系统到端系统的路径,并且实现了路由器的转发。因此,网络层的下一个层级链路层(Link Layer)要实现的是:对于网络层规划的某条通信信道(不包含转发,也即从端系统到最近的路由器的某条信道或路由器到相邻路由器的某条信道),这样相邻的通信信道就称为链路(Link)。链路层协议会把网络层 阅读全文
摘要:
伪随机生成器(Pseudorandom Generators, PRG) 私钥密码学的一个基本假设是存在伪随机生成器(PRG)。我们无法证明现在人们在密码学实践中的任何一个伪随机生成器的实现方案是安全的。尽管如此,我们也无法证明一些伪随机生成器是不安全的。我们介绍一些流行的PRG的构造方案。 流密码 阅读全文
摘要:
在图灵机的模型下,复杂性理论的研究遇到了许多困难,至今为止许多符合直观的命题都还只是猜想而无法得到证明(比如\(\text{P}\neq \text{NP}\))。于是人们意识到,造成这样的研究瓶颈的原因是“图灵机”作为模型本身太过复杂。图灵机刻画了一切计算,其使用的方法是描述若干条纸带以及读写头的 阅读全文
摘要:
\(\newcommand{\NP}{\text{NP}}\newcommand{\SAT}{\texttt{SAT}}\)直观上,在相同条件下最优化问题的难度高于存在性问题。判定一个解是否合法比判定该解是否是满足某最优条件的最优解要花费更多的计算资源。从逻辑刻画的角度,判定问题\(L\)形如\(x 阅读全文
摘要:
到目前为止,我们讨论了在私钥、公钥背景下,保证通信保密的安全性和关于消息真实性认证的安全性的算法。下面我们要讨论关于计算的安全性的算法。 双方安全计算(Secure 2-Party Computation) 作为一个motivating example,我们考虑姚期智在1986年提出的百万富翁问题( 阅读全文
摘要:
离散概率本质是计数问题。所以如果想要进一步研究由概率图灵机定义的复杂性类(比如\(\text{PP}\)),一个很自然的角度是研究计数问题的复杂性类。 到目前为止,我们讨论的都是判定问题。判定问题的输出只能是\(0\)或\(1\),也就是说判定问题可以看作一类特殊的计数问题。然而直观上就可以接受,计 阅读全文
摘要:
许多算法中会用到随机性,这类算法称为随机算法。一个随机算法可以看作是一系列确定性算法的分布。引入随机性一般有两种目的:第一种目的是,提供一个简单的解决方案使得我们能以期望意义下更高效地完成计算,例如在快速排序中我们不通过分析数据选取一个尽可能接近中位数的pivot,而是快速地选一个随机的pivot; 阅读全文
摘要:
根据加速定理,我们明白了我们必须对算法定义复杂性而不能对问题定义复杂性。然而,直观上确实存在不同问题的难易程度(hardness)之分。有的问题只需要扫描一遍输入就可以求出,有的问题似乎除了暴力搜索之外没有好办法。那么我们应该如何比较不同问题之间的难度呢?(除非特殊说明,我们所说的“问题”就是指判定 阅读全文
摘要:
空间复杂性(Space Complexity)\(\newcommand{\TIME}{\text{TIME}}\)\(\newcommand{\M}{\mathbb{M}}\)\(\newcommand{\SPACE}{\text{SPACE}}\)\(\newcommand{\NSPACE}{\ 阅读全文
摘要:
如何定义时间复杂性\(\newcommand{\TIME}{\text{TIME}}\)\(\newcommand{\M}{\mathbb{M}}\) 加速定理(Speedup Theorem) 当我们提到“时间复杂性”的时候,我们说的是“一个算法的时间复杂性”,这是通过这个算法在图灵机上的运行步数 阅读全文
摘要:
当我们提到“计算(calculation)”这个词时,指的是“回答一个数学问题”。这个数学问题可以是“求两个正整数的乘积”,“求出一个线性方程组的所有解”,“给一列数字排序”,“给定一个无向图求最大独立集的大小”等等。在计算这些问题的时候,可以有很多不同的方法。对于第一个问题,我们可以依据“乘法本质 阅读全文
摘要:
Concentration不等式 \(\newcommand{\E }{\mathbb{E}}\)\(\newcommand{\Var}{\text{Var}}\)怎么样才算了解了一个随机变量的全部信息了呢?显然,只要能够得到一个随机变量的分布,就相当于得知了关于这个随机变量的所有信息,因为这意味着 阅读全文
摘要:
Streaming Model \(\newcommand{\E}{\mathbb{E}}\)\(\newcommand{\Var}{\text{Var}}\)假设我们会依次接收到一个正整数序列\(a_1,a_2,\cdots\),保证序列长度不超过\(m\)。但我们只有有限的内存位来存放它们,序列 阅读全文
摘要:
到目前为止,我们对算法的分析都是基于算法在worst-case上的表现的。我们总会假设有一个adversary在已知我们设计的算法以后总会用一个最坏的输入来让我们的算法表现糟糕。然而我们发现,在某些在线算法问题下这样的分析方法太强了,以至于所有确定性算法甚至随机算法的竞争比都没有常数的竞争比,以至于 阅读全文
摘要:
在线二分图匹配(Online Bipartite Matching) 传统的二分图最大匹配问题是:给定二分图\(G=(A\cup B,E)\)(二分图意味着\(A\)中的点两两没有边相连,\(B\)中的点两两没有边相连),我们想要找到一个最大的\(E\)的子集\(M\)使得\(M\)中的任意两条边都 阅读全文
摘要:
\(k\)-server问题\(\newcommand{\ALG}{\text{ALG}}\newcommand{\OPT}{\text{OPT}}\) 对于一个集合\(S\),如果可以对于其中任意两个元素\(x,y\)定义距离\(d(x,y)\),并且满足正定性:\(\forall x,y,d(x 阅读全文
摘要:
Cache问题\(\newcommand{\ALG}{\text{ALG}}\newcommand{\OPT}{\text{OPT}}\) 考虑下面这个高速缓存(Cache)的问题:有一个大小为\(k\)的cache(也即cache内能存\(k\)个页),现在用户依次请求访问\(n\)个页:\(x_ 阅读全文
摘要:
线搜索问题(Line Search) 小A位于数轴上的原点,小B位于数轴上的整点\(D\)。小B位置固定不动,但小A不知道小B的位置。小A每次可以选择向右移动1或向左移动1,每次移动后会得到回答“现在的位置是否已经与小B重合”。设计一个算法,让小A能移动到小B的位置,并且移动的步数尽量少。 如果这个 阅读全文