Skip to content

Commit 7b06632

Browse files
authored
Merge pull request #30 from LiuFan-libiao/master
Update AI算法文档内容和图片路径
2 parents b193e30 + 7ccb2db commit 7b06632

26 files changed

Lines changed: 1626 additions & 806 deletions

File tree

docs/04-ai-algorithms/computer-vision/cv-fundamentals.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@
1313
经过处理后符合标准正态分布,即均值为0,标准差为1
1414
- 非线性归一化
1515
使用非线性函数log、指数、正切等,如y = 1-e^(-x),在x∈[0, 6]变化较明显, 用在数据分化比较大的场景
16-
![20210126230537122.png](/images/v2-a08645e392a6a5cb49e271e5310f0dd8_1440w.png)
16+
![20210126230537122.png](./images/20210126230537122.png)
17+
18+
## 3. 介绍一下空洞卷积的原理和作用
19+
空洞卷积(Atrous Convolution)也叫做膨胀卷积、扩张卷积,最初的提出是为了解决图像分割在用下采样(池化、卷积)增加感受野时带来的特征图缩小,后再上采样回去时造成的精度上的损失。空洞卷积通过引入了一个扩张率的超参数,该参数定义了卷积核处理数据时各值的间距。
20+
![v2-a08645e392a6a5cb49e271e5310f0dd8_1440w.png](./images/v2-a08645e392a6a5cb49e271e5310f0dd8_1440w.png)
1721
可以在增加感受野的同时保持特征图的尺寸不变,从而代替下采样和上采样,通过调整扩张率得到不同的感受野不大小:
1822
a. 是普通的卷积过程(dilation rate = 1),卷积后的感受野为3
1923
b. 是dilation rate = 2的空洞卷积,卷积后的感受野为5
@@ -196,7 +200,10 @@ tensorflow 图结构的创建是静态的,即图首先被"编译",然后在
196200

197201
池化层没有可以训练的参数,因此在卷积神经网络的训练中,池化层只需要将误差传递到上一层,并不需要做梯度的计算。要追求一个原则,那就是梯度之和不变。
198202
- average pooling: 前向传播是取某特征区域的平均值进行输出,这个区域的每一个神经元都是有参与前向传播了的,因此,在反向传播时,框架需要将梯度平均分配给每一个神经元再进行反向传播;
199-
![KocaU1zbxnXYsyJ.jpg](/images/CZnUSwEcFy84JVL.jpg)
203+
![KocaU1zbxnXYsyJ.jpg](./images/KocaU1zbxnXYsyJ.jpg)
204+
205+
- max pooling: 前向传播是取某特征区域的最大值进行输出,这个区域仅有最大值神经元参与了前向传播,因此,在反向传播时,框架仅需要将该区域的梯度直接分配到最大值神经元即可,其他神经元的梯度被分配为0且是被舍弃不参与反向传播的,但如何确认最大值神经元,这个还得框架在进行前向传播时记录下最大值神经元的Max ID位置。
206+
![CZnUSwEcFy84JVL.jpg](./images/CZnUSwEcFy84JVL.jpg)
200207

201208

