人工智能训练师基础
写在前面
这份文档是为你准备的——一个计算机大数据智能专业背景、有点基础但概念性知识已经遗忘不少的”三秦工匠杯”AI训练师赛项备赛者。模块一是整场比赛的”开胃菜”也是”基本盘”:90分钟机考闭卷,单选100道(每题1分)、多选40道(每题2分)、判断20道(每题1分),合计200分,占总成绩将近三成。它只考理论,但覆盖面横跨计算机基础、数学、编程、机器学习、深度学习、生成式AI、伦理安全七大块,概念点密集,最容易在”看着眼熟却选不对”的多选题上丢分。
讲解的详略严格依据比赛清单里的重要程度标记。标了四颗星的数据结构、算法、人工智能基础,是核心战场,必须讲透;三颗星的操作系统、编程语言、计算机网络,讲清核心概念;一颗星的硬件、数学、伦理、信息安全,抓关键考点带过,不深挖。整篇采用博客串讲风格,不用表格、不用图标,遇到容易记混的概念就用生活化的例子类比,目标是”听明白、能做题”,不做过度扩展。
文档里凡是涉及具体年份、版本号、法律施行日期等可能记不准的信息,会用【需网络查询确认:xxx】明确标出,提示你临考前再核对一遍。其中法律法规类日期已通过网络查证,正文给出的是准确信息。
理论学习权重分布你要心里有数:计算机基础约20%、数学基础15%、编程语言15%、机器学习20%、深度学习15%、生成式AI 10%、伦理安全5%。看出来了吧,机器学习和计算机基础是两个大头,生成式AI和伦理安全虽然占比低但概念密集、容易丢分,都不能放过。
下面正式开始,从四颗星的核心战场讲起。
第一章 数据结构与算法:把数据摆明白,把套路用清楚
数据结构和算法都标了四颗星,是必考内容,概念点特别密集,很多选择题就靠你对细节的拿捏。
线性表:数组与链表的取舍
线性表是最基础的结构,元素排成一条线,元素之间是一对一的前后关系。这一节的真正考点不在”什么是线性表”,而在它的两种物理实现——数组和链表——各自的取舍。
数组,是连续内存里的一排座位,下标就是座位号。最大的好处是随机访问快,下标一给就能直接算出地址,时间复杂度 O(1)。代价是插入和删除很麻烦,中间插一个,后面所有人都要往后挪一个位置,O(n)。而且数组要事先定好大小,开多了浪费、开少了溢出。
链表正好反过来,内存不连续,靠指针把节点串起来,像一场寻宝游戏,每个节点只告诉你”下一个在哪”。它的好处是插入删除快,只要改几个指针就行,O(1) 就能搞定(前提是你已经站在了要操作的位置)。代价是访问慢,想拿第 100 个节点,得从头一个一个顺着指针走过去,O(n)。
这一组对比几乎是必考,记住一句话就够:”数组擅长查、链表擅长增删”。再延伸几个易混点:单链表只能往后走,双向链表前后都能走,循环链表尾节点指回头部。链表常考的算法有逆置、找中点(快慢指针)、判断是否有环(快慢指针追及),这几个套路一定要熟。
栈与队列:一个后进先出,一个先进先出
栈和队列本质上是”操作受限的线性表”,只能在特定位置进出,正是因为受限,才有了独特的性质。
栈是后进先出,缩写 LIFO,最形象的生活类比就是食堂里叠盘子,最后放上去的那个最先被拿走。它只允许在栈顶一端操作,进栈叫 push,出栈叫 pop。栈的典型应用场景你最好能背下来几个:函数调用(递归就是靠栈实现的)、括号匹配、表达式求值、浏览器的前进后退。看到”回退””撤销””配对””嵌套”这类词,第一反应就应该是栈。
队列是先进先出,缩写 FIFO,类比排队买饭,先来的先服务。一端进(队尾 enqueue)、一端出(队头 dequeue)。队列最典型的应用是广度优先搜索(BFS)和各种排队调度场景。
这里有个高频易错点是循环队列。普通队列用数组实现时,队头出队后会留下空位却用不上,这叫”假溢出”。循环队列把数组首尾相连解决这问题,但判空判满要小心:通常约定牺牲一个单元,当 front==rear 时判空,当 (rear+1)%size==front 时判满,队列长度公式是 (rear-front+size)%size。这一串公式容易记混,建议记住”牺牲一个单元”这个核心思路,公式现场推。
再补一个考点:给定一个入栈序列,判断某个出栈序列是否合法,这是经典选择题。规律是随时可以出栈,但一旦出栈的元素不能”插回去”,合法性判定要会模拟。栈的合法出栈序列数量遵循卡特兰数【需网络查询确认:卡特兰数公式 C(n)=C(2n,n)/(n+1)】。
树:从二叉树到红黑树
树是层次结构,一对多,像家谱或公司组织架构。比赛里重点是二叉树这一支,往上延伸到 B 树和红黑树。
先说二叉树本身,每个节点最多两个子节点。两个常见概念必须分清:满二叉树是”每个节点都有两个子节点,且所有叶子在同一层”,整棵树长得严丝合缝;完全二叉树是”除最后一层外都满,最后一层从左到右连续排”,允许最后一层没排满,但不允许中间有空缺。这两个词看着像,差别就在”满”和”连续”上。
二叉树的遍历是核心中的核心,四种方式要倒背如流:前序(根左右)、中序(左根右)、后序(左右根)、层序(按层从左到右)。一个经典考点是:前序加中序可以唯一确定一棵二叉树,后序加中序也可以,但前序加后序不行。原因是前序和后序都能确定根,但只有中序能区分左右子树。
再往上走是二叉搜索树(BST),它的规则是”左子树都小于根,右子树都大于根”,中序遍历正好得到有序序列。问题是它可能退化成一条链,查找变成 O(n),所以才需要平衡。
B 树是多路搜索树,和二叉树的根本区别在于”矮胖”:每个节点可以存多个关键字、有多个子节点,整棵树高度很低。它是专门为磁盘这种”按块读取”的设备设计的,目的是减少磁盘 IO 次数,所以常用于数据库索引和文件系统。m 阶 B 树的约束是每个节点最多 m 个子节点、最多 m-1 个关键字,根节点之外的内部节点至少 ⌈m/2⌉ 个子节点。这一段约束记个大概即可,重点理解”为什么 B 树矮、为什么适合磁盘”。
红黑树是自平衡的二叉搜索树,它不像 AVL 树那样严格平衡,而是放宽约束:保证最长路径不超过最短路径的两倍,从而在查找和增删之间取折中。它的五条性质最好能背下来:第一,节点非红即黑;第二,根节点是黑;第三,叶子节点(NIL 空节点)是黑;第四,红节点的孩子必须是黑(也就是不能有连续两个红);第五,从任一节点到其所有叶子节点的路径,黑节点数量相同,这个数叫黑高。红黑树插入和删除后的调整靠”变色加旋转”,具体调整规则比较繁琐,比赛层面记住”靠变色和左右旋来恢复性质”就够了。红黑树的典型应用包括 Java 的 TreeMap 和 TreeSet、Linux 内核的进程调度(CFS)【需网络查询确认:epoll 内部使用的具体数据结构版本细节】。
顺带说一个对比考点:AVL 树比红黑树更严格平衡,查询多、增删少的场景用 AVL 更划算;增删频繁的场景用红黑树更划算。这是个常考的选择题判断点。
另外二叉树还有几个性质公式要记牢:叶子节点数 n0 等于度为 2 的节点数 n2 加 1,即 n0 = n2 + 1;n 个节点的完全二叉树深度为 ⌊log₂n⌋ + 1。
图:邻接矩阵与邻接表
图是比树更一般的结构,顶点之间的关系是多对多,任意两个点都能连。图分无向图、有向图,边还可以带权。要会区分度、入度、出度:无向图谈度,有向图分开谈入度和出度。
图的存储方式是这一节的主考点,两种必须都会。
邻接矩阵是用一个 n×n 的二维数组,matrix[i][j]=1 表示顶点 i 到 j 有边,带权图就把 1 换成权值。它的优点是查边特别快,O(1) 就能判断两点之间有没有边;缺点是空间占用固定 O(n²),无论边多边少都占这么多。所以邻接矩阵适合稠密图(边特别多的情况)。无向图的邻接矩阵一定是对称的,这是常考判断点。
邻接表是每个顶点挂一个链表,链表里存它的所有邻居。它的优点是省空间,只存实际存在的边,适合稀疏图;缺点是判断两点之间有没有边要遍历链表,不能一步到位。
对比记忆:稠密用矩阵、稀疏用邻接表。空间上,邻接矩阵 O(n²),邻接表 O(n+e)(n 是顶点数、e 是边数)。无向图邻接表中所有链表节点数之和是 2e,有向图是 e。
哈希表:用空间换时间的典范
哈希表是”用空间换时间”这句话的最佳注脚。它通过一个哈希函数,把 key 直接映射到数组下标,所以查找、插入、删除平均都能做到 O(1),这是其他结构比不了的。
哈希函数最常见的是除留余数法,H(key) = key mod p,其中 p 通常选一个不大于表长的质数。这一步不是重点,重点在冲突处理。
冲突是不可避免的,因为不同的 key 可能算出同一个地址。解决冲突主要有两大流派。第一类是开放定址法,冲突了就去寻找下一个空位,具体有线性探测(往后一个一个找)、二次探测(按平方跳跃着找)。第二类是链地址法,也叫拉链法,把映射到同一地址的所有元素挂成一个链表。两种方法各有特点:开放定址法容易产生”聚集”现象(连续占用一长串),拉链法处理起来直观但要多存指针。
一个高频考点是装填因子(也叫负载因子),它等于元素个数除以表长。装填因子越大,冲突概率越高、性能越差,所以一般要控制在一定阈值以下,超了就扩容 rehash。
还有一个常考的题型是算平均查找长度(ASL),在给定哈希表和冲突解决方式后,求成功查找和失败查找的 ASL。这类题没有捷径,要把每个元素的探测次数老老实实数出来再求平均,做两三道题就熟练了。
排序三剑客:快排、归并、堆排
排序算法里,比赛重点盯这三个,因为它们都做到了平均 O(nlogn) 这一档,但实现思路和特性完全不同。
快速排序的核心是”分治加基准”。随便选一个元素做基准(pivot),把数组重排成”比基准小的都在左、比基准大的都在右”,这一步叫 partition,然后对左右两段递归做同样的事。快排的平均时间复杂度是 O(nlogn),最坏情况是 O(n²),最坏发生在数组已经有序、基准每次都选到最值的时候。快排是原地排序,但它不稳定——相等的元素在分区后相对顺序可能改变。记忆关键:快排”先分区后递归”,分区是它的灵魂。
归并排序也是分治,但思路相反,是”先递归后合并”。它先把数组一直二分到单个元素,然后两两合并成有序段,合并时利用两个有序段首元素比较来归并。归并的时间复杂度是 O(nlogn),而且最好、最坏、平均都一样,非常稳定;它也是这三个里唯一的稳定排序;代价是需要 O(n) 的额外空间。对比快排和归并,记一句话:”快排先分后治、归并先治后合;快排原地不稳定、归并稳定费空间”。
堆排序靠的是”堆”这个数据结构。堆是一棵完全二叉树,大顶堆满足父节点大于等于子节点,小顶堆反过来。排序过程是:先把整个数组建成大顶堆,然后把堆顶(最大值)和数组末尾交换,再把剩下的部分重新调整为堆,如此反复,每次取出一个最大值放到末尾。堆排序时间复杂度 O(nlogn),原地排序,但不稳定。堆的数组表示里有个常用公式:下标从 0 开始时,节点 i 的左孩子是 2i+1、右孩子是 2i+2、父节点是 (i-1)/2,这个一定要记牢,堆排和 TopK 问题都要用。
这一节的核心考点就三个:稳定性、时间复杂度、空间复杂度。稳定性上记”快排堆排不稳、归并稳”;时间上记”快排最坏 n²、归并堆排都 nlogn 稳如老狗”;空间上记”归并要 O(n) 额外空间,快排堆排原地”。再补一个常考应用:TopK 问题(找前 K 大或前 K 小)用堆做最高效,维护一个大小为 K 的堆即可。
查找:二分与哈希
查找这一块重点两种,对应两种思路。
二分查找要满足一个前提:序列必须有序。它的思路是每次取中间元素和目标比,相等就找到,不等就砍掉一半继续找,时间复杂度 O(logn)。二分查找的坑全在边界上,循环条件是 left<=right 还是 left<right,更新是 left=mid+1 还是 left=mid,取决于你用的是”左闭右闭”还是”左闭右开”区间,选定一种写法就一直用,别来回切。二分还有几个变形很常考:找第一个等于 target 的位置、找最后一个等于 target 的位置、找第一个大于等于 target 的位置,这些变形比基础二分更容易出选择题。
哈希查找前面哈希表那节已经讲过,平均 O(1),优势是无序也能查,劣势是冲突会影响性能、且不支持范围查询和有序遍历。两者对比:有序且查找频繁用二分,等值查找为主、不要求有序用哈希。
图遍历:BFS与DFS
图的两种遍历方式必须分清,它们用的辅助结构不同、应用场景也不同。
BFS 是广度优先搜索,思路是从起点出发,一层一层地往外扩,像往水里丢石子泛起的水波纹。它靠队列实现:起点入队,每次出队一个顶点,把它所有未访问的邻居入队,循环到队空。BFS 的特点是”层层推进”,所以它能用来求无权图的最短路径,也能做二叉树的层序遍历。
DFS 是深度优先搜索,思路是从起点出发,一条路走到底走不动了再回退换路,像走迷宫一直贴着墙走到死胡同才回头。它靠递归(本质是栈)或显式栈实现。DFS 适合连通性判断、拓扑排序、找所有解、环检测这类问题。
两者对比记忆:BFS 用队列、DFS 用栈或递归;BFS 找最短路径、DFS 找所有路径或判断连通。时间复杂度上,用邻接表存储时都是 O(V+E)(V 是顶点数、E 是边数),用邻接矩阵时是 O(V²)。这个复杂度对比是高频考点。
动态规划与贪心:看似像实则不同
这两个算法长得像,都涉及”做选择”,但内核完全不同,是考试里最喜欢拿来对比的一对。
动态规划(DP)的核心思想是把大问题拆成子问题,当子问题有重叠时,把每个子问题的结果记下来避免重复计算。能用 DP 的问题必须满足两个性质:最优子结构(大问题的最优解由子问题的最优解构成)和重叠子问题。做题的关键是写出状态转移方程,也就是”当前状态怎么从前面的状态推过来”。经典例子有斐波那契数列、背包问题(01 背包和完全背包)、最长公共子序列、最长上升子序列、编辑距离。DP 一般是自底向上递推,能保证全局最优,代价是时间和空间都不小(空间往往可以用”滚动数组”优化)。
贪心算法的思路是每一步都选”当前看起来最好”的选项,不回头、不后悔。它不保证全局最优,只有在问题具有”贪心选择性质”时才是正确的。典型例子有活动选择问题(按结束时间排序选最多不冲突活动)、Huffman 编码、最小生成树的 Prim 和 Kruskal 算法、部分背包问题(可分割的背包)。贪心一般效率高、实现简单,但适用面窄。
两者的根本区别要记牢:DP 是”全局考虑、自底向上、保证最优但慢”;贪心是”局部选择、不回头、快但不一定最优”。判断一道题该用哪个,可以先想”贪心能不能成立”——如果每一步的局部最优确实能推出全局最优,就用贪心;如果不行、需要枚举所有子问题的组合,就用 DP。一个简单的判别信号:背包问题里,物品可分割(部分背包)用贪心,物品不可分割(01 背包)用 DP,这个对比非常典型。
数据结构与算法易错点速记
数组和链表的取舍不要记反:数组查得快 O(1)、增删慢 O(n);链表查得慢 O(n)、增删快 O(1)。栈是 LIFO、队列是 FIFO,循环队列判空用 front==rear、判满牺牲一个单元用 (rear+1)%size==front,这三个公式别张冠李戴。满二叉树和完全二叉树一字之差,”满”要求所有层都满,”完全”允许最后一层不满但必须从左连续。二叉树遍历里,前序加中序、后序加中序都能唯一确定一棵树,但前序加后序不行。B 树矮胖是为了减少磁盘 IO,红黑树最长路径不超过最短路径两倍,五条性质里”红节点的孩子必黑”和”黑高相同”最常被考。AVL 比 Red-Black 更严格平衡,查多用 AVL、增删多用 Red-Black。
图的存储上,稠密图用邻接矩阵、稀疏图用邻接表,无向图邻接矩阵对称。哈希表冲突处理两大流派,开放定址法有聚集问题、拉链法多存指针,装填因子越大性能越差。排序稳定性口诀”快排堆排不稳、归并稳”,快排最坏 n²、归并和堆排三种复杂度都是 nlogn,归并要 O(n) 额外空间。二分查找的坑在区间边界,选定左闭右闭或左闭右开就别再切。图遍历中 BFS 配队列、DFS 配栈或递归,邻接表下两者都是 O(V+E)。最后,DP 和贪心的判别:能证明”局部最优推全局最优”用贪心,否则老老实实写状态转移方程用 DP,01 背包用 DP、部分背包用贪心,这个对比例子记牢就能挡住大半选择题。
第二章 人工智能基础与机器学习理论:AI训练师的根骨
人工智能基础在清单里标了四颗星,再加上机器学习理论占整个理论考试的20%(最高权重),这一章是AI训练师赛项的根骨所在,必须讲透。
AI发展三幕剧
AI 这个词听着很玄,本质就是一句话——让机器表现出类似人的智能行为。但”怎么让机器智能”这件事,历史上走过三条完全不同的路,这就是常说的”三大学派”。
第一幕是符号主义,大概是上世纪 50 年代到 80 年代的主流。它的核心思想是:智能就是逻辑推理,人思考靠符号操作,那机器也一样,把知识写成”如果…那么…”的规则,机器就能推理。代表作是专家系统,比如给人看病的 MYCIN。这条路的问题是,现实世界太复杂,规则写不完,而且机器只能用人事先写好的规则,学不会新东西。所以后来遇到了瓶颈,史称”第一次 AI 寒冬”。
第二幕是连接主义,模拟人脑神经元的方式来做智能。1943 年就有人提出 MP 模型,1958 年 Rosenblatt 提出感知机,这俩是鼻祖。但当时感知机只能解决线性可分问题,连异或(XOR)都搞不定,被 Minsky 一顿批判,又进入了寒冬。直到 1986 年 Hinton 等人把反向传播算法(BP)真正推广开来,多层神经网络才重新火起来。【需网络查询确认:BP 算法最早由谁、哪一年提出,Hinton 1986 论文确切出处】
第三幕就是现在大家都熟悉的深度学习时代,大概从 2006 年 Hinton 提出”深度信念网络”开始预热,2012 年 AlexNet 在 ImageNet 上一战成名,把错误率刷下去一大截,从此 CNN、RNN、Transformer 一路狂奔。这背后的功臣其实是三样:大数据、GPU 算力、算法改进(比如 ReLU 激活函数解决梯度消失、Dropout 缓解过拟合)。
一句话总结这三幕:符号主义靠”人写规则”,连接主义靠”机器学权重”,深度学习是连接主义在算力和数据加持下的升级版。
应用领域速览
比赛常考的就三大块。
计算机视觉(CV),处理图像视频。经典任务有图像分类(这张图是猫还是狗)、目标检测(图里有哪些物体、位置在哪,用边界框标出来)、图像分割(每个像素属于哪个类)。背后主力模型从 CNN(LeNet、VGG、ResNet)一路发展到现在的 Vision Transformer。
自然语言处理(NLP),处理文本语音。任务包括文本分类、命名实体识别、机器翻译、问答系统、文本生成。传统方法有 TF-IDF、word2vec,后来 LSTM/GRU 一阵风,现在 Transformer 一统天下,BERT、GPT 都是它的变体。注意 Transformer 的核心是自注意力机制(Self-Attention),它解决了 RNN 不能并行、长距离依赖弱的问题。
推荐系统,给用户推东西。常见思路有协同过滤(”跟你相似的人喜欢啥,你就喜欢啥”)、基于内容(”你喜欢的东西的同类”)、混合推荐。评估常用 CTR(点击率)、AUC、NDCG。
感知机与反向传播:神经网络的起点
感知机是神经网络的”细胞”。它干的事很简单:输入一堆特征 x1、x2…xn,每个乘一个权重 w,加起来再过一个激活函数(最早是阶跃函数),输出 0 或 1。数学上就是 sign(w·x + b)。它的几何意义是:在特征空间里画一条线(高维是超平面),把两类点分开。但前提是数据得”线性可分”,也就是真的能一刀切开,否则感知机不收敛。
把感知机堆起来就是多层感知机(MLP)。输入层接特征,输出层给结果,中间夹着隐层。每个神经元做的事情还是”加权求和+激活”,关键是激活函数得是非线性的(ReLU、Sigmoid、Tanh),不然多层堆叠等价于一层,白搭。
那权重怎么学?这就是反向传播(BP)的活。前向传播算出预测值,跟真实标签比一下得到损失(比如交叉熵、MSE),然后把损失从输出层往回传,用链式法则算出每个权重的梯度,再用梯度下降更新权重。整个过程就是”前向算损失、反向传梯度、更新参数”三步循环。
这里有个常考的坑:梯度消失和梯度爆炸。Sigmoid 的导数最大才 0.25,多层一乘就趋近 0,梯度传不到浅层,这叫梯度消失;反过来权重太大,梯度越乘越大,叫梯度爆炸。解法:换 ReLU 激活函数(导数在正区间是 1)、BatchNorm 归一化、残差连接(ResNet 的核心)、梯度裁剪。
几个绕不开的基本概念
AI 是大目标,机器学习是实现这个目标的主流方法。它的定义可以这么记:让机器从数据中自动学习规律,并对新数据做出预测或决策,而不是靠人硬编码规则。注意三个关键词——数据、自动学习、预测。
样本、特征、标签这三个是一伙的。一条样本就是一条数据记录,比如一个人;特征是描述这条样本的属性,比如年龄、收入、浏览历史;标签是我们要预测的目标,比如”是否会买”。有标签的训练叫监督学习,没标签的就是无监督学习。
数据集要切成三份,这个切法几乎是必考点。训练集用来让模型学,占大头(一般 60%~80%);验证集用来调超参数和选模型,比如试不同的学习率、树的深度,看哪个在验证集上表现好;测试集只在最后用一次,评估模型的最终性能,绝不能拿测试集去调参,否则就是”偷看答案”,成绩虚高。一个常见做法是 K 折交叉验证:把训练集切 K 份,轮流拿其中一份当验证集,其余 K-1 份训练,K 次结果平均,数据少的时候特别有用。
泛化能力是机器学习的灵魂。一个模型在训练集上表现好不算本事,能在没见过的新数据上表现好才是真本事,这就是泛化。我们做的一切——正则化、Dropout、交叉验证、控制模型复杂度——归根结底都是为了提升泛化能力,而不是把训练集拟合得多么完美。
三种学习类型
这块用类比最好记。
监督学习,就像”有老师教”。老师(标签)告诉你每道题的标准答案,你做完对照答案调整。分两类任务:标签是离散的叫分类(猫狗识别、垃圾邮件判定),标签是连续的叫回归(预测房价、预测销量)。
无监督学习,就像”自己找规律”。没人给答案,你只能从一堆数据里发现结构。典型任务是聚类(把相似的样本凑一堆)和降维(把高维数据压到低维,方便可视化或去噪)。
强化学习,就像”试错得奖励”。没有标签,只有一个智能体(agent)在环境(environment)里行动,每做一个动作(action)环境给一个奖励(reward)反馈,智能体的目标是学出一个策略(policy),让长期累计奖励最大。关键词就是这五个:智能体、环境、状态、动作、奖励。典型例子是 AlphaGo 下围棋、机器人学走路、游戏 AI。常考的算法有 Q-Learning、SARSA、DQN(深度 Q 网络)、PPO。
注意一个易错点:强化学习的”奖励”和监督学习的”标签”不一样。标签是每条样本都有的标准答案,奖励是动作之后环境给的反馈,可能是延迟的(比如围棋要下到最后才知道输赢),而且不一定告诉你”应该怎么做”,只告诉你”做得怎么样”。
算法地图:分类、回归、聚类、关联
这块知识点最密,分四组讲。
分类算法。逻辑回归,名字叫”回归”其实是做二分类的。它在线性回归 w·x+b 的外面套一个 Sigmoid 函数,把输出压到 0~1 之间,解释成”正类的概率”。概率大于 0.5 就判正类。损失函数用对数损失(交叉熵)。多分类就用 Softmax 推广。优点是简单、可解释、给出概率;缺点是只能学线性边界,复杂关系搞不定。KNN(K 近邻),思想最朴素——“物以类聚”。来一个新样本,看它周围 K 个邻居,多数是哪类就判哪类。K 太小容易被噪声带偏(过拟合),K 太大决策边界太粗(欠拟合)。距离常用欧氏距离,也要注意特征要先标准化。KNN 是”懒惰学习”,训练阶段啥也不干,预测时才计算,所以预测慢但训练快。朴素贝叶斯,基于贝叶斯定理,加一个”朴素”假设——特征之间条件独立。这个假设很强、基本不成立,但实际效果出奇的好,尤其文本分类(垃圾邮件)。决策树,模拟人做判断的过程,一串 if-else。每个节点选一个特征做分裂,叶子节点给出预测。关键是”怎么选分裂特征”——经典标准有信息增益(ID3)、信息增益率(C4.5)、基尼系数(CART)。决策树最大的优点是可解释性强,最大的缺点是容易过拟合,解法是剪枝或上集成。随机森林,Bagging 的代表,建很多棵决策树,每棵用自助采样抽出的子数据集训练,分裂时只在部分特征里选最优,最后投票或平均,核心思想是”三个臭皮匠顶个诸葛亮”。SVM(支持向量机),找一条”最宽的马路”把两类点分开,间隔最大化,离马路最近的那些点叫支持向量,线性不可分时用核函数把数据映射到高维空间。梯度提升树,Boosting 的代表,和随机森林的”并行投票”不同,Boosting 是”串行纠错”——每棵新树专门去拟合前面所有树的残差。代表算法:GBDT、XGBoost、LightGBM、CatBoost。
这里 Bagging vs Boosting 的区别一定要讲清楚:Bagging 是并行、降方差、树独立;Boosting 是串行、降偏差、树有依赖、后一棵纠前一棵的错。这是高频考点。
回归算法。线性回归,最基础的,y = w·x + b,用最小二乘法(MSE 损失)求 w 和 b。岭回归(Ridge),线性回归加 L2 正则化,让权重都变小但不为 0,模型更平滑。Lasso 回归,线性回归加 L1 正则化,妙处是会产生稀疏解——很多权重直接变 0,相当于自动做特征选择。这也是 L1 vs L2 最核心的区别:L1 产生稀疏(特征选择),L2 产生平滑(权重都变小)。弹性网络(Elastic Net),L1 和 L2 混着用。
聚类算法。K-Means,最常用,指定 K 个簇,先随机放 K 个中心点,每个样本归到最近的中心,然后中心更新为该簇均值,反复迭代。缺点是得自己指定 K、对初始中心敏感、只适合凸形簇。层次聚类,建一棵聚类树,不用事先指定 K 但计算量大。DBSCAN,基于密度,优点是不用指定 K、能发现任意形状的簇、自带噪声检测。高斯混合(GMM),软聚类,给出每个点属于每类的概率,和 K-Means 的区别是硬划分 vs 软划分。
关联规则。这是购物篮分析那一套,”买啤酒的人也爱买尿布”。核心概念三个:支持度(Support)= 同时买 A 和 B 的交易数 / 总交易数,衡量规则有多普遍;置信度(Confidence)= P(B|A),衡量规则的可靠程度;提升度(Lift)= 置信度 / P(B),Lift>1 说明 A 确实促进 B,Lift=1 说明独立,Lift<1 说明 A 反而抑制 B。提升度是最容易被忽略但最能说明问题的指标。Apriori 算法经典但慢,FP-Growth 是它的优化,建 FP 树只扫两次数据库,比 Apriori 快很多。
评估指标:怎么判断模型好不好
分类任务里,混淆矩阵是基础中的基础。把预测和真实对照,分四种情况:真阳性(TP,预测正实际正)、真阴性(TN,预测负实际负)、假阳性(FP,预测正实际负,误报)、假阴性(FN,预测负实际正,漏报)。所有分类指标都从这四个数算出来。
准确率(Accuracy)= (TP+TN) / 总数,整体预测对的比例。看起来直观,但数据不平衡时会骗人——比如 99% 都是负样本,全猜负类准确率 99%,但正类一个没识别出来,模型其实没用。
精确率(Precision)= TP / (TP+FP),”我说的正类里有多少是真的”。召回率(Recall)= TP / (TP+FN),”真正的正类我抓住了多少”。
这俩是一对矛盾,用一个钓鱼类比就懂了:精确率高像是”每次下钩都钓到鱼,但可能漏掉很多”(只钓确定有鱼的点);召回率高像是”把所有有鱼的地方都撒网,但可能捞上来一堆杂物”(宁可错杀一千不可放过一个)。再换个医疗筛查的例子:筛查癌症,召回率重要(漏诊一个病人代价大),哪怕精确率低点也能接受;反过来垃圾邮件过滤,精确率重要(把正常邮件判成垃圾邮件很要命),漏几个垃圾邮件无所谓。
F1 是精确率和召回率的调和平均,2·P·R/(P+R),专门平衡这俩。ROC 曲线横轴是假阳性率 FPR,纵轴是真阳性率 TPR(就是召回率),曲线下面积就是 AUC。AUC 越接近 1 越好,0.5 就是瞎猜,好处是跟阈值无关、不受数据不平衡影响,是比赛最常用的指标之一。
对数损失(Log Loss)衡量预测概率和真实标签的差异,越接近真实概率分越低。它比单纯的准确率严格,因为它要求”概率预测得准”。
回归任务用 MSE(均方误差,对大误差敏感)、MAE(平均绝对误差,对异常值鲁棒)、R²(决定系数,0~1 之间,越接近 1 越好)。
过拟合与欠拟合:模型的两种”病”
过拟合就是”学生死记硬背”。平时刷题都会(训练集准确率 99%),一到考试就懵(测试集一塌糊涂),因为他把训练题的每个细节甚至错题都背下来了,没学到真正的规律。表现是训练误差低、测试误差高,模型太复杂、把噪声也学进去了。
欠拟合正好相反,”根本没复习”。连训练集都学不好,更别说测试集。原因是模型太简单、特征太少、训练不够。表现是训练误差就很高。
怎么判断:看训练误差和测试误差的差距。两个都高是欠拟合,训练低测试高是过拟合,两个都低才是理想状态。
过拟合的解法:增加数据、降低模型复杂度、正则化(L1/L2)、Dropout、早停、数据增强、集成学习。欠拟合的解法反过来:增加模型复杂度、加更多特征、训练更久、减小正则化强度。
数据不平衡与正则化
数据不平衡是分类任务里的常见坑。比如欺诈检测,正常交易 99.9%、欺诈 0.1%,模型很容易学成”全猜正常”,准确率 99.9% 但毫无价值。处理思路:重采样(过采样少数类用 SMOTE、欠采样多数类)、代价敏感学习(给少数类加权重)、换评估指标(看召回率、F1、AUC 而非准确率)、集成方法。
SMOTE 是重点:对少数类每个样本找 K 个近邻,在它和近邻连线上随机生成新样本,比直接复制更合理。注意 SMOTE 是过采样不是欠采样,这是常考易错点。
正则化统一收一下:在损失函数后面加一个对权重的惩罚项,防止权重过大。L1(Lasso)加 ||w||₁ 产生稀疏解做特征选择;L2(Ridge)加 ||w||² 让权重都变小但不为 0 模型平滑;弹性网络两者结合。神经网络里 Dropout、BatchNorm、Early Stopping 也都起到正则化作用。
最后说特征工程和降维。特征工程包括缺失值处理、编码(one-hot、label encoding)、归一化(Min-Max 缩到 0~1)、标准化(Z-score 均值 0 方差 1)、分箱、特征组合。”数据决定上限、模型逼近上限”。降维:PCA 无监督找方差最大方向,LDA 有监督找”类间方差大、类内方差小”方向,t-SNE 非线性降维主要用于可视化。PCA vs LDA 的核心区别:PCA 无监督看方差最多降到特征数,LDA 有监督看类别可分性最多降到类别数减 1。
人工智能与机器学习易错点速记
监督、无监督、强化三种学习,区别在”有没有标签”和”反馈形式”。分类和回归,看标签是离散还是连续。逻辑回归是分类不是回归,名字唬人。L1 产生稀疏做特征选择,L2 平滑权重都变小。Bagging 并行降方差(随机森林),Boosting 串行降偏差(XGBoost 一族)。精确率是”我说对的比例”,召回率是”真阳性抓住的比例”。筛查病人重召回,垃圾邮件重精确。F1 是两者的调和平均。过拟合是训练好测试差,欠拟合是训练就差。准确率在不平衡数据上会骗人,要看 F1、AUC、召回率。SMOTE 是少数类过采样方法,不是欠采样。训练集学、验证集调参、测试集最后评估一次,三个不能混用。PCA 无监督降维看方差,LDA 有监督降维看类可分性,t-SNE 主要用来可视化。支持度衡量规则普遍性,置信度衡量可靠性,提升度才是判断”是否真有促进”的关键,Lift=1 说明独立。KNN 预测慢训练快、要标准化特征;决策树易过拟合要剪枝;SVM 找最宽间隔、靠支持向量、用核技巧处理非线性。梯度消失换 ReLU、用 BatchNorm 和残差,梯度爆炸用梯度裁剪。强化学习的奖励是延迟的、是反馈不是答案,和监督学习的标签本质不同。
第三章 深度学习与生成式人工智能理论:从神经网络到大模型
深度学习权重15%、生成式AI权重10%,虽然清单里只给”人工智能基础”标了四颗星,但DL和生成式AI的理论部分会融入概念题,且是后续实操模块的理论根基,必须讲清核心。
激活函数:给网络加非线性
没有激活函数,多层网络无论堆多深都等价于一个线性变换,等于白搭。激活函数就是把线性结果”掰弯”的非线性函数。
Sigmoid 把任意实数压到 (0,1) 区间,输出可以解释成概率,所以二分类输出层常用它。但它有两个臭名昭著的毛病:一是梯度消失,当输入很大或很小时导数接近0,反向传播时梯度一层层衰减下去;二是输出非零中心,会让下一层梯度总往一个方向走,收敛慢。现在基本只在输出层用,隐藏层早就不用了。
ReLU 是当前隐藏层的绝对主力,公式就是 max(0, x),正区间导数恒为1,彻底解决了正区间的梯度消失问题,计算还特别快。它为什么能缓解梯度消失?因为只要神经元活着(输入大于0),梯度就能一路畅通地传回去,不会被层层相乘稀释掉。ReLU 的缺点是”神经元死亡”——如果某个神经元输入长期小于0,它的梯度永远是0。补救办法是 LeakyReLU,负区间给一个很小的斜率,让神经元还有一线生机。
Softmax 不是单值激活,而是把一个向量”归一化”成概率分布,所有分量之和为1,多分类输出层标配。
记住一句话:隐藏层默认 ReLU,二分类输出用 Sigmoid,多分类输出用 Softmax。
损失函数与优化器:网络怎么学
损失函数衡量”预测值离真实值有多远”。回归问题用 MSE 均方误差,分类问题用交叉熵,它衡量两个概率分布的差异,配合 Softmax 时梯度形式非常简洁(预测概率减真实概率),收敛快。
反向传播是训练的核心机制,本质是用链式法则从输出层往输入层逐层算梯度。算出梯度后,优化器决定怎么用这些梯度更新参数。
最基础的是 SGD 随机梯度下降,参数往梯度的反方向走一步,步长由学习率控制。Momentum 加了”动量”,把历史梯度做指数加权平均,相当于给小球加了惯性,能冲过小坑、减少震荡。RMSprop 给每个参数单独维护一个学习率,按梯度平方的滑动平均自适应缩放。Adam 是 Momentum 和 RMSprop 的结合体,同时维护梯度的一阶矩和二阶矩的滑动平均并做偏差修正,是目前最常用的”默认选择”,收敛快、调参少。比赛里如果题目问”哪个优化器对稀疏梯度友好、自适应学习率”,重点候选就是 Adam 和 RMSprop。
学习率不是越小越好——太小收敛慢,太大会在最优点附近震荡甚至发散。实战中常用学习率调度,比如余弦退火、Warmup。
CNN:卷积如何”看”图
CNN 解决了 MLP 参数爆炸的问题,靠的是两个核心思想:局部连接和权值共享。
卷积层用一个小小的卷积核(比如3×3)在整张图上滑动,每次只看局部一块,这就是局部连接。更妙的是,同一个卷积核在滑动过程中权重不变——这就是”权值共享”,可以形象理解为”用同一个滤镜扫整张图”。一张图里无论猫耳朵在左上角还是右下角,同一个滤镜都能识别出来,这叫平移不变性。这样一来,3×3 的核只有9个参数,远比全连接层省。
卷积层有几个关键超参数:卷积核大小、步长 stride、填充 padding。输出尺寸公式记一下:输出边长 = (输入边长 - 卷积核大小 + 2×填充) / 步长 + 1,向下取整。当步长为2、不填充时,输出尺寸会减半,相当于做了下采样。
池化层就是降采样,最常用的是最大池化 MaxPool,在窗口里取最大值,作用是缩小特征图、降低计算量、增加平移鲁棒性,没有参数。
批归一化 BatchNorm 是个里程碑式技巧:给每一层的输入做标准化,减去均值除以标准差,再用两个可学习参数缩放和偏移。好处是让每层输入分布稳定、允许用更大学习率、加速收敛。一句话总结:BatchNorm 就是给每层输入做标准化。注意它在训练和推理时行为不同——训练用 batch 统计量,推理用全量滑动平均。它和 LayerNorm 别混——BatchNorm 沿 batch 维度归一化(适合 CV),LayerNorm 沿特征维度归一化(适合 NLP/Transformer)。
经典架构发展脉络必须记清楚。LeNet 是 LeCun 在1998年搞的,第一个成功的 CNN,识别手写数字。AlexNet 在2012年 ImageNet 比赛一战成名,首次用 ReLU、Dropout、GPU 训练【需网络查询确认:AlexNet 具体年份与作者】。VGG 探索了”用堆叠小卷积核代替大卷积核”的思想,两个3×3卷积的感受野等于一个5×5,但参数更少、非线性更多。ResNet 是何恺明的代表作,提出了残差连接,让网络可以堆到152层甚至更深而不退化——核心是让输入直接跳过几层加到输出上,网络学的是”残差”而非”恒等映射”,解决了深层网络退化问题。Inception 走的是”多尺度并行卷积”路线。
RNN与LSTM:处理序列的记忆机器
RNN 专门处理序列数据(文本、语音、时序),核心思想是”当前输出不仅依赖当前输入,还依赖上一时刻的隐状态”。隐状态就像网络的短期记忆。但原始 RNN 有个致命问题:长程依赖,序列一长,反向传播时梯度要么消失要么爆炸。
LSTM 用精巧的”门控”机制解决了这个问题。它有三个门:遗忘门、输入门、输出门,外加一个细胞状态 cell state。可以用”记忆的写/读/遗忘”来类比:遗忘门决定从长期记忆里忘掉什么,输入门决定把新信息写进长期记忆多少,输出门决定基于当前记忆输出什么。细胞状态是一条贯穿全程的”传送带”,信息可以几乎无损地流过去,梯度也能顺畅回流,这就解决了长程依赖。
GRU 是 LSTM 的简化版,把三个门简化成两个(更新门和重置门),参数更少、训练更快,效果在很多任务上和 LSTM 接近。
双向 RNN 让序列的每个位置都能看到前后文信息,适合离线任务。序列到序列 Seq2Seq 是”编码器-解码器”结构,典型应用是机器翻译,后来有了注意力机制来缓解定长向量的信息损失瓶颈,再后来注意力机制演化成了 Transformer。
正则化与优化策略
Dropout 是隐藏层正则化的经典做法:训练时随机让一部分神经元”掉线”(输出置0),推理时全部启用但权重缩放。直观理解是每次训练的是不同子网络,相当于模型集成,强迫网络不要过度依赖个别神经元。BatchNorm 除了稳定分布本身也有正则化效果。L1 正则化产生稀疏权重做特征选择,L2 正则化让权重整体变小更平滑。早停 Early Stopping 是性价比最高的正则化:在验证集损失不再下降反而上升时停止训练。数据增强对图像特别有用——翻转、旋转、裁剪等。
优化策略这边还有权重初始化:不能全置0,也不能随机太大。Xavier 初始化适合 Sigmoid 和 Tanh,He 初始化(何恺明)适合 ReLU 族。迁移学习是”站在巨人肩膀上”——拿一个在大数据集上预训练好的模型,冻结底层或用小学习率微调顶层,在自己小数据集上往往能拿到不错的效果。
强化学习速览
核心框架是马尔可夫决策过程 MDP,由状态 S、动作 A、奖励 R、转移概率 P、折扣因子 γ 组成。”马尔可夫”的含义是”未来只依赖当前状态,与历史无关”。
Q-Learning 是值函数方法,维护一个 Q 表 Q(s,a),更新公式是经典的贝尔曼方程。问题是 Q 表只能处理离散小状态空间。DQN 用神经网络逼近 Q 函数,引入经验回放和目标网络两个技巧【需网络查询确认:DQN 论文年份】。策略梯度 Policy Gradient 直接参数化策略,适合连续动作空间但方差大。Actor-Critic 把值函数和策略函数结合起来,是现代强化学习的主流框架。PPO(近端策略优化)是 OpenAI 力推的算法,对策略更新幅度做裁剪限制,是 RLHF 里最常用的对齐算法之一,必须记住它和 RLHF 的关系。
生成模型家族:AE/VAE/GAN/扩散
生成模型的目标是”学数据分布,然后能采样生成新样本”。这家族有四大主流。
自编码器 AE 是个”压缩-还原”网络,编码器把输入压成低维向量,解码器再还原回去,学到的低维向量叫潜在表示。但 AE 本身不能直接生成新样本——因为潜在空间没有结构。
VAE 补上了这个缺口,它不学确定的潜在向量而是学一个分布,损失除了重建项还有 KL 散度项,这样潜在空间是连续平滑的,随便采点都能生成合理样本。VAE 生成相对模糊但训练稳定。
GAN 走的是完全不同的路子:生成器与判别器对抗博弈。经典比喻就是”造假者 vs 警察”——生成器造假钞试图骗过判别器,判别器努力分辨真假,两者在博弈中一起变强。GAN 生成的图比 VAE 锐利,但训练难、容易模式崩溃(只生成少数几种样本)。
扩散模型 Diffusion 是这两年图像生成的王者,Stable Diffusion、DALL-E 2 都是它的徒子徒孙。核心思想简单到让人意外:加噪再去噪。前向过程逐步给原图加高斯噪声加到纯噪声,反向过程训练一个网络学会从噪声逐步去噪还原成图。训练时网络预测每一步要去除的噪声,推理时从纯噪声开始迭代去噪生成图。优点是训练稳定、生成质量高,缺点是采样慢。Stable Diffusion 还把扩散过程搬到潜在空间(用 VAE 先压缩),大幅降低计算量。
Transformer:大模型的基石
Transformer 是 2017 年 Google 论文《Attention is All You Need》提出的,彻底颠覆了 RNN 统治 NLP 的格局【需网络查询确认:论文具体年份与作者】。它的核心是自注意力机制,让序列中每个位置都能直接和所有位置交互,可以高度并行。
自注意力怎么算?用一句话概括:每个词跟所有词算相关性。具体来说,对每个词的 embedding 做三次线性变换得到 Query、Key、Value 三个向量,然后用 Query 和所有 Key 做点积得到相关性分数,除以根号 dk 缩放,过 Softmax 归一化成权重,再用这些权重对 Value 加权求和。整个过程就是”我用 Query 去问所有人,谁的 Key 和我匹配度高就多取谁的 Value”。
多头注意力是自注意力的升级版:把 Q/K/V 分成多组,每组独立做注意力,最后拼起来再投影。好处是不同头可以关注不同子空间的关系——有的头关注语法、有的关注语义、有的关注长距离依赖。
位置编码是因为 Transformer 本身没有位置感知能力(注意力是顺序无关的),需要额外把位置信息加进去。原始论文用正弦余弦函数生成固定编码,也有可学习位置编码(BERT 用)、相对位置编码(T5 用)。后来有 ALiBi、RoPE 旋转位置编码等改进。
Transformer 整体结构是编码器-解码器堆叠。后来 GPT 只取解码器部分,BERT 只取编码器部分,T5 保留完整结构,这就引出了三条路线。
GPT与BERT:两条路线
虽然都基于 Transformer,但 GPT 和 BERT 的设计哲学完全相反,必须分清。
GPT 走的是自回归路线:用 Transformer 解码器,从左到右逐词预测下一个词,训练目标就是”语言建模”。它生成时一个词一个词往外蹦,天然适合生成任务。优点是生成流畅、能做零样本少样本,缺点是只能看到左边的上下文。
BERT 走的是双向编码路线:用 Transformer 编码器,训练时用掩码语言建模 MLM——随机遮住一些词,让模型基于上下文(左右双向)预测被遮的词。BERT 能看到完整上下文,理解能力强,做分类、问答效果很好,但天生不擅长生成。
简单记忆:GPT 自回归、单向、擅长生成;BERT 双向编码、擅长理解。T5 走中间路线,用编码器-解码器统一所有任务为”文本到文本”格式。LLaMA 是 Meta 开源的一系列大模型,结构上基本沿用 GPT 的解码器路线,是开源大模型的标杆【需网络查询确认:LLaMA 各版本发布时间和参数规模】。
多模态模型
CLIP 是 OpenAI 提出的,思想很优雅:用两个编码器分别编码图像和文本,让”匹配的图文对”在向量空间里靠近,”不匹配的”远离。CLIP 的图像编码器后来被无数多模态模型当”眼睛”用。BLIP 和 BLIP-2 引入 Q-Former 这个小网络,把冻结的图像编码器和冻结的大语言模型连起来【需网络查询确认:BLIP-2 发布年份】。LLaVA 是把 CLIP 图像编码器的输出通过一个投影层接到 LLaMA 上,让大模型能”看图说话”。GPT-4V 是 OpenAI 在 GPT-4 基础上加的多模态版本。
高效微调技术:LoRA为何这么火
大模型动辄几十亿几百亿参数,全量微调显存和算力都吃不消。于是诞生了一系列”参数高效微调”PEFT 方法。
LoRA 是当下最火的方法,核心思想:冻结原模型,只训练低秩小矩阵。原模型某层权重 W 是 d×d 的大矩阵,LoRA 不直接动 W,而是学两个小矩阵 A(d×r) 和 B(r×d) 的乘积加到 W 上,r 远小于 d(比如8或16)。这样可训练参数从 d² 降到 2dr。推理时可以把 BA 合并到 W 里,零额外开销。为什么有效?因为微调时权重更新 ΔW 本身就是低秩的。LoRA 的优势是参数少、效果接近全量、可以插拔复用。
Adapter Tuning 是在 Transformer 每层里插入小瓶颈模块,只训练这些小模块,参数量小但会增加推理延迟。Prefix Tuning 是在每个注意力层的 KV 前面拼上一些可学习的”虚拟前缀” token,只训练这些前缀。Prompt Tuning 更轻量,只在输入 embedding 层加可学习的 prompt token,参数最少但小模型上效果一般。P-Tuning v2 是 Prefix Tuning 的改进版,把可学习 prompt 加到每一层,对中小模型也有效。
比赛里如果问”哪个方法推理无额外开销”,答案是 LoRA(可合并权重);问”哪个最轻量只动输入”,是 Prompt Tuning;问”为什么 LoRA 火”,因为它参数少、效果好、可插拔、推理零开销。
训练方法:SFT、RLHF与DPO
把一个预训练基座模型变成好用的对话助手,要经过几个阶段的训练。
预训练阶段是大规模无监督地学语言知识,用海量文本做下一个词预测,得到基座模型。这一步烧钱烧卡,但模型还不会”听指令”。
SFT 监督微调是第一步对齐:用”指令-回答”对的高质量数据微调模型,让它学会按指令格式回答。SFT 是几乎所有对齐流程的起点。
RLHF 基于人类反馈的强化学习是 OpenAI 在 InstructGPT/ChatGPT 里发扬光大的方法【需网络查询确认:InstructGPT 论文年份】。流程分三步:先 SFT 得到初始策略,再训练一个奖励模型 RM(用人类对多个回答的偏好排序数据),最后用 RM 的打分当奖励,用 PPO 算法优化策略模型让回答得分更高。RLHF 效果惊艳但流程复杂、训练不稳定、要同时维护四个模型(策略、参考、奖励、价值)。
DPO 直接偏好优化是后来居上的简化方案,核心洞察是:在特定数学假设下,可以直接用偏好数据(A比B好)通过一个简洁的损失函数优化策略模型,省掉了显式的奖励模型和 RL 训练循环。DPO 训练更稳定、更简单,效果接近甚至超过 RLHF。
三者关系一句话总结:SFT 是基础对齐,RLHF 用强化学习+奖励模型做偏好优化,DPO 用监督学习方式直接做偏好优化、绕开 RL 的复杂性。一般流程是 SFT 先做,再用 RLHF 或 DPO 二选一做偏好对齐。
提示工程与RAG
提示工程不训练模型,靠设计输入提示来激发模型能力。零样本 Zero-shot 是直接给模型任务不加示例。少样本 Few-shot 是在提示里给几个”输入-输出”示例,让模型模仿模式。链式思维 CoT 是让模型”一步步思考”再给答案的技巧,提示里加”Let’s think step by step”或给带推理过程的示例,能显著提升数学、逻辑等复杂推理任务的准确率。
RAG 检索增强生成是把外部知识检索和大模型生成结合的范式。流程是:用户提问→把问题编码成向量→在知识库(向量数据库)里检索相关文档片段→把检索结果拼进提示→大模型基于检索内容生成答案。它解决的是大模型”知识过期”和”幻觉”问题。RAG 比微调更适合知识频繁更新的场景,成本也低。关键区别:RAG vs 微调——知识频繁更新选 RAG(不用重训),需要改变模型行为风格选微调。RAG 不能让模型学会新技能,只能让它查到新知识。
评估指标与工具库
评估指标按任务分要记清楚。文本生成用 BLEU 和 ROUGE。BLEU 看生成文本里 n-gram 有多少出现在参考文本里,侧重精确率,机器翻译常用。ROUGE 反过来,看参考文本里 n-gram 有多少被生成文本覆盖,侧重召回率,文本摘要常用。别记反。多模态对齐用 CLIP Score,衡量图像和文本匹配程度。大语言模型综合能力有 MMLU(英文多任务理解基准,覆盖57个学科)和 C-Eval(中文综合评估基准)。
工具库这块要认识这几个名字和它们的分工。Hugging Face Transformers 是事实上的模型库标准,提供几千个预训练模型的加载、推理、微调 API。PEFT 是 Hugging Face 出的参数高效微调库,封装了 LoRA、Adapter、Prefix Tuning 等方法。DeepSpeed 是微软的大模型训练加速库,提供 ZeRO 优化(把优化器状态、梯度、参数分片到多卡)。Accelerate 也是 Hugging Face 的,简化多卡、混合精度、分布式训练的样板代码。TRL 是 Transformers Reinforcement Learning 库,专门做 RLHF、DPO 等对齐训练。别把 DeepSpeed 和 Accelerate 混,也别把 PEFT 和 TRL 混。
深度学习与生成式AI易错点速记
激活函数:隐藏层默认 ReLU 不是 Sigmoid,ReLU 缓解梯度消失是因为正区间梯度恒为1;Softmax 只用于多分类输出层。卷积:权值共享是”同一个滤镜扫整张图”;池化没有参数;输出尺寸公式别忘了加2倍 padding。BatchNorm:给每层输入做标准化,训练用 batch 统计、推理用滑动平均;它和 LayerNorm 别混。ResNet:残差连接学的是”残差”不是”恒等映射”,解决的是退化问题。LSTM 三个门:遗忘门忘、输入门写、输出门读,细胞状态是传送带;GRU 是简化版三个门变两个。GAN:生成器和判别器对抗博弈不是合作;模式崩溃是只生成少数样本。扩散模型:加噪再去噪,训练预测噪声、推理从纯噪声迭代去噪;Stable Diffusion 在潜在空间扩散才省算力。Transformer:自注意力是每个词跟所有词算相关性,用 Q/K/V;多头是分多组并行算;位置编码是因为注意力本身无位置感知。GPT vs BERT:自回归单向生成 vs 双向编码理解,这个对比几乎必考。LoRA:冻结原模型只训练低秩小矩阵,可合并权重所以推理零开销;Adapter 会增加推理延迟;Prompt Tuning 最轻量只动输入。SFT/RLHF/DPO:SFT 是监督微调打基础,RLHF 用奖励模型+PPO 做偏好优化(复杂不稳定),DPO 直接用偏好数据做监督式优化(简单稳定),一般先 SFT 再二选一对齐。PPO 是 RLHF 里最常用的对齐算法。提示工程:零样本无示例、少样本有示例、CoT 让模型逐步推理;RAG 是检索+生成解决幻觉,不是微调。评估指标:BLEU 重精确率用于翻译,ROUGE 重召回率用于摘要,别记反;CLIP Score 评图文匹配;MMLU 是英文综合、C-Eval 是中文综合。
第四章 操作系统:管资源、管进程的大管家
操作系统★★★,核心功能是进程管理、内存管理、文件管理、设备(I/O)管理。
进程与线程
先记住一句话:进程是资源分配的基本单位,线程是 CPU 调度的基本单位。
打个比方,进程像”独立的车间”,每个车间有自己的厂房(地址空间)、仓库(打开的文件)、账本(资源清单),相互之间天然隔离;线程像”车间里的工人”,多个工人共用同一个车间的厂房和仓库,但各自手里有自己的一份活儿(程序计数器、寄存器、栈)。
进程和线程的关键区别:进程间通信开销大(要跨地址空间,靠管道、消息队列、共享内存、信号量),线程间通信开销小(直接读写同一进程内的共享变量,但要加锁防冲突);创建销毁进程比线程贵得多;一个进程崩了通常不影响别的进程,但一个线程崩了很可能把整个进程拖垮。
进程有三个基本状态:就绪(万事俱备只差 CPU)、运行(正在 CPU 上跑)、阻塞(等 I/O 或事件)。注意阻塞不能直接到运行,必须先回到就绪。
调度算法
调度算法记几个经典的就行,会考”什么场景用什么、会不会饿死”。
先来先服务(FCFS):谁先来谁先跑,简单公平,但短任务会被长任务拖死。短作业优先(SJF):优先跑估计时间最短的,平均等待时间最短,但长任务可能永远轮不上(饿死)。优先级调度:按优先级高低跑,同样可能饿死,解决办法是”老化”(aging),等得越久优先级慢慢抬高。时间片轮转(RR):每个进程给一个时间片,用完就被踢到就绪队列尾部,公平响应快,适合分时系统。多级反馈队列(MLFQ):集大成者,多个队列不同优先级,新进程进高优先级队列,用完时间片降级,是最常考的”既能响应快又能兼顾吞吐”的算法。
判断题里常挖的坑:SJF 是非抢占的,SRTF(最短剩余时间优先)才是抢占版本;时间片轮转是抢占式的。
内存管理:分页、分段与虚拟内存
分页(Paging):把物理内存切成固定大小的页框,把逻辑地址切成同样大小的页,通过页表做映射。优点是没有外部碎片,缺点是有内部碎片(最后一页填不满)。地址结构是”页号 + 页内偏移”。
分段(Segmentation):按程序的逻辑结构划分(代码段、数据段、栈段),段大小不固定。优点是共享和保护方便,缺点是有外部碎片。段页式:先分段再分页,结合两者优点。
分页有内部碎片无外部碎片,分段有外部碎片无内部碎片,这个对比要记牢。
虚拟内存:让程序以为自己有很大内存,实际只有一部分在物理内存里,其余在磁盘的交换区。靠”请求调页”实现——访问的页不在内存时触发缺页中断,操作系统把它从磁盘调入,可能还要换出一页(页面置换算法)。
页面置换算法必记。最佳置换(OPT):换掉将来最长时间不被用的页,理论最优但无法实现。先进先出(FIFO):换掉最早进来的,简单,但有 Belady 异常——分配的页框变多反而缺页率上升(经典考点)。最近最久未使用(LRU):换掉最久没被访问的,效果好但实现开销大。时钟算法(CLOCK / 二次机会):LRU 的近似实现。注意 FIFO 有 Belady 异常,LRU 和 OPT 不会,这是高频考点。
文件系统与I/O
文件物理存放三种方式:连续分配(快、有碎片)、链接分配(链表串起磁盘块,没外部碎片但不支持随机访问)、索引分配(给每个文件建个索引表,i 节点 inode 就是这种思路,Linux/Unix 用)。
I/O 管理记住三种控制方式:程序查询(CPU 一直问,最笨)、中断驱动(I/O 完成 CPU 通知,主流)、DMA(直接内存访问,大批量数据不经过 CPU,由 DMA 控制器搬,适合磁盘等高速设备)。SPOOLing(假脱机)是把独占设备虚拟成共享设备,典型例子是打印机排队。
第五章 编程语言:以Python为主线
赛项以 Python 为主,但题目里会混 Java、C++ 的基本语法。
基础语法与控制结构
Python 的几个语言特性先钉死:动态类型(变量不用声明类型,运行时确定)、强类型(不会偷偷做隐式类型转换)、缩进表示代码块(不用大括号)、解释执行。
基本数据类型:int(任意精度,不会溢出)、float、bool(True/False,注意首字母大写)、str(不可变)、None。容器类型:list(可变、有序)、tuple(不可变、有序)、dict(键值对,Python 3.7+ 保证插入顺序)、set(无序、不重复)。
几个 Python 容易错的点:is 比较的是身份(对象 id),== 比较的是值;可变默认参数是经典坑——def f(x, lst=[]) 会让 lst 在多次调用间共享,正确做法是用 lst=None 然后内部判断初始化;列表推导式 [x for x in ... if ...] 是高频考点。
面向对象三件套:封装、继承、多态
封装:把数据和操作数据的方法绑在一起,对外隐藏内部细节。Python 里靠下划线约定:单下划线 _name 表示”内部用”(约定),双下划线 __name 触发名称改写(name mangling)。Java 和 C++ 有真正的 private/protected/public 关键字。
继承:子类获得父类的属性和方法。Python 写法是 class Dog(Animal):,支持多继承。Java 是单继承(一个类只能 extends 一个父类),但可以实现多个接口;C++ 支持多继承,有著名的”菱形继承”问题靠虚继承解决。
多态:同一个方法调用,不同对象表现不同行为。Python 是动态语言,多态是”鸭子类型”——只要对象有这个方法就能调用。Java/C++ 靠方法重写(override)和父类引用指向子类对象实现运行时多态,C++ 还需要把方法声明为 virtual 才能动态绑定。
构造方法:Python 是 __init__(初始化,不是创建),Java 和 C++ 是与类同名的构造函数。Python 调父类构造要用 super().__init__()。
类方法、静态方法、实例方法的区别:实例方法第一个参数是 self;类方法用 @classmethod 装饰,第一个参数是 cls;静态方法用 @staticmethod,没有隐式参数。
异常处理
Python 异常用 try/except/else/finally 结构。关键考点:except 的捕获顺序要从具体到一般(子类异常在前,父类 Exception 在后);else 是没异常才跑;finally 一定跑,哪怕 try 里有 return,finally 也会在 return 之前执行(这个常考)。抛异常用 raise ValueError("xxx"),自定义异常继承 Exception 类。
Java 的异常分受检异常(checked,必须 try-catch 或 throws)和非受检异常(unchecked,RuntimeException 子类),这是 Java 特有的概念,Python 没有这种区分。
第六章 计算机网络:数据怎么传
网络★★★,占分高,概念多但相对好理解。
OSI与TCP/IP模型
OSI 七层模型从下到上:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。用”寄快递分层”来类比很好记:物理层管”用什么车走什么路”(比特流传输);数据链路层管”两个相邻站点之间怎么可靠传一帧”(MAC 地址寻址,以太网、Wi-Fi 在这层);网络层管”包裹怎么从源头路由到目的地”(IP 协议在这层);传输层管”端到端的一次完整通信”(TCP/UDP,端口号);会话层管”建立、管理、终止会话”;表示层管”数据怎么编码、加密、压缩”;应用层管”给用户应用提供网络服务”(HTTP、FTP、DNS、SMTP)。
实际中会话层和表示层基本并入应用层,所以 TCP/IP 四层模型更贴近现实:网络接口层、网际层(IP)、传输层(TCP/UDP)、应用层。也有教材把 TCP/IP 写成五层模型,是一回事。
记忆口诀(从下到上):物、数、网、传、会、表、应。每层对应的设备:物理层有中继器、集线器(hub);数据链路层有交换机(switch)、网桥;网络层有路由器(router);传输层以上是网关、防火墙。
数据封装过程也要会:发送方从上到下,每经过一层加一个首部(应用数据→加 TCP 头成段 segment→加 IP 头成包 packet→加帧头帧尾成帧 frame→变成比特流);接收方反过来一层层剥。这个”封装—解封装”是高频考点。
TCP与UDP
TCP 像打电话要确认:建立连接(三次握手)、传输时确认收到、丢了重传、按顺序到达,可靠但慢,开销大。UDP 像寄明信片:发出去就不管了,不建连接、不确认、不重传、不保证顺序,不可靠但快、开销小。
三次握手(建立 TCP 连接):客户端发 SYN,序号 seq=x;服务器回 SYN+ACK,seq=y,确认号 ack=x+1;客户端再回 ACK,ack=y+1,连接建立。为什么要三次?两次的话,服务器无法确认客户端的接收能力,也可能因为网络滞留的旧连接请求错误地建立连接。
四次挥手(断开连接):客户端发 FIN;服务器回 ACK(此时服务器还能发未发完的数据);服务器发完数据后发 FIN;客户端回 ACK,进入 TIME_WAIT(等 2 个最大报文段寿命 MSL,确保服务器收到 ACK 且让旧报文消亡)。
TCP 可靠性靠这些机制保证:序号和确认号、重传、流量控制(滑动窗口)、拥塞控制(慢启动、拥塞避免、快重传、快恢复)。
应用场景:TCP 用于要可靠的(HTTP/HTTPS、FTP、SMTP、SSH);UDP 用于要快、能容忍丢包的(DNS 查询、视频直播、语音通话、游戏、DHCP)。
HTTP与HTTPS
HTTP 是超文本传输协议,基于 TCP,默认端口 80。它是无状态的(每次请求相互独立,所以才有 Cookie/Session 来维持状态),请求-响应模式。
HTTP 方法要记:GET(获取资源,幂等、无副作用)、POST(提交数据、创建资源,非幂等)、PUT(更新/替换资源,幂等)、DELETE(删除资源,幂等)。幂等性是指多次执行结果相同,这个概念常考。
HTTP 状态码分五类,记住第一位代表什么:1xx 信息、2xx 成功(200 OK、201 Created)、3xx 重定向(301 永久重定向、302 临时重定向、304 Not Modified 缓存)、4xx 客户端错误(400 请求语法错、401 未认证、403 禁止访问、404 找不到)、5xx 服务器错误(500 内部错误、502 网关错误、503 服务不可用、504 网关超时)。注意 401 是未认证、403 是禁止访问,别混。
HTTPS = HTTP + SSL/TLS 加密,默认端口 443。它解决的是 HTTP 明文传输不安全的问题,提供加密(防窃听)、身份认证(防冒充,靠证书)、完整性校验(防篡改)。
HTTPS 握手简略过程:客户端发请求带上自己支持的加密套件;服务器返回选定的加密套件和数字证书(里面有公钥,由 CA 机构签名);客户端验证证书合法性,然后生成一个随机的会话密钥(对称密钥),用服务器公钥加密发过去;之后双方用这个对称密钥加密通信。这里有个核心思想:非对称加密用来安全交换对称密钥,对称加密用来加密实际数据——因为非对称加密慢、对称加密快。
IP地址与子网划分
IPv4 按网络号位数分类。A 类:第一位 0,范围 1.0.0.0 到 126.255.255.255,默认掩码 /8,127 是环回地址。B 类:前两位 10,范围 128.0.0.0 到 191.255.255.255,默认掩码 /16。C 类:前三位 110,范围 192.0.0.0 到 223.255.255.255,默认掩码 /24。D 类组播(224 到 239),E 类保留(240 到 255)。
私有 IP 地址范围(不能在公网路由,用于内网)必背:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。特殊地址:127.0.0.0/8 环回、0.0.0.0 本机所有地址、255.255.255.255 广播、169.254.0.0/16 自动私有地址(DHCP 拿不到地址时分配)。
子网划分是计算题高频考点。掩码把 IP 分成”网络位 + 主机位”,借主机位做子网位就能把一个大网切成多个小网。计算套路:给定 IP 和掩码位数 n,网络地址 = IP 与子网掩码按位与;广播地址 = 网络地址的主机位全置 1;可用主机范围 = 网络地址 +1 到 广播地址 -1;可用主机数 = 2 的(32-n)次方减 2(去掉网络号和广播)。CIDR(无类别域间路由)就是用 /n 表示掩码位数,不再死守 A/B/C 分类。NAT(网络地址转换)让内网多台机器共用一个公网 IP 出网。
第七章 计算机硬件与数学基础:了解即可
硬件和数学都标★,抓关键点带过。
硬件组成与指令集
冯·诺依曼架构是基础:计算机由运算器、控制器、存储器、输入设备、输出设备五大部分组成,核心思想是”存储程序”——程序和数据一起存放在存储器里,按地址顺序执行。现代 CPU 把运算器和控制器集成在一起,加上寄存器、缓存。
指令集架构(ISA)两大流派。CISC(复杂指令集):指令多、长度可变、单条指令能干复杂的事、靠微代码实现。典型代表是 x86,由 Intel 主导,统治桌面和服务器,性能强但功耗高。RISC(精简指令集):指令少、长度固定、每条指令只干一件简单事、单周期执行、用 Load-Store 架构(只有加载/存储指令访问内存,运算只在寄存器间)、流水线高效、功耗低。典型代表是 ARM,统治移动设备和嵌入式,手机平板几乎全是 ARM。
一句话区分:x86 是 CISC,性能强功耗高,电脑服务器用;ARM 是 RISC,功耗低效率高,手机嵌入式用。现代 x86 内部其实把 CISC 指令解码成类似 RISC 的微操作再执行,是”外表 CISC、内核 RISC”的混合设计,但 ISA 层面仍属 CISC。两家指令集不兼容,给 x86 编译的程序不能直接在 ARM 上跑,需要重新编译或转译(如苹果的 Rosetta 2)。
存储器层次
存储器层次结构从快到慢、从小到大、从贵到便宜:寄存器(在 CPU 内,最快,纳秒级)→ 高速缓存 Cache(L1/L2/L3)→ 主存内存(DRAM,GB 级,百纳秒级)→ 外存硬盘(SSD 固态盘、HDD 机械盘,TB 级,毫秒级)。
核心思想是”局部性原理”:时间局部性(刚用过的还会再用)和空间局部性(用了一个地址,附近地址很可能也会用),所以加缓存能极大提升平均访问速度。Cache 命中率是常考点,平均访问时间 = 命中率 × 缓存时间 + (1 - 命中率) × 内存时间。
线性代数与微积分要点
矩阵运算要熟:加法(同形)、乘法(A 是 m×n,B 是 n×p,结果 m×p,注意不满足交换律 AB ≠ BA,但满足结合律和分配律)、转置(行列互换)、逆矩阵(方阵且行列式不为 0 才有逆)。
特征值分解(EVD):对方阵 A,如果能找到特征值 λ 和特征向量 v 满足 Av = λv,那么 A 可以分解成 PDP⁻¹ 的形式。这个在主成分分析(PCA)降维里直接用——协方差矩阵的特征向量就是主成分方向,特征值大小代表该方向上的方差大小。补充奇异值分解(SVD),对任意矩阵都能分解成 UΣVᵀ,比特征值分解更通用,推荐系统、图像压缩里常用。
微积分核心是导数和梯度。导数是函数在某点的瞬时变化率;梯度是多元函数对各变量偏导数组成的向量,方向指向函数值上升最快的方向,大小是这个最快上升率。所以梯度下降要往梯度的反方向走。链式法则要会——复合函数求导一层层乘,神经网络反向传播就是靠链式法则算梯度。
概率论与贝叶斯
贝叶斯定理是重点中的重点,公式:P(A|B) = P(B|A) × P(A) / P(B)。含义:在观察到 B 发生后,A 发生的后验概率,等于(A 发生时 B 的似然 × A 的先验概率)/ B 的证据因子。
举例:某病发病率 1%(先验),检测准确率 99%(真阳性和真阴性都是 99%),你检测阳性,真正患病的概率是多少?套公式:P(病|阳) = 0.99 × 0.01 / (0.99 × 0.01 + 0.01 × 0.99) = 0.5。结果只有 50%,这跟直觉差很远,是经典的”基础率忽视”案例,考试爱出。
正态分布(高斯分布):钟形曲线,由均值 μ 和方差 σ² 决定,记作 N(μ, σ²)。性质:约 68% 的数据落在 μ±σ 内,约 95% 落在 μ±2σ 内,约 99.7% 落在 μ±3σ 内(3σ 原则)。中心极限定理:大量独立同分布随机变量之和近似服从正态分布。
期望值 E(X):随机变量取值的加权平均。线性性质:E(aX + b) = aE(X) + b,Var(aX + b) = a²Var(X)(别忘了平方)。
梯度下降与牛顿法
梯度下降是机器学习最常用的优化方法:从初始点出发,每步沿负梯度方向走一段,步长由学习率控制。公式 θ = θ - η ∇J(θ)。学习率太大震荡发散,太小收敛慢。变体有批量梯度下降(BGD,用全部数据)、随机梯度下降(SGD,每次用一个样本)、小批量梯度下降(MBGD,每次用一小批,最常用)。改进方法有动量法、AdaGrad/RMSProp/Adam(自适应调整每个参数的学习率),Adam 是目前最常用的。
牛顿法:用二阶导数(海森矩阵)信息,迭代公式 θ = θ - H⁻¹∇J。收敛比梯度下降快(二次收敛 vs 一次收敛),但每次要算海森矩阵的逆,计算量和存储量大,维度高时不可行。判断题注意:梯度下降是一阶方法(只用一阶导数),牛顿法是二阶方法;牛顿法不一定总比梯度下降好,目标函数非凸时可能收敛到鞍点。
第八章 伦理法律与信息安全:分不高但容易丢
这块权重只有5%,但判断题、多选题特别容易丢分,因为概念细且容易混。
数据隐私与安全(已查证日期)
数据隐私相关法律日期必须记准,以下均已通过网络查证。
GDPR(《通用数据保护条例》)是欧盟法规,2016 年 4 月通过,2018 年 5 月 25 日正式施行。要点:适用范围广(不管企业在不在欧盟,只要处理欧盟公民个人数据就受管辖)、强调用户知情同意、有”被遗忘权”(要求删除数据)、违规最高罚款 2000 万欧元或全球年营业额 4%(取高者)。
中国《个人信息保护法》2021 年 8 月 20 日通过,2021 年 11 月 1 日起施行。核心原则:合法、正当、必要、诚信;以”告知—同意”为核心规则;禁止”大数据杀熟”;处理敏感个人信息、向他人提供、跨境传输等环节要取得单独同意。
数据安全这块要分清三个法:网络安全法(2017 年施行,管网络运行安全)、数据安全法(2021 年 9 月 1 日施行,管数据处理活动,建立数据分类分级保护制度)、个人信息保护法(2021 年 11 月 1 日施行,管个人信息处理)。三者构成我国网络数据法律体系主干。
网络安全等级保护(等保 2.0):核心标准是 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》,2019 年 5 月 10 日发布,2019 年 12 月 1 日实施。把信息系统分五个保护等级(一级自主保护级到五级专控保护级),三级以上每年要做测评。等保 2.0 相比 1.0 把云计算、大数据、物联网、移动互联、工业控制纳入监管,强调”一个中心、三重防护”。不开展等级保护属于违法(依据网络安全法)。
知识产权:专利权保护技术发明(发明专利保护期 20 年,实用新型 10 年,外观设计 15 年,均自申请日起算);著作权自作品创作完成自动产生(不需要登记),保护期一般是作者终生加 50 年;商标权保护期 10 年,可续展。软件著作权属于著作权,登记不是取得条件但便于举证。
AI伦理
算法偏见:训练数据里的偏见会被模型放大,导致对某些群体不公平。缓解办法:数据均衡采样、公平性约束、去偏算法。
可解释性:深度学习是”黑箱”,决策过程不透明,在医疗、金融、司法等高风险场景不可接受。应对有可解释 AI(XAI)方向,比如 LIME、SHAP 等方法。
其他要点:隐私保护(差分隐私、联邦学习能在不直接共享原始数据前提下训练模型);责任归属(自动驾驶出事故谁负责、AI 生成内容侵权谁担责,目前法律还在完善【需网络查询确认:国内具体 AI 责任划分细则仍在制定中】);对齐问题(让 AI 目标和人类价值观对齐,避免有害输出)。
AI 伦理原则国际上有共识的几条:公平、透明、可解释、隐私保护、安全可靠、责任可追溯、以人为本。我国发布的《新一代人工智能伦理规范》强调”增进人类福祉、促进公平公正、保护隐私安全、确保可控可信、强化责任担当、提升伦理素养”等原则【需网络查询确认:该规范由新一代人工智能治理专业委员会 2021 年发布,具体发布日期建议核对】。
信息安全与常见攻击
网络安全基础:CIA 三要素——机密性(Confidentiality,防泄露)、完整性(Integrity,防篡改)、可用性(Availability,防中断)。这是安全设计的根本目标,所有安全措施都在保护这三样。
密码学原理分对称加密和非对称加密。对称加密:加密和解密用同一把密钥,快,适合大数据量。代表算法 AES(目前主流)、DES(老了,56 位密钥不安全,已淘汰)。问题是密钥怎么安全分发。非对称加密:一对密钥(公钥加密、私钥解密,或反过来私钥签名、公钥验签),慢,适合小数据和密钥交换。代表 RSA(基于大数分解难题)、ECC(椭圆曲线)。实际中混合用:用非对称加密安全交换一个对称密钥,再用对称密钥加密实际数据(HTTPS 就是这么干的)。数字签名 = 用私钥对消息摘要加密,接收方用公钥验证,保证来源真实和内容完整。哈希函数(MD5、SHA-1、SHA-256)把任意长数据压成定长摘要,用于完整性校验,单向不可逆。
常见攻击各用一句话讲清原理。SQL 注入:攻击者在输入框里塞 SQL 代码(比如 ' OR 1=1 --),程序没做参数化校验,把输入拼进 SQL 语句执行,导致绕过登录、拖库。防御:参数化查询、输入过滤、最小权限原则。XSS(跨站脚本):攻击者把恶意 JavaScript 注入到网页(比如评论区存一段脚本),其他用户访问时脚本在浏览器执行,可窃取 Cookie、劫持会话。防御:输出转义、CSP、HttpOnly Cookie。CSRF(跨站请求伪造):借用用户已登录身份发请求,防御靠 Token 和 Referer 校验。中间人攻击(MITM):攻击者插在通信双方中间,伪装成双方互相通信,能窃听、篡改数据。防御:HTTPS(靠证书认证服务器身份)、证书锁定、VPN。DDoS(分布式拒绝服务):海量请求打瘫服务,防御靠流量清洗和 CDN。
安全防护措施:防火墙(在网络边界过滤流量)、入侵检测系统 IDS(只检测报警)/入侵防御系统 IPS(检测并阻断)、VPN(加密隧道)、最小权限原则、多因素认证 MFA、数据备份(3-2-1 备份原则)、安全审计日志。
伦理安全易错点速记
GDPR 2018 年 5 月 25 日施行;个人信息保护法 2021 年 11 月 1 日施行;数据安全法 2021 年 9 月 1 日施行;等保 2.0 标准号 GB/T 22239-2019,2019 年 12 月 1 日实施。这四个日期最容易混,单独记牢。对称加密快但密钥分发难(AES、DES),非对称加密慢但解决分发(RSA、ECC);数字签名是私钥签、公钥验;哈希单向不可逆用于完整性。SQL 注入是输入拼进 SQL,XSS 是脚本注入网页在浏览器执行,CSRF 是借登录态发请求,中间人攻击是夹在双方中间窃听篡改——四个攻击原理各一句话别混。CIA 三要素:机密性、完整性、可用性。
结语:备考策略与临场建议
讲到这里,模块一的全部知识脉络就串完了。最后给你几条备考和临场的建议。
第一,按权重分配复习精力。机器学习20%和计算机基础20%是两个大头,加起来快占一半,这两块的概念题要反复刷、确保不丢分。数据结构、算法、人工智能基础这三颗星的内容是性价比最高的,讲透了就能拿分。生成式AI和伦理安全虽然占比不高,但概念密集、容易在多选判断上翻车,不能完全放掉。
第二,多选题是分水岭。单选和判断靠记忆,多选靠理解。多选2分一道,错选漏选都不得分,是最容易拉开差距的题型。复习时对每个概念不要只记”是什么”,还要记”包含哪些、不包含哪些、跟谁容易混”,比如”下列哪些可以缓解过拟合”这种题,你必须能精确区分正则化、Dropout、早停、数据增强这些都算,而”增加模型复杂度”不算。
第三,善用生活化类比锚定记忆。这篇文档里给的大量类比——栈像叠盘子、TCP像打电话、GAN像造假者与警察、LoRA像给原模型打补丁——不是为了好玩,而是为了在考场上能快速激活记忆。把类比和概念绑死,看到题就能条件反射。
第四,标注了【需网络查询确认】的内容,临考前花半小时集中核对一遍。尤其是各种模型和算法的提出年份、作者、版本时间线这类细节,单选题爱出”某某算法由谁在哪一年提出”,记不准就丢分。
第五,理论题别死磕一道。90分钟160道题,平均每题不到34秒,遇到不会的果断标记跳过,最后再回来。概念题不会就是不会,多想一分钟也不会突然开窍,反而浪费了后面会做的题的时间。
模块一是整场比赛的基础盘,理论扎实了,后面三个实操模块遇到概念性判断(比如选什么算法、用什么指标、怎么调参)也更有底气。祝你备考顺利,比赛通过。