202209
**参考资料**[池化层(pooling)的反向传播是怎么实现的](https://blog.csdn.net/Jason_yyz/article/details/80003271)

docs/04-ai-algorithms/computer-vision/object-detection.md

Lines changed: 165 additions & 8 deletions
Large diffs are not rendered by default.

docs/04-ai-algorithms/index.md

Lines changed: 105 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,105 @@
1-
# AI算法
2-
3-
## 📂 分类目录
4-
5-
### 🤖 [机器学习](machine-learning/)
6-
7-
#### [基础理论](machine-learning/fundamentals/)
8-
- [机器学习基础面试题](machine-learning/fundamentals/ml-fundamentals.md)
9-
- [过拟合与欠拟合](machine-learning/fundamentals/overfitting-underfitting.md)
10-
- [梯度下降](machine-learning/fundamentals/gradient-descent.md)
11-
- [HMM](machine-learning/fundamentals/HMM.md)
12-
- [CRF](machine-learning/fundamentals/CRF.md)
13-
- [Prophet](machine-learning/fundamentals/Prophet.md)
14-
15-
#### [监督学习](machine-learning/supervised-learning/)
16-
- [线性回归/逻辑回归](machine-learning/supervised-learning/linear-logistic-regression.md)
17-
- [DecisionTree](machine-learning/supervised-learning/DecisionTree.md)
18-
- [SVM](machine-learning/supervised-learning/SVM.md)
19-
- [NaiveBayes](machine-learning/supervised-learning/NaiveBayes.md)
20-
- [kNN](machine-learning/supervised-learning/kNN.md)
21-
22-
#### [无监督学习](machine-learning/unsupervised-learning/)
23-
- [kmeans](machine-learning/unsupervised-learning/kmeans.md)
24-
25-
#### [集成学习](machine-learning/ensemble-learning/)
26-
- [EnsembleLearning](machine-learning/ensemble-learning/EnsembleLearning.md)
27-
- [RandomForest](machine-learning/ensemble-learning/RandomForest.md)
28-
- [Adaboost](machine-learning/ensemble-learning/Adaboost.md)
29-
- [XGBoost](machine-learning/ensemble-learning/XGBoost.md)
30-
- [LightGBM](machine-learning/ensemble-learning/LightGBM.md)
31-
- [Catboost](machine-learning/ensemble-learning/Catboost.md)
32-
- [TreeEmbedding](machine-learning/ensemble-learning/TreeEmbedding.md)
33-
34-
#### [模型评估](machine-learning/model-evaluation/)
35-
- [metrics](machine-learning/model-evaluation/metrics.md)
36-
- [ABTest](machine-learning/model-evaluation/ABTest.md)
37-
38-
### 👁️ [计算机视觉](computer-vision/)
39-
- [CV基础](computer-vision/cv-fundamentals.md)
40-
- [目标检测](computer-vision/object-detection.md)
41-
42-
### 🗣️ [自然语言处理](nlp/)
43-
- [文本表征方式](nlp/text-representation.md)
44-
- [基于深度学习的模型](nlp/deep-learning-models.md)
45-
46-
### 📊 [推荐系统](recommendation/)
47-
- [collaborative_filtering](recommendation/collaborative_filtering.md)
48-
- [deepfm](recommendation/deepfm.md)
49-
- [gbdt_lr](recommendation/gbdt_lr.md)
50-
51-
### 🧠 [大语言模型](llm/)
52-
- [大模型的一些面试题小结](llm/llm-interview-questions.md)
1+
# 04-AI算法
2+
3+
AI算法是当前最热门的技术领域,涵盖机器学习、深度学习、计算机视觉、自然语言处理等多个方向。本部分专为AI算法工程师岗位面试准备。
4+
5+
## 📚 内容导航
6+
7+
### 🤖 [机器学习](机器学习/)
8+
机器学习是AI的核心基础,包含完整的理论体系和实践算法。
9+
10+
#### [基础理论](机器学习/基础理论/)
11+
- [机器学习基础面试题](机器学习/基础理论/机器学习基础面试题.md) - ML核心概念和理论
12+
- [过拟合与欠拟合](机器学习/基础理论/过拟合与欠拟合.md) - 模型泛化能力的关键问题
13+
- [梯度下降](机器学习/基础理论/梯度下降.md) - 优化算法的基础
14+
- [HMM](机器学习/基础理论/HMM.md) - 隐马尔可夫模型
15+
- [CRF](机器学习/基础理论/CRF.md) - 条件随机场
16+
- [Prophet](机器学习/基础理论/Prophet.md) - 时间序列预测
17+
18+
#### [监督学习](机器学习/监督学习/)
19+
- [线性回归+逻辑回归](机器学习/监督学习/线性回归+逻辑回归.md) - 最基础的监督学习算法
20+
- [DecisionTree](机器学习/监督学习/DecisionTree.md) - 决策树算法
21+
- [SVM](机器学习/监督学习/SVM.md) - 支持向量机
22+
- [NaiveBayes](机器学习/监督学习/NaiveBayes.md) - 朴素贝叶斯
23+
- [kNN](机器学习/监督学习/kNN.md) - k近邻算法
24+
25+
#### [无监督学习](机器学习/无监督学习/)
26+
- [kmeans](机器学习/无监督学习/kmeans.md) - K均值聚类算法
27+
28+
#### [集成学习](机器学习/集成学习/)
29+
- [EnsembleLearning](机器学习/集成学习/EnsembleLearning.md) - 集成学习基础
30+
- [RandomForest](机器学习/集成学习/RandomForest.md) - 随机森林
31+
- [Adaboost](机器学习/集成学习/Adaboost.md) - AdaBoost算法
32+
- [XGBoost](机器学习/集成学习/XGBoost.md) - 梯度提升优化版本
33+
- [LightGBM](机器学习/集成学习/LightGBM.md) - 高效梯度提升框架
34+
- [Catboost](机器学习/集成学习/Catboost.md) - 类别特征处理
35+
- [TreeEmbedding](机器学习/集成学习/TreeEmbedding.md) - 树嵌入方法
36+
37+
#### [模型评估](机器学习/模型评估/)
38+
- [metrics](机器学习/模型评估/metrics.md) - 模型评估指标
39+
- [ABTest](机器学习/模型评估/ABTest.md) - A/B测试方法
40+
41+
### 👁️ [计算机视觉](计算机视觉/)
42+
- [CV基础](计算机视觉/CV基础.md) - 计算机视觉基础知识
43+
- [目标检测](计算机视觉/目标检测.md) - 目标检测算法
44+
45+
### 📝 [自然语言处理](自然语言处理/)
46+
- [文本表征方式](自然语言处理/文本表征方式.md) - 文本表示方法
47+
- [基于深度学习的模型](自然语言处理/基于深度学习的模型.md) - 深度学习在NLP中的应用
48+
49+
### 🎯 [推荐系统](推荐系统/)
50+
- [collaborative_filtering](推荐系统/collaborative_filtering.md) - 协同过滤算法
51+
- [deepfm](推荐系统/deepfm.md) - DeepFM模型
52+
- [gbdt_lr](推荐系统/gbdt_lr.md) - GBDT+LR组合模型
53+
54+
### 🧠 [大语言模型](大语言模型/)
55+
- [大模型的一些面试题小结](大语言模型/大模型的一些面试题小结.md) - LLM面试要点
56+
57+
## 🎯 AI算法岗位面试重点
58+
59+
### 理论基础 (40%)
60+
1. **机器学习基础**:监督/无监督学习、损失函数、正则化
61+
2. **数学基础**:线性代数、概率统计、微积分、最优化
62+
3. **深度学习**:神经网络、反向传播、激活函数
63+
4. **模型评估**:交叉验证、评估指标、过拟合处理
64+
65+
### 算法实现 (30%)
66+
1. **经典算法**:能够手写实现主要算法
67+
2. **框架使用**:熟练使用TensorFlow、PyTorch等
68+
3. **代码优化**:算法效率优化、内存管理
69+
4. **调试技巧**:模型调试、参数调优
70+
71+
### 项目经验 (20%)
72+
1. **端到端项目**:从数据处理到模型部署
73+
2. **业务理解**:算法在具体业务中的应用
74+
3. **技术选型**:根据问题选择合适的算法
75+
4. **效果评估**:模型效果的量化评估
76+
77+
### 前沿技术 (10%)
78+
1. **最新进展**:关注领域最新研究成果
79+
2. **技术趋势**:了解技术发展方向
80+
3. **论文阅读**:能够理解和讨论重要论文
81+
4. **创新思维**:对技术问题有独特见解
82+
83+
## 💡 学习建议
84+
85+
### 基础阶段
86+
1. **数学基础**:线性代数、概率统计、微积分
87+
2. **编程能力**:Python、NumPy、Pandas
88+
3. **机器学习**:监督学习、无监督学习基础算法
89+
4. **实践项目**:完成2-3个完整的ML项目
90+
91+
### 进阶阶段
92+
1. **深度学习**:神经网络、CNN、RNN、Transformer
93+
2. **专业方向**:选择CV、NLP、推荐等专业方向深入
94+
3. **工程能力**:模型部署、性能优化、分布式训练
95+
4. **论文研读**:阅读顶级会议论文,跟踪前沿技术
96+
97+
### 面试准备
98+
1. **理论梳理**:系统梳理核心概念和算法原理
99+
2. **代码练习**:熟练实现常用算法
100+
3. **项目总结**:深入总结项目经验和技术难点
101+
4. **模拟面试**:进行技术面试模拟练习
102+
103+
---
104+
105+
> 💡 **提示**:AI算法面试既考查理论深度,也重视实践能力。建议在掌握理论基础的同时,多做实际项目,积累工程经验。

docs/04-ai-algorithms/machine-learning/ensemble-learning/Adaboost.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
![Adboost框架图](/images/Adboost框架图.png)
1+
![Adboost框架图](img/Adaboost/Adboost框架图.png)
22

33

44

@@ -69,7 +69,7 @@ $$
6969

7070

7171

72-
其中 $Z_t$是规范化因子,使得$D(t+1)$成为一个概率分布(和为1):
72+
其中 $Z_t$是规范化因子,使得$D(t+1)$成为一个概率分布(和为1):
7373
$$
7474
Z_{t}=\sum_{j=1}^{m} w_{t,i} \exp \left(-\alpha_{t} y_{i} G_{t}\left(x_{i}\right)\right)
7575
$$
Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
11

22

3-
# Catboost面试?
3+
# Catboost面试题
44

5-
## 1. 简单介绍Catboost?
5+
## 1. 简单介绍Catboost
66

7-
CatBoost是一种以对称决策?为基学习器的GBDT框架,主要为例合理地**处理类别型特?*,CatBoost是由Categorical和Boosting组成。CatBoost还解决了**梯度偏差**以及**预测偏移**的问题,从而减少过拟合的发生,进而提高算法的准确性和泛化能力?
7+
CatBoost是一种以对称决策树 为基学习器的GBDT框架,主要为例合理地**处理类别型特征**,CatBoost是由Categorical和Boosting组成。CatBoost还解决了**梯度偏差**以及**预测偏移**的问题,从而减少过拟合的发生,进而提高算法的准确性和泛化能力
88

99
## 2. 相比于XGBoost、LightGBM,CatBoost的创新点有哪些?
1010

11-
- 自动将类别型特征处理为数值型特征?
12-
- Catboost?*类别特征进行组合**,极大的丰富了特征维度?
13-
- 采用**排序提升**的方法对抗训练集中的噪声点,从而避免梯度估计的偏差,进而解决预测偏移的问题?
14-
- 采用?*完全对称?*作为基模型?
11+
- 自动将类别型特征处理为数值型特征
12+
- Catboost对**类别特征进行组合**,极大的丰富了特征维度
13+
- 采用**排序提升**的方法对抗训练集中的噪声点,从而避免梯度估计的偏差,进而解决预测偏移的问题
14+
- 采用了**完全对称树**作为基模型
1515

16-
## 3. Catboost是如何处理类别特征的?
16+
## 3. Catboost是如何处理类别特征的
1717

18-
- 基数比较低的类别型特?
18+
- 基数比较低的类别型特征
1919

2020
利用One-hot编码方法将特征转为数值型
2121

22-
- 基数比较高的类别型特?
22+
- 基数比较高的类别型特征
2323

24-
- 首先会计算一些数据的statistics。计算某个category出现的频率,加上超参数,生成新的numerical features。这一策略要求同一标签数据不能排列在一起(即先全是之后全是这种方式),训练之前需要打乱数据集?
25-
- 第二,使用数据的不同排列(实际上是个)。在每一轮建立树之前,先扔一轮骰子,决定使用哪个排列来生成树?
26-
- 第三,考虑使用categorical features的不同组合。例如颜色和种类组合起来,可以构成类似于blue dog这样的特征。当需要组合的categorical features变多时,CatBoost只考虑一部分combinations。在选择第一个节点时,只考虑选择一个特征,例如A。在生成第二个节点时,考虑A和任意一个categorical feature的组合,选择其中最好的。就这样使用贪心算法生成combinations?
27-
- 第四,除非向gender这种维数很小的情况,不建议自己生成One-hot编码向量,最好交给算法来处理?
24+
- 首先会计算一些数据的statistics。计算某个category出现的频率,加上超参数,生成新的numerical features。这一策略要求同一标签数据不能排列在一起(即先全是之后全是这种方式),训练之前需要打乱数据集
25+
- 第二,使用数据的不同排列(实际上是个)。在每一轮建立树之前,先扔一轮骰子,决定使用哪个排列来生成树
26+
- 第三,考虑使用categorical features的不同组合。例如颜色和种类组合起来,可以构成类似于blue dog这样的特征。当需要组合的categorical features变多时,CatBoost只考虑一部分combinations。在选择第一个节点时,只考虑选择一个特征,例如A。在生成第二个节点时,考虑A和任意一个categorical feature的组合,选择其中最好的。就这样使用贪心算法生成combinations
27+
- 第四,除非向gender这种维数很小的情况,不建议自己生成One-hot编码向量,最好交给算法来处理
2828

2929
## 4. Catboost如何避免梯度偏差
3030

31-
经典梯度提升算法每个步骤中使用的梯度由当前模型中的相同的数据?节点)来估计,这导致估计梯度在特征空间的任何域中的分布与该域中梯度的真实分布相比发生了偏移,从而导致过拟合?
31+
经典梯度提升算法每个步骤中使用的梯度由当前模型中的相同的数据点(节点)来估计,这导致估计梯度在特征空间的任何域中的分布与该域中梯度的真实分布相比发生了偏移,从而导致过拟合
3232

3333
对于每一个样本单独训练一个模型,使用模型估计样本的梯度,并用估计的结果对模型进行评分
3434

3535

3636

37-
## 5. Catboost如何避免预测偏移?
37+
## 5. Catboost如何避免预测偏移
3838

39-
预测偏移是由梯度偏差造成的。在GDBT的每一步迭代中, 损失函数使用相同的数据集求得当前模型的梯? 然后训练得到基学习器, 但这会导致梯度估计偏? 进而导致模型产生过拟合的问题。CatBoost通过采用**排序提升** 的方式替换传统算法中梯度估计方法,进而减轻梯度估计的偏差?
39+
预测偏移是由梯度偏差造成的。在GDBT的每一步迭代中, 损失函数使用相同的数据集求得当前模型的梯度, 然后训练得到基学习器, 但这会导致梯度估计偏差, 进而导致模型产生过拟合的问题。CatBoost通过采用**排序提升** 的方式替换传统算法中梯度估计方法,进而减轻梯度估计的偏差
4040

41-
## 6. 解释一下排序提?
41+
## 6. 解释一下排序提升
4242

43-
在传统的GBDT框架当中,构建下一棵树分为两个阶段:选择树结构和在树结构固定后计算叶子节点的值。CatBoost主要在第一阶段进行优化。在建树的阶段,CatBoost有两种提升模式,Ordered和Plain。Plain模式是采用内建的ordered TS对类别型特征进行转化后的标准GBDT算法。Ordered则是对Ordered boosting算法的优化?
43+
在传统的GBDT框架当中,构建下一棵树分为两个阶段:选择树结构和在树结构固定后计算叶子节点的值。CatBoost主要在第一阶段进行优化。在建树的阶段,CatBoost有两种提升模式,Ordered和Plain。Plain模式是采用内建的ordered TS对类别型特征进行转化后的标准GBDT算法。Ordered则是对Ordered boosting算法的优化
4444

4545
## 7. Catboost为什么要使用对称树?
4646

@@ -50,21 +50,20 @@ CatBoost是一种以对称决策?为基学习器的GBDT框架,主要为例合
5050

5151
- 每个叶子节点的索引可以被编码为长度等于树深度的二进制向量
5252

53-
首先将所有浮点特征、统计信息和独热编码特征进行二值化,然后使用二进制特征来计算模型预测?
53+
首先将所有浮点特征、统计信息和独热编码特征进行二值化,然后使用二进制特征来计算模型预测值
5454

5555
## 8. CatBoost的优缺点
5656

57-
**优点?*
57+
**优点**
5858

59-
- **性能卓越?* 在性能方面可以匹敌任何先进的机器学习算法;
60-
- **鲁棒?强健性:** 它减少了对很多超参数调优的需求,并降低了过度拟合的机会,这也使得模型变得更加具有通用性;
61-
- **实用?* 可以处理类别型、数值型特征?
59+
- **性能卓越** 在性能方面可以匹敌任何先进的机器学习算法;
60+
- **鲁棒性/强健性:** 它减少了对很多超参数调优的需求,并降低了过度拟合的机会,这也使得模型变得更加具有通用性;
61+
- **实用** 可以处理类别型、数值型特征
6262
- **可扩展:** 支持自定义损失函数;
6363

64-
**缺点?*
64+
**缺点**
6565

6666
- 对于类别型特征的处理需要大量的内存和时间;
67-
- 不同随机数的设定对于模型预测结果有一定的影响?
68-
67+
- 不同随机数的设定对于模型预测结果有一定的影响;
6968

7069

docs/04-ai-algorithms/machine-learning/ensemble-learning/EnsembleLearning.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ $$
7878

7979
* 决策树可以较为方便地将样本的权重整合到训练过程中,而不需要使用过采样的方法来调整样本权重。
8080
* 决策树的表达能力和泛化能力,可以通过调节树的层数来做折中。
81-
* 数据样本的扰动对于决策树的影响较大,因此不同子样本集合生成的决策树基分类器随机性较大,这样的不稳定学习器更适合作为基分类器。此外,在决策树节点分裂的时候,随机地选择一个特征子集,从中找出最优分裂属性,**很好地引入了随机性。**
81+
* 数据样本的扰动对于决策树的影响较大,因此不同子样本集合生成的决策树基分类器随机性较大,这样的“不稳定学习器”更适合作为基分类器。此外,在决策树节点分裂的时候,随机地选择一个特征子集,从中找出最优分裂属性,**很好地引入了随机性。**
8282

8383
## 9. 可否将随机森林中的基分类器,由决策树替换为线性分类器或K-近邻?请解释为什么?
8484
不能:
@@ -92,7 +92,7 @@ $$
9292
## 10. GBDT和RF如何计算特征重要性
9393

9494
* RF有两种方法:
95-
- 通过计算Gini系数的减少量VIm=GI(GIL+GIR)判断特征重要性,越大越重要。
95+
- 通过计算Gini系数的减少量VIm=GI(GIL+GIR)判断特征重要性,越大越重要。
9696
- 对于一颗树,先使用**袋外错误率**(OOB)样本计算测试误差a,再随机打乱OOB样本中第i个特征(上下打乱特征矩阵第i列的顺序)后计算测试误差b,a与b差距越大特征i越重要。
9797

9898
- GBDT计算方法:

0 commit comments

Comments
 (0)