├── readme md 59479e695dc044bd8bf6ce7f3942924b └── Untitled.png ├── readme.md ├── 机器学习 ├── Bayes.md ├── Bayes │ └── Untitled.png ├── K-means.md ├── K-means │ ├── Untitled 1.png │ ├── Untitled 2.png │ ├── Untitled 3.png │ ├── Untitled 4.png │ └── Untitled.png ├── Linear Regression │ ├── Untitled 1.png │ ├── Untitled 2.png │ ├── Untitled 3.png │ ├── Untitled 4.png │ └── Untitled.png ├── LinearRegression.md ├── Logstic regression │ ├── Untitled 1.png │ ├── Untitled 2.png │ └── Untitled.png ├── Logsticregression.md ├── PCA.md ├── RandomForest.md ├── SVM.md ├── 概率论.md ├── 特征工程.md ├── 特征工程 │ ├── Untitled 1.png │ ├── Untitled 2.png │ ├── Untitled 3.png │ └── Untitled.png ├── 降维.md └── 降维 │ ├── Untitled 1.png │ ├── Untitled 2.png │ └── Untitled.png ├── 深度学习 ├── 1487069c-84e2-41bf-b1ab-00e251d38748_Export-20c7f85a-68b1-47c0-bf82-31d4f3c93c3b │ ├── NLP算法面试题 e4106cc12b494ed78fdb0c8da70dd20b.md │ └── NLP算法面试题 e4106cc12b494ed78fdb0c8da70dd20b │ │ └── Untitled.png ├── 1cff4648-0cf6-446b-b41d-9d4d45a96c3d_Export-7cbe056a-8477-49e2-af07-0fff51fe9f16.zip ├── 1cff4648-0cf6-446b-b41d-9d4d45a96c3d_Export-7cbe056a-8477-49e2-af07-0fff51fe9f16 │ ├── Unsupervised learning e6a4cf79c84b4dc5befdce45732063c3.md │ └── Unsupervised learning e6a4cf79c84b4dc5befdce45732063c3 │ │ ├── Untitled 1.png │ │ └── Untitled.png ├── 24a5d324-1321-4766-a829-7801e9387aa0_Export-34f18bda-5850-4494-8053-5f756401200f.zip ├── 5256afdf-52a5-410c-845b-4b5099dd62b0_Export-1af4d6a4-cfa7-4927-b586-31566d94baa9.zip ├── 5256afdf-52a5-410c-845b-4b5099dd62b0_Export-1af4d6a4-cfa7-4927-b586-31566d94baa9 │ ├── LLM 4968d10b44c64639b1cecca08de3e8a5.md │ └── LLM 4968d10b44c64639b1cecca08de3e8a5 │ │ ├── Untitled 1.png │ │ └── Untitled.png ├── 531c5315-260c-412c-83b5-5e38091718e2_Export-76583222-5ff1-401a-8db3-9c2620f65b87.zip ├── 63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970.zip ├── 63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970 │ ├── ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73.md │ └── ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73 │ │ ├── Untitled 1.png │ │ ├── Untitled 2.png │ │ ├── Untitled 3.png │ │ ├── Untitled 4.png │ │ ├── Untitled 5.png │ │ ├── Untitled 6.png │ │ └── Untitled.png ├── 8138f22b-a9a6-40d2-b95d-3268cb8db525_Export-dfac2010-e33f-4307-8f6b-9533df69b636.zip ├── 8138f22b-a9a6-40d2-b95d-3268cb8db525_Export-dfac2010-e33f-4307-8f6b-9533df69b636 │ ├── 多模态 2c047fee7c4e460c8b7acd60e6285a01.md │ └── 多模态 2c047fee7c4e460c8b7acd60e6285a01 │ │ └── Untitled.png ├── 8ec2e8bf-cce0-40f5-b940-e156f8fc9f12_Export-03dea960-bcb7-4b8d-abc0-9deecf2d20e4 │ ├── SYSTEM DESIGN 00d5f3cad1014ef1b209284182b05eb8.md │ └── SYSTEM DESIGN 00d5f3cad1014ef1b209284182b05eb8 │ │ ├── Untitled 1.png │ │ └── Untitled.png ├── 92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94.zip ├── 92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94 │ ├── SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264.md │ └── SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264 │ │ ├── Untitled 1.png │ │ ├── Untitled 2.png │ │ ├── Untitled 3.png │ │ ├── Untitled 4.png │ │ ├── Untitled 5.png │ │ └── Untitled.png ├── ASR TTS b433c3e3ac7a468d97bd5b1f02b4f4ec │ ├── Untitled 1.png │ ├── Untitled 2.png │ ├── Untitled 3.png │ └── Untitled.png ├── ASR&TTS.md ├── CNN2.md ├── CV 00373e0e592b422aa10773501cd275cf │ ├── Untitled 1.png │ └── Untitled.png ├── CV.md ├── DLFunda.md ├── Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678 │ ├── Untitled 1.png │ ├── Untitled 10.png │ ├── Untitled 11.png │ ├── Untitled 12.png │ ├── Untitled 13.png │ ├── Untitled 14.png │ ├── Untitled 2.png │ ├── Untitled 3.png │ ├── Untitled 4.png │ ├── Untitled 5.png │ ├── Untitled 6.png │ ├── Untitled 7.png │ ├── Untitled 8.png │ ├── Untitled 9.png │ └── Untitled.png ├── Deep Learning Fundamental f3253e927eb9461c9738fbc1e8ca2339 │ ├── Untitled 1.png │ └── Untitled.png ├── DeepLearning.md ├── Model Evaluation 33e6ecb893ba43b8aa236bcee2b86a1b │ ├── Untitled 1.png │ ├── Untitled 2.png │ └── Untitled.png ├── Model Evaluation df5d033abf22444284cfa8ba84a1438a.md ├── Model Evaluation df5d033abf22444284cfa8ba84a1438a │ ├── Untitled 1.png │ ├── Untitled 2.png │ ├── Untitled 3.png │ └── Untitled.png ├── ModelEvaluation.md ├── NLP.md ├── Optimisation 0ac16f5c3b844d53a67b6c09c22455aa │ ├── Untitled 1.png │ └── Untitled.png ├── Optimisation 4bb09c6ac2e54f3595cf6827042b5183.md ├── Optimisation 4bb09c6ac2e54f3595cf6827042b5183 │ ├── Untitled 1.png │ ├── Untitled 2.png │ └── Untitled.png ├── Optimisation.md ├── Q-learning.md ├── RNN ba2dd072fd1a45eab8be29543b3c4178.md ├── RNN ba2dd072fd1a45eab8be29543b3c4178 │ └── Untitled.png ├── RNN.md ├── SYSTEM DESIGN 35589fbe386b4869a412119e51a2287a │ ├── Untitled 1.png │ └── Untitled.png ├── SYSTEMDESIGN.md ├── Transformer.md ├── Transformer相关算法面试题 b43386ee1a15456d803fa851d8666ecf.md ├── Unsupervised learning 15a608ae430a4b29bbb4d7ee0dff1e7e │ ├── Untitled 1.png │ └── Untitled.png ├── Unsupervisedlearning.md ├── a8bfc3ca-d176-4c06-ab39-4fdb6dab0b44_Export-9a11e86c-7762-4177-893a-3761699bf90b │ ├── CV interview Q&A 3d839484cf574c1899fd9f404a3b698d.md │ └── CV interview Q&A 3d839484cf574c1899fd9f404a3b698d │ │ ├── Untitled 1.png │ │ ├── Untitled 2.png │ │ ├── Untitled 3.png │ │ └── Untitled.png ├── b5db0197-808c-4fab-a358-c9e3884baef4_Export-ed50fbdf-0cae-4acd-baf2-9ef314aeebc3.zip ├── b5db0197-808c-4fab-a358-c9e3884baef4_Export-ed50fbdf-0cae-4acd-baf2-9ef314aeebc3 │ ├── NLP算法面试题 e4106cc12b494ed78fdb0c8da70dd20b.md │ └── NLP算法面试题 e4106cc12b494ed78fdb0c8da70dd20b │ │ └── Untitled.png ├── cc503100-2fa9-4334-999e-33542fa03f54_Export-3da50300-d023-4b18-a4d9-39c5f27ec024.zip ├── cc503100-2fa9-4334-999e-33542fa03f54_Export-3da50300-d023-4b18-a4d9-39c5f27ec024 │ ├── CV interview Q&A 3d839484cf574c1899fd9f404a3b698d.md │ └── CV interview Q&A 3d839484cf574c1899fd9f404a3b698d │ │ ├── Untitled 1.png │ │ ├── Untitled 2.png │ │ ├── Untitled 3.png │ │ └── Untitled.png ├── data processing 7d9302ed83864e1db8d51f974f19eff8.md ├── data processing 7d9302ed83864e1db8d51f974f19eff8 │ ├── Untitled 1.png │ ├── Untitled 2.png │ └── Untitled.png ├── data processing f3791b689b3c49b186899609e17e2c23 │ ├── Untitled 1.png │ ├── Untitled 2.png │ └── Untitled.png ├── dataprocessing.md ├── 多模态 4aa0c0c36724498aa24f01af181a766f │ └── Untitled.png ├── 多模态.md ├── 强化学习 9b3a8e7a33b24c64a2a32c6aa0e20cba │ └── Untitled.png ├── 强化学习.md ├── 强化学习面试题 33a57369e58e46a9a6e4d073a2230a5e.md ├── 强化学习面试题 33a57369e58e46a9a6e4d073a2230a5e │ └── Untitled.png ├── 推荐系统 9d7b73fad7a6487ebbd3f9e242d79ac4.md ├── 推荐系统 9d7b73fad7a6487ebbd3f9e242d79ac4 │ ├── Untitled 1.png │ ├── Untitled 2.png │ └── Untitled.png ├── 推荐系统 f5bf3d1b2152454d930277c38d333722 │ ├── Untitled 1.png │ └── Untitled.png └── 推荐系统.md └── 编程八股 ├── Python 69ff3c2f1e2c4d0497a543ee8e93192e ├── Untitled 1.png ├── Untitled 2.png ├── Untitled 3.png └── Untitled.png └── Python.md /readme md 59479e695dc044bd8bf6ce7f3942924b/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/readme md 59479e695dc044bd8bf6ce7f3942924b/Untitled.png -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # 2023.8.13更新: 2 | # 增加所有中高级问题的QA,新增LLM专题面试QA! 3 | 结合面试与被面试的经验,手工整理,1000余道,20多个类目的深度学习&机器学习算法岗面试题目QA 4 | 5 | 6 | # 机器学习: 7 | [贝叶斯](机器学习/Bayes.md) 8 | [K-means](机器学习/K-means.md) 9 | [线性回归](机器学习/LinearRegression.md) 10 | [逻辑回归](机器学习/Logsticregression.md) 11 | [PCA](机器学习/PCA.md) 12 | [随机森林](机器学习/RandomForest.md) 13 | [支持向量机](机器学习/SVM.md) 14 | [概率论](机器学习/概率论.md) 15 | [特征工程](机器学习/特征工程.md) 16 | [降维](机器学习/降维.md) 17 | 18 | 19 | # 深度学习: 20 | [LLM](https://github.com/zixian2021/AI-interview-cards/blob/5cf9b6998581a3011af63a10400573bf4408d86e/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/5256afdf-52a5-410c-845b-4b5099dd62b0_Export-1af4d6a4-cfa7-4927-b586-31566d94baa9/LLM%204968d10b44c64639b1cecca08de3e8a5.md) 21 | 22 | [深度学习基础](深度学习/DLFunda.md) 23 | [CNN](深度学习/CNN2.md) 24 | [RNN](https://github.com/zixian2021/AI-interview-cards/blob/d3741888dab75c6c485c29891f0f8e24cd8ce42d/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/RNN%20ba2dd072fd1a45eab8be29543b3c4178.md) 25 | [Transformer](https://github.com/zixian2021/AI-interview-cards/blob/a75e06fdcdea97849d5a06d2d74d9bd435993ac2/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/Transformer%E7%9B%B8%E5%85%B3%E7%AE%97%E6%B3%95%E9%9D%A2%E8%AF%95%E9%A2%98%20b43386ee1a15456d803fa851d8666ecf.md) 26 | [Model Evaluation](深度学习/ModelEvaluation.md) 27 | [强化学习](https://github.com/zixian2021/AI-interview-cards/blob/a75e06fdcdea97849d5a06d2d74d9bd435993ac2/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0%E9%9D%A2%E8%AF%95%E9%A2%98%2033a57369e58e46a9a6e4d073a2230a5e.md) 28 | [推荐系统](https://github.com/zixian2021/AI-interview-cards/blob/a75e06fdcdea97849d5a06d2d74d9bd435993ac2/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%209d7b73fad7a6487ebbd3f9e242d79ac4.md) 29 | [数据处理](https://github.com/zixian2021/AI-interview-cards/blob/a75e06fdcdea97849d5a06d2d74d9bd435993ac2/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/data%20processing%207d9302ed83864e1db8d51f974f19eff8.md) 30 | [Q-learning](深度学习/Q-learning.md) 31 | [网络优化](深度学习/Optimisation.md) 32 | [系统设计](https://github.com/zixian2021/AI-interview-cards/blob/5cf9b6998581a3011af63a10400573bf4408d86e/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM%20DESIGN%20ccbdece3b9ea44fe9c3e81910abde264.md) 33 | [NLP](https://github.com/zixian2021/AI-interview-cards/blob/c438e80e6780007c5d5b1999343d98be9c961ae4/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1487069c-84e2-41bf-b1ab-00e251d38748_Export-20c7f85a-68b1-47c0-bf82-31d4f3c93c3b/NLP%E7%AE%97%E6%B3%95%E9%9D%A2%E8%AF%95%E9%A2%98%20e4106cc12b494ed78fdb0c8da70dd20b.md) 34 | [CV](https://github.com/zixian2021/AI-interview-cards/blob/c438e80e6780007c5d5b1999343d98be9c961ae4/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/a8bfc3ca-d176-4c06-ab39-4fdb6dab0b44_Export-9a11e86c-7762-4177-893a-3761699bf90b/CV%20interview%20Q%26A%203d839484cf574c1899fd9f404a3b698d.md) 35 | [ASR/TTS](https://github.com/zixian2021/AI-interview-cards/blob/5cf9b6998581a3011af63a10400573bf4408d86e/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR%20TTS%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E9%A2%98%208e9ba123ed6b41c18e69ed787f493d73.md) 36 | [无监督学习](https://github.com/zixian2021/AI-interview-cards/blob/5cf9b6998581a3011af63a10400573bf4408d86e/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1cff4648-0cf6-446b-b41d-9d4d45a96c3d_Export-7cbe056a-8477-49e2-af07-0fff51fe9f16/Unsupervised%20learning%20e6a4cf79c84b4dc5befdce45732063c3.md) 37 | [多模态](深度学习/多模态.md) 38 | 39 | 40 | 41 | 如果觉得该仓库有益,欢迎关注我的微信公众号:苏坡爱豆 42 | 43 | ![Untitled](readme%20md%2059479e695dc044bd8bf6ce7f3942924b/Untitled.png) 44 | -------------------------------------------------------------------------------- /机器学习/Bayes.md: -------------------------------------------------------------------------------- 1 | # Bayes 2 | 3 | Q1:***什么是朴素贝叶斯分类器?*** 4 | 5 | - 朴素贝叶斯分类器是一组简单的概率分类器,基于贝叶斯定理和特征之间的独立性假设 6 | - 贝叶斯理论如下式所示: 7 | 8 | $$ 9 | P(A|B)=\frac{P(B|A)P(A)}{P(B)} 10 | $$ 11 | 12 | - 使用贝叶斯定理,可以推测在事件B发生的情况下,事件A发生的概率 13 | 14 | Q2:***朴素贝叶斯分类器的假设?*** 15 | 16 | - 朴素贝叶斯分类器贝叶斯分类器假设特征之间相互独立,条件概率分布满足条件独立性 17 | - **朴素贝叶斯模型假设特征之间相互独立,这个假设在实际应用中往往是不成立的,在特征个数比较多或者特征之间相关性较大时,分类效果不好** 18 | 19 | Q3:***如何理解贝叶斯定理*** 20 | 21 | - 贝叶斯定理用于确定条件概率,条件概率是指已知一些条件情况下,某事件发生的可能性 22 | - 贝叶斯公式如下式,A和B为随机事件, $P(A|B)$为已知B事件发生后,A事件发生的条件概率;贝叶斯公式由A、B事件的先验概率与似然性$P(B|A)$推断后验概率 23 | 24 | $$ 25 | P(A|B)=\frac{P(B|A)P(A)}{P(B)} 26 | $$ 27 | 28 | Q4:***如何根据训练集大小选择分类器?(system design)*** 29 | 30 | - 对于小的训练集,具有高偏差和低方差模型的模型更好,因为它不太可能过拟合。如朴素贝叶斯。 31 | - 对于大型训练集,具有低偏差和高方差模型的模型更好,因为它表示更复杂的关系。如逻辑回归。 32 | 33 | Q5:**如何使用*朴素贝叶斯*分类器来处理类别特征?如果某些特征是数值的呢?** 34 | 35 | - 对于类别特征,先将其处理为one-hot特征;若有N个类别,则为贝叶斯分类器匹配地创建N个特征,每个特征取值0或1;处理数值特征时,可以将数值离散化为几个类别,再使用one-hot向量处理 36 | 37 | 引用:[https://stats.stackexchange.com/](https://stats.stackexchange.com/) 38 | 39 | Q6:***生成式模型与判别式模型有什么区别?列出两种模型的一个例子*** 40 | 41 | - 判别式分类器学习数据空间中的分界面,将不同类别的数据分隔开来;生成式分类器学习整个数据空间的生成; 42 | - 数学上来看,判别式模型学习条件概率$P(Y|X)$,生成式模型学习联合概率$P(X,Y)$ 43 | - 判别模型有逻辑回归,SVM,CRF,MLP,决策树等,生成模型有朴素贝叶斯、HMM、GAN、LDA 44 | 45 | 引用:[https://www.analyticsvidhya.com/](https://www.analyticsvidhya.com/) 46 | 47 | Q7:***阐述朴素贝叶斯分类器的工作流程*** 48 | 49 | - 朴素贝叶斯分类器的工作流程大概分为以下两步:1.通过统计数据集中事件发生的频率计算先验概率和似然函数 2.根据贝叶斯定理计算后验概率,具有最高后验概率的类是预测的结果。 50 | 51 | Q8:***朴素贝叶斯分类器的优点是什么?*** 52 | 53 | - 预测既简单又快速,在多类预测中也表现良好 54 | - 当独立性假设成立时,朴素贝叶斯分类器与逻辑回归等其他模型相比表现更好,并且需要的训练数据更少。 55 | 56 | 引用:[https://www.analyticsvidhya.com/](https://www.analyticsvidhya.com/) 57 | 58 | Q9:***朴素贝叶斯分类器的缺点是什么?*** 59 | 60 | - 如果分类变量在训练数据集中未观察到(先验概率为0),则贝叶斯分类模型将无法进行预测。这通常被称为“零频率”。为了解决这个问题,可以使用平滑技术,最简单的平滑技术是拉普拉斯估计。 61 | - 朴素贝叶斯假设特征之间相互独立,在特征间有紧密联系时,分类性能可能很差 62 | 63 | Q10:***比较朴素贝叶斯算法与逻辑回归算法*** 64 | 65 | - 朴素贝叶斯是一种生成模型,而 LR 是一种判别模型。 66 | - 朴素贝叶斯适用于小型数据集, LR+正则化可以达到类似的性能。 67 | - LR 在共线性(colinearity)方面比朴素贝叶斯表现更好,因为朴素贝叶斯期望所有特征都是独立的。 68 | 69 | 引用:[https://towardsdatascience.com/](https://towardsdatascience.com/) 70 | 71 | Q11:***噪声数据对贝叶斯模型有什么样的影响?*** 72 | 73 | - 噪声数据会影响贝叶斯模型计算中的先验概率和似然,因此会降低贝叶斯模型的准确率 74 | 75 | Q12:***什么是贝叶斯网络?*** 76 | 77 | - **贝叶斯网络**是一种概率图形模型,它使用贝叶斯推理进行概率计算。贝叶斯网络旨在通过在有向图中用边表示条件依赖来模拟因果关系。通过这些关系,人们可以通过使用因子有效地对图中的随机变量进行推理。 78 | - 贝叶斯网络是**有向无环图,**其中每条边对应一个条件依赖,每个节点对应一个唯一的随机变量。 79 | - 通过贝叶斯网络推理,可以评估网络中每个变量(或子集)的特定值的联合概率 80 | 81 | ![Untitled](Bayes%2036889417685443dcb00d77638616fe3e/Untitled.png) 82 | 83 | Q13:***使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?*** 84 | 85 | - 朴素贝叶斯的缺点之一是,它基于数据中出现的频率估计先验概率;如果某个类标签和特定的属性值,数据中没有出现过,那么基于频率的先验概率估计将为零,贝叶斯公式的分母将为0,无法计算; 86 | - 在贝叶斯环境中克服这种“零频率问题”的方法是,为每个属性值-类组合的计数加一(**拉普拉斯平滑方法**) 87 | 88 | Q14:***贝叶斯统计中,“似然”和“后验概率”有什么区别?*** 89 | 90 | - 统计学中,似然函数是一种关于统计模型参数的函数;**“似然”描述了给定了特定观测值后,模型参数的合理性** 91 | - 后验概率是是关于结果的函数,在**给定了模型参数之后,描述结果的合理性** 92 | - 后验概率等于似然*先验,如果先验概率函数是平坦的,那么后验概率数值上与似然一致 93 | 94 | 引用:[https://stats.stackexchange.com/](https://stats.stackexchange.com/) 95 | 96 | Q15:***贝叶斯统计中,“先验概率”和“后验概率”的区别?*** 97 | 98 | - 先验概率表示某事件发生的概率,是与其他因素独立的分布 99 | - 后验概率属于条件概率,指某相关因素发生后,事件发生的概率 -------------------------------------------------------------------------------- /机器学习/Bayes/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/机器学习/Bayes/Untitled.png -------------------------------------------------------------------------------- /机器学习/K-means.md: -------------------------------------------------------------------------------- 1 | # K-means 2 | 3 | Q1:***K-means聚类有哪些应用?*** 4 | 5 | - 文档分类: k-means 可以根据标签、主题和文档内容将文档聚类为多个类别。 6 | - 保险欺诈检测:利用过去关于欺诈索赔的历史数据,可以根据新索赔与表明欺诈模式的集群的接近程度来隔离新索赔。 7 | - 网络分析罪犯:这是从个人和团体收集数据以识别重要相关性的过程。网络画像的概念源自犯罪画像,它提供有关调查部门的信息,以对在犯罪现场的罪犯类型进行分类 8 | 9 | Q2:***K-means和KNN算法有什么区别?*** 10 | 11 | - KNN是一种**监督**分类算法。这意味着我们需要事先标记好的数据来对未标记数据点进行分类。KNN根据数据点与特征空间中其他数据点的接近程度对其进行分类。 12 | - K-means Clustering是一种**无监督**分类算法。它只需要一组未标记的点和一个阈值`K`,它将数据聚类为K个集群。 13 | 14 | Q3:***解释什么是K-means聚类?*** 15 | 16 | - K-means聚类是一种**聚类**分析方法,把数据空间中的n个点划分到k个簇中;聚类目标是,让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大(**类内方差最小,类间方差最大**); 17 | 18 | ![Untitled](K-means%20c0be57b3cff544c9ae464d2dfcd3dcba/Untitled.png) 19 | 20 | Q4:***K-means聚类的停止标准是什么?*** 21 | 22 | - 常见的停止条件有: 23 | - **收敛**,聚类没有进一步的变化,点留在同一个集群中。 24 | - **最大迭代次数**。当达到最大迭代次数时,算法将停止。 25 | - 方差的改善3σ)≤0.003 163 | - 四分位数 164 | - 更多的还有基于各类统计量来检测多元离群点,例如x^2检验、t检验等。 165 | - 基于主成分分析的矩阵分解方法,这种方法经过主成分分析分解,再进行重构,通过异常值在主成分分量上 的偏差更大来判断是否异常。 166 | - 基于距离,利用聚类的思想,对数据进行聚类.,排除距离中心最远的N个点,一般的方法有,kmeans、knn、DBSCAN等。 167 | 168 | Q23:**怎么处理特征中的异常值?** 169 | 170 | - 删除含有异常值的记录,将异常值视为缺失值,交给缺失值处理方法来处理; 171 | - 或者用平均值或者众数来修正。 172 | 173 | 引用:[https://blog.csdn.net/](https://blog.csdn.net/) 174 | 175 | Q24:**如何解决数据不平衡的问题?** 176 | 177 | - 采样的方法,采样分为上采样(Oversampling)和下采样(Undersampling),上采样是把小众类复制多份,下采样是从大众类中剔除一些样本,或者说只从大众类中选取部分样本。上采样后的数据集中会重复出现一些样本,训练出来的模型会有一定的过拟合,解决办法,可以在每次生成新数据点时加入轻微的随机扰动;而下采样的缺点也比较明显,那就是最终的训练集丢失了数据,模型只学到了一部分。可能会导致欠拟合,解决办法:多次下采样(放回采样,这样产生的训练集才相互独立)产生多个不同的训练集,进而训练多个不同的分类器,利用模型融合,通过组合多个分类器的结果得到最终的结果。 178 | - 数据合成方法,利用小众样本在特征空间的相似性来生成新样本,这类方法在小数据场景下有很多成功案例,比如医学图像分析等。 179 | - 对于数据极端不平衡时,可以观察观察不同算法在同一份数据下的训练结果的precision和recall,这样做有两个好处,一是可以了解不同算法对于数据的敏感程度,二是可以明确采取哪种评价指标更合适。针对机器学习中的数据不平衡问题,建议更多PR(Precision-Recall曲线),而非ROC曲线,具体原因画图即可得知,如果采用ROC曲线来作为评价指标,很容易因为AUC值高而忽略实际对少量样本的效果其实并不理想的情况。 180 | - 选择对数据倾斜相对不敏感的算法,如树模型。 181 | 182 | 引用:[https://blog.csdn.net/](https://blog.csdn.net/) 183 | 184 | Q25:**简述线性判别分析LDA的原理** 185 | 186 | - LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同,PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话来概括,就是“投影后类内方差最小,类间方差最大”。我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能地接近,而不同类别的数据的类别中心之间的距离尽可能地大。 -------------------------------------------------------------------------------- /机器学习/特征工程/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/机器学习/特征工程/Untitled 1.png -------------------------------------------------------------------------------- /机器学习/特征工程/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/机器学习/特征工程/Untitled 2.png -------------------------------------------------------------------------------- /机器学习/特征工程/Untitled 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/机器学习/特征工程/Untitled 3.png -------------------------------------------------------------------------------- /机器学习/特征工程/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/机器学习/特征工程/Untitled.png -------------------------------------------------------------------------------- /机器学习/降维.md: -------------------------------------------------------------------------------- 1 | # 降维 2 | 3 | Q1:**解释什么是维数诅咒,如何解决这个问题?** 4 | 5 | - 随着训练模型所需的数据量增加,机器学习算法的学习过程变得越来越困难。在非常高维的空间中,监督算法难以学习分离点并构建函数近似值以做出良好的预测。并且,当特征数量增加时,从时间和计算的角度来看,这种搜索都会变得昂贵。可能无法足够快地找到好的解决方案。这就是维度诅咒。 6 | - 使用降维技术(如PCA、ICA、SVD),可以在原始特征集中发现最显着的特征。然后将这个特征集的维度减少到一个更易于管理的数字,同时在这个过程中丢失很少的信息。这有助于监督学习找到近似数据集的最佳函数。 7 | 8 | Q2:**解释什么是PCA?** 9 | 10 | - **PCA**通常用于降维,它对高维度数据集合寻找尽可能少的正交矢量(主成分)表征数据信息特征。 11 | - 主成分是一系列单位向量,主成分的方向是使投影数据的方差最大化(代表最大信息量)的方向。 12 | 13 | ![Untitled](%E9%99%8D%E7%BB%B4%205180f8ad4b2348a1bcfbde293b84f2fb/Untitled.png) 14 | 15 | Q3:**解释为什么数据在高维空间更稀疏?** 16 | 17 | - 假设您有一个关于人的数据集。如果只有人群的年龄,基本上可以做四五个组:很年轻的人,年轻人,中年人,老年人,老年人。如果现在您添加另一个维度,比方说,gender,则可能的组合加倍。如果你添加第三个,比如height,如果我们考虑我们按small、normal和tall对人进行分组,那么你可能的组数会增加三倍。 18 | - 更多的维度使我们的数据点之间的差异性变大,这就是它变得更**稀疏**的原因。两个随机点之间的距离随着维度的增加而增加:每个数据点都变得越来越独立,并且与其他数据点不同。 19 | 20 | 引用:[towardsdatascience.com](https://towardsdatascience.com/the-surprising-behaviour-of-distance-metrics-in-high-dimensions-c2cb72779ea6) 21 | 22 | Q4:***PCA*中的第一个主成分轴是如何选择的?** 23 | 24 | - 在主成分分析 (PCA)中,我们希望将大量相关变量汇总为较少数量的代表性变量,称为主成分,它解释了原始集合中的大部分*可变性。* 25 | - 第一个主成分轴的选择方式使其能够解释数据中的大部分变化并且最接近所有*n*个观测值。从数学上来讲,是原始数据中方差最大的方向 26 | 27 | ![Untitled](%E9%99%8D%E7%BB%B4%205180f8ad4b2348a1bcfbde293b84f2fb/Untitled%201.png) 28 | 29 | 引用:[https://builtin.com/data-science/step-step-explanation-principal-component-analysis](https://builtin.com/data-science/step-step-explanation-principal-component-analysis) 30 | 31 | Q5:**维度灾难对训练机器学习模型有什么影响?** 32 | 33 | - 随着维数的增加,数据变得更加稀疏;每个新维度都会增加特征空间的体积,从而为我们的数据提供更高的分化机会,因此,与低维空间相比,它在高维空间中分布得更多的可能性。这意味着训练模型需要更多的数据样本 34 | - 随着维度增加,特别是对于参数模型,我们增加了训练它们所需的时间。 35 | - 维度灾难使得数据中含有大量的嘈杂和不相关特征,模型从这些嘈杂或不相关的特征中学习,并可能导致其性能下降。 36 | - 更多的特征和维度导致模型比那些特征数量少的模型更复杂和更难解释。 37 | 38 | 引用:[https://towardsdatascience.com/the-surprising-behaviour-of-distance-metrics-in-high-dimensions-c2cb72779ea6](https://towardsdatascience.com/the-surprising-behaviour-of-distance-metrics-in-high-dimensions-c2cb72779ea6) 39 | 40 | Q6:**知道哪些关于超参数调优的方法?** 41 | 42 | - **随机搜索**:为超参数创建了一个可能值的网格。每次迭代都会尝试从该网格中随机组合超参数,记录性能,最后返回提供最佳性能的超参数组合。 43 | - **网格搜索:为超参数创建了一个可能值的网格,在每次迭代中,**都会尝试以特定顺序组合超参数以及它适合每个可能超参数组合的模型,并记录模型性能。最后,返回具有最佳超参数的最佳模型。 44 | 45 | ![Untitled](%E9%99%8D%E7%BB%B4%205180f8ad4b2348a1bcfbde293b84f2fb/Untitled%202.png) 46 | 47 | - **贝叶斯优化**:用各种代理函数来拟合超参数与模型评价之间的关系,然后选择有希望的超参数组合进行迭代,最后得出效果最好的超参数组合。这种方法可以帮助我们在最少的步数中找到最小点。 48 | 49 | Q7:**与PCA相比,使用LLE(局部线性嵌入 Locally Linear Embedding)有哪些优点?** 50 | 51 | - 和传统的PCA,LDA等关注样本方差的降维方法相比,LLE关注于在降维时保持样本局部的线性特征; 52 | - LLE在计算空间和时间方面比其他算法更有效,因为它倾向于累积稀疏矩阵。 53 | 54 | Q8:**为什么在执行PCA之前居中和缩放数据很重要?** 55 | 56 | - 标准化数据使得特征处于同一数量级,具有不同数量级值的特征会影响 PCA 计算最佳主成分,因为PCA对变量的方差非常敏感,PCA依据数据的方差划分主成分 57 | 58 | Q9:**解释什么是SVD降维** 59 | 60 | - 奇异值分解,全称Singular Value Decomposition,简称SVD。它是一种矩阵因式分解。通过计算奇异值个数和奇异向量,生成一个可以代替原矩阵的近似矩阵,将数据集的奇异值表征按重要性排列,舍弃不重要的特征向量。可用来达到**降维**的目的,从而找出数据中的主成分。 61 | 62 | Q10:*****PCA*和*随机投影*方法有什么区别?** 63 | 64 | - PCA计算使方差最大化的向量或方向,因此在投影期间丢失的信息量最少; 65 | - Random Projection简单地选择任何向量,然后执行投影。这在高维空间中非常有效,并且计算效率很高。 66 | - Random Projection的理论基础是所谓的Johnson-Lindenstrauss 引理:高维欧几里德空间中的N 个点的数据集可以映射到更低维度的空间,从而在很大程度上保持点之间的距离。 67 | 68 | Q11:**KNN算法是否会受到维度灾难的影响?具体描述;** 69 | 70 | - K-NN最大的缺陷就是很容易引起维数灾难,在高维空间,数据变得异常稀疏,这就\使得即使是最近的邻居数据点,所需计算数据点之间的距离也变得异常得远。 随着变量的增加,训练集所要求的数据量呈指数级的增长,计算量也随之变得异常大。 71 | 72 | Q12:**聚类和降维有什么区别和联系?** 73 | 74 | - 降维是在数据预处理时为了防止过拟合和避免维度灾难时常用的方法,聚类时在数据集是在整个数据集上按照一个定义的拓扑距离进行分组的过程。聚类和降维之间的一个关键区别是,通常进行聚类是为了揭示数据的结构,而降维通常主要是为计算考虑,缓解维度灾难。 75 | - 共同点是两种方法都属于无监督学习 76 | 77 | Q13:*****PCA*和*t-SNE*有什么区别?** 78 | 79 | - PCA 致力于保留数据的全局结构,而 T-SNE 保留局部结构 80 | - PCA 和 T-SNE 都会产生难以解释的特征 81 | - 当特征之间存在线性关系时,PCA 效果很好,而 T-SNE 在线性和非线性数据集中都表现不错。 82 | - PCA 是一种确定性算法(每次产生相同的输出),而 T-SNE 本质上是非确定性的(每次可能产生不同的输出) 83 | 84 | 引用:[https://medium.com/analytics-vidhya/understanding-pca-and-t-sne-intuitively-f8f0e196aee4](https://medium.com/analytics-vidhya/understanding-pca-and-t-sne-intuitively-f8f0e196aee4) 85 | 86 | Q14:****解释用于降维的局部线性嵌入(LLE)算法**** 87 | 88 | - LLE 首先找到点的 k 个最近邻点。然后,它将每个数据向量近似为其 k 个最近邻的加权线性组合。最后,它计算最能从其邻居中重建向量的权重,然后生成由这些权重最能重建的低维向量; 89 | - LLE的优势是在降维时,保持了样本的局部特征;并且由于LLE 倾向于累积稀疏矩阵,它在计算空间和时间方面比其他算法更有效。 90 | 91 | Q15:**深度神经网络如何缓解维数诅咒的影响?** 92 | 93 | - 维数灾难是因为数据中存在相关特征或者太多噪声特征;深度神经网络缓解维度灾难的方法是**更好的数据建模**,即将数据在较低维空间中建模;比如使用word2vec,bottleneck feature(维度较低的隐藏层)等等 94 | 95 | Q16:**解释什么是t-SNE(t-Distributed Stochastic Neighbour Embedding)方法** 96 | 97 | - t-SNE的主要目标是将多维数据集转换为低维数据集,主要用于**数据探索和可视化高维数据;** 98 | - t-SNE使用具有一个自由度的 T 分布来计算低维空间中两点之间的相似度,而不是高斯分布。T 分布在低维空间中创建点的概率分布,这有助于减少拥挤问题。 99 | 100 | 引用:[https://towardsdatascience.com/t-distributed-stochastic-neighbor-embedding-t-sne-bb60ff109561](https://towardsdatascience.com/t-distributed-stochastic-neighbor-embedding-t-sne-bb60ff109561) 101 | 102 | Q17:****线性 SVM是否会遭受维数灾难?**** 103 | 104 | - SVM 也会遇到来自高维数据的问题;在高维+低样本量的情况下,对于 SVM 来说,很多数据点将同时成为支持向量,因此 SVM 会过度拟合。 105 | 106 | Q18:**维度灾难会如何影响K-means算法?** 107 | 108 | - 由于维度灾难的影响,在高维空间中,欧式距离的测度会失去意义,当维度趋于无穷时,数据集中任意两点的距离会趋向收敛,任意两点的最大距离和最小距离会变为相同。因此基于欧式距离的k-means算法,会无法进行聚类( 109 | 110 | Q19:**解释ICA算法,分析它与PCA方法的不同之处** 111 | 112 | - ICA,独立成分分析,指在只知道混合信号,而不知道源信号、噪声以及混合机制的情况下,分离或近似地分离出源信号的一种分析过程;是盲信号分析领域的一个强有力方法; 113 | - ICA与PCA区别: 114 | - PCA是将原始数据降维并提取出不相关的属性,而ICA是将原始数据降维并提取出相互独立的属性。 115 | - PCA目的是找到这样一组分量表示,使得重构误差最小,即最能代表原事物的特征。ICA的目的是找到这样一组分量表示,使得每个分量最大化独立,能够发现一些隐藏因素。由此可见,ICA的条件比PCA更强些。 116 | - ICA要求找到最大独立的方向,各个成分是独立的;PCA要求找到最大方差的方向,各个成分是正交的。 117 | - ICA认为观测信号是若干个统计独立的分量的线性组合,ICA要做的是一个解混过程。而PCA是一个信息提取的过程,将原始数据降维,现已成为ICA将数据标准化的预处理步骤。 118 | 119 | 引用:[https://cloud.tencent.com](https://cloud.tencent.com/developer/article/1477409) -------------------------------------------------------------------------------- /机器学习/降维/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/机器学习/降维/Untitled 1.png -------------------------------------------------------------------------------- /机器学习/降维/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/机器学习/降维/Untitled 2.png -------------------------------------------------------------------------------- /机器学习/降维/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/机器学习/降维/Untitled.png -------------------------------------------------------------------------------- /深度学习/1487069c-84e2-41bf-b1ab-00e251d38748_Export-20c7f85a-68b1-47c0-bf82-31d4f3c93c3b/NLP算法面试题 e4106cc12b494ed78fdb0c8da70dd20b/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/1487069c-84e2-41bf-b1ab-00e251d38748_Export-20c7f85a-68b1-47c0-bf82-31d4f3c93c3b/NLP算法面试题 e4106cc12b494ed78fdb0c8da70dd20b/Untitled.png -------------------------------------------------------------------------------- /深度学习/1cff4648-0cf6-446b-b41d-9d4d45a96c3d_Export-7cbe056a-8477-49e2-af07-0fff51fe9f16.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/1cff4648-0cf6-446b-b41d-9d4d45a96c3d_Export-7cbe056a-8477-49e2-af07-0fff51fe9f16.zip -------------------------------------------------------------------------------- /深度学习/1cff4648-0cf6-446b-b41d-9d4d45a96c3d_Export-7cbe056a-8477-49e2-af07-0fff51fe9f16/Unsupervised learning e6a4cf79c84b4dc5befdce45732063c3.md: -------------------------------------------------------------------------------- 1 | # Unsupervised learning 2 | 3 | # 初级: 4 | 5 | Q1:**无监督学习可以帮助解决哪些问题?** 6 | 7 | - 数据稀缺任务:对于监督学习,需要大量的标签数据才能使模型表现良好。无监督学习可以自动标记未标记的示例。这将通过聚类所有数据点然后将标记的标签应用于未标记的标签来工作。 8 | - 过度拟合:机器学习算法有时会通过从数据中的噪声中提取过多信息来过度拟合训练数据。发生这种情况时,算法正在记忆训练数据,而不是学习如何概括训练数据的知识。可以引入无监督学习作为正则化器。正则化是一个有助于降低机器学习算法复杂性的过程,有助于它捕获数据中的信号,而无需对噪声进行过多调整。 9 | - 异常值:数据的质量非常重要。如果机器学习算法对异常值(极少数情况)进行训练,那么它们的泛化误差将低于忽略它们的情况。无监督学习可以使用降维来执行异常值检测,并专门为异常值创建解决方案,并单独为正常数据创建解决方案。 10 | - 特征工程:特征工程是数据科学家执行的一项重要任务,但特征工程是非常劳动密集型的,需要人类创造性地设计特征。来自无监督学习的表示学习可用于自动学习正确类型的特征以帮助完成手头的任务。 11 | 12 | Q2:**怎样应用无监督学习解决维度灾难问题** 13 | 14 | - 使用无监督学习的降维方法(如PCA、SVD),可以在原始特征集中发现最显着的特征。然后将这个特征集的维度降低到一个可接受的范围,同时在这个过程中丢失很少的信息。这将有助于算法找到学习数据集的最佳模型。 15 | 16 | Q3:**PCA如何应用于降维?** 17 | 18 | - PCA主成分分析的想法是,我们可以选择“最重要”的数据分布方向,决定数据中最重要的几个特征的维度;主成分的方向是,使投影数据的方差最大化的方向,这种方式可以尽可能多地保留数据中的信息 19 | 20 | Q4:**无监督学习和自监督学习的区别** 21 | 22 | - 无监督学习:无监督学习不依赖任何标签值,通过对数据内在特征的挖掘,找到样本间的关系,比如聚类相关的任务。 23 | - 自监督学习:和无监督学习不同,自监督学习主要是利用辅助任务 (pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征。 24 | 25 | Q5:**如何用神经网络实现无监督学习?** 26 | 27 | - 神经网络用无监督学习以更好地表示输入数据;比如自动编码器autoencoder; 28 | - 神经网络可以学习从文档到embedding的映射,使得embedding能够表达文档的信息;这可以使用自动编码器来实现,aotoencoder训练的目标是重建原始向量,并将重建误差作为成本函数,将bottleneck特征作为提取的数据表示。 29 | 30 | ![Untitled](Unsupervised%20learning%20e6a4cf79c84b4dc5befdce45732063c3/Untitled.png) 31 | 32 | Q6:**解释去噪自动编码机(DAE)的算法** 33 | 34 | - 在Denoising Autoencoder中,数据被随机地加入噪声。然后,训练该模型以预测原始的、未损坏的数据点作为其输出。与AE相比,DAE学习数据的重建过程,比普通AE更健壮,能学到更多不同的特征模式 35 | 36 | ![Untitled](Unsupervised%20learning%20e6a4cf79c84b4dc5befdce45732063c3/Untitled%201.png) 37 | 38 | Q7:**为什么K-means算法会比GMM算法有更高的模型偏差?** 39 | 40 | - K-means 比 GMM 有更高的偏差,因为它其实是 GMM 的一个特例。K-means 假设聚类面是球形的(K-means假设每个维度的权重同等重要),而GMM的聚类面是椭球形的;并且聚类问题是一个硬聚类问题(假设每个数据点只能属于一个标签)。因此,从理论上讲,K-means 的性能应该与 GMM 相同(在特定的条件下)或更差 41 | 42 | 引用:[https://ai.stackexchange.com/questions](https://sakigami-yang.me/2017/10/23/kmeans-is-a-gmm/) 43 | 44 | [https://sakigami-yang.me/2017/10/23/kmeans-is-a-gmm/](https://sakigami-yang.me/2017/10/23/kmeans-is-a-gmm/) 45 | 46 | Q8**:解释CAE;CAE在什么场景下使用?** 47 | 48 | - CAE,是卷积自动编码器;在这种情况下,编码器是一个常规的 CNN 网络,它通过增加深度来减少输入的空间维度。而解码器必须进行反向操作,保证输出维度与输入维度一致,因此解码器一般采用反卷积层; 49 | - CAE一般在图像任务中使用;图像任务中,稠密连接的AE消耗计算量过大,并且不足以学习图像特征 50 | 51 | Q9:**聚类和降维算法有什么区别和联系?** 52 | 53 | - 聚类针对的是数据点,而降维针对的是数据的特征; 54 | - 聚类和降维都可以作为分类等问题的预处理步骤;都是无监督学习; 55 | 56 | Q10:**PCA如何用于异常检测?** 57 | 58 | - 将数据映射到低维特征空间,然后在特征空间不同维度上查看每个数据点跟其它数据的偏差 59 | - 另外一种是将数据映射到低维特征空间,然后由低维特征空间重新映射回原空间,尝试用低维特征重构原始数据,看重构误差的大小 60 | 61 | # 中级: 62 | 63 | Q11:**解释LDA算法** 64 | 65 | - LDA是一种有监督的机器学习技术,可以用来识别大规模文档集或语料库中的潜在隐藏的主题信息;该方法假设每个词是由背后的一个潜在隐藏的主题中抽取出来。 66 | - 设有20个主题,LDA主题模型的目标是为每一篇文章找到一个20维的向量,向量中的20个值代表着这篇文章属于某一个主题的概率大小。是一个类似于聚类的操作。 67 | - 对于语料库中的每篇文档,LDA定义了如下生成过程: 68 | - 对每一篇文档,从主题分布中抽取一个主题 69 | - 从上述被抽到的主题所对应的单词分布中抽取一个单词 70 | - 重复上述过程直至遍历文档中的每一个单词。 71 | 72 | 引用:[https://cloud.tencent.com/developer/article/1170675](https://cloud.tencent.com/developer/article/1170675) 73 | 74 | Q12:**LDA主题模型如何求解参数** 75 | 76 | - Gibbs采样或者变分推断EM算法 77 | 78 | Q13:**PCA和LDA的关系和不同?** 79 | 80 | - 相同: 81 | - 两者均可以对数据进行降维。 82 | - 两者在降维时均使用了矩阵特征分解的思想。 83 | - 两者都假设数据符合高斯分布。 84 | - 不同: 85 | - LDA是有监督的降维方法,而PCA是无监督的降维方法 86 | - LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。 87 | - LDA除了可以用于降维,还可以用于分类。 聚类 88 | - LDA择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。 89 | 90 | Created By 苏坡爱豆 -------------------------------------------------------------------------------- /深度学习/1cff4648-0cf6-446b-b41d-9d4d45a96c3d_Export-7cbe056a-8477-49e2-af07-0fff51fe9f16/Unsupervised learning e6a4cf79c84b4dc5befdce45732063c3/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/1cff4648-0cf6-446b-b41d-9d4d45a96c3d_Export-7cbe056a-8477-49e2-af07-0fff51fe9f16/Unsupervised learning e6a4cf79c84b4dc5befdce45732063c3/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/1cff4648-0cf6-446b-b41d-9d4d45a96c3d_Export-7cbe056a-8477-49e2-af07-0fff51fe9f16/Unsupervised learning e6a4cf79c84b4dc5befdce45732063c3/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/1cff4648-0cf6-446b-b41d-9d4d45a96c3d_Export-7cbe056a-8477-49e2-af07-0fff51fe9f16/Unsupervised learning e6a4cf79c84b4dc5befdce45732063c3/Untitled.png -------------------------------------------------------------------------------- /深度学习/24a5d324-1321-4766-a829-7801e9387aa0_Export-34f18bda-5850-4494-8053-5f756401200f.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/24a5d324-1321-4766-a829-7801e9387aa0_Export-34f18bda-5850-4494-8053-5f756401200f.zip -------------------------------------------------------------------------------- /深度学习/5256afdf-52a5-410c-845b-4b5099dd62b0_Export-1af4d6a4-cfa7-4927-b586-31566d94baa9.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/5256afdf-52a5-410c-845b-4b5099dd62b0_Export-1af4d6a4-cfa7-4927-b586-31566d94baa9.zip -------------------------------------------------------------------------------- /深度学习/5256afdf-52a5-410c-845b-4b5099dd62b0_Export-1af4d6a4-cfa7-4927-b586-31566d94baa9/LLM 4968d10b44c64639b1cecca08de3e8a5.md: -------------------------------------------------------------------------------- 1 | # LLM 2 | 3 | **Q1:讲解生成式语言模型的工作机理** 4 | 5 | 生成式语言模型将N个token作为输入,并一次生成一个token作为输出。然后它将该输出token合并为下一次迭代的输入的一部分,产生一个新的token输出,依此类推。此模式不断重复,直到达到停止条件,表明它已完成生成您需要的所有文本。 6 | 7 | ![https://miro.medium.com/v2/resize:fit:828/format:webp/1*zaRZlVk-dl0zVUOe0g_ufg.png](https://miro.medium.com/v2/resize:fit:828/format:webp/1*zaRZlVk-dl0zVUOe0g_ufg.png) 8 | 9 | 生成式语言模型的输出是所有可能标记的概率分布。概率分布向量中,每个值表示选择特定标记的概率。 10 | 11 | ![Untitled](LLM%204968d10b44c64639b1cecca08de3e8a5/Untitled.png) 12 | 13 | 这个概率分布来自训练阶段。在训练期间,模型会接触大量文本,并且在给定输入标记序列的情况下,调整其权重以预测良好的概率分布。 14 | 15 | GPT 生成模型是通过大部分互联网进行训练的,因此它们的预测反映了它们所看到的信息的混合。 16 | 17 | **Q2:解释LLM中token的概念** 18 | 19 | LLM会将输入文本分解为多个片段,每一部分大约是一个单词大小的字符序列或更小的字符序列,这种字符序列就是token。 20 | 21 | token可以是单词或只是字符块。例如,单词“hamburger”被分解为标记“ham”、“bur”和“ger”,而像“pear”这样的简短而常见的单词是单个标记。 22 | 23 | **Q3:在NLP任务中,使用Transformer的架构与使用RNN的架构相比,有什么优势?** 24 | 25 | - 在Transformer出现之前,通常使用LSTM与encoder-decoder架构完成序列到序列的任务;LSTM模型考虑到了单词之间的相互依赖,但是该模型有一个局限性:训练速度相对较慢,并且输入序列无法并行传递。Transformer的想法是在不使用循环网络的情况下维持序列中单词的相互依赖性,而仅使用处于其架构中心的注意力机制。注意力衡量两个序列的两个元素的相关程度。 26 | - 在基于 Transformer 的架构中,使用self-attention。自注意力层确定同一序列中不同单词的相互依赖关系,以将相关表示与其相关联。以这句话为例:“狗没有过马路,因为它太累了”。对于人类来说,显然“它”指的是“狗”而不是“街道”。因此,自注意力过程的目标是检测“狗”和“它”之间的联系”。与RNN相比,self-attention可以并行训练,使得 Transformer 的训练速度更快,并且已被证明对噪声和丢失数据具有更强的鲁棒性。 27 | - 另外,在上下文嵌入中,Transformer可以从上下文中提取信息来纠正丢失或嘈杂的数据,这是其他神经网络无法提供的。 28 | 29 | **Q4:如何评估LLM的性能** 30 | 31 | 评估LLM有两种方法:外在评估和内在评估。 32 | 33 | - **内在评估** 34 | 35 | 捕获模型捕获它应该捕获的内容(例如概率)的程度。例如困惑度、交叉熵 ,困惑度是模型预测的单词的逆概率的几何平均值。困惑度越低,训练效果就越好。 36 | 37 | - **外部评估(基于任务的评估)** 38 | 39 | 捕获模型在特定任务中的有用程度。例如给出两个不同LLM的输出,令人类比较打分。 40 | 41 | 42 | **Q5:LLM是如何预训练的?** 43 | 44 | - **MLM,由BERT**等双向模型使用,其中训练集中一定比例的单词被屏蔽,模型的任务是预测这些缺失的单词。请注意,在此任务中,模型可以看到缺失单词之前和之后的单词,这就是它被称为双向的原因。 45 | - **自回归**(例如 GPT),它们是单向的,预训练时看不到之后的单词,预测下一个单词。这是因为这些自回归模型是专门为更好的语言生成而设计的,这使得模型有必要以单向的方式进行预训练。 46 | 47 | **Q6:讲讲NSP预训练任务** 48 | 49 | - (NSP)用于语言建模,作为BERT模型训练过程的一半(另一半是掩码语言建模(MLM))。NSP的目标是预测一个句子是否逻辑上遵循模型呈现的另一个句子。 50 | - 在训练过程中,模型会呈现成对的句子,其中一些在原始文本中是连续的,而另一些则不是。然后训练模型来预测给定的句子对是否相邻。这使得模型能够理解句子之间的长期依赖关系。 51 | 52 | Q7:**LLM中的tokenisation技术** 53 | 54 | - **tokenisation**是将原始文本转换为一系列较小单元(称为token)的过程,这些单元可以是单词、子词或字符。**LLM**中使用的一些**tokenisation**技术包括: 55 | - **基于单词的**:此方法将文本拆分为单独的单词,将*每个单词*视为单独的标记。虽然简单直观,但基于单词的标记化可能会难以处理词汇表之外的单词,并且可能无法有效地处理具有复杂形态的语言。 56 | - **基于子词的**:基于子词的方法,例如***字节对编码(BPE)***和***WordPiece***,将文本分割成*更小的单元*,这些单元可以组合成整个单词。这种方法使法学硕士能够处理词汇表之外的单词,并更好地捕捉不同语言的结构。例如,**BPE合并***最常*出现的字符对来创建子字单元,而 WordPiece 采用*数据驱动的*方法将单词分段为子字标记。 57 | - **基于字符的**:此方法将*单个字符*视为标记。尽管它可以处理任何输入文本,但基于字符的标记化通常需要更大的模型和更多的计算资源,因为它需要处理更长的标记序列。 58 | 59 | Q8:在开发LLM时,怎样通过人为方法减少LLM的偏见? 60 | 61 | - **训练数据管理**:人类可以参与管理和注释高质量和多样化的训练数据。这可能包括识别和纠正偏见、确保观点平衡以及减少有争议或冒犯性内容的影响。 62 | - **模型微调**:专家可以通过提供有关模型输出的反馈来指导模型微调过程,通过RLHF帮助模型更好地避免有偏见或不正确的响应。 63 | - **评估和反馈**:人工审核人员可以评估模型的性能并向开发人员提供反馈,然后开发人员可以迭代改进模型。 64 | - **定制和控制**:可以为用户提供定制模型行为的选项,根据他们的喜好或要求调整输出。这种方法可以帮助用户通过根据特定上下文或领域定制模型来减轻模型响应中的偏差。 65 | 66 | Q9:****哪些因素会导致LLM中的偏见?**** 67 | 68 | LLM偏见是指存在系统性的误述、归因错误或事实扭曲,导致偏向某些群体或想法,从而使刻板印象永久化,或根据学习的模式做出错误的假设。此类模型中的偏差可能由以下几个因素引起: 69 | 70 | - **训练数据**:如果用于训练语言模型的数据包含来自源材料或通过选择过程的偏差,这些偏差可以被模型吸收并随后反映在其行为中。 71 | - **算法**:偏差也可以通过用于处理和学习数据的算法引入。例如,如果算法更加重视某些特征或数据点,它可能会无意中引入或放大数据中存在的偏差 72 | 73 | Q10:**在 Transformer 中,同一个单词在不同的句子中可以有不同的注意力权重吗?** 74 | 75 | 是的;Transformer架构查看整个句子和句子中单词的位置(位置嵌入),然后使用注意力权重对它们进行加权,计算出注意力权重。 76 | 77 | 引用:[https://stats.stackexchange.com/questions/575166/in-a-tranformer-the-same-word-can-have-different-attention-weights-in-different](https://stats.stackexchange.com/questions/575166/in-a-tranformer-the-same-word-can-have-different-attention-weights-in-different) 78 | 79 | Q11:****LLM 中的因果语言建模CLM与屏蔽语言建模MLM有什么区别?**** 80 | 81 | - CLM 是一种自回归方法,其中模型经过训练以在给定先前标记的情况下预测序列中的下一个标记。CLM 用于 GPT-2 和 GPT-3 等模型,非常适合文本生成和摘要等任务。然而,CLM 模型具有单向上下文,这意味着它们在生成预测时仅考虑过去而不考虑未来上下文。 82 | - MLM 是一种用于 BERT 等模型的训练方法,其中输入序列中的一些标记被屏蔽,模型学习根据周围的上下文来预测被屏蔽的标记。MLM 具有双向上下文的优势,允许模型在进行预测时考虑过去和未来的token。这种方法对于文本分类、情感分析和命名实体识别等任务特别有用。 83 | 84 | 引用:[https://medium.com/@tom_21755/understanding-causal-llms-masked-llm-s-and-seq2seq-a-guide-to-language-model-training-d4457bbd07fa](https://medium.com/@tom_21755/understanding-causal-llms-masked-llm-s-and-seq2seq-a-guide-to-language-model-training-d4457bbd07fa) 85 | 86 | Q12:**RLHF完整训练过程是什么?** 87 | 88 | - **步骤1:监督微调(SFT)** —— 使用精选的人类回答来微调预训练的语言模型以应对各种查询; 89 | - **步骤2:奖励模型微调** —— 使用一个包含人类对同一查询的多个答案打分的数据集来训练一个独立的(通常比 SFT 小的)奖励模型(RW); 90 | - **步骤3:RLHF 训练** —— 利用 Proximal Policy Optimization(PPO)算法,根据 RW 模型的奖励反馈进一步微调 SFT 模型。 91 | 92 | Q13:**GPT和bert有什么不一样?** 93 | 94 | - GPT-3 是自回归模型,而 BERT 是双向的。GPT-3 在进行预测时仅考虑左侧上下文,而 BERT 会同时考虑左侧和右侧上下文。这使得 BERT 更适合情感分析或 NLU 等任务。 95 | - GPT-3 是在 45TB 的数据上进行训练,而 BERT 是在 3TB 的数据上进行训练。因此,GPT-3 比 BERT 能够访问更多信息 96 | 97 | Q14:**Wordpiece与BPE之间有什么区别?** 98 | 99 | - WordPiece与BPE的最大区别在于,如何选择两个子词进行合并:BPE选择频数最高的相邻子词合并,而WordPiece选择能够提升语言模型概率最大的相邻子词加入词表。 100 | 101 | Q15:****BERT 中的word embedding、position embedding和positional encoding有什么区别?**** 102 | 103 | word embedding是一种可学习的向量表示,每个词都被赋予一个one-hot编码,然后该编码充当索引,与该索引相对应的是一个维度向量,在训练模型时可以学习其中的系数。 104 | 105 | position embedding类似于word embedding, 只不过它是用句子中的位置作为索引,而不是一种热编码。 106 | 107 | positional encoding不是可学习的,而是选择的一种映射数学函数。 108 | 109 | Q16:**Adaptive Softmax在LLM中有何用处?** 110 | 111 | 在NLP的大部分任务中,都会用到softmax,但是对于词汇量非常大的任务,每次进行完全的softmax会有非常大的计算量,很耗时(每次预测一个token都需要O(|V|)的时间复杂度); 112 | 113 | adaptive softmax提出利用单词分布不均衡的特点(unbalanced word distribution)来形成clusters, 这样在计算softmax时可以避免对词汇量大小的线性依赖关系,降低计算时间; 114 | 115 | Q17:**如何减轻LLM中的“幻觉”现象** 116 | 117 | LLM幻觉是指LLM生成的内容与给定的输入或源内容不一致,或者完全没有意义;LLM的幻觉现象是由于训练数据集有限、过时或矛盾,导致LLM在理解和回答用户问题时,往往依赖于自己学习到的统计规律或模式,而不是基于事实或逻辑; 118 | 119 | 减轻LLM幻觉的方法主要有以下几种: 120 | 121 | - 人工审核:这种方法是在LLM生成内容后,由人工进行审核和修改,以确保内容的正确性和合理性。这种方法的优点是可以有效地避免或纠正幻觉,提高内容质量;缺点是需要耗费大量的人力和时间成本,而且可能存在人为的错误或偏见。 122 | - 数据过滤:这种方法是在LLM生成内容前,对输入或源内容进行过滤和清洗,以去除不相关、不准确或不一致的信息。这种方法的优点是可以减少幻觉的可能性,提高内容的相关性和一致性;缺点是需要耗费大量的计算资源和算法技巧,而且可能存在数据丢失或过度简化的风险。 123 | - 知识图谱:这种方法是在LLM生成内容时,利用一个结构化的知识库(知识图谱)来提供事实信息和逻辑推理,以增强LLM的理解和回答能力。这种方法的优点是可以提高内容的有意义性和忠实性,提供更丰富和更深入的信息;缺点是需要构建和维护一个大规模且高质量的知识图谱,而且可能存在知识图谱不完备或不更新的问题。 124 | 125 | Q18:**有哪些方法可以降低LLM训练时的显存占用** 126 | 127 | - 混合精度训练,例如AMP(Automatic Mixed Precision)。这种技术旨在在保持收敛性的同时最大化GPU张量核心的吞吐量。 128 | - 梯度累积:梯度累积中,每批计算的量较小,并在多次迭代中累积梯度(通常求和或求平均),而不是在每个批次之后立刻更新模型权重。一旦累积的梯度达到目标「虚拟」批大小,模型权重就会用累积的梯度更新。 129 | - QLora:考虑到LLM的参数的低秩属性(low intrinsic dimension),在做finetune的时候不做full-finetune,而是用一个降维矩阵A和一个升维矩阵B去做finetune。 130 | 131 | ![Untitled](LLM%204968d10b44c64639b1cecca08de3e8a5/Untitled%201.png) 132 | 133 | Q19:**Lora微调方法的局限性** 134 | 135 | 基于低秩的微调可能并不always work,比如finetune与pretrain的gap过大的时候,比如中英差异;如LLama在Lora中文语料时效果不佳 136 | 137 | Q20:**bf16,fp16半精度训练的区别** 138 | 139 | bf16 用8bit 表示指数,7bit 表示小数;fp16用5bit 表示指数,10bit 表示小数。也就是说bf16 可表示的整数范围更广泛,但是精度较低;fp16 表示整数范围较小,但是精度较高。 140 | 141 | 尽管BF16的精度较低,但是它的表示范围较大,因此在深度学习中通常是更好的选择。此外,也是由于精度没有那么高,BF16在操作时需要的硬件资源也会较少。 142 | 143 | Q21:**解释混合精度训练的具体流程** 144 | 145 | 同时有低精度和高精度的权重(float16和float32),前向传播用低精度来算,反向传播的gradients也用低精度来算,但是在更新参数的时候更新的是高精度的参数。然后在下一次的前向传播之前,对这个更新后的高精度参数量化为低精度参数,再开启下一次前向传播。 146 | 147 | Q22:**RLHF过程中RM随着训练过程得分越来越高,效果就一定好吗?有没有极端情况?** 148 | 149 | Q23:**解释P-tuning 的工作原理,并说明它与传统的 fine-tuning方法的不同之处。** -------------------------------------------------------------------------------- /深度学习/5256afdf-52a5-410c-845b-4b5099dd62b0_Export-1af4d6a4-cfa7-4927-b586-31566d94baa9/LLM 4968d10b44c64639b1cecca08de3e8a5/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/5256afdf-52a5-410c-845b-4b5099dd62b0_Export-1af4d6a4-cfa7-4927-b586-31566d94baa9/LLM 4968d10b44c64639b1cecca08de3e8a5/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/5256afdf-52a5-410c-845b-4b5099dd62b0_Export-1af4d6a4-cfa7-4927-b586-31566d94baa9/LLM 4968d10b44c64639b1cecca08de3e8a5/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/5256afdf-52a5-410c-845b-4b5099dd62b0_Export-1af4d6a4-cfa7-4927-b586-31566d94baa9/LLM 4968d10b44c64639b1cecca08de3e8a5/Untitled.png -------------------------------------------------------------------------------- /深度学习/531c5315-260c-412c-83b5-5e38091718e2_Export-76583222-5ff1-401a-8db3-9c2620f65b87.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/531c5315-260c-412c-83b5-5e38091718e2_Export-76583222-5ff1-401a-8db3-9c2620f65b87.zip -------------------------------------------------------------------------------- /深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970.zip -------------------------------------------------------------------------------- /深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73.md: -------------------------------------------------------------------------------- 1 | # ASR/TTS相关面试题 2 | 3 | Q1:****Conformer模型结构**** 4 | 5 | - Conformer的模型在输入时首先对输入通过卷积进行下采样,即通过一个卷积核大小为3x3,步长为2的二维卷积层,将输入的维度降为原先的1/4,后续通过一系列的Conformer Blocks模块,代替以往的Transformer Blocks进行语音识别任务。 6 | - 一个Conformer Block主要包含三个基本模块:前馈神经网络模块(feed forward module,FFM)、多头自注意力机制模块(multi-head self attention module,MHSAM)和卷积模块(convolution module,CM),以在多头自注意力机制模块与卷积模块两侧各连接一个前馈神经网络模块为具体结构。这种结构将Transformer中的一个前馈神经网络模块拆分成两个半步前馈层连接注意力层的输出与输入,能够比使用单一前馈层更好地提升模型效果。 7 | 8 | Q2:****Transformer如何实现流式识别**** 9 | 10 | - 基于块(chunk)的解决方案 11 | 12 | 第一种方案为基于块的解决方案,如下图所示,其中虚线为块的分隔符。其主体思想是把相邻帧变成一个块,之后根据块进行处理。这种方法的优点是可以快速地进行训练和解码,但由于块之间没有联系,所以导致模型准确率不佳。 13 | 14 | ![Untitled](ASR%20TTS%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E9%A2%98%208e9ba123ed6b41c18e69ed787f493d73/Untitled.png) 15 | 16 | - 基于块的流式 Transformer: 17 | 18 | 首先,在当前帧左侧,让每一层的每一帧分别向前看 n 帧,这样随着层数的叠加,Transformer 对历史的视野可以积累。如果有 m 层,则可以看到历史的 n*m 帧。虽然看到了额外的 n*m 帧,但这些帧并不会拖慢解码的时间,因为它们的表示会在历史计算时计算好,并不会在当前块进行重复计算。与解码时间相关的,只有每一层可以看到帧的数目。 19 | 20 | 因为希望未来的信息延时较小,所以要避免层数对视野的累积效应。为了达到这个目的,可以让每一个块最右边的帧没有任何对未来的视野,而块内的帧可以互相看到,这样便可以阻止延时随着层数而增加。 21 | 22 | ![Untitled](ASR%20TTS%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E9%A2%98%208e9ba123ed6b41c18e69ed787f493d73/Untitled%201.png) 23 | 24 | Q3:****multi-head attention中多头的作用**** 25 | 26 | - 多头的注意力有助于网络捕捉到更丰富的特征信息,允许模型在不同位置共同关注来自不同表示子空间的信息。类似于CNN中的多个卷积核 27 | 28 | Q4:****解释空洞卷积,空洞卷积有什么问题?**** 29 | 30 | - 在卷积核中增加空洞来增加感受野,不增加过多计算。普通卷积有着3*3的卷积核空洞卷积有着3*3的卷积核,空洞rate为2,可以使得神经网络在同样的层数下,拥有更大的感受野。 31 | - 空洞卷积的卷积核不连续,不是所有的信息参与了计算,导致信息连续性的损失,引起栅格效应 32 | 33 | Q5:****subword建模对集外词的拓展?**** 34 | 35 | - 利用subword拓展skip-gram模型意思即为使用单词的一部分来代替单词,这样的好处是可以利用词根、词缀之类的结构来增大信息量,强化对于不常见词的识别。 36 | - 举例说明:现有一句话"the quick brown fox jumped over the lazy dog",按照原本的skip-gram模型,给定单词quick,模型需要学习通过quick预测到单词the和brown。subword扩展将单词粒度细化,quick变成了{qui, uic, ick},给定子词uic,模型需要学习通过uic预测到子词qui和ick 37 | 38 | Q6:****CTC的原理**** 39 | 40 | - CTC(Connectionist Temporal Classification)是一种避开输入与输出手动对齐的一种方式;用来解决输入和输出序列长度不一、无法对齐的问题。 41 | - CTC算法对于一个给定的输入X,它可以计算对应所有可能的输出Y的概率分布。通过该概率分布,可以预测最大概率对应的输出或者某个特定输出的概率 42 | - CTC通过引入blank标志,解决输入和输出之间的对齐问题;通过动态规划算法求解最优序列 43 | 44 | 引用:[https://zhuanlan.zhihu.com/p/568176479](https://zhuanlan.zhihu.com/p/568176479) 45 | 46 | Q7:**CTC有哪几个特点?** 47 | 48 | - 条件独立:CTC的一个非常不合理的假设是其假设每个时间片都是相互独立的,这是一个非常不好的假设。在OCR或者语音识别中,各个时间片之间是含有一些语义信息的,所以如果能够在CTC中加入语言模型的话效果应该会有提升。 49 | - 单调对齐:CTC的另外一个约束是输入与输出之间的单调对齐,在OCR和语音识别中,这种约束是成立的。但是在一些场景中例如机器翻译,这个约束便无效了。 50 | - 多对一映射:CTC的又一个约束是输入序列的长度大于标签数据的长度,但是对于标签数据的长度大于输入的长度的场景,CTC便失效了。 51 | 52 | Q8:****CTC和端到端的关系**** 53 | 54 | - 目前端到端的语音识别方法主要有基于CTC和基于Attention两类方法及其改进方法。CTC实质是一种损失函数,常与LSTM联合使用。基于CTC的模型结构简单,可读性较强,但对发音字典和语言模型的依赖性较强,且需要做独立性假设。RNN-Transducer模型对CTC进行改进,加入一个语言模型预测网络,并和CTC网络通过一层全连接层得到新的输出,这样解决了CTC输出需做条件独立性假设的问题。 55 | 56 | Q9:****CTC和chain的关系**** 57 | 58 | - 相同点:都是在label生成的多条特定路径后的前向后向运算。 59 | - 区别:label生成的多条特定路径的方式不同:chain numerator的多条特定路径是对齐产生的;ctc是通过下图方式得到。 60 | 61 | ![Untitled](ASR%20TTS%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E9%A2%98%208e9ba123ed6b41c18e69ed787f493d73/Untitled%202.png) 62 | 63 | - blank label不同:chain numerator 没有blank label,如果认为triphone三个state 中的最后一个state 是blank label的话,那么chain numerator的每个triphone都有自己的blank label;在ctc中所有的phone 共享一个blank label。 64 | - 是否考虑了language model:在chain numerator计算前向/后向概率时,每一个跳转的概率都有自己的权重。在ctc中,每一步跳转都认为是等概率的,直接忽视跳转概率。 65 | - 训练样本的时长不同由于chain numerator是alignment的路径,所以长度可以控制。无论输入是多少,最终都可以截断成150frames的训练数据。而ctc是把整个样本全部拿来训练。 66 | 67 | Q10:****如何理解强制对齐?**** 68 | 69 | - 强制对齐(Forced Alignment),是指给定音频和文本,确定每个单词(音素)的起止位置的过程,一般使用Viterbi解码实现。强制对齐是语音识别的一种特殊的、简化了的情况,由于它的简单性,强制对齐通常具有较高的准确率(音素级别准确率可达90%,单词级别可达95%以上)。使用强制对齐,我们就可以对我们收集到的标准发音的数据进行处理:根据音频和它对应的文本进行强制对齐,得到每个音标对应的片段;对各个音标收集到的样本抽取特征并进行训练。通过对大量数据进行强制对齐,我们对每个音标得到一个模型,该模型将用于后续的打分流程。 70 | 71 | Q11:****CTC与语言模型的结合**** 72 | 73 | - 在一些语言识别问题中,也会有人在输出中加入语言模型来提高准确率,所以我们也可以把语言模型作为推理的一个考虑因素: 74 | 75 | ![Untitled](ASR%20TTS%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E9%A2%98%208e9ba123ed6b41c18e69ed787f493d73/Untitled%203.png) 76 | 77 | L(Y)以语言模型token为单位,计算Y的长度,起到单词插入奖励的作用。如果 L(Y)是一个基于单词的语言模型,那它计数的是Y中的单词数量;如果是一个基于字符的语言模型,那它计数的就是Y中的字符数。语言模型的一个突出特点是它只为单词/字符扩展前的形式计分,不会统计算法每一步扩展时的输出,这一点有利于短前缀词汇的搜索,因为它们在形式上更稳定。集束搜索可以添加语言模型得分和单词插入项奖励,当提出扩展字符时,我们可以在给定前缀下为新字符添加语言模型评分。 78 | 79 | Q12:**解释BPE训练准则** 80 | 81 | - 字节对编码(BPE, Byte Pair Encoder),又称 digram coding 双字母组合编码,是一种数据压缩算法,用来在固定大小的词表中实现可变长度的子词。该算法简单有效,因而目前它是最流行的方法。BPE的训练和解码范围都是一个词的范围。BPE 首先将词分成单个字符,然后依次用另一个字符替换频率最高的一对字符 ,直到循环次数结束。 82 | 83 | Q13:**解释FST压缩算法,FST有什么优点?** 84 | 85 | - FST是一种有限状态转移机,有两个优点:1)空间占用小。通过对词典中单词前缀和后缀的重复利用,压缩了存储空间;2)查询速度快。O(len(str))的查询时间复杂度。 86 | 87 | Q14:****HMM前向算法与维特比算法的区别**** 88 | 89 | - 隐马尔科夫模型用来解决三个问题:评估、解码和学习。在隐马尔科夫模型中,前向算法是用来评估,即计算某个观察序列的概率,而维特比算法则是用来解码,即寻找某个观察序列最佳的隐藏状态序列。除此之外,维特比算法的目的是找出当前时刻,指定观察值时,哪个状态的前向概率最大,并记下这一状态的前一状态,递归求得最优路径;而前向算法则是保存当前的前向概率,作为计算下一时刻前向概率的输入值,最终求序列所有前向概率和得到观察序列的概率。 90 | 91 | Q15:****解释CTC对齐、HMM对齐、RNN-T对齐异同**** 92 | 93 | - 对齐方式:HMM对齐是对token进行重复,CTC对齐是引入了blank,可以插在任何地方,但是其个数和token重复个数的和要等于acoustic features的个数,RNN-T对齐也引入了blank,但是其是作为一个acoustic feature结束,下一个acoustic features开始的间隔,因此,blank的个数就等于acoustic features的个数。 94 | 95 | ![Untitled](ASR%20TTS%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E9%A2%98%208e9ba123ed6b41c18e69ed787f493d73/Untitled%204.png) 96 | 97 | Q16:****beam search的算法细节与具体实现**** 98 | 99 | - 算法原理:beam search有一个超参数beam_size,设为 k 。第一个时间步长,选取当前条件概率最大的 k 个词,当做候选输出序列的第一个词。之后的每个时间步长,基于上个步长的输出序列,挑选出所有组合中条件概率最大的 k 个,作为该时间步长下的候选输出序列。始终保持 k 个候选。最后从k 个候选中挑出最优的。 100 | - 中心思想:假设有n句话,每句话的长度为T。encoder的输出shape为(n, T, hidden_dim),扩展成(n*beam_size, T, hidden_dim)。decoder第一次输入shape为(n, 1),扩展到(n*beam_size, 1)。经过一次解码,输出得分的shape为(n*beam_size, vocab_size),路径得分log_prob的shape为(n*beam_size, 1),两者相加得到当前帧的路径得分。reshape到(n, beam_size*vocab_size),取topk(beam_size),得到排序后的索引(n, beam_size),索引除以vocab_size,得到的是每句话的beam_id,用来获取当前路径前一个字;对vocab_size取余,得到的是每句话的token_id,用来获取当前路径下一字。 101 | 102 | Q17:****TTS端到端模型与传统模型的区别**** 103 | 104 | - 传统模型:传统模型通常由不同的组件组成,例如文本处理模块、声学模型、声码器等等。一方面不同的组件之间相互组装设计比较费力。另一方面由于组件之间单独训练,可能会到导致每个组成部分之间的错误会叠加,从而不断放大误差。例如统计参数语音合成(TTS)中通常有提取各种语言特征的文本前端、持续时间模型、声学特征预测模型等等。这些组件基于广泛的领域专业知识,并且设计起来很费力。它们也是独立训练的,所以每个组成部分的错误可能会叠加。现代TTS设计的复杂性导致在构建新系统时需要大量的工程工作。 105 | - 端到端模型:端到端模型首先减轻了费力的组装设计,利用一个神经网络代替了传统模型中复杂的建模过程,其次更容易对各种(例如音色或者语种)属性或者高级特征(例如语音中的情感)进行特征的捕获与提取。单个模型相比于每个组件错误累加来说更加健壮,能有效减少错误的积累。 106 | 107 | Q18:****mfcc特征与fbank的区别**** 108 | 109 | - fbank只是缺少mfcc特征提取的dct倒谱环节,其他步骤相同。 110 | - fbank的不足:fBank特征已经很贴近人耳的响应特性,但是仍有一些不足,其相邻的特征高度相关(相邻滤波器组有重叠),因此当我们用HMM对音素建模的时候,几乎总需要首先进行倒谱转换,通过这样得到MFCC特征。 111 | - 计算量:MFCC是在FBank的基础上进行的,所以MFCC的计算量更大。 112 | - 特征区分度:FBank特征相关性较高,MFCC具有更好的判别度,所以大多数语音识别论文中用的是MFCC,而不是FBank。 113 | 114 | Q19:****简述如何实现单音素模型到三音素模型的对齐**** 115 | 116 | - 单音子模型的假设是一个音素的实际发音与其左右的音素无关。这个假设与实际并不符合。由于单音子模型过于简单,识别结果不能达到最好,因此需要继续优化升级。就此引入多音子的模型。最为熟悉的就是三音子模型,即上下文相关的声学模型。通过单音素模型得到单音素各个状态所有对应的特征集合,然后做上下文的扩展得到三音素的各个状态所有对应的特征集合,我们可以把训练数据上所有的单音素的数据对齐转为三音素的对齐。 117 | 118 | ![Untitled](ASR%20TTS%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E9%A2%98%208e9ba123ed6b41c18e69ed787f493d73/Untitled%205.png) 119 | 120 | Q20:**ASR三音素模型中,为什么要做状态绑定?** 121 | 122 | - 假如有218音素,若使用三音子模型则有218的3次方个三音子。如果不进行聚类,需要建立218*218*218*3个混合gmm模型(假设每个triphone有3个状态)。一方面计算量巨大,另一方面会引起数据稀疏。所以会根据数据特征对三音子的状态进行绑定。 123 | 124 | Q21:**EM算法为什么会陷入局部最优?EM算法最终会收敛吗?** 125 | 126 | - EM算法的似然函数是非凸的,因此会陷入局部最优 127 | - E-Step 主要通过观察数据和现有模型来估计参数,然后用这个估计的参数值来计算似然函数的期望值;而 M-Step 是寻找似然函数最大化时对应的参数。由于算法会保证在每次迭代之后似然函数都会增加,所以函数最终会收敛。 128 | 129 | Q22:****HMM的特点**** 130 | 131 | - HMM是隐马尔科夫过程,对语音信号的时间序列结构建立统计模型。HMM 包含隐藏状态序列和输出状态序列,前者通过后者表现出来,状态之间的转移通过概率转移矩阵来建模。人的言语过程实际上就是一个双重随机过程,语音信号本身是一个可观测的时变序列,是由大脑根据语法知识和言语需要(不可观测的状态)发出的音素的参数流。可见, HMM合理地模仿了这-一过程,很好地描述了语音信号的整体平稳性和局部平稳性,是较为理想的一种语音模型。 132 | 133 | Q23:****GMM与k-means的关系**** 134 | 135 | - K-Means算法可以看作是一种简化的混合高斯模型,在GMM模型中,需要估计的参数有每个高斯成分前的系数,每个高斯成分的协方差矩阵和均值向量。K-Means等价于固定GMM中每个高斯成分的系数都相等,每个高斯成分都协方差矩阵为单位阵,只需要优化每个高斯成分的均值向量。 136 | 137 | Q24:****RNN-T模型结构**** 138 | 139 | - RNN-T在CTC模型的Encoder基础上,又加入了将之前的输出作为输入的一个RNN,称为Prediction Network,再将其输出的隐藏向量与encoder得到的输出放到一个joint network中,得到输出logit再将其传到softmax layer得到对应的class的概率。 140 | 141 | ![Untitled](ASR%20TTS%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E9%A2%98%208e9ba123ed6b41c18e69ed787f493d73/Untitled%206.png) 142 | 143 | Q25:****模型的加速方法**** 144 | 145 | (1)轻量化模型设计 146 | 147 | 从模型设计时就采用一些轻量化的思想,例如采用深度可分离卷积、分组卷积等轻量卷积方式,减少卷积过程的计算量。此外,利用全局池化来取代全连接层,利用1×1卷积实现特征的通道降维,也可以降低模型的计算量,这两点在众多网络中已经得到了应用。 148 | 149 | 对于轻量化的网络设计,目前较为流行的有SqueezeNet、MobileNet及ShuffleNet等结构。其中,SqueezeNet采用了精心设计的压缩再扩展的结构,MobileNet使用了效率更高的深度可分离卷积,而ShuffleNet提出了通道混洗的操作,进一步降低了模型的计算量。 150 | 151 | (2)BN层合并 152 | 153 | 在训练检测模型时,BN层可以有效加速收敛,并在一定程度上防止模型的过拟合,但在前向测试时,BN层的存在也增加了多余的计算量。由于测试时BN层的参数已经固定,因此可以在测试时将BN层的计算合并到卷积层,从而减少计算量,实现模型加速。 154 | 155 | (3)网络剪枝 156 | 157 | 网络剪枝:在卷积网络成千上万的权重中,存在着大量接近于0的参数,这些属于冗余参数,去掉后模型也可以基本达到相同的表达能力,因此有众多学者以此为出发点,搜索网络中的冗余卷积核,将网络稀疏化,称之为网络剪枝。具体来讲,网络剪枝有训练中稀疏与训练后剪枝两种方法。 158 | 159 | (4)权重量化 160 | 161 | 是指将网络中高精度的参数量化为低精度的参数,从而加速计算的方法。高精度的模型参数拥有更大的动态变化范围,能够表达更丰富的参数空间,因此在训练中通常使用32位浮点数(单精度)作为网络参数的模型。训练完成后为了减小模型大小,通常可以将32位浮点数量化为16位浮点数的半精度,甚至是int8的整型、0与1的二值类型。典型方法如Deep Compression。 162 | 163 | (5)张量分解 164 | 165 | 由于原始网络参数中存在大量的冗余,除了剪枝的方法以外,我们还可以利用SVD分解和PQ分解等方法,将原始张量分解为低秩的若干张量,以减少卷积的计算量,提升前向速度。 166 | 167 | (6)知识蒸馏 168 | 169 | 通常来讲,大的模型拥有更强的拟合与泛化能力,而小模型的拟合能力较弱,并且容易出现过拟合。因此,我们可以使用大的模型指导小模型的训练,保留大模型的有效信息,实现知识的蒸馏。 170 | 171 | 引用:[https://zhuanlan.zhihu.com/p/575065661](https://zhuanlan.zhihu.com/p/575065661) -------------------------------------------------------------------------------- /深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 2.png -------------------------------------------------------------------------------- /深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 3.png -------------------------------------------------------------------------------- /深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 4.png -------------------------------------------------------------------------------- /深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 5.png -------------------------------------------------------------------------------- /深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled 6.png -------------------------------------------------------------------------------- /深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/63e02df0-f39a-4d23-8a3d-85ec16ece257_Export-2901e449-79c7-440f-bc91-d5f64305b970/ASR TTS相关面试题 8e9ba123ed6b41c18e69ed787f493d73/Untitled.png -------------------------------------------------------------------------------- /深度学习/8138f22b-a9a6-40d2-b95d-3268cb8db525_Export-dfac2010-e33f-4307-8f6b-9533df69b636.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/8138f22b-a9a6-40d2-b95d-3268cb8db525_Export-dfac2010-e33f-4307-8f6b-9533df69b636.zip -------------------------------------------------------------------------------- /深度学习/8138f22b-a9a6-40d2-b95d-3268cb8db525_Export-dfac2010-e33f-4307-8f6b-9533df69b636/多模态 2c047fee7c4e460c8b7acd60e6285a01.md: -------------------------------------------------------------------------------- 1 | # 多模态 2 | 3 | Q1:**对多模态的了解** 4 | 5 | - 多模态机器学习,英文全称 Multi Modal Machine Learning (MMML),通过机器学习的方法实现处理和理解多源模态信息的能力。目前比较热门的研究方向是图像、视频、音频、语义之间的多模态学习。 6 | - 多模态机器学习的目的是建立能够从多种模式处理和关联信息的模型;现在技术场景下,主要有以下几个挑战: 7 | - 如何以一种利用多模态的互补性和冗余性的特质来表示和总结多模态数据 8 | - 确定来自两种或两种以上不同模式的要素之间的直接关系 9 | - 如何从一种模式的知识学习可以帮助一个计算模型训练另一个不同的模态 10 | 。当一种模式的资源有限(例如,有注释的数据)时,这一挑战尤其重要 11 | 12 | Q2:**多模态的特征融合的方式有哪些?** 13 | 14 | - 基于简单操作的,基于注意力的,基于双线性池化的方法: 15 | - 简单操作融合办法,对模态间的特征进行拼接或加权求和,后续的网络层会自动对这种操作进行自适应。 16 | - 基于注意力机制的融合办法,如SAN、双注意力网络DAN 17 | - 基于双线性池化的方法:融合视觉特征向量和文本特征向量来获得一个联合表征空间,方法是计算他们俩的外积,这种办法可以利用这俩向量元素的所有的交互作用 18 | 19 | Q3:**多模态的预训练方式有哪些?** 20 | 21 | - 预训练模型通过在大规模无标注数据上进行预训练,一方面可以将从无标注数据上更加通用的知识迁移到目标任务上,进而提升任务性能;预训练模型在多模态任务上的运用主要有: 22 | - MLM(MaskedLanguage Modeling):将一部分的词语进行mask,任务是根据上下文推断该单词。 23 | - MOC(Masked Object Classification):对图像的一部分内容进行mask,任务是对图像进行分类,此处的分类使用的依然是目标检测技术,只是单纯的将目标检测中置信度最高的一项作为分类类别。 24 | - VLM(Visual-linguistic Matching):利用[CLS]的最终隐藏状态来预测语言句子是否与视觉内容语义匹配 25 | - 图片-文本对齐(Cross-Modality Matching):通过50%的概率替换图片对应的文本描述,使模型判断图片和文本描述是否是一致的。 26 | 27 | 引用:[https://zhuanlan.zhihu.com/p/412126626](https://zhuanlan.zhihu.com/p/412126626) 28 | 29 | Q4:**了解clip模型吗** 30 | 31 | - clip模型利用text信息监督视觉任务自训练,将分类任务化成了图文匹配任务,效果可与全监督方法相当; 32 | - clip证明了简单的预训练任务,即预测哪个标题caption与哪个图像相匹配,是一种有效的、可扩展的方法,可以在从互联网上收集的4亿个(图像、文本)对数据集上从头开始学习SOTA的图像表示。 33 | - 在预训练后,使用自然语言来引用学习到的视觉概念(或描述新的概念),使模型zero-shot转移到下游任务。 34 | 35 | 引用:[https://towardsdatascience.com/clip-the-most-influential-ai-model-from-openai-and-how-to-use-it-f8ee408958b1](https://towardsdatascience.com/clip-the-most-influential-ai-model-from-openai-and-how-to-use-it-f8ee408958b1) 36 | 37 | Q5:**简述什么是协同学习** 38 | 39 | - 协同学习是指使用一个资源丰富的模态信息来辅助另一个资源相对贫瘠的模态进行学习;协同学习是与需要解决的任务无关的,因此它可以用于辅助多模态映射、融合及对齐等问题的研究。 40 | - 协同学习比较常探讨的方面目前集中在领域适应性(Domain Adaptation)问题上,即如何将train domain上学习到的模型应用到 application domain。 41 | 42 | ![Untitled](%E5%A4%9A%E6%A8%A1%E6%80%81%202c047fee7c4e460c8b7acd60e6285a01/Untitled.png) 43 | 44 | Q6:**多模态对齐技术有哪些?** 45 | 46 | - 模态对齐是多模态融合关键技术之一,是指从两个或多个模态中查找实例子组件之间的对应关系;多模态对齐方法分为显式对齐和隐式对齐两种类型。显式对齐关注模态之间子组件的对齐问题,而隐式对齐则是在深度学习模型训练期间对数据进行潜在的对齐。 47 | - 显式对齐: 48 | - 无监督方法;如DTW,在不同模态的实例之间没有用于直接对齐的监督标签 49 | - 监督方法:从无监督的序列对齐技术中得到启发,并通过增强模型的监督信息来获得更好的性能 50 | - 隐式对齐: 51 | - 图像模型方法:需要大量训练数据或人类专业知识来手动参与 52 | - 神经网络方法:在模型训练期间引入对齐机制,通常会考虑注意力机制 53 | 54 | Created By 苏坡爱豆 -------------------------------------------------------------------------------- /深度学习/8138f22b-a9a6-40d2-b95d-3268cb8db525_Export-dfac2010-e33f-4307-8f6b-9533df69b636/多模态 2c047fee7c4e460c8b7acd60e6285a01/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/8138f22b-a9a6-40d2-b95d-3268cb8db525_Export-dfac2010-e33f-4307-8f6b-9533df69b636/多模态 2c047fee7c4e460c8b7acd60e6285a01/Untitled.png -------------------------------------------------------------------------------- /深度学习/8ec2e8bf-cce0-40f5-b940-e156f8fc9f12_Export-03dea960-bcb7-4b8d-abc0-9deecf2d20e4/SYSTEM DESIGN 00d5f3cad1014ef1b209284182b05eb8.md: -------------------------------------------------------------------------------- 1 | # SYSTEM DESIGN 2 | 3 | Q1:**描述一些常用的重新平衡数据集的方法** 4 | 5 | - **重新平衡设计模式:**处理不平衡的数据集,即数据集中,其中一个标签构成了数据集的大部分,留下的其他标签的例子要少得多 6 | - **缩减采样**:减少模型训练期间使用的多数类中的示例数量。通常与集成学习结合使用以获得更好的结果。 7 | - **上采样**:我们通过复制少数类示例和生成额外的合成示例来过度代表我们的少数群体。 8 | - **加权类**:通过对类进行加权,告诉我们的模型在训练期间更加重视少数标签类,权重系数作为超参数调节 9 | 10 | 11 | Q2:**知道哪些数据表示方法?** 12 | 13 | 对于数字输入: 14 | 15 | 1. 在 `[-1, 1]` 范围内缩放输入:这有助于更快的收敛,因此,模型的训练速度更快/成本更低。有四种方法可以实现此目的: 16 | - 使用最小最大缩放时,缺点是最小值和最大值直接由训练集确定。 17 | - 剪切(与最小-最大缩放结合使用):与最小最大缩放不同,此处的最小值和最大值是合理的估计值。此技术适用于均匀分布的数据。 18 | - Z 分数归一化:通过(x-μ)/σ将数据转化为无单位的Z-Score分值 19 | - 对于偏斜的数据,我们需要在缩放之前对数据进行转换。通常使用的一些转换技术包括日志转换、桶化输入等。 20 | 2. 当输入是数字数组时,我们也可以用以下方法表示它: 21 | - 其统计数据(如平均值、中位数等) 22 | - 这是经验分布 23 | - 如果数组以某种方式排序,则数组中的固定项数 24 | 3. 将数字输入视为分类并映射到one-hot列。这在以下情况下很有用: 25 | - 当数字输入只是一个索引时,例如,一周中的几天。 26 | - 当输入和标签之间的关系不连续时, 27 | 28 | 对于分类输入: 29 | 30 | 1. 当输入线性独立时,可以使用one-hot或虚拟编码。 31 | 2. 计算数组中每个项的出现次数。 32 | 3. 使用相对频率而不是计数以避免大量数字。 33 | 4. 如果数组已排序,则由固定数量的项表示输入数组。 34 | 35 | Q3:**描述一个机器学习系统搭建的工作流程** 36 | 37 | - 可以按照下图中概述的步骤完成一个机器学习系统的搭建 38 | - 抽象和隔离各个步骤的好处是可以在步骤之间插入验证,以监控质量和状态。因此,如果存在数据漂移或模型质量下降,将更容易识别并更快地进行补救 39 | 40 | ![Untitled](SYSTEM%20DESIGN%2000d5f3cad1014ef1b209284182b05eb8/Untitled.png) 41 | 42 | Q4:**说说你知道的模型超参数调整方法** 43 | 44 | - **随机搜索**:超参数创建了一个可能值的网格。每次迭代都会尝试从该网格中随机组合超参数,记录性能,最后返回提供最佳性能的超参数组合。 45 | - **网格搜索:**将搜索空间定义为超参数值的网格,并评估网格中每个位置的算法性能(遍历),最后返回提供最佳性能的超参数组合。 46 | - **贝叶斯优化**:假设超参数与最后我们需要优化的损失函数存在一个函数关系;通过SMBO等算法最小化函数,从而得到最优的参数组合 47 | 48 | Q5:**机器学习中使用的embedding,有什么好处?** 49 | 50 | - Embedding 是一个将离散变量转为连续向量表示的一个方式;Embedding 可以减少离散变量的空间维数,同时还可以有意义的表示该变量。 51 | 52 | ![Untitled](SYSTEM%20DESIGN%2000d5f3cad1014ef1b209284182b05eb8/Untitled%201.png) 53 | 54 | Q6:**迁移学习的思想适合用在什么场景下?** 55 | 56 | - 迁移学习的使用场景如下:假设有两个任务系统A和B,任务A拥有海量的数据资源且已经训练好,但任务B才是我们的目标任务,这种场景便是典型的迁移学习的应用场景。 新的任务系统和旧的任务系统必须在数据、任务和模型等方面存在一定的相似性。 57 | 58 | Q7:**将训练数据切分为训练集、验证集、测试集时,如果不做随机化,可能带来什么问题?** 59 | 60 | - **如果不随机拆分,训练和测试拆分可能最终会出现偏差**。例如,如果您有 100 个样本,分为两个类别,前 80 个样本来自类别 1,其余样本来自类别 0,则 80/20 拆分会将所有类别 0 留在训练集中,所有类别 1 留在测试集中。造成类别的严重不均衡 61 | 62 | Q8:**迁移学习中,finetuning和特征提取(feature extraction)有什么区别?** 63 | 64 | - 在微调中,我们从预训练模型开始,并为我们的新任务更新模型的所有参数,本质上是重新训练整个模型;在特征提取中,我们从一个预训练模型开始,只更新我们从中得出预测的最终层权重。 65 | 66 | Q9:**在训练模型时,早停策略可能会有什么问题?** 67 | 68 | - 提前停止的一个问题是模型可能没有利用到所有可用的训练数据,当数据集偏小时,这种现象会更为明显 -------------------------------------------------------------------------------- /深度学习/8ec2e8bf-cce0-40f5-b940-e156f8fc9f12_Export-03dea960-bcb7-4b8d-abc0-9deecf2d20e4/SYSTEM DESIGN 00d5f3cad1014ef1b209284182b05eb8/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/8ec2e8bf-cce0-40f5-b940-e156f8fc9f12_Export-03dea960-bcb7-4b8d-abc0-9deecf2d20e4/SYSTEM DESIGN 00d5f3cad1014ef1b209284182b05eb8/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/8ec2e8bf-cce0-40f5-b940-e156f8fc9f12_Export-03dea960-bcb7-4b8d-abc0-9deecf2d20e4/SYSTEM DESIGN 00d5f3cad1014ef1b209284182b05eb8/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/8ec2e8bf-cce0-40f5-b940-e156f8fc9f12_Export-03dea960-bcb7-4b8d-abc0-9deecf2d20e4/SYSTEM DESIGN 00d5f3cad1014ef1b209284182b05eb8/Untitled.png -------------------------------------------------------------------------------- /深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94.zip -------------------------------------------------------------------------------- /深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264.md: -------------------------------------------------------------------------------- 1 | # SYSTEM DESIGN 2 | 3 | # 初级 4 | 5 | Q1:**描述一些常用的重新平衡数据集的方法** 6 | 7 | - **重新平衡设计模式:**处理不平衡的数据集,即数据集中,其中一个标签构成了数据集的大部分,留下的其他标签的例子要少得多 8 | - **缩减采样**:减少模型训练期间使用的多数类中的示例数量。通常与集成学习结合使用以获得更好的结果。 9 | - **上采样**:我们通过复制少数类示例和生成额外的合成示例来过度代表我们的少数群体。 10 | - **加权类**:通过对类进行加权,告诉我们的模型在训练期间更加重视少数标签类,权重系数作为超参数调节 11 | 12 | 13 | Q2:**知道哪些数据表示方法?** 14 | 15 | 对于数字输入: 16 | 17 | 1. 在 `[-1, 1]` 范围内缩放输入:这有助于更快的收敛,因此,模型的训练速度更快/成本更低。有四种方法可以实现此目的: 18 | - 使用最小最大缩放时,缺点是最小值和最大值直接由训练集确定。 19 | - 剪切(与最小-最大缩放结合使用):与最小最大缩放不同,此处的最小值和最大值是合理的估计值。此技术适用于均匀分布的数据。 20 | - Z 分数归一化:通过(x-μ)/σ将数据转化为无单位的Z-Score分值 21 | - 对于偏斜的数据,我们需要在缩放之前对数据进行转换。通常使用的一些转换技术包括日志转换、桶化输入等。 22 | 2. 当输入是数字数组时,我们也可以用以下方法表示它: 23 | - 其统计数据(如平均值、中位数等) 24 | - 这是经验分布 25 | - 如果数组以某种方式排序,则数组中的固定项数 26 | 3. 将数字输入视为分类并映射到one-hot列。这在以下情况下很有用: 27 | - 当数字输入只是一个索引时,例如,一周中的几天。 28 | - 当输入和标签之间的关系不连续时, 29 | 30 | 对于分类输入: 31 | 32 | 1. 当输入线性独立时,可以使用one-hot或虚拟编码。 33 | 2. 计算数组中每个项的出现次数。 34 | 3. 使用相对频率而不是计数以避免大量数字。 35 | 4. 如果数组已排序,则由固定数量的项表示输入数组。 36 | 37 | Q3:**描述一个机器学习系统搭建的工作流程** 38 | 39 | - 可以按照下图中概述的步骤完成一个机器学习系统的搭建 40 | - 抽象和隔离各个步骤的好处是可以在步骤之间插入验证,以监控质量和状态。因此,如果存在数据漂移或模型质量下降,将更容易识别并更快地进行补救 41 | 42 | ![Untitled](SYSTEM%20DESIGN%20ccbdece3b9ea44fe9c3e81910abde264/Untitled.png) 43 | 44 | Q4:**说说你知道的模型超参数调整方法** 45 | 46 | - **随机搜索**:超参数创建了一个可能值的网格。每次迭代都会尝试从该网格中随机组合超参数,记录性能,最后返回提供最佳性能的超参数组合。 47 | - **网格搜索:**将搜索空间定义为超参数值的网格,并评估网格中每个位置的算法性能(遍历),最后返回提供最佳性能的超参数组合。 48 | - **贝叶斯优化**:假设超参数与最后我们需要优化的损失函数存在一个函数关系;通过SMBO等算法最小化函数,从而得到最优的参数组合 49 | 50 | Q5:**机器学习中使用的embedding,有什么好处?** 51 | 52 | - Embedding 是一个将离散变量转为连续向量表示的一个方式;Embedding 可以减少离散变量的空间维数,同时还可以有意义的表示该变量。 53 | 54 | ![Untitled](SYSTEM%20DESIGN%20ccbdece3b9ea44fe9c3e81910abde264/Untitled%201.png) 55 | 56 | Q6:**迁移学习的思想适合用在什么场景下?** 57 | 58 | - 迁移学习的使用场景如下:假设有两个任务系统A和B,任务A拥有海量的数据资源且已经训练好,但任务B才是我们的目标任务,这种场景便是典型的迁移学习的应用场景。 新的任务系统和旧的任务系统必须在数据、任务和模型等方面存在一定的相似性。 59 | 60 | Q7:**将训练数据切分为训练集、验证集、测试集时,如果不做随机化,可能带来什么问题?** 61 | 62 | - **如果不随机拆分,训练和测试拆分可能最终会出现偏差**。例如,如果您有 100 个样本,分为两个类别,前 80 个样本来自类别 1,其余样本来自类别 0,则 80/20 拆分会将所有类别 0 留在训练集中,所有类别 1 留在测试集中。造成类别的严重不均衡 63 | 64 | Q8:**迁移学习中,finetuning和特征提取(feature extraction)有什么区别?** 65 | 66 | - 在微调中,我们从预训练模型开始,并为我们的新任务更新模型的所有参数,本质上是重新训练整个模型;在特征提取中,我们从一个预训练模型开始,只更新我们从中得出预测的最终层权重。 67 | 68 | Q9:**在训练模型时,早停策略可能会有什么问题?** 69 | 70 | - 提前停止的一个问题是模型可能没有利用到所有可用的训练数据,当数据集偏小时,这种现象会更为明显 71 | 72 | Q10:**如何对一个即将上线的模型进行离线和在线测试?** 73 | 74 | - **离线评估:**衡量模型在保留样本上的表现。在数据集收集过程中,数据被分为训练、测试和验证子集。还可以进行 K 折交叉验证,以找出不同数据子集下的性能。选择对所选 KPI 表现良好的模型进行实施和部署。 75 | - **在线评价:**将训练好的模型部署到真实场景(离线评估后)的第一步是进行 A/B 测试。经过训练的模型不会很快地面对大量真实世界的数据。相反,该模型被部署在一小部分场景中。例如,假设设计的模型是为了匹配司机和乘客。在 A/B 测试中,该模型将只部署在较小的地理区域而不是全部场景。然后将该模型的测试版与现有模型在更长的时间内进行比较,如果它导致与业务相关的 KPI 性能的提高(例如 DAU/MAU,更好的用户保留率,并最终提高优步收入),然后将在更大范围内实施。 76 | 77 | Q11:**一个模型发生梯度消失时,有什么解决方案?** 78 | 79 | 1.  **预训练加微调** 80 | 2. **使用不同的激活函数,将sigmoid、tanh替换为relu** 81 | 3. **使用batchnorm** 82 | 4. **使用残差结构** 83 | 5. 检查是否使用了RNN,**使用LSTM网络** 84 | 85 | # 中级 86 | 87 | Q12:**解释AUC准则** 88 | 89 | - AUC是ROC曲线下方区域的面积;从所有1样本中随机选取一个样本,从所有0样本中随机选取一个样本,然后根据你的分类器对两个随机样本进行预测,把1样本预测为1的概率为p1,把0样本预测为1的概率为p2,p1>p2的概率就是AUC 90 | 91 | ![Untitled](SYSTEM%20DESIGN%20ccbdece3b9ea44fe9c3e81910abde264/Untitled%202.png) 92 | 93 | - **另外,AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常采用AUC评价分类性能的原因** 94 | 95 | Q13:**如何处理数据不均衡的机器学习问题?** 96 | 97 | - 重新采样训练集,使用欠采样和过采样 98 | - 使用K-fold交叉验证;使用过采样方法来解决不平衡问题时应适当地应用交叉验证 99 | - 多模型Bagging 100 | - 使用半监督方案,增广少数类数据 101 | - 调整损失函数,加大错判少数类样本的损失 102 | 103 | Q14:**深度学习模型训练的加速方案** 104 | 105 | - 使用多机多卡训练: 106 | - 数据并行,即每个计算单元都保留一份完整的模型拷贝,分别训练不同的数据,经过一个 Iteration 或若干个 Iteration 后,把各个计算单元的模型做一次同步 107 | - 模型并行,即各个计算单元存储同一层模型数据的不同部分,训练相同的数据 108 | 109 | ![Untitled](SYSTEM%20DESIGN%20ccbdece3b9ea44fe9c3e81910abde264/Untitled%203.png) 110 | 111 | - 流式并行,即每个计算单元都存储不同层的模型数据,训练相同的数据。如上图所示,GPU1 只负责第一层神经网络的计算,GPU2 只负责 2~5 层神经网络的计算,GPU3 只负责第 6 层的计算。流式并行的好处在于每个运算单元之间的通信和计算重叠(overlap),如果配置得当,可以非常充分地利用硬件资源 112 | 113 | 114 | Q15:****多机多卡训练时,误差梯度如何在不同设备之间通信**** 115 | 116 | - 在每个GPU训练step结束后,将每块GPU的损失梯度求平均 117 | 118 | Q16:****BN如何在不同设备之间同步**** 119 | 120 | - BN的特性是:batch_size越大,均值和方差越接近与整个数据集的均值和方差,效果越好。使用多块GPU时,会计算每个BN层在所有设备上输入的均值和方差 121 | 122 | Q17:****DataParallel 和 DistributedDataParallel的区别**** 123 | 124 | - DataParallel是单进程多线程的,仅仅能工作在单机多卡中。而DistributedDataParallel是多进程的,可以工作在单机或多机器中 125 | - DistributedDataParallel比DataParallel运行的更快, 显存分配的更加均衡 126 | 127 | Q18:**描述单机多卡训练流程(DataParallel)** 128 | 129 | 1. 指定主机节点 130 | 2. 主机节点划分数据,一个batch数据平均分到每个机器上 131 | 3. 模型从主机拷贝到各个机器 132 | 4. 每个机器进行前向传播 133 | 5. 每个机器计算loss损失 134 | 6. 主机收集所有loss结果,进行参数更新 135 | 7. 将更新后参数模型拷贝给各个机器 136 | 137 | ![Untitled](SYSTEM%20DESIGN%20ccbdece3b9ea44fe9c3e81910abde264/Untitled%204.png) 138 | 139 | Q19:**描述多机多卡的训练流程(DistributedDataParallel)** 140 | 141 | 1. 从一开始就会启动多个进程(进程数等于GPU数),每个进程独享一个GPU,每个进程都会独立地执行代码。这意味着每个进程都独立地初始化模型、训练,当然,在每次迭代过程中会通过进程间通信共享梯度,整合梯度,然后独立地更新参数。 142 | 2. 每个进程都会初始化一份训练数据集,当然它们会使用数据集中的不同记录做训练,这相当于同样的模型喂进去不同的数据做训练,也就是所谓的数据并行 143 | 3. 进程通过`local_rank`变量来标识自己,`local_rank`为0的为master,其他是slave 144 | 4. 因为每个进程都会初始化一份模型,为保证模型初始化过程中生成的随机权重相同,需要设置随机种子。 145 | 5. 模型的保存与加载,与单GPU的方式有所不同。这里通通将参数以cpu的方式save进存储, 因为如果是保存的GPU上参数,pth文件中会记录参数属于的GPU号,则加载时会加载到相应的GPU上,这样就会导致如果你GPU数目不够时会在加载模型时报错 146 | 147 | ![Untitled](SYSTEM%20DESIGN%20ccbdece3b9ea44fe9c3e81910abde264/Untitled%205.png) 148 | 149 | 引用:[https://juejin.cn/post/7082591377581670431](https://juejin.cn/post/7082591377581670431) 150 | 151 | Q20:****DataParallel进行单机多卡训练的优缺点**** 152 | 153 | - 代码简单:仅需修改一行代码 154 | - 通信瓶颈 :负责reducer的GPU更新模型参数后分发到不同的GPU,因此有较大的通信开销。 155 | - GPU负载不均衡:负责reducer的GPU需要负责汇总输出、计算损失和更新权重,因此显存和使用率相比其他GPU都会更高。 156 | 157 | Q21:****DistributedDataParallel进行多机多卡训练的优缺点**** 158 | 159 | - **通信更快**:相比于DP,通信速度更快 160 | - **负载相对均衡**:相比于DP,GPU负载相对更均衡 161 | - **运行速度快**:因为通信时间更短,效率更高,能更快速的完成训练任务 162 | 163 | Created By 苏坡爱豆 -------------------------------------------------------------------------------- /深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled 2.png -------------------------------------------------------------------------------- /深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled 3.png -------------------------------------------------------------------------------- /深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled 4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled 4.png -------------------------------------------------------------------------------- /深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled 5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled 5.png -------------------------------------------------------------------------------- /深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/92520e6f-e4d4-4e60-8c02-d313e67a2745_Export-23d270a2-879a-48ae-9831-96d6520a0c94/SYSTEM DESIGN ccbdece3b9ea44fe9c3e81910abde264/Untitled.png -------------------------------------------------------------------------------- /深度学习/ASR TTS b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/ASR TTS b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/ASR TTS b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/ASR TTS b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled 2.png -------------------------------------------------------------------------------- /深度学习/ASR TTS b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/ASR TTS b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled 3.png -------------------------------------------------------------------------------- /深度学习/ASR TTS b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/ASR TTS b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled.png -------------------------------------------------------------------------------- /深度学习/ASR&TTS.md: -------------------------------------------------------------------------------- 1 | # ASR/TTS 2 | 3 | # 初级: 4 | 5 | Q1:****Conformer模型结构**** 6 | 7 | - Conformer的模型在输入时首先对输入通过卷积进行下采样,即通过一个卷积核大小为3x3,步长为2的二维卷积层,将输入的维度降为原先的1/4,后续通过一系列的Conformer Blocks模块,代替以往的Transformer Blocks进行语音识别任务。 8 | - 一个Conformer Block主要包含三个基本模块:前馈神经网络模块(feed forward module,FFM)、多头自注意力机制模块(multi-head self attention module,MHSAM)和卷积模块(convolution module,CM),以在多头自注意力机制模块与卷积模块两侧各连接一个前馈神经网络模块为具体结构。这种结构将Transformer中的一个前馈神经网络模块拆分成两个半步前馈层连接注意力层的输出与输入,能够比使用单一前馈层更好地提升模型效果。 9 | 10 | Q2:****Transformer如何实现流式识别**** 11 | 12 | - 基于块(chunk)的解决方案 13 | 14 | 第一种方案为基于块的解决方案,如下图所示,其中虚线为块的分隔符。其主体思想是把相邻帧变成一个块,之后根据块进行处理。这种方法的优点是可以快速地进行训练和解码,但由于块之间没有联系,所以导致模型准确率不佳。 15 | 16 | ![Untitled](ASR%20TTS%20b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled.png) 17 | 18 | - 基于块的流式 Transformer: 19 | 20 | 首先,在当前帧左侧,让每一层的每一帧分别向前看 n 帧,这样随着层数的叠加,Transformer 对历史的视野可以积累。如果有 m 层,则可以看到历史的 n*m 帧。虽然看到了额外的 n*m 帧,但这些帧并不会拖慢解码的时间,因为它们的表示会在历史计算时计算好,并不会在当前块进行重复计算。与解码时间相关的,只有每一层可以看到帧的数目。 21 | 22 | 因为希望未来的信息延时较小,所以要避免层数对视野的累积效应。为了达到这个目的,可以让每一个块最右边的帧没有任何对未来的视野,而块内的帧可以互相看到,这样便可以阻止延时随着层数而增加。 23 | 24 | ![Untitled](ASR%20TTS%20b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled%201.png) 25 | 26 | Q3:****multi-head attention中多头的作用**** 27 | 28 | - 多头的注意力有助于网络捕捉到更丰富的特征信息,允许模型在不同位置共同关注来自不同表示子空间的信息。类似于CNN中的多个卷积核 29 | 30 | Q4:****解释空洞卷积,空洞卷积有什么问题?**** 31 | 32 | - 在卷积核中增加空洞来增加感受野,不增加过多计算。普通卷积有着3*3的卷积核空洞卷积有着3*3的卷积核,空洞rate为2,可以使得神经网络在同样的层数下,拥有更大的感受野。 33 | - 空洞卷积的卷积核不连续,不是所有的信息参与了计算,导致信息连续性的损失,引起栅格效应 34 | 35 | Q5:****subword建模对集外词的拓展?**** 36 | 37 | - 利用subword拓展skip-gram模型意思即为使用单词的一部分来代替单词,这样的好处是可以利用词根、词缀之类的结构来增大信息量,强化对于不常见词的识别。 38 | - 举例说明:现有一句话"the quick brown fox jumped over the lazy dog",按照原本的skip-gram模型,给定单词quick,模型需要学习通过quick预测到单词the和brown。subword扩展将单词粒度细化,quick变成了{qui, uic, ick},给定子词uic,模型需要学习通过uic预测到子词qui和ick 39 | 40 | Q6:****CTC的原理**** 41 | 42 | - CTC(Connectionist Temporal Classification)是一种避开输入与输出手动对齐的一种方式;用来解决输入和输出序列长度不一、无法对齐的问题。 43 | - CTC算法对于一个给定的输入X,它可以计算对应所有可能的输出Y的概率分布。通过该概率分布,可以预测最大概率对应的输出或者某个特定输出的概率 44 | - CTC通过引入blank标志,解决输入和输出之间的对齐问题;通过动态规划算法求解最优序列 45 | 46 | 引用:[https://zhuanlan.zhihu.com/p/568176479](https://zhuanlan.zhihu.com/p/568176479) 47 | 48 | Q7:**CTC有哪几个特点?** 49 | 50 | - 条件独立:CTC的一个非常不合理的假设是其假设每个时间片都是相互独立的,这是一个非常不好的假设。在OCR或者语音识别中,各个时间片之间是含有一些语义信息的,所以如果能够在CTC中加入语言模型的话效果应该会有提升。 51 | - 单调对齐:CTC的另外一个约束是输入与输出之间的单调对齐,在OCR和语音识别中,这种约束是成立的。但是在一些场景中例如机器翻译,这个约束便无效了。 52 | - 多对一映射:CTC的又一个约束是输入序列的长度大于标签数据的长度,但是对于标签数据的长度大于输入的长度的场景,CTC便失效了。 53 | 54 | Q8:****CTC和端到端的关系**** 55 | 56 | - 目前端到端的语音识别方法主要有基于CTC和基于Attention两类方法及其改进方法。CTC实质是一种损失函数,常与LSTM联合使用。基于CTC的模型结构简单,可读性较强,但对发音字典和语言模型的依赖性较强,且需要做独立性假设。RNN-Transducer模型对CTC进行改进,加入一个语言模型预测网络,并和CTC网络通过一层全连接层得到新的输出,这样解决了CTC输出需做条件独立性假设的问题。 57 | 58 | Q9:****CTC和chain的关系**** 59 | 60 | - 相同点:都是在label生成的多条特定路径后的前向后向运算。 61 | - 区别:label生成的多条特定路径的方式不同:chain numerator的多条特定路径是对齐产生的;ctc是通过下图方式得到。 62 | 63 | ![Untitled](ASR%20TTS%20b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled%202.png) 64 | 65 | - blank label不同:chain numerator 没有blank label,如果认为triphone三个state 中的最后一个state 是blank label的话,那么chain numerator的每个triphone都有自己的blank label;在ctc中所有的phone 共享一个blank label。 66 | - 是否考虑了language model:在chain numerator计算前向/后向概率时,每一个跳转的概率都有自己的权重。在ctc中,每一步跳转都认为是等概率的,直接忽视跳转概率。 67 | - 训练样本的时长不同由于chain numerator是alignment的路径,所以长度可以控制。无论输入是多少,最终都可以截断成150frames的训练数据。而ctc是把整个样本全部拿来训练。 68 | 69 | Q10:****如何理解强制对齐?**** 70 | 71 | - 强制对齐(Forced Alignment),是指给定音频和文本,确定每个单词(音素)的起止位置的过程,一般使用Viterbi解码实现。强制对齐是语音识别的一种特殊的、简化了的情况,由于它的简单性,强制对齐通常具有较高的准确率(音素级别准确率可达90%,单词级别可达95%以上)。使用强制对齐,我们就可以对我们收集到的标准发音的数据进行处理:根据音频和它对应的文本进行强制对齐,得到每个音标对应的片段;对各个音标收集到的样本抽取特征并进行训练。通过对大量数据进行强制对齐,我们对每个音标得到一个模型,该模型将用于后续的打分流程。 72 | 73 | Q11:****CTC与语言模型的结合**** 74 | 75 | - 在一些语言识别问题中,也会有人在输出中加入语言模型来提高准确率,所以我们也可以把语言模型作为推理的一个考虑因素: 76 | 77 | ![Untitled](ASR%20TTS%20b433c3e3ac7a468d97bd5b1f02b4f4ec/Untitled%203.png) 78 | 79 | L(Y)以语言模型token为单位,计算Y的长度,起到单词插入奖励的作用。如果 L(Y)是一个基于单词的语言模型,那它计数的是Y中的单词数量;如果是一个基于字符的语言模型,那它计数的就是Y中的字符数。语言模型的一个突出特点是它只为单词/字符扩展前的形式计分,不会统计算法每一步扩展时的输出,这一点有利于短前缀词汇的搜索,因为它们在形式上更稳定。集束搜索可以添加语言模型得分和单词插入项奖励,当提出扩展字符时,我们可以在给定前缀下为新字符添加语言模型评分。 80 | 81 | Q12:**解释BPE训练准则** 82 | 83 | - 字节对编码(BPE, Byte Pair Encoder),又称 digram coding 双字母组合编码,是一种数据压缩算法,用来在固定大小的词表中实现可变长度的子词。该算法简单有效,因而目前它是最流行的方法。BPE的训练和解码范围都是一个词的范围。BPE 首先将词分成单个字符,然后依次用另一个字符替换频率最高的一对字符 ,直到循环次数结束。 84 | 85 | Q13:**解释FST压缩算法,FST有什么优点?** 86 | 87 | - FST是一种有限状态转移机,有两个优点:1)空间占用小。通过对词典中单词前缀和后缀的重复利用,压缩了存储空间;2)查询速度快。O(len(str))的查询时间复杂度。 88 | 89 | # 中级: 90 | 91 | Q14:****HMM前向算法与维特比算法的区别**** 92 | 93 | Q15:****解释CTC对齐、HMM对齐、RNN-T对齐异同**** 94 | 95 | Q16:****beam search的算法细节与具体实现**** 96 | 97 | Q17:****TTS端到端模型与传统模型的区别**** 98 | 99 | Q18:****mfcc特征与fbank的区别**** 100 | 101 | Q19:****简述如何实现单音素模型到三音素模型的对齐**** 102 | 103 | Q20:**ASR三音素模型中,为什么要做状态绑定?** 104 | 105 | # 高级: 106 | 107 | Q21:**EM算法为什么会陷入局部最优?EM算法最终会收敛吗?** 108 | 109 | Q22:****HMM的特点**** 110 | 111 | Q23:****GMM与k-means的关系**** 112 | 113 | Q24:****RNN-T模型结构**** 114 | 115 | Q25:****模型的加速方法**** 116 | -------------------------------------------------------------------------------- /深度学习/CNN2.md: -------------------------------------------------------------------------------- 1 | # CNN 2 | 3 | Q1:***CNN和RNN有什么区别?什么时候使用它们?*** 4 | 5 | - CNN最适用于需要平移不变性的情况。平移不变性是指,无论目标出现在图像中的哪个位置,它都会检测到同样的这些特征,输出同样的响应。 6 | - RNN是可以记住历史输入状态信息的神经网络,他们记住历史的输入样本,并使用这些样本来帮助对当前输入样本进行分类。当数据顺序很重要时,适合用RNN。因此,在语音、视频(帧是有序的)以及文本处理中,常常用到RNN。一般来说,与时间序列数据(带有时间戳的数据)相关的问题很适合用RNN解决。 7 | 8 | Q2:***CNN怎样被用到时间序列预测中?*** 9 | 10 | - **CNN**从原始输入数据中学习和自动提取特征的能力可以应用于时间序列预测问题。可以将一系列观察结果视为一维图像,CNN 模型可以读取该图像并提取其中特征,创建时间序列的信息表示 11 | - 常见的将cnn用于时间序列预测的例子包括TCN、wavenet;它们是高度抗噪的模型,并且能够提取信息丰富的深度特征 12 | 13 | Q3:***在CNN中,Max Pooling与Average Pooling的优缺点是什么?*** 14 | 15 | - 卷积层参数误差造成估计均值的偏移,max pooling能减小这种误差;邻域大小受限造成的估计值方差增大,average能减小这种误差。也就是说,average对背景保留更好,max对纹理提取更好。对数字识别等任务,一般使用max-pooling。 16 | 17 | 引用:[https://www.zhihu.com/question/34898241](https://www.zhihu.com/question/34898241) 18 | 19 | Q4:***比较CNN和多层感知机MLP*** 20 | 21 | - MLP由全连接层构成,每个神经元都和上一层中的**所有**节点连接,存在参数冗余;相比之下,CNN由于权重共享,参数更少,方便网络的训练与设计深层网络; 22 | - MLP只接受向量输入,**会丢失像素间的空间信息;CNN接受矩阵和向量输入,能利用像素间的空间关系** 23 | - MLP是CNN的一个特例,**当CNN卷积核大小与输入大小相同时其计算过程等价于MLP** 24 | 25 | 引用:[https://medium.com/data-science-bootcamp/multilayer-perceptron-mlp-vs-convolutional-neural-network-in-deep-learning-c890f487a8f1](https://medium.com/data-science-bootcamp/multilayer-perceptron-mlp-vs-convolutional-neural-network-in-deep-learning-c890f487a8f1) 26 | 27 | *Q5*: *****CNN*中的*全连接层*有什么作用?**   28 | 29 | - 全连接层在整个网络卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐层特征空间的话(特征提取+选择的过程),全连接层则起到将学到的特征表示映射到样本的标记空间的作用。换句话说,就是把特征整合到一起(高度提纯特征),方便交给最后的分类器或者回归。 30 | 31 | 32 | 33 | *Q6*:*****解释RELU激活函数在卷积神经网络中的意义***** 34 | 35 | - 在每次卷积操作之后,使用RELU操作。RELU 是一个非线性激活函数。此操作应用于每个像素,并将特征图中的所有负像素值替换为零。卷积操作本身是线性的,为了建模非线性变化的图像特征,需要使用像RELU 这样的非线性函数向模型中引入非线性。 36 | 37 | Q7:***对于给定的图像输入尺寸、Filter Size、  Stride 和 Padding大小,feature map 的尺寸是多少?*** 38 | 39 | - 如果我们的输入图像大小为 nxn,过滤器大小为 fxf,p 是padding size,s 是stride,则特征图的维度为:**floor[ ((n-f+2p)/s)+1] x floor[ ((n-f+2p)/s)+1]** 40 | 41 | Q8:***解释Valid Paddding和Same Padding*** 42 | 43 | - valid padding:**当filter全部在image里面的时候,进行卷积运算** 44 | - same padding:**当filter的中心(K)与image的边角重合时,开始做卷积运算;卷积之后输出的feature map尺寸保持不变** 45 | 46 | Q9:****Pooling有哪些不同类型?说明他们的特点。**** 47 | 48 | - **max pooling:返回卷积核覆盖部分的最大值并抑制噪声** 49 | - **average pooling:计算卷积核覆盖的特征图的平均值** 50 | - sum pooling:计算卷积核窗口中所有元素的总和 51 | - 最广泛使用的池化技术是**max pooling**,因为它捕获了最重要的特征。 52 | 53 | Q12:**解释flatten层在CNN中的角色和作用** 54 | 55 | - 在对图像的特征表示进行一系列卷积和池化操作之后,我们将最终池化层的输出展平为一个长的连续线性数组或向量。将所有生成的二维数组转换为向量的过程称为Flattening。 56 | Flatten 输出作为输入提供给具有不同隐藏层数的完全连接的神经网络,以学习特征表示中存在的非线性复杂性。 57 | 58 | Q13:****列出池化层的超参数**** 59 | 60 | - 池化层的超参数包括filter size、stride、max/average pooling,如果池化层的输入维度是$n_{h}*n_{w}*n_{c}$,那么输出维度将是$((n_{h}-f)/s+1)*((n_{w}-f)/s+1)*n_{c}$ 61 | 62 | Q14:****解释CNN中“参数共享”和“稀疏连接”的意义**** 63 | 64 | - 参数共享:在卷积中,我们在对输入进行卷积时共享参数。这背后的直觉是,对图像的一部分有用的特征检测器也可能对图像的另一部分有用。因此,通过使用单个卷积核,我们对所有整个输入进行了卷积,因此参数是共享的。 65 | - 稀疏连接:对于每一层,每个输出值都取决于少量输入,而不是考虑所有输入。 66 | 67 | Q15:**可以使用CNN执行降维操作吗?如果可以,CNN中哪个相关子层执行了降维操作?** 68 | 69 | - CNN可以被用于降维操作 70 | - 池化层,Pooling layer 的主要目标是减少 CNN 的空间维度。为了降低空间维度,它将执行下采样操作,通过在输入矩阵上滑动卷积核矩阵来创建池化特征图。 71 | -------------------------------------------------------------------------------- /深度学习/CV 00373e0e592b422aa10773501cd275cf/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/CV 00373e0e592b422aa10773501cd275cf/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/CV 00373e0e592b422aa10773501cd275cf/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/CV 00373e0e592b422aa10773501cd275cf/Untitled.png -------------------------------------------------------------------------------- /深度学习/CV.md: -------------------------------------------------------------------------------- 1 | # CV 2 | 3 | # 初级: 4 | 5 | Q1:***CV中,语义分割和实例分割有什么区别?*** 6 | 7 | - **语义分割**是一种检测每个像素所属的对象类别的技术。模型必须知道所有对象类别(标签)。 8 | - **实例分割**类似于语义分割,但更深入一些。它为每个像素标识它所属的对象实例。主要区别在于与语义分割相比,区分具有相同标签的两个对象,如下图: 9 | 10 | ![https://i.stack.imgur.com/MEB9F.png](https://i.stack.imgur.com/MEB9F.png) 11 | 12 | - 在应用**语义分割**的第二张图片中,类别(椅子)是输出之一,所有椅子的颜色都相同。 13 | - 在第三张图片中,**实例分割**更进一步,除了在第一步中识别类别(椅子)之外,还将实例(椅子)彼此分开。 14 | 15 | Q2:***如何评估目标检测模型的好坏?*** 16 | 17 | - 可以使用**Intersection over Union (IoU)**评估指标,IoU用于衡量对象检测器在特定数据集上的准确性。任何提供**预测边界框**作为输出的算法都可以使用**IoU**进行评估。R-CNN、Faster R-CNN、YOLO是此类模型的例子 18 | - 例如,在下图中,预测边界框用红色绘制,而真实边界框用绿色绘制。模型性能是这些边界框之间的IOU。 19 | 20 | ![Untitled](CV%2000373e0e592b422aa10773501cd275cf/Untitled.png) 21 | 22 | Q3:***讲述标准的计算机视觉处理系统的主要处理步骤*** 23 | 24 | - 标准的CV处理流程为: 25 | 26 | 1.输入图像:计算机接收来自成像设备(如相机)的视觉输入。这通常被捕获为形成视频的图像或图像序列。 27 | 2.预处理:每个图像都经过一些预处理步骤,其目的是标准化每个图像。常见的预处理步骤包括调整图像大小、模糊处理、旋转、更改其形状或将图像从一种颜色转换为另一种颜色。只有将每张图片标准化,你才能对它们进行比较,并以同样的方式进一步分析它们。 28 | 3.特征提取。特征可以帮助我们定义某些对象,它们通常是关于对象形状或颜色的信息。例如,一些区分摩托车车轮、前大灯、挡泥板等形状的特征。这个过程的输出是一个特征向量。 29 | 4.最后,这些特征被输入到一个ML 模型中,在这个例子中是一个分类模型。 30 | 31 | 32 | ![Untitled](CV%2000373e0e592b422aa10773501cd275cf/Untitled%201.png) 33 | 34 | Q4:***目标检测领域,如何判断一个特征是好特征?*** 35 | 36 | - 一个好的特征将帮助我们以各种可能出现的方式识别一个对象。这些特征包括边缘、斑点和区域。一个好的特征有如下性质: 37 | 38 | **可重复检测**:当给定同一场景的两张图像时,检测器在两张图像中发现的大多数特征都是相同的。这些特征对观察条件和噪声的变化具有鲁棒性,换句话说,该特征在不同的尺度、光照条件和视角下是一致的。 39 | 40 | **独特性**:特征中心周围的邻域变化足以允许该特征与其他特征进行可靠的比较。 41 | 42 | **Localizable**:该特征具有唯一的位置信息。观看条件的变化不会影响其位置。 43 | 44 | 45 | Q5:**CNN在图像处理上表现好的原因:** 46 | 47 | - CNN具有**局部相关性**,图像数据是存在局部相关性的;具体来说,图像是由一个个像素点组成,每个像素点与其周围的像素点是有关联的,如果把像素点打乱,图片会完全变掉; 48 | - CNN具有**空间不变性**,CNN浅层网络提取低层次的特征,比如边缘,曲线等,随着网络深度加深,低层次的特征经过组合组成高层次的特征,并且能够保持特征的**空间不变性** 49 | 50 | 引用:[https://www.zhihu.com/question/41233373/answer/91113816](https://www.zhihu.com/question/41233373/answer/91113816) 51 | 52 | Q6:**BatchNorm层的具体计算及作用** 53 | 54 | - BatchNorm层的计算公式: 55 | 56 | $$ 57 | y=\gamma\cdot \frac{x-\mu }{\sqrt{\sigma ^2+\varepsilon }}+\beta 58 | $$ 59 | 60 | - BatchNorm的作用是使得每层的输入/输出分布更加稳定,避免参数更新和网络层次变深大幅度影响数据分布。从而使模型训练更稳定 61 | - 参数 $\beta$,$\gamma$的作用:保留网络各层在训练过程中的学习成果、保证激活单元的非线性表达能力、使批归一化模块具有复原初始输出分布能力。 62 | 63 | Q7:**目标检测里如何有效解决常见的前景少背景多的问题** 64 | 65 | - 采用Focal Loss或OHEM进行负样本挖掘,加大Hard Example损失权重 66 | - 训练时只利用Ground Truth周边的Prior Boxes进行训练,忽略其他背景区域,只考虑困难背景区域 67 | 68 | # 中级: 69 | 70 | Q8:**ROIPool和ROIAlign的区别,以及ROIAlign的简单实现** 71 | 72 | Q9:***Batch Norm在训练和推理的时候有什么区别?*** 73 | 74 | Q10:***为什么Relu激活函数逐渐取代了sigmoid函数?它的优势在哪里?*** 75 | 76 | Q11:***ReLU函数在0处不可导,实际应用时如何解决这个问题?*** 77 | 78 | Q12:***图像处理中加入Pooling层的目的;以及Pooling层是如何反向传播的?*** 79 | 80 | Q13:***列举几种常见的深度学习优化器,以及各自的优缺点*** 81 | 82 | Q14:***卷积层的FLOPs和参数量*** 83 | 84 | Q15:***使用F1-Score评价模型性能好坏有哪些好处?*** 85 | 86 | Q16:***ROI Pooling 和 ROI Align 的区别是什么*** 87 | 88 | Q17:***特征融合时,concat和add操作的区别是什么?*** 89 | 90 | Q18:***阐述深度可分离卷积*** 91 | 92 | Q19:***计算深度可分离卷积的FLO*** 93 | 94 | # 高级: 95 | 96 | Q20:***简述LBP算法原理*** 97 | 98 | Q21:***简述HOG算法原理*** 99 | 100 | Q22:***边缘检测算子有哪些以及它们之间的对比*** 101 | 102 | Q23:***常见的图像插值方式*** 103 | 104 | 105 | 106 | Q24:***FAST算法的原理*** 107 | 108 | Q25:**简述BRIEF算法原理** 109 | 110 | Q26:***简述ORB算法原理*** 111 | 112 | Q27:**简述SIFT特征;SIFT特征和SURF特征有什么区别?** 113 | 114 | Q28:**你了解哪些图像语义分割任务的loss?** 115 | 116 | Q29:**在边缘检测任务中,比较Sobel算子和Canny算子** 117 | 118 | Q30:**为什么图像在输入网络前要对图像做归一化?** 119 | 120 | Q31:***在使用Yolo网络做目标检测时,可能会碰到什么问题?*** 121 | -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 10.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 11.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 12.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 13.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 14.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 2.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 3.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 4.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 5.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 6.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 7.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 8.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled 9.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental 4447b34ffdc24815b8f904824306c678/Untitled.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental f3253e927eb9461c9738fbc1e8ca2339/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental f3253e927eb9461c9738fbc1e8ca2339/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/Deep Learning Fundamental f3253e927eb9461c9738fbc1e8ca2339/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Deep Learning Fundamental f3253e927eb9461c9738fbc1e8ca2339/Untitled.png -------------------------------------------------------------------------------- /深度学习/DeepLearning.md: -------------------------------------------------------------------------------- 1 | # Deep Learning Fundamental 2 | 3 | # 初级 4 | 5 | Q1:***深度学习和机器学习本质的区别在哪里?*** 6 | 7 | - 机器学习依赖于人类的因素更多,人需要手动选择更有效的特征并进行组合;深度学习使得大部分特征提取的步骤自动化,消除了人为干预的因素 8 | - 机器学习对数据量的依赖程度低,**深度学习**需要大量数据才能提供更高精度 9 | 10 | Q2:***深度学习的性能为什么会随着数据增多而提高?*** 11 | 12 | - 当输入学习算法的数据数量增加时,模型将考虑更多的边缘情况,因此算法将学习在这些边缘情况下做出正确的决策,提供更好的泛化性 13 | 14 | Q3:***什么是ensemble learning,在深度学习中有何运用?*** 15 | 16 | - ensemble learning表示使用两个以上的模型学习,并使用某种规则将各个模型的学习结果整合,用于提高整体模型的*泛化*能力 17 | - 深度学习中ensemble learning的运用有dropout、zoneout和drop-connect 18 | 19 | Q4:**深度学习中,如何选择激活函数**? 20 | 21 | - 如果要预测的输出是二元类的概率,那么可以使用Sigmoid 函数做网络输出层。 22 | - 如果要预测的输出有两个类别,则可以使用Tanh 函数做网络输出层。 23 | - 由于ReLU 函数计算简单,有利于抑制梯度消失情况,在网络中间层普遍使用 24 | 25 | ![Untitled](Deep%20Learning%20Fundamental%20f3253e927eb9461c9738fbc1e8ca2339/Untitled.png) 26 | 27 | Q5:***相比机器学习,深度学习有什么优势?*** 28 | 29 | - 深度学习不需要设计模型的人对特征工程有很多理解,深度学习是端到端的,有利于快速上手 30 | - 深度学习在数据集较大、建模问题较复杂的情况下,准确率更高 31 | 32 | Q7:***如何判断深度学习模型中存在梯度消失问题?*** 33 | 34 | - 模型loss在训练阶段下降的非常缓慢 35 | - 训练停止后(达到一定epoch),模型loss仍然很大 36 | - 模型权重呈指数级缩小,训练模型阶段就变得非常小 37 | - 训练阶段,模型权重变为零值 38 | 39 | Q8:***如何判断深度学习模型是否存在梯度爆炸问题?怎么确定?*** 40 | 41 | - 以下现象表明你训练的模型可能存在梯度爆炸的问题,例如:模型无法很好地学习训练数据(模型损失一直很高)、模型训练不稳定(每一次更新,loss变化很大)、训练时loss变为NaN; 42 | - 当发生以上现象时,可以深入挖掘模型看看是否有梯度爆炸的问题,以下现象可以确认发生梯度爆炸:训练阶段模型权重变为NaN;在训练期间,每个节点和层的误差梯度值始终高于`1.0`; 43 | 44 | Q9:***Embedding Layer的作用是什么?*** 45 | 46 | - embedding层的目的是将模型的输入,one-hot向量(一种高维、稀疏的表示)映射到低维稠密的表示,节省模型的计算量 47 | 48 | Q10:***什么是早停策略?*** 49 | 50 | - early-stopping:正则化的一种形式。NN使用梯度下降更新网络参数,但过了某个训练阶段,改进模型对训练数据的拟合会导致泛化误差增加。过了那个点,改进模型对训练数据的拟合会导致泛化误差增加。early-stopping规定了网络可以训练的迭代次数。 51 | 52 | Q11:***什么是增量学习?*** 53 | 54 | - 增量学习是指算法从先前可用的数据集中生成分类器后,再从新数据中学习的能力 55 | - 增量学习算法不断使用输入数据来扩展现有模型的知识,即使用动态的数据流,进一步训练模型;目的是让学习模型在不忘记其现有知识的情况下适应新数据 56 | 57 | 引用:[https://link.springer.com/](https://link.springer.com/) 58 | 59 | Q12:***解释感知机的原理*** 60 | 61 | - 感知机是一种用于二元分类器监督学习的算法。其输入为实例的特征向量,输出为实例的类别,+1代表正类,-1代表负类。感知机属于判别模型,它的目标是要将输入实例通过分离超平面将正负二类分离。 62 | - 感知机学习的目标就是求能将正负样本完全分开的分离超平面,即要寻找超平面参数w,b;感知机通过监督学习学习参数。 63 | 64 | ![Untitled](Deep%20Learning%20Fundamental%20f3253e927eb9461c9738fbc1e8ca2339/Untitled%201.png) 65 | 66 | # 中级 67 | 68 | Q13:***什么是计算图?哪些算法属于计算图模型?*** 69 | 70 | Q14:***线性激活函数和非线性激活函数之间有什么区别?*** 71 | 72 | Q15:***解释1*1卷积操作的意义?*** 73 | 74 | Q16:***在设计神经网络时,神经网络的广度和深度哪个更重要?*** 75 | 76 | Q17:***神经网络中的隐藏层计算的内容是什么?*** 77 | 78 | Q18:***神经网络中,可以将非线性激活函数替换为线性激活函数吗?为什么?*** 79 | 80 | Q19:***在深度学习模型中,如何选择损失函数?*** 81 | 82 | Q20:***介绍GAN的原理*** 83 | 84 | Q21:***什么是迁移学习?*** 85 | 86 | # 高级 87 | 88 | Q22:***卷积层什么时候与全连接层等价?*** 89 | 90 | Q23:***GAN和自动编码器有什么区别和联系?*** 91 | 92 | Q24:***预训练对神经网络有什么好处?*** 93 | 94 | Q25:***在深度神经网络中使用Batch-Norm会有什么问题吗?*** 95 | 96 | Q26:***什么是multitask learning?什么时候使用它较为合适?*** 97 | 98 | Q27:***AE与VAE的区别是什么?*** 99 | 100 | Q28:***说一些你知道的CNN架构*** 101 | 102 | Q29:***什么是玻尔兹曼机?*** 103 | 104 | Q30:***你会选择那种神经网络完成视频分类任务?*** 105 | 106 | Q31:***dropout对神经网络训练有什么影响?*** 107 | 108 | Q32:***AE模型可以用于特征生成吗?如果可以,怎么做?*** 109 | 110 | Q33:***Batch Normalization、Instance Normalization、Layer Normalization、Group Normalization之间有什么区别?*** 111 | 112 | Q34:***同等参数量情况下,深层神经网络比浅层神经网络效果好的原理是什么?*** 113 | 114 | Q35:***比较svm和deep learning*** 115 | 116 | Q36:***Relu激活函数比sigmoid函数好的地方在哪里?*** 117 | 118 | Q37:***傅里叶变换在深度学习中有什么运用?*** 119 | 120 | Q38:***集成学习在深度学习中有什么运用?*** 121 | 122 | Q39:***深度学习怎么减轻/避免维度诅咒?*** 123 | 124 | Q40:***你了解多少种跳转链接(skip-connection)方法?*** 125 | 126 | Q41:什么是***Deep Recurrent Q-Network*?** 127 | 128 | Q42:*****基于区域的目标检测神经网络*(R-CNN)、*Fast R-CNN*和*Faster R-CNN*之间有什么区别?** 129 | 130 | Q43:***在处理序列问题上,比较HMM模型和RNN模型*** 131 | 132 | Q44:***知道哪些关于目标检测的网络结构?*** 133 | 134 | Q45:***GAN网络在训练时的难点是什么?*** 135 | 136 | Q46:***假设你想训练一个分类器,你有大量未标记的训练数据,但只有几千个标记实例。你将如何进行?*** 137 | 138 | Q47:***怎样使用遗传算法优化神经网络?*** 139 | -------------------------------------------------------------------------------- /深度学习/Model Evaluation 33e6ecb893ba43b8aa236bcee2b86a1b/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Model Evaluation 33e6ecb893ba43b8aa236bcee2b86a1b/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/Model Evaluation 33e6ecb893ba43b8aa236bcee2b86a1b/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Model Evaluation 33e6ecb893ba43b8aa236bcee2b86a1b/Untitled 2.png -------------------------------------------------------------------------------- /深度学习/Model Evaluation 33e6ecb893ba43b8aa236bcee2b86a1b/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Model Evaluation 33e6ecb893ba43b8aa236bcee2b86a1b/Untitled.png -------------------------------------------------------------------------------- /深度学习/Model Evaluation df5d033abf22444284cfa8ba84a1438a.md: -------------------------------------------------------------------------------- 1 | # Model Evaluation 2 | 3 | Q1:***解释机器学习中的过拟合现象?*** 4 | 5 | - **过拟合**是指模型对训练数据建模得太好。 6 | - 当模型学习训练数据中的细节和噪声达到对模型在新数据上的性能产生负面影响的程度时,就会发生**过度拟合。**这意味着训练数据中的噪声或随机波动被模型拾取并学习为概念,问题是这些概念并不适用于新数据并对模型的泛化能力产生负面影响 7 | 8 | ![Untitled](Model%20Evaluation%20df5d033abf22444284cfa8ba84a1438a/Untitled.png) 9 | 10 | Q2:***解释机器学习中的欠拟合现象*** 11 | 12 | - **欠拟合**是指既不能对训练数据良好建模也不能泛化到新数据的模型。欠拟合的机器学习模型不是合适的模型,因为它在训练数据上的表现不佳。 13 | - **欠拟合**通常不被讨论,因为在给定良好性能指标的情况下很容易检测到。欠拟合的补救措施是使用更适合的机器学习算法 14 | 15 | Q3:***什么是hyper-parameters?*** 16 | 17 | - 每个机器学习模型都有参数,还*可以*有超参数,参数通过模型训练更新。**超参数**是那些不能从常规训练过程中直接学习的参数**。**这些参数表示模型**的高级**属性,例如它的*复杂性***或**它*应该学习的速度*。 18 | 19 | Q4:***如何检测到机器学习中的过拟合现象?*** 20 | 21 | - **过拟合**的常见模式可以在**学习曲线**图上看到,其中模型在训练数据集上的性能不断提高,但在测试或验证集上的性能提高到一个点然后开始变差。因此,过拟合模型的**训练误差极低,但测试误差却很高**。 22 | 23 | ![Untitled](Model%20Evaluation%20df5d033abf22444284cfa8ba84a1438a/Untitled%201.png) 24 | 25 | Q5:***什么是模型学习率?学习率高或低对模型学习有什么影响?*** 26 | 27 | - **学习率**是一个调整参数,它决定了模型训练期间每次迭代(epoch)的步长。步长是您响应估计误差更新神经元权重的速度。使用反向传播误差方法更新模型权重时,梯度将从模型的输入节点通过神经元流向输出节点,然后确定误差并反向传播以更新神经元(模型)的权重。更新这些神经元权重的速度就是学习率。 28 | - 如果学习率**很高**,那么模型权重更新得很快而且很频繁,模型会很快收敛,但它可能会超过真正的误差最小值。**这意味着一个更快收敛但错误的模型。** 29 | - 如果学习**率低**,那么模型权重更新缓慢,模型将需要很长时间才能收敛,但不会超过真正的误差最小值。**这意味着一个更慢但更准确的模型。** 30 | 31 | Q6:***如何判断你的模型是否存在梯度爆炸问题?*** 32 | 33 | - 以下现象表明你训练的模型可能存在梯度爆炸的问题,例如:模型无法很好地学习训练数据(模型损失一直很高)、模型训练不稳定(每一次更新,loss变化很大)、训练时loss变为NaN; 34 | - 当发生以上现象时,可以深入挖掘模型看看是否有梯度爆炸的问题,以下现象可以确认发生梯度爆炸:训练阶段模型权重变为NaN;在训练期间,每个节点和层的误差梯度值始终高于`1.0`; 35 | 36 | Q7:**知道哪些关于*Hyperparameters Tuning的*方法?** 37 | 38 | - **随机搜索**:为超参数创建了一个可能值的网格。每次迭代都会尝试从该网格中随机组合超参数,记录性能,最后返回提供最佳性能的超参数组合 39 | - **网格搜索**:类似于手动调优,为网格中指定的所有给定超参数值的每个排列建立模型,并评估和选择最佳模型。最后,它返回具有最佳超参数的最佳模型 40 | - **贝叶斯优化:**贝叶斯优化使用先前对损失的观测,来确定下一个(最佳)的参数点来取样损失 41 | 42 | 引用:[https://www.geeksforgeeks.org/hyperparameter-tuning/](https://www.geeksforgeeks.org/hyperparameter-tuning/) 43 | 44 | Q8:***在设计神经网络时,有哪些方法防止过拟合?*** 45 | 46 | - 简化模型:为了降低复杂性,我们可以简单地删除层或减少神经元数量以使网络更小。 47 | - early-stopping:正则化的一种形式。NN使用梯度下降更新网络参数,但过了某个训练阶段,改进模型对训练数据的拟合会导致泛化误差增加。过了那个点,改进模型对训练数据的拟合会导致泛化误差增加。early-stopping规定了网络可以训练的迭代次数。 48 | 49 | ![Untitled](Model%20Evaluation%20df5d033abf22444284cfa8ba84a1438a/Untitled%202.png) 50 | 51 | - 数据扩充:增加数据集中存在的图像数量。一些流行的图像增强技术包括翻转、平移、旋转、缩放、改变亮度、添加噪声 52 | - 正则化:L1正则化以及L2正则化,L1正则化的目标是最小化权重的绝对值,L2正则化的目标是最小化权重的平方幅度 53 | - 使用dropout策略;dropout在每次迭代的训练过程中随机从神经网络中删除神经元。当我们丢弃不同的神经元组时,相当于训练了不同的神经网络。不同的网络会以不同的方式过拟合,所以 dropout 的最终效果是减少过拟合 54 | 55 | 引用:[https://www.kdnuggets.com/2019/12/5-techniques-prevent-overfitting-neural-networks.html](https://www.kdnuggets.com/2019/12/5-techniques-prevent-overfitting-neural-networks.html) 56 | 57 | Q9:***如何解决逻辑回归中的过拟合问题?*** 58 | 59 | - 减少使用的特征数量;丢弃那些提供信息量不大的特征 60 | - 使用L2正则化 61 | 62 | Q10:***什么是混淆矩阵?*** 63 | 64 | - 混淆矩阵是机器学习分类问题的性能度量,它是一个包含预测值和实际值的 4 种不同组合的表格,对于测量召回率、精度、特异性、准确性以及最重要的 AUC-ROC 曲线非常有用。 65 | - TP表示实际值为真,预测值也为真,FP表示实际值为假,预测值为真,FN表示实际值为真,预测值为假,TN表示实际值为假,预测值也为假 66 | 67 | ![Untitled](Model%20Evaluation%20df5d033abf22444284cfa8ba84a1438a/Untitled%203.png) 68 | 69 | Q11:***解释ROC曲线*** 70 | 71 | - 首先介绍两个概念,TPR与FPR,$TPR = \frac{TP}{TP+FN}$,代表分类器预测的**正类中**实际正实例占所有正实例的比例;$FPR = \frac{FP}{TN+FP}$,代表分类器预测的**正类中**实际负实例占所有负实例的比例 72 | - ROC 曲线是用 TPR 与 FPR 绘制的概率曲线,其中 TPR 在 y 轴上,FPR 在 x 轴上。 73 | - ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变,有助于解决数据类别不均衡的情况 74 | 75 | Q12:***解释AUC值*** 76 | 77 | - AUC(Area under Curve):ROC曲线下的面积,介于0.1和1之间。Auc作为数值可以直观的评价分类器的好坏,值越大越好。**AUC的含义为,当随机挑选一个正样本和一个负样本,根据当前的分类器计算得到的score将这个正样本排在负样本前面的概率。** 78 | 79 | Q13:***ROC曲线和AUC值如何帮助衡量模型的好坏?*** 80 | 81 | - 优秀模型的 AUC 接近 1,这意味着它具有很好的可分离性度量。差模型的 AUC 接近 0,这意味着它具有最差的可分离性度量。AUC为0时,模型反向分类,将 0 预测为 1,将 1 预测为 0。当 AUC 为 0.5 时,这意味着该模型没有任何类别分离能力。 82 | 83 | Q14:***使用AUC值衡量模型性能有什么好处和坏处?*** 84 | 85 | - 优点:使用AUC衡量性能时,对****正负类样本是否均衡并不敏感****;另外,AUC 继承了 ROC 曲线评估指标无需手动设定阈值的优良特性,直接从整体上(离线排序)方面衡量算法的表现。 86 | - 缺点:AUC只能衡量二分类问题的性能;AUC只反映了模型的整体性能,看不出在不同点击率区间上的误差情况;AUC只反映了排序能力,关注的是概率值的相对大小,与阈值和概率值的绝对大小没有关系,没有反映预测精度; 87 | 88 | 引用:[https://medium.com/@penggongting/understanding-roc-auc-pros-and-cons-why-is-bier-score-a-great-supplement-c7a0c976b679](https://medium.com/@penggongting/understanding-roc-auc-pros-and-cons-why-is-bier-score-a-great-supplement-c7a0c976b679) 89 | 90 | [https://blog.csdn.net/Dby_freedom/article/details/89814644](https://blog.csdn.net/Dby_freedom/article/details/89814644) 91 | 92 | Q15:***解释什么是F1-Score*** 93 | 94 | - F1 分数,是衡量模型在数据集上的准确性的指标,它用于评估二元分类系统。F1-score是一种定义为模型精确率和召回率的调和平均值: 95 | 96 | $$ 97 | F1=\frac{2*precision*recall}{precision+recall} 98 | $$ 99 | 100 | Q16:***当训练数据存在类别间分布不平衡时,如何选择评估指标?*** 101 | 102 | - 在不平衡类别的情况下,准确性指标(Accuracy)可能会产生误导,因为数据不均衡情况下,准确性不会反映少数类别的预测能力 103 | - 数据不平衡时,可以选择AUC、F1 Score作为评估指标 104 | 105 | Q17:***使用早停策略时,可能会有什么问题?*** 106 | 107 | - 使用早停策略时,模型可能未完全学习到数据中的分布规律;一种解决方法是将训练的epoch视为超参数,并网格搜索一系列不同的值,使用 k 折交叉验证,找到最优的训练epoch以找到最终模型 108 | 109 | 引用:[https://machinelearningmastery.com/early-stopping-to-avoid-overtraining-neural-network-models/](https://machinelearningmastery.com/early-stopping-to-avoid-overtraining-neural-network-models/) 110 | 111 | Q18:***算法A具有更高的Accuracy,算法B具有更高的Recall(召回率),如何判断算法A和算法B哪个更好?*** 112 | 113 | - 高accuracy和高recall算法的选择,视算法的应用场景而定 114 | - 当需要对输出敏感的预测时,模型需要高召回率。例如,预测癌症或预测恐怖分子需要高召回率,将非癌性肿瘤标记为癌性是可以的,但癌性肿瘤不应标记为非癌性 115 | - 在推荐引擎、垃圾邮件检测等地方需要高精度。在这些地方你不关心漏报,更关注真报和漏报。如果垃圾邮件进入收件箱文件夹是可以的,但是非常重要的邮件不应该进入垃圾邮件文件夹 116 | 117 | Q19:***什么是AIC指标?*** 118 | 119 | - AIC指“赤池信息量”,建立在熵的概念基础上,是衡量统计模型拟合优良性的一种标准。AIC越小,模型越好。如下式,**k是所拟合模型中参数的数量,L是对数似然值,n是观测值数目**。k小意味着模型简洁,L大意味着模型精确。 120 | 121 | $$ 122 | AIC=(2k-2L)/n 123 | $$ 124 | 125 | Q20:***什么是BIC指标?*** 126 | 127 | - BIC指“贝叶斯信息准则”,从拟合角度,选择一个对现有数据拟合最好的模型,从贝叶斯因子的解释来讲,就是边际似然最大的那个模型 128 | 129 | $$ 130 | BIC=ln(n)k-2ln(L) 131 | $$ -------------------------------------------------------------------------------- /深度学习/Model Evaluation df5d033abf22444284cfa8ba84a1438a/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Model Evaluation df5d033abf22444284cfa8ba84a1438a/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/Model Evaluation df5d033abf22444284cfa8ba84a1438a/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Model Evaluation df5d033abf22444284cfa8ba84a1438a/Untitled 2.png -------------------------------------------------------------------------------- /深度学习/Model Evaluation df5d033abf22444284cfa8ba84a1438a/Untitled 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Model Evaluation df5d033abf22444284cfa8ba84a1438a/Untitled 3.png -------------------------------------------------------------------------------- /深度学习/Model Evaluation df5d033abf22444284cfa8ba84a1438a/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Model Evaluation df5d033abf22444284cfa8ba84a1438a/Untitled.png -------------------------------------------------------------------------------- /深度学习/ModelEvaluation.md: -------------------------------------------------------------------------------- 1 | # Model Evaluation 2 | 3 | # 初级 4 | 5 | Q1:***解释机器学习中的过拟合现象?*** 6 | 7 | - **过拟合**是指模型对训练数据建模得太好。 8 | - 当模型学习训练数据中的细节和噪声达到对模型在新数据上的性能产生负面影响的程度时,就会发生**过度拟合。**这意味着训练数据中的噪声或随机波动被模型拾取并学习为概念,问题是这些概念并不适用于新数据并对模型的泛化能力产生负面影响 9 | 10 | ![Untitled](Model%20Evaluation%2033e6ecb893ba43b8aa236bcee2b86a1b/Untitled.png) 11 | 12 | Q2:***解释机器学习中的欠拟合现象*** 13 | 14 | - **欠拟合**是指既不能对训练数据良好建模也不能泛化到新数据的模型。欠拟合的机器学习模型不是合适的模型,因为它在训练数据上的表现不佳。 15 | - **欠拟合**通常不被讨论,因为在给定良好性能指标的情况下很容易检测到。欠拟合的补救措施是使用更适合的机器学习算法 16 | 17 | Q3:***什么是hyper-parameters?*** 18 | 19 | - 每个机器学习模型都有参数,还*可以*有超参数,参数通过模型训练更新。**超参数**是那些不能从常规训练过程中直接学习的参数**。**这些参数表示模型**的高级**属性,例如它的*复杂性***或**它*应该学习的速度*。 20 | 21 | Q4:***如何检测到机器学习中的过拟合现象?*** 22 | 23 | - **过拟合**的常见模式可以在**学习曲线**图上看到,其中模型在训练数据集上的性能不断提高,但在测试或验证集上的性能提高到一个点然后开始变差。因此,过拟合模型的**训练误差极低,但测试误差却很高**。 24 | 25 | ![Untitled](Model%20Evaluation%2033e6ecb893ba43b8aa236bcee2b86a1b/Untitled%201.png) 26 | 27 | Q5:***什么是模型学习率?学习率高或低对模型学习有什么影响?*** 28 | 29 | - **学习率**是一个调整参数,它决定了模型训练期间每次迭代(epoch)的步长。步长是您响应估计误差更新神经元权重的速度。使用反向传播误差方法更新模型权重时,梯度将从模型的输入节点通过神经元流向输出节点,然后确定误差并反向传播以更新神经元(模型)的权重。更新这些神经元权重的速度就是学习率。 30 | - 如果学习率**很高**,那么模型权重更新得很快而且很频繁,模型会很快收敛,但它可能会超过真正的误差最小值。**这意味着一个更快收敛但错误的模型。** 31 | - 如果学习**率低**,那么模型权重更新缓慢,模型将需要很长时间才能收敛,但不会超过真正的误差最小值。**这意味着一个更慢但更准确的模型。** 32 | 33 | Q6:***如何判断你的模型是否存在梯度爆炸问题?*** 34 | 35 | - 以下现象表明你训练的模型可能存在梯度爆炸的问题,例如:模型无法很好地学习训练数据(模型损失一直很高)、模型训练不稳定(每一次更新,loss变化很大)、训练时loss变为NaN; 36 | - 当发生以上现象时,可以深入挖掘模型看看是否有梯度爆炸的问题,以下现象可以确认发生梯度爆炸:训练阶段模型权重变为NaN;在训练期间,每个节点和层的误差梯度值始终高于`1.0`; 37 | 38 | Q7:**知道哪些关于*Hyperparameters Tuning的*方法?** 39 | 40 | - **随机搜索**:为超参数创建了一个可能值的网格。每次迭代都会尝试从该网格中随机组合超参数,记录性能,最后返回提供最佳性能的超参数组合 41 | - **网格搜索**:类似于手动调优,为网格中指定的所有给定超参数值的每个排列建立模型,并评估和选择最佳模型。最后,它返回具有最佳超参数的最佳模型 42 | - **贝叶斯优化:**贝叶斯优化使用先前对损失的观测,来确定下一个(最佳)的参数点来取样损失 43 | 44 | 引用:[https://www.geeksforgeeks.org/hyperparameter-tuning/](https://www.geeksforgeeks.org/hyperparameter-tuning/) 45 | 46 | Q8:***在设计神经网络时,有哪些方法防止过拟合?*** 47 | 48 | - 简化模型:为了降低复杂性,我们可以简单地删除层或减少神经元数量以使网络更小。 49 | - early-stopping:正则化的一种形式。NN使用梯度下降更新网络参数,但过了某个训练阶段,改进模型对训练数据的拟合会导致泛化误差增加。过了那个点,改进模型对训练数据的拟合会导致泛化误差增加。early-stopping规定了网络可以训练的迭代次数。 50 | 51 | ![Untitled](Model%20Evaluation%2033e6ecb893ba43b8aa236bcee2b86a1b/Untitled%202.png) 52 | 53 | - 数据扩充:增加数据集中存在的图像数量。一些流行的图像增强技术包括翻转、平移、旋转、缩放、改变亮度、添加噪声 54 | - 正则化:L1正则化以及L2正则化,L1正则化的目标是最小化权重的绝对值,L2正则化的目标是最小化权重的平方幅度 55 | - 使用dropout策略;dropout在每次迭代的训练过程中随机从神经网络中删除神经元。当我们丢弃不同的神经元组时,相当于训练了不同的神经网络。不同的网络会以不同的方式过拟合,所以 dropout 的最终效果是减少过拟合 56 | 57 | 引用:[https://www.kdnuggets.com/2019/12/5-techniques-prevent-overfitting-neural-networks.html](https://www.kdnuggets.com/2019/12/5-techniques-prevent-overfitting-neural-networks.html) 58 | 59 | Q9:***如何解决逻辑回归中的过拟合问题?*** 60 | 61 | - 减少使用的特征数量;丢弃那些提供信息量不大的特征 62 | - 使用L2正则化 63 | 64 | # 中级 65 | 66 | Q10:***什么是混淆矩阵?*** 67 | 68 | Q11:***解释ROC曲线*** 69 | 70 | Q12:***解释AUC值*** 71 | 72 | Q13:***ROC曲线和AUC值如何帮助衡量模型的好坏?*** 73 | 74 | Q14:***使用AUC值衡量模型性能有什么好处和坏处?*** 75 | 76 | Q15:***解释什么是F1-Score*** 77 | 78 | Q16:***当训练数据存在类别间分布不平衡时,如何选择评估指标?*** 79 | 80 | Q17:***使用早停策略时,可能会有什么问题?*** 81 | 82 | # 高级 83 | 84 | Q18:***算法A具有更高的Accuracy,算法B具有更高的Recall(召回率),如何判断算法A和算法B哪个更好?*** 85 | 86 | Q19:***什么是AIC指标?*** 87 | 88 | Q20:***什么是BIC指标?*** 89 | -------------------------------------------------------------------------------- /深度学习/NLP.md: -------------------------------------------------------------------------------- 1 | # NLP 2 | 3 | # 初级: 4 | 5 | Q1:***NLP任务中,文本预处理有什么作用?*** 6 | 7 | - 文本预处理会将文本转换为机器能读懂的形式,以便机器学习算法可以更好地执行。并且,在情感分析等任务中,去除停用词等预处理有助于提高机器学习模型的准确率。 8 | - 常见的文本预处理手段包括:删除 HTML 标签,删除停用词,删除数字,小写所有字母,词形还原等。 9 | 10 | Q2:*****词形还原*和*词干*提取有什么区别?** 11 | 12 | - **词干提取**只是删除*单词的最后几个字符*,通常会导致错误的含义和拼写,如`eating -> eat, Caring -> Car.` 13 | - **词形还原**考虑*上下文*并将单词转换为其有意义的基本形式,如`Stripes -> Strip (verb) -or- Stripe (noun), better -> good` 14 | 15 | Q3:***何时使用词形还原?何时使用词干提取?*** 16 | 17 | - 词干提取更多被应用于信息检索领域,如Solr、Lucene等,用于扩展检索,粒度较粗。词形还原更主要被应用于文本挖掘、自然语言处理,用于更细粒度、更为准确的文本分析和表达 18 | - 词干提取计算量耗费小,适用于大数据集;词形还原耗费计算量大,常用于对准确性要求高的小数据集 19 | 20 | Q4:***POS tagging(词性标注)有什么用?*** 21 | 22 | - **POS 标记**用于将每个单词分类到其词性中 23 | - 词性可用于查找语法或词汇模式 24 | - 在英语中,同一个词可以拥有不同的词性,词性标注有助于区分它们。 25 | 26 | Q5:***使用词袋模型(Bag of words)提取特征有哪些优点?*** 27 | 28 | - 词袋模型非常简单和灵活,可以自己设计词汇表,可以以多种方式从文档中提取特征 29 | - 由相似内容组成的文本在其他方面(例如含义)也将相似,因此词袋模型能反映句子含义间的相似性 30 | 31 | Q6:***TF-IDF方法与TF方法的区别在哪里?*** 32 | 33 | - TF-IDF定义为词频-逆文档频率,TF定义为词频 34 | - TF-IDF是一种统计方法,旨在反映一个词对语料库集合中文档的重要性:字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降;TF是一个词在文档中出现的次数的计数。 35 | - TF定义为$tf_{ij}=\frac{n_{ij}}{\sum_{k}^{}n_{k,j}}$,$n_{ij}$是该词在文件中出现的次数,分母则是文件中所有词汇出现的次数总和;TF-IDF定义为$tfidf(t,d)=tf(t,d)*log(\frac{N}{df+1})$,其中$N$是语料库中的总文件数,$df$表示包含词语的文件数目 36 | 37 | Q7:***什么是one-hot vector?它们如何用于自然语言处理?*** 38 | 39 | - one-hot 向量可用于以$L*N$大小矩阵的形式表示句子,其中$N$是语料库中单个单词的数量,$L$是句子的长度;将词语所在下标位置置为1,其他位置置为0 40 | 41 | Q8:***文本预处理有哪些方法?*** 42 | 43 | - 文本预处理主要有三个不同类型: 44 | - **标记化(Tokenization)**:这是将一组文本分成更小的部分或标记的过程。段落被标记化为句子,句子被标记化为单词。 45 | - **规范化(Normalization)**:数据库规范化是将数据库的结构转换为一系列规范形式。它实现的是数据的组织,使其在所有记录和字段中看起来相似。同样,在NLP领域,规范化可以是将所有单词转换为小写的过程。这使得所有的句子和标记看起来都一样,并且不会使机器学习算法复杂化。 46 | - **去噪(Noise Removal)**:是对文本进行清理的过程。做一些事情,比如删除不需要的字符,比如空格、数字、特殊字符等。 47 | 48 | Q9:***one-hot vector应用在NLP领域有什么不足之处?*** 49 | 50 | - **矩阵稀疏和维度灾难**。one-hot表示是将词语所在下标位置置为1,其他位置置为0,而现实生活中,词语的集合是很大的,达到几千甚至几万,而每个向量的维度是和词语集合中词语的数量是一致的,所以一个词需要用几千甚至几万的维度来表示,如此大的维度在后续计算中需要很大的计算资源。此外,一个向量中只有一个维度是非零的,明显是过于稀疏的。 51 | - **语义缺失**。在我们的表达中,词语之间是有一定的相似性的,例如“i”和“you”、“apple”和“banana”之间的相似性是比较高的,而“i”和“apple”之间的相似性比比较低的。而词向量作为词语的数字特征表示,理应需要保持词语之间语义上的相似性。但是,one-hot所得出来的每个词语的向量与其他词语的向量都是正交的,即每个词语之间的余弦相似度均为0,每对词语之间的欧式距离也是相同的。所以,这种向量表示失去了词语之间的相似性。 52 | 53 | 引用:https://www.jianshu.com/p/9948c5764302 54 | 55 | Q10:***TF-IDF方法比TF方法好的地方有哪些?*** 56 | 57 | - TF方法只统计句子中词语出现的词频,词语出现的越多,重要性越高;而TF-IDF考虑到字词的重要性会随着它在语料库中出现的频率成反比下降,有利于分析出其中的关键词,降低一些出现频次高但重要性低词汇的重要性,如中文助词”的“。 58 | 59 | Q11:***比较TF-IDF方法和Bag of words词袋模型*** 60 | 61 | - Bag of Words 只是创建一组向量,其中包含文档(评论)中单词出现的次数,而 TF-IDF 模型包含有关较重要单词和较不重要单词的信息。 62 | - 词袋模型很容易解释,然而,TF-IDF 通常在机器学习模型中表现更好 63 | 64 | Q12:***解释什么是BLEU值?*** 65 | 66 | - BLEU(*bilingual evaluation understudy*)是用于评估**模型生成的句子(candidate)**和**实际句子(reference)**的差异的指标,用于评估*机器翻译*文本的质量。BLEU实现是分别计算**candidate句**和**reference句**的**N-grams模型**, 然后统计其匹配的个数来计算得到 67 | 68 | # 中级: 69 | 70 | Q13:***NLP处理中,会碰到哪些歧义问题?*** 71 | 72 | Q14:***中文分词问题中,会碰到那些歧义问题类型?*** 73 | 74 | Q15:***在文本情感分析任务中,你会选用哪种loss?*** 75 | 76 | Q16:***解释什么是ROUGE指标?ROUGE与BLEU值有什么不同?*** 77 | 78 | Q17:***在机器翻译领域,为什么encoder-decoder结构的RNN取代了seq2seq RNN?*** 79 | 80 | Q18:***解释word embedding*** 81 | 82 | Q19:***word embedding的优点?*** 83 | 84 | Q20:***CNN在NLP中有哪些应用?CNN在NLP任务中应用的直觉是什么?*** 85 | 86 | Q21:***解释word2vec方法*** 87 | 88 | Q22:***word2vec与Glove算法有什么相同之处和区别?*** 89 | 90 | Q23:***解释隐马尔可夫模型(HMM)*** 91 | 92 | Q24:***bert的架构是什么 目标是什么,输入包括了什么 三个embedding输入是怎么综合的?*** 93 | 94 | Q25:***Seq2seq模型中decode和encode的差别有哪些?*** 95 | 96 | Q26:***阐述transformer的模型架构?*** 97 | 98 | Q26:***bert模型有哪些可以改进的地方?*** 99 | 100 | Q27:***讲述BPE模型*** 101 | 102 | Q28:***BPE模型与Wordpiece模型有什么区别?*** 103 | 104 | Q29:***BERT模型里,self-attention操作里$\sqrt{d_{k}}$的作用*** 105 | 106 | Q30:***attention机制为什么有效?*** 107 | 108 | Q31:***分析Bert模型存在的缺点*** 109 | 110 | Q32:***Transformer中残差结构的作用*** 111 | 112 | Q33:***Transformer采用postnorm还是prenorm?为什么?*** 113 | 114 | Q34:***BERT为什么用字粒度而不是用词粒度?*** 115 | 116 | Q35:***HMM 和 CRF 算法的原理和区别?*** 117 | 118 | Q36:***BiLSTM+CRF模型中,CRF层的作用?*** 119 | 120 | Q37:***nlp有哪些数据增强的方法?*** 121 | 122 | Q38:***NLP如何解决OOV问题?*** 123 | 124 | Q39:***分析Bert,不同层针对NLP的什么任务?*** 125 | 126 | Q40:***Albert里的SOP为什么会有效?*** 127 | 128 | # 高级: 129 | 130 | Q41:***BERT的三个embedding为什么可以相加?*** 131 | 132 | Q42:**Word2vec和LDA两个模型有什么区别和联系?** 133 | 134 | Q43:**相对位置编码和绝对位置编码有什么区别?** 135 | 136 | Q44:**Elmo 的思想是什么?** 137 | 138 | Q45:**word2vec中霍夫曼树是什么?** 139 | 140 | Q46:**Word2vec 中 为什么要使用霍夫曼树?** 141 | 142 | Q47:**word2vec和NNLM对比有什么区别?** 143 | 144 | Q48:**word2vec和tf-idf 在相似度计算时的区别?** 145 | 146 | Q49:**word2vec负采样有什么作用?** 147 | 148 | Q50:**elmo、GPT、bert三者之间有什么区别?** 149 | 150 | Created BY SUPRE IDOL 151 | -------------------------------------------------------------------------------- /深度学习/Optimisation 0ac16f5c3b844d53a67b6c09c22455aa/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Optimisation 0ac16f5c3b844d53a67b6c09c22455aa/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/Optimisation 0ac16f5c3b844d53a67b6c09c22455aa/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Optimisation 0ac16f5c3b844d53a67b6c09c22455aa/Untitled.png -------------------------------------------------------------------------------- /深度学习/Optimisation 4bb09c6ac2e54f3595cf6827042b5183.md: -------------------------------------------------------------------------------- 1 | # Optimisation 2 | 3 | ## Easy 4 | 5 | Q1:**解释什么是贝叶斯优化方法?** 6 | 7 | - 贝叶斯优化是一种黑盒优化算法,用于求解表达式未知的函数的极值问题。算法根据一组采样点处的函数值预测出任意点处函数值的概率分布,这通过高斯过程回归而实现。根据高斯过程回归的结果构造采集函数,用于衡量每一个点值得探索的程度,求解采集函数的极值从而确定下一个采样点。最后返回这组采样点的极值作为函数的极值。 8 | - 贝叶斯算法在机器学习中被用于AutoML算法,自动确定机器学习算法的超参数。某些NAS算法也使用了贝叶斯优化算法。 9 | 10 | Q2:**解释机器学习中的凸优化** 11 | 12 | - 对于机器学习来说,如果要优化的问题被证明是凸优化问题,则说明此问题可以被比较好的用梯度下降等方法解决 13 | - 凸优化更快、更简单且计算量更少 14 | 15 | ![Untitled](Optimisation%204bb09c6ac2e54f3595cf6827042b5183/Untitled.png) 16 | 17 | 引用:[https://stats.stackexchange.com/](https://stats.stackexchange.com/) 18 | 19 | Q3:你知道哪些超参数调整(Hyperparameters tuning)方法? 20 | 21 | - **随机搜索**:超参数创建了一个可能值的网格。每次迭代都会尝试从该网格中随机组合超参数,记录性能,最后返回提供最佳性能的超参数组合。 22 | - **网格搜索:**将搜索空间定义为超参数值的网格,并评估网格中每个位置的算法性能(遍历),最后返回提供最佳性能的超参数组合。 23 | - **贝叶斯优化**:假设超参数与最后我们需要优化的损失函数存在一个函数关系;通过SMBO等算法最小化函数,从而得到最优的参数组合 24 | 25 | Q4:**解释Adam优化器** 26 | 27 | - Adam:Adaptive Moment Estimation 利用梯度的一阶矩估计和二阶矩估计动态调节每个参数的学习率; 28 | - Adam算法汇集了Momentum+ RMSProp算法 29 | 30 | Q5:**Adam算法有什么局限性?** 31 | 32 | - 虽然使用Adam进行训练有助于快速收敛,但结果模型的泛化性能往往不如使用SGD进行动量训练时的泛化性能。 33 | - 另一个问题是,即使Adam有自适应学习率,当使用良好的学习率计划时,它的性能也会提高。特别是在训练的早期,使用较低的学习率来避免发散是有益的。这是因为在一开始,模型的权值是随机的,因此得到的梯度不是很可靠。如果学习率太大,可能会导致模型采取太大的步骤,而没有确定合适的权重。当模型克服了这些初始稳定性问题后,可以提高学习速度,加快收敛速度。 34 | 35 | Q6:***Batch Size*如何影响梯度下降方法的收敛性?为什么?** 36 | 37 | - 大Bacthsize训练倾向于收敛到接近初始参数值的最小值,而不是探索所有参数空间。 38 | - 大Bacthsize训练倾向于收敛到更清晰的最小值,而小批量训练倾向于收敛到更平坦的最小值。 39 | 40 | ![Untitled](Optimisation%204bb09c6ac2e54f3595cf6827042b5183/Untitled%201.png) 41 | 42 | 如图,两个最小值都达到相同的损失值,但平坦的最小值对参数空间中的扰动不太敏感。他们提供的实验证据表明,大批量训练更有可能收敛到尖锐的最小值和接近起点的最小值。小批量训练中的固有噪声有助于将参数推出尖锐的盆地。 43 | 44 | 引用: 45 | 46 | Q7:**什么情况下,选择遗传算法作为优化算法?** 47 | 48 | - 当许多处理器可以并行使用时 49 | - 当目标函数具有高模态(许多局部最优)时 50 | 51 | 引用:[https://stats.stackexchange.com/questions/249471/when-are-genetic-algorithms-a-good-choice-for-optimization](https://stats.stackexchange.com/questions/249471/when-are-genetic-algorithms-a-good-choice-for-optimization) 52 | 53 | Q8:**Adagrad算法是怎样调整学习率的?** 54 | 55 | - AdaGrad是一个基于梯度的优化算法,它的主要特点是:它对不同的参数调整学习率,具体而言,对低频出现的参数进行大的更新,对高频出现的参数进行小的更新。 因此,他很适合于处理稀疏数据。具体计算过程如下: 56 | - 计算梯度: 57 | 58 | $$ 59 | g_t = \nabla_\theta J(\theta_{t-1}) 60 | $$ 61 | 62 | - 累计平方梯度: 63 | 64 | $$ 65 | r_t = r_{t-1} + g_t \odot g_t 66 | $$ 67 | 68 | - 计算梯度更新: 69 | 70 | $$ 71 | \Delta \theta = {\eta \over \epsilon + \sqrt{r_t}} \odot g_t 72 | $$ 73 | 74 | - 更新学习率: 75 | 76 | $$ 77 | \theta_t=\theta_{t-1} - \Delta \theta 78 | $$ 79 | 80 | Q9:**比较牛顿法和梯度下降** 81 | 82 | - 梯度下降是一种基于一阶导数信息的优化算法,它在每一步中向梯度相反的方向更新参数。由于梯度下降只考虑了一阶导数信息,因此可能会受到噪声和局部极小值的干扰。牛顿法是一种基于二阶导数信息的优化算法,它使用牛顿法求解目标函数的局部二次近似,然后在每一步中通过求解线性方程组来更新参数。 83 | - 区别: 84 | - 梯度下降法是一阶优化算法,牛顿法是二阶优化算法 85 | - 牛顿法的收敛速度相比梯度下降法常常较快 86 | - 牛顿法每次需要更新一个二维矩阵,计算代价很大,实际使用中常使用拟牛顿法 87 | - 牛顿法对初始值有一定要求,在非凸优化问题中(如神经网络训练),牛顿法很容易陷入鞍点(牛顿法步长会越来越小),而梯度下降法则很容易逃离鞍点(因此在神经网络训练中一般使用梯度下降法,高维空间的神经网络中存在大量鞍点) 88 | - 梯度下降法在靠近最优点时会震荡,因此步长调整在梯度下降法中是必要的,具体有adagrad, adadelta, rmsprop, adam等一系列自适应学习率的方法 89 | 90 | Q10:**贝叶斯优化如何在超参数优化中使用?** 91 | 92 | - 在超参数优化中,贝叶斯优化可以使用高斯过程模型来对超参数进行建模。对于每一次迭代,该模型会根据之前的结果预测出下一个超参数组合的性能,并在该组合处进行新的函数评估。这样,模型会不断地更新,直到找到最佳超参数组合。 93 | 94 | Q11:**剪枝方法是否适用于神经网络优化?** 95 | 96 | - 剪枝方法可以用于神经网络优化,以减少模型的计算负担和过拟合风险。剪枝方法通过评估每个神经元的重要性来确定哪些神经元可以被删除。这可以通过在训练过程中使用正则化技术来实现,或者通过在训练后使用一些特定的剪枝算法来实现。 97 | 98 | ![Untitled](Optimisation%204bb09c6ac2e54f3595cf6827042b5183/Untitled%202.png) 99 | 100 | Q12:**在随机森林模型中,如何优化森林中树的数量?** 101 | 102 | - 在随机森林模型中,可以通过交叉验证的方式来确定最佳的树的数量。通过对不同数量的树进行评估,可以找到最优的树的数量,以最大化模型的准确性。在实践中,通常会评估10到1000棵树,并选择最佳数量。 103 | 104 | Q13:****若CNN网络很庞大,在手机上运行效率不高,对应模型压缩方法有了解吗?**** 105 | 106 | - 低秩近似:卷积,实则就是矩阵运算;低秩近似的技术是通过一系列小规模矩阵将权重矩阵重构出来,以此降低运算量和存储开销。两种方法包括**奇异值分解与Toeplitz矩阵重构** 107 | - 模型剪枝与稀疏约束:模型剪枝衡量神经元的重要程度,移除掉一部分不重要的神经元,再对网络进行finetuning,如此往复;稀疏约束的思路是在网络的优化目标中加入正则化,使得训练网络的部分权重趋于0,这些0值元素就是被剪枝的对象,稀疏约束的好处是只需要进行一遍训练即可完成剪枝 108 | - 参数量化:相比于剪枝操作,参数量化则是一种常用的后端压缩技术。量化就是从权重中归纳出若干个有代表性的权重,由这些代表来表示某一类权重的具体数值。这些“代表”被存储在码本(codebook)中,而原权重矩阵只需记录各自“代表”的索引即可,从而极大地降低了存储开销。 109 | - 知识蒸馏:使用一个较大的已经训练好的网络去教导一个较小的网络;将一个高精度且笨重的teacher网络转换为一个更加紧凑的student网络 110 | 111 | Q14:**讲述模型蒸馏的原理与操作** 112 | 113 | - 模型蒸馏:训练teacher模型softmax层的超参数获得一个合适的soft target集合(“软标签”指的是大网络在每一层卷积后输出的feature map。),然后对要训练的student模型,使用同样的超参数值尽可能地接近teacher模型的soft target集合,作为student模型总目标函数的一部分,以诱导student模型的训练,实现知识的迁移。 114 | 115 | 引用:[https://blog.csdn.net/weixin_46838716/article/details](https://blog.csdn.net/weixin_46838716/article/details) -------------------------------------------------------------------------------- /深度学习/Optimisation 4bb09c6ac2e54f3595cf6827042b5183/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Optimisation 4bb09c6ac2e54f3595cf6827042b5183/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/Optimisation 4bb09c6ac2e54f3595cf6827042b5183/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Optimisation 4bb09c6ac2e54f3595cf6827042b5183/Untitled 2.png -------------------------------------------------------------------------------- /深度学习/Optimisation 4bb09c6ac2e54f3595cf6827042b5183/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Optimisation 4bb09c6ac2e54f3595cf6827042b5183/Untitled.png -------------------------------------------------------------------------------- /深度学习/Optimisation.md: -------------------------------------------------------------------------------- 1 | # Optimisation 2 | 3 | ## 初级: 4 | 5 | Q1:**解释什么是贝叶斯优化方法?** 6 | 7 | - 贝叶斯优化是一种黑盒优化算法,用于求解表达式未知的函数的极值问题。算法根据一组采样点处的函数值预测出任意点处函数值的概率分布,这通过高斯过程回归而实现。根据高斯过程回归的结果构造采集函数,用于衡量每一个点值得探索的程度,求解采集函数的极值从而确定下一个采样点。最后返回这组采样点的极值作为函数的极值。 8 | - 贝叶斯算法在机器学习中被用于AutoML算法,自动确定机器学习算法的超参数。某些NAS算法也使用了贝叶斯优化算法。 9 | 10 | Q2:**解释机器学习中的凸优化** 11 | 12 | - 对于机器学习来说,如果要优化的问题被证明是凸优化问题,则说明此问题可以被比较好的用梯度下降等方法解决 13 | - 凸优化更快、更简单且计算量更少 14 | 15 | ![Untitled](Optimisation%200ac16f5c3b844d53a67b6c09c22455aa/Untitled.png) 16 | 17 | 引用:[https://stats.stackexchange.com/](https://stats.stackexchange.com/) 18 | 19 | Q3:你知道哪些超参数调整(Hyperparameters tuning)方法? 20 | 21 | - **随机搜索**:超参数创建了一个可能值的网格。每次迭代都会尝试从该网格中随机组合超参数,记录性能,最后返回提供最佳性能的超参数组合。 22 | - **网格搜索:**将搜索空间定义为超参数值的网格,并评估网格中每个位置的算法性能(遍历),最后返回提供最佳性能的超参数组合。 23 | - **贝叶斯优化**:假设超参数与最后我们需要优化的损失函数存在一个函数关系;通过SMBO等算法最小化函数,从而得到最优的参数组合 24 | 25 | Q4:**解释Adam优化器** 26 | 27 | - Adam:Adaptive Moment Estimation 利用梯度的一阶矩估计和二阶矩估计动态调节每个参数的学习率; 28 | - Adam算法汇集了Momentum+ RMSProp算法 29 | 30 | Q5:**Adam算法有什么局限性?** 31 | 32 | - 虽然使用Adam进行训练有助于快速收敛,但结果模型的泛化性能往往不如使用SGD进行动量训练时的泛化性能。 33 | - 另一个问题是,即使Adam有自适应学习率,当使用良好的学习率计划时,它的性能也会提高。特别是在训练的早期,使用较低的学习率来避免发散是有益的。这是因为在一开始,模型的权值是随机的,因此得到的梯度不是很可靠。如果学习率太大,可能会导致模型采取太大的步骤,而没有确定合适的权重。当模型克服了这些初始稳定性问题后,可以提高学习速度,加快收敛速度。 34 | 35 | Q6:***Batch Size*如何影响梯度下降方法的收敛性?为什么?** 36 | 37 | - 大Bacthsize训练倾向于收敛到接近初始参数值的最小值,而不是探索所有参数空间。 38 | - 大Bacthsize训练倾向于收敛到更清晰的最小值,而小批量训练倾向于收敛到更平坦的最小值。 39 | 40 | ![Untitled](Optimisation%200ac16f5c3b844d53a67b6c09c22455aa/Untitled%201.png) 41 | 42 | 如图,两个最小值都达到相同的损失值,但平坦的最小值对参数空间中的扰动不太敏感。他们提供的实验证据表明,大批量训练更有可能收敛到尖锐的最小值和接近起点的最小值。小批量训练中的固有噪声有助于将参数推出尖锐的盆地。 43 | 44 | 引用: 45 | 46 | Q7:**什么情况下,选择遗传算法作为优化算法?** 47 | 48 | - 当许多处理器可以并行使用时 49 | - 当目标函数具有高模态(许多局部最优)时 50 | 51 | 引用:[https://stats.stackexchange.com/questions/249471/when-are-genetic-algorithms-a-good-choice-for-optimization](https://stats.stackexchange.com/questions/249471/when-are-genetic-algorithms-a-good-choice-for-optimization) 52 | 53 | Q8:**Adagrad算法是怎样调整学习率的?** 54 | 55 | - AdaGrad是一个基于梯度的优化算法,它的主要特点是:它对不同的参数调整学习率,具体而言,对低频出现的参数进行大的更新,对高频出现的参数进行小的更新。 因此,他很适合于处理稀疏数据。具体计算过程如下: 56 | - 计算梯度: 57 | 58 | $$ 59 | g_t = \nabla_\theta J(\theta_{t-1}) 60 | $$ 61 | 62 | - 累计平方梯度: 63 | 64 | $$ 65 | r_t = r_{t-1} + g_t \odot g_t 66 | $$ 67 | 68 | - 计算梯度更新: 69 | 70 | $$ 71 | \Delta \theta = {\eta \over \epsilon + \sqrt{r_t}} \odot g_t 72 | $$ 73 | 74 | - 更新学习率: 75 | 76 | $$ 77 | \theta_t=\theta_{t-1} - \Delta \theta 78 | $$ 79 | 80 | # 中级: 81 | 82 | Q9:**比较牛顿法和梯度下降** 83 | 84 | Q10:**贝叶斯优化如何在超参数优化中使用?** 85 | 86 | Q11:**剪枝方法是否适用于神经网络优化?** 87 | 88 | Q12:**在随机森林模型中,如何优化森林中树的数量?** 89 | 90 | Q13:****若CNN网络很庞大,在手机上运行效率不高,对应模型压缩方法有了解吗?**** 91 | 92 | Q14:**讲述模型蒸馏的原理与操作** 93 | -------------------------------------------------------------------------------- /深度学习/Q-learning.md: -------------------------------------------------------------------------------- 1 | # Q-learning 2 | 3 | # 初级: 4 | 5 | Q1:**怎样定义强化学习中的状态?** 6 | 7 | - 强化学习(RL)中的状态表示问题类似于有监督或无监督学习中的特征表示、特征选择和特征工程问题。对复杂问题建模的常用方法是离散化,但离散化有可能会带来维度灾难问题。对于这些问题,通常会利用状态表示学习(SRL),将状态表示为不同特征的向量 8 | 9 | Q2:**Q Learning 中的*Alpha*和*Gamma*参数代表什么?** 10 | 11 | - Alpha是学习率,随着继续获得越来越大的知识库,它应该会降低。学习率应该在 的范围内`0-1`。学习率越高,它会很快替换新的 Q 值,因此我们需要以某种方式对其进行优化,以便我们的智能体从以前的 Q 值中学习。学习率是一种工具,可用于确定我们保留了多少我们需要为状态-动作对保留的先前经验知识。 12 | - Gamma是未来奖励的价值。它会对学习产生很大影响,可以是动态值或静态值。如果等于`1`,则代理人对未来奖励的重视程度与对当前奖励的重视程度相同。这意味着,在十个动作中,如果代理人做了好事,这与直接执行此动作一样有价值。所以学习在高gamma值下效果不佳。相反,gamma将`0`导致代理只重视即时奖励,这只适用于非常详细的奖励功能。 13 | 14 | Q3:**怎么判断 Q-Learning 算法何时收敛?** 15 | 16 | - 当学习曲线变得平坦并且不再增加时,强化学习算法被认为收敛。但是由于探索参数ε不是逐渐增加的,在达到最优策略之前,Q-Learning 会以过早的方式收敛。 17 | - 因此,必须满足两个条件才能保证极限收敛: 18 | - **学习率接近于零,但不能以太快的速度**。形式上,这要求学习率之和必须发散,但它们的平方和必须收敛。具有这些属性的示例序列是1/1, 1/2, 1/3, 1/4, .... 19 | - **每个状态-动作对必须被无限频繁地访问**。这有一个精确的数学定义:每个动作在每个状态下都必须有一个非零的概率被策略选择,即π(s, a) > 0对于所有(s, a)。在实践中,使用ε-贪心策略(where ε > 0) 可确保满足此条件。 20 | 21 | 引用:[https://stats.stackexchange.com/](https://stats.stackexchange.com/) 22 | 23 | Q4:**如何理解epsilon greedy 算法?** 24 | 25 | - (1) 我们的小车一开始接触到的 state 很少,并且如果小车按照已经学到的 qtable 执行,那么小车很有可能出错或者绕圈圈。同时我们希望小车一开始能随机的走一走,接触到更多的 state。 26 | - (2) 基于上述原因,我们希望小车在一开始的时候不完全按照 Q learning 的结果运行,即以一定的概率 epsilon,随机选择 action,而不是根据 maxQ 来选择 action。然后随着不断的学习,那么我会降低这个随机的概率,使用一个衰减函数来降低 epsilon。 27 | - (3) 这个就解决了所谓的 exploration and exploitation 的问题,在“探索”和“执行”之间寻找一个权衡。 28 | 29 | 引用:[https://blog.csdn.net/Gin07](https://blog.csdn.net/Gin07) 30 | 31 | Q5:**解释Q-learning算法** 32 | 33 | - Q(s, a)函数,即质量函数,用来表示智能体在s状态下采用a动作并在之后采取最优动作条件下 34 | 的打折的未来奖励(先不管未来的动作如何选择): 35 | 36 | $$ 37 | Q(s_t,a_t)=max(R_{t+1}) 38 | $$ 39 | 40 | 假设有了这个Q函数,那么我们就能够求得在当前 t 时刻当中,做出各个决策的最大收益值,通过对比这些收益值,就能够得到 t 时刻某个决策是这些决策当中收益最高。根据Q函数的递推公式可以得到: 41 | 42 | $$ 43 | Q(s_t,a_t)=r+max_aQ(s_{t+1},a_{t+1}) 44 | $$ 45 | 46 | 这就是注明的贝尔曼公式。贝尔曼公式是说,对于某个状态来讲,最大化未来奖励相当于 最大化即刻奖励与下一状态最大未来奖励之和。Q-learning的核心思想是:我们能够通过贝尔曼公式迭代地近似Q-函数。 47 | 48 | Q6:**分别写出基于状态值函数的贝尔曼方程以及基于状态-动作值函数的贝尔曼方程。** 49 | 50 | - 基于状态值函数的贝尔曼方程: 51 | 52 | $$ 53 | {{V}^{\pi }}(s)={{\mathbb{E}}_{a \sim \pi (a|s)}}{{\mathbb{E}}_{s'\sim p(s'|s,a)}}[r(s,a,s')+\gamma {{V}^{\pi }}(s')] 54 | $$ 55 | 56 | - 基于状态-动作值函数(Q函数)的贝尔曼方程: 57 | 58 | $$ 59 | {{Q}^{\pi }}(s,a)={{\mathbb{E}}_{s'\sim p(s'|s,a)}}\left[ r(s,a,s')+\gamma {{\mathbb{E}}_{a'\sim \pi (a'|s')}}[{{Q}^{\pi }}(s',a')] \right] 60 | $$ 61 | 62 | Q7:**讲一下SARSA,最好可以写出其Q(s,a)的更新公式。另外,它是on-policy还是off-policy,为什么?** 63 | 64 | - SARSA可以算是Q-learning的改进,其更新公式为: 65 | 66 | $$ 67 | Q(s, a) \larr Q(s, a) + \alpha [r(s,a) + \gamma Q(s', a') - Q(s, a)] 68 | $$ 69 | 70 | 其为on-policy的,SARSA必须执行两次动作得到(s,a,r,s′,a′)才可以更新一次;而且a′是在特定策略π 71 | 的指导下执行的动作,因此估计出来的Q(s,a)是在该策略 π之下的Q值,样本生成用的π和估计的π 72 | 是同一个,因此是on-policy。 73 | 74 | Q8:**请问value-based和policy-based方法的区别是什么?** 75 | 76 | 1. 生成策略上的差异,前者确定,后者随机。基于价值的方法中动作-价值对的估计值最终会收敛(通常是不同的数,可以转化为0~1 的概率),因此通常会获得一个确定的策略;基于策略的方法不会收敛到一个确定的值,另外他们会趋向于生成最佳随机策略。如果最佳策略是确定的,那么最优动作对应的值函数的值将远大于次优动作对应的值函数的值,值函数的大小代表概率的大小。 77 | 2. 动作空间是否连续,前者离散,后者连续。基于价值的方法,对于连续动作空间问题,虽然可以将动作空间离散化处理,但离散间距的选取不易确定。过大的离散间距会导致算法取不到最优动作,会在最优动作附近徘徊;过小的离散间距会使得动作的维度增大,会和高维度动作空间一样导致维度灾难,影响算法的速度。而基于策略的方法适用于连续的动作空间,在连续的动作空间中,可以不用计算每个动作的概率,而是通过正态分布选择动作。 78 | 3. 基于价值的方法,例如Q学习算法,是通过求解最优价值函数而间接地求解最优策略;基于策略的方法,例如REINFORCE等算法直接将策略参数化,通过策略搜索、策略梯度或者进化方法来更新参数以最大化回报。基于价值的方法不易扩展到连续动作空间,并且当同时采用非线性近似、自举等策略时会有收敛问题。策略梯度具有良好的收敛性。 79 | 4. 另外,对于价值迭代和策略迭代,策略迭代有两个循环,一个是在策略估计的时候,为了求当前策略的价值函数需要迭代很多次;另一个是外面的大循环,即策略评估、策略提升。价值迭代算法则是一步到位,直接估计最优价值函数,因此没有策略提升环节。 80 | 81 | 引用:《Easy RL》 82 | 83 | # 中级: 84 | 85 | Q9:**能否简单说下动态规划、蒙特卡洛和时序差分的异同点?** 86 | 87 | Q10:**简述DQN?** 88 | 89 | Q11:**DQN中的两个技巧:目标网络(target network)和经验回放(experience replay)的具体作用是什么呢?** 90 | 91 | Q12:**DQN(Deep Q-learning)和Q-learning有什么异同点?** 92 | 93 | Q13:**DQN都有哪些变种?** 94 | 95 | Q14:**简述Double DQN(双深度Q网络)原理?** 96 | 97 | Q15:**请问Dueling DQN(竞争深度Q网络)模型有什么优势?** 98 | 99 | # 高级: 100 | 101 | Q16:**请问Actor - Critic有何优点?** 102 | 103 | Q17:**简述一下DDPG算法?** 104 | 105 | Q18:**请问DDPG是on-policy还是off-policy,为什么?** 106 | -------------------------------------------------------------------------------- /深度学习/RNN ba2dd072fd1a45eab8be29543b3c4178.md: -------------------------------------------------------------------------------- 1 | # RNN 2 | 3 | Q1:***RNN和CNN之间有什么区别?在哪些情况下分别使用彼此?*** 4 | 5 | - CNN对数据执行卷积操作,提取其中的特征;CNN最适用于需要位置不变性的情况(无论目标在输入样本中的什么位置,您都希望捕获相似的特征) 6 | - RNN是在输入样本之间保持状态的神经网络,RNN能利用以前的输入样本信息并使用这些信息来帮助当前输入样本的分类;RNN更适合处理时序数据 7 | 8 | Q2:***RNN网络在NLP领域有什么运用?*** 9 | 10 | - RNN在NLP领域主要有如下应用:序列标注,比如词性标注、命名实体识别,常用blstm-crf模型;分类任务,比如情感分析;关系判断,比如推理、阅读理解等;生成式任务,比如翻译、对话、文本摘要等通过一段文字生成另一段文字的任务 11 | 12 | Q3:***为什么在处理时间序列问题上,RNN会优于MLP?*** 13 | 14 | - MLP在处理时间序列时,不考虑输入之间的时间关系,$t-1,t,t+1$时刻的数据被同等看待,无法利用到上下文信息; 15 | - 而在 RNN 中,先前时间步状态的输出作为当前时间步状态的输入传递,RNN能更好地利用到时间序列中的历史信息。 16 | 17 | Q4:***RNN的输入有几个维度?每个维度分别代表什么?RNN的输出呢?*** 18 | 19 | - RNN的输入有三个维度,每个维度分别表示batch_size、seq_len、input_dim,batch_size表示batch大小,seq_len表示序列的长度,input_dim表示输入数据的维度 20 | - 输出层同样拥有三个维度,含义与输入基本一致,input_dim修改为output_dim 21 | 22 | Q5:***RNN和传统的全连接网络之间有什么差别?*** 23 | 24 | - MLP是最简单的DNN,它的每一层其实就是fc层(fully connected layer) 25 | - RNN相对于MLP而言,多了时间先验知识,即RNN可以学习到数据之间的时间相关性。比如一段文字,前面的字是“上”,后面的字是“学”概率更大,是“狗”的概率很小。RNN神经元的输入会有多个time step,每个time step的输入进入神经元中时会共享参数,RNN可以视作为编码了时间相关性的DNN 26 | 27 | Q6:***训练RNN时会碰到哪些困难?怎么解决?*** 28 | 29 | - RNN对于距离当前时刻比较远的隐藏层,容易出现梯度爆炸或者梯度弥散;这是由于在反向传播求解梯度过程中,各个隐藏层的参数会累乘,当特征值小于1时,不断相乘导致特征值向0衰减。特征值大于1时,则向正无穷扩增;导致无法利用梯度来对距离比较远的时刻进行调节 30 | - 解决方法是LSTM网络,它通过门控(gates)的方式,使得不断相乘的梯度的积保持在接近1的数值,从而使得长序列仍然可以训练 31 | 32 | Q7:***在机器翻译领域,为什么encoder-decoder结构的RNN取代了seq2seq RNN?*** 33 | 34 | - seq2seq RNN一次只能翻译一个词汇,而encoder-decoder RNN能处理变长的输入/输出,一次网络推理能翻译一整句话 35 | 36 | 引用:[https://quizlet.com/284587332/deep-learning-midterm-2-flash-cards/](https://quizlet.com/284587332/deep-learning-midterm-2-flash-cards/) 37 | 38 | Q8:***Stateful RNN与Stateless RNN有什么区别?两种RNN结构有什么利弊?*** 39 | 40 | - stateless RNN每次接收和处理新批次时,RNN的初始状态都会重置为零,因此不会利用已经学习的内部激活(状态),这会导致模型忘记从前几批中学到的知识; 41 | - Stateful RNN每个批次的 LSTM 单元和隐藏状态都使用前一批次的学习状态进行初始化,从而使模型学习跨批次的依赖关系 42 | - 如果训练语料是用相互独立的句子组成,可以使用stateless RNN;如果语料之间具有联系,使用stateful RNN;随着 batch size 的增加,Stateless LSTM 倾向于模拟 Stateful LSTM 43 | 44 | 引用:[https://towardsai.net/p/l/stateless-vs-stateful-lstms](https://towardsai.net/p/l/stateless-vs-stateful-lstms) 45 | 46 | Q9:***分别在什么时候选用MLP、CNN、RNN?*** 47 | 48 | - MLP 学习从输入到输出的映射关系,适用于为输入分配类别或标签的分类预测问题,也适用于回归预测问题 49 | - CNN将图像数据映射为抽象特征,CNN适合处理具有空间关系的数据,在图像任务和文档分类任务上都取得较好成绩 50 | - RNN的优势是处理序列预测问题,RNN一般用于处理单词和段落序列等时间预测问题上 51 | 52 | 引用:[https://machinelearningmastery.com/when-to-use-mlp-cnn-and-rnn-neural-networks/](https://machinelearningmastery.com/when-to-use-mlp-cnn-and-rnn-neural-networks/) 53 | 54 | Q10:***解释RNN中梯度消失的原因?*** 55 | 56 | - 在时间维度上RNN等同于一个深层的MLP网络,RNN的梯度需要沿着时间步反传,在某个时刻对参数的梯度,需要追溯这个时刻之前所有时刻的信息;时间序列越长,那么其反馈的梯度信号越不显著,最后可能完全没有起作用,这就意味着RNN对长距离语义的捕捉能力失效 57 | 58 | Q11:***讲讲LSTM的基础结构,相对RNN做了哪些改进?*** 59 | 60 | - LSTM引入了门控机制,包括遗忘门、输入门、输出门,输入门决定何时让输入进入细胞单元;遗忘门决定何时应该记住前一时刻的信息;输出门决定何时让记忆流入下一时刻;相比RNN只有一个传递状态,LSTM有两个传输状态$c_{t}$和$h_{t}$,$c_{t}$的梯度会无损地传递到$c_{t-1}$,缓解长距离梯度消失的问题 61 | - LSTM通过门控机制将短期记忆和长期记忆结合起来,一定程度上解决了梯度消失的问题。 62 | 63 | Q12:***LSTM和GRU结构上的区别有哪些?*** 64 | 65 | - 相比LSTM,GRU只有两个门(重置门和更新门),重置门决定了如何将新的输入信息与前面的记忆相结合,更新门定义了前面记忆保存到当前时间步的量 66 | - GRU不保留内部记忆$c_{t}$,GRU直接将hidden state传给下一单元,LSTM通过记忆单元将hidden state包装起来。 67 | 68 | Q13:*****还有哪些其它的解决梯度消失或梯度爆炸的方法?***** 69 | 70 | - 梯度裁剪gradient clipping,当BP时的梯度小于某个阈值或大于某个阈值时 ,直接裁剪,防止太小的梯度累乘带来的梯度消失或太大的梯度累乘带来的梯度爆炸。 71 | - 改变激活函数,例如减少使用sigmoid、tanh这类激活函数,改成使用Relu、LeakRelu等 72 | - 残差结构,类似于CEC的模块,跨层的连接结构能让梯度无损的进行后向传播。 73 | - Batch Normalization,相当于对每一层的输入做了一个规范化,强行把这个输入拉回标准正态分布*N~(0,1)。*这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数的大变化,进而梯度变大,避免产生梯度消失问题。而且梯度变化大 意味着学习收敛速度快,加快模型的训练速度。 74 | 75 | Q14:***LSTM模型中存在sigmoid和tanh函数,两者分别用于哪里?*** 76 | 77 | - sigmoid函数被用作各个门上,产生0~1之间的值,来判断是对信息进行记住还是遗忘。 78 | - tanh用在了状态和输出上,可以替换为其他激活函数 79 | 80 | Q15:***为什么LSTM具有长时记忆能力?*** 81 | 82 | - 因为遗忘门控制上一时间步的记忆细胞 $C_{t-1}$是否传递到当前时间步,如果遗忘门的输出一直近似1且输入门一直近似0,过去的记忆细胞$C_{t-1}$将一直通过时间保持到当前时间步$C_{t}$,这样可以捕捉到时间序列中时间步跨度较大的依赖关系,也可以应对RNN的梯度衰减 83 | 84 | 引用:https://www.zhihu.com/question/317594964/answer/641226608 85 | 86 | Q16:**画出LSTM的结构** 87 | 88 | ![Untitled](RNN%20ba2dd072fd1a45eab8be29543b3c4178/Untitled.png) -------------------------------------------------------------------------------- /深度学习/RNN ba2dd072fd1a45eab8be29543b3c4178/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/RNN ba2dd072fd1a45eab8be29543b3c4178/Untitled.png -------------------------------------------------------------------------------- /深度学习/RNN.md: -------------------------------------------------------------------------------- 1 | # RNN 2 | 3 | # 初级 4 | 5 | Q1:***RNN和CNN之间有什么区别?在哪些情况下分别使用彼此?*** 6 | 7 | - CNN对数据执行卷积操作,提取其中的特征;CNN最适用于需要位置不变性的情况(无论目标在输入样本中的什么位置,您都希望捕获相似的特征) 8 | - RNN是在输入样本之间保持状态的神经网络,RNN能利用以前的输入样本信息并使用这些信息来帮助当前输入样本的分类;RNN更适合处理时序数据 9 | 10 | Q2:***RNN网络在NLP领域有什么运用?*** 11 | 12 | - RNN在NLP领域主要有如下应用:序列标注,比如词性标注、命名实体识别,常用blstm-crf模型;分类任务,比如情感分析;关系判断,比如推理、阅读理解等;生成式任务,比如翻译、对话、文本摘要等通过一段文字生成另一段文字的任务 13 | 14 | Q3:***为什么在处理时间序列问题上,RNN会优于MLP?*** 15 | 16 | - MLP在处理时间序列时,不考虑输入之间的时间关系,$t-1,t,t+1$时刻的数据被同等看待,无法利用到上下文信息; 17 | - 而在 RNN 中,先前时间步状态的输出作为当前时间步状态的输入传递,RNN能更好地利用到时间序列中的历史信息。 18 | 19 | Q4:***RNN的输入有几个维度?每个维度分别代表什么?RNN的输出呢?*** 20 | 21 | - RNN的输入有三个维度,每个维度分别表示batch_size、seq_len、input_dim,batch_size表示batch大小,seq_len表示序列的长度,input_dim表示输入数据的维度 22 | - 输出层同样拥有三个维度,含义与输入基本一致,input_dim修改为output_dim 23 | 24 | Q5:***RNN和传统的全连接网络之间有什么差别?*** 25 | 26 | - MLP是最简单的DNN,它的每一层其实就是fc层(fully connected layer) 27 | - RNN相对于MLP而言,多了时间先验知识,即RNN可以学习到数据之间的时间相关性。比如一段文字,前面的字是“上”,后面的字是“学”概率更大,是“狗”的概率很小。RNN神经元的输入会有多个time step,每个time step的输入进入神经元中时会共享参数,RNN可以视作为编码了时间相关性的DNN 28 | 29 | Q6:***训练RNN时会碰到哪些困难?怎么解决?*** 30 | 31 | - RNN对于距离当前时刻比较远的隐藏层,容易出现梯度爆炸或者梯度弥散;这是由于在反向传播求解梯度过程中,各个隐藏层的参数会累乘,当特征值小于1时,不断相乘导致特征值向0衰减。特征值大于1时,则向正无穷扩增;导致无法利用梯度来对距离比较远的时刻进行调节 32 | - 解决方法是LSTM网络,它通过门控(gates)的方式,使得不断相乘的梯度的积保持在接近1的数值,从而使得长序列仍然可以训练 33 | 34 | Q7:***在机器翻译领域,为什么encoder-decoder结构的RNN取代了seq2seq RNN?*** 35 | 36 | - seq2seq RNN一次只能翻译一个词汇,而encoder-decoder RNN能处理变长的输入/输出,一次网络推理能翻译一整句话 37 | 38 | 引用:[https://quizlet.com/284587332/deep-learning-midterm-2-flash-cards/](https://quizlet.com/284587332/deep-learning-midterm-2-flash-cards/) 39 | 40 | Q8:***Stateful RNN与Stateless RNN有什么区别?两种RNN结构有什么利弊?*** 41 | 42 | - stateless RNN每次接收和处理新批次时,RNN的初始状态都会重置为零,因此不会利用已经学习的内部激活(状态),这会导致模型忘记从前几批中学到的知识; 43 | - Stateful RNN每个批次的 LSTM 单元和隐藏状态都使用前一批次的学习状态进行初始化,从而使模型学习跨批次的依赖关系 44 | - 如果训练语料是用相互独立的句子组成,可以使用stateless RNN;如果语料之间具有联系,使用stateful RNN;随着 batch size 的增加,Stateless LSTM 倾向于模拟 Stateful LSTM 45 | 46 | 引用:[https://towardsai.net/p/l/stateless-vs-stateful-lstms](https://towardsai.net/p/l/stateless-vs-stateful-lstms) 47 | 48 | Q9:***分别在什么时候选用MLP、CNN、RNN?*** 49 | 50 | - MLP 学习从输入到输出的映射关系,适用于为输入分配类别或标签的分类预测问题,也适用于回归预测问题 51 | - CNN将图像数据映射为抽象特征,CNN适合处理具有空间关系的数据,在图像任务和文档分类任务上都取得较好成绩 52 | - RNN的优势是处理序列预测问题,RNN一般用于处理单词和段落序列等时间预测问题上 53 | 54 | 引用:[https://machinelearningmastery.com/when-to-use-mlp-cnn-and-rnn-neural-networks/](https://machinelearningmastery.com/when-to-use-mlp-cnn-and-rnn-neural-networks/) 55 | 56 | Q10:***解释RNN中梯度消失的原因?*** 57 | 58 | - 在时间维度上RNN等同于一个深层的MLP网络,RNN的梯度需要沿着时间步反传,在某个时刻对参数的梯度,需要追溯这个时刻之前所有时刻的信息;时间序列越长,那么其反馈的梯度信号越不显著,最后可能完全没有起作用,这就意味着RNN对长距离语义的捕捉能力失效 59 | 60 | Q11:***讲讲LSTM的基础结构,相对RNN做了哪些改进?*** 61 | 62 | - LSTM引入了门控机制,包括遗忘门、输入门、输出门,输入门决定何时让输入进入细胞单元;遗忘门决定何时应该记住前一时刻的信息;输出门决定何时让记忆流入下一时刻;相比RNN只有一个传递状态,LSTM有两个传输状态$c_{t}$和$h_{t}$,$c_{t}$的梯度会无损地传递到$c_{t-1}$,缓解长距离梯度消失的问题 63 | - LSTM通过门控机制将短期记忆和长期记忆结合起来,一定程度上解决了梯度消失的问题。 64 | 65 | # 中级 66 | 67 | Q12:***LSTM和GRU结构上的区别有哪些?*** 68 | 69 | Q13:*****还有哪些其它的解决梯度消失或梯度爆炸的方法?***** 70 | 71 | Q14:***LSTM模型中存在sigmoid和tanh函数,两者分别用于哪里?*** 72 | 73 | Q15:***为什么LSTM具有长时记忆能力?*** 74 | 75 | Q16:**画出LSTM的结构** 76 | -------------------------------------------------------------------------------- /深度学习/SYSTEM DESIGN 35589fbe386b4869a412119e51a2287a/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/SYSTEM DESIGN 35589fbe386b4869a412119e51a2287a/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/SYSTEM DESIGN 35589fbe386b4869a412119e51a2287a/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/SYSTEM DESIGN 35589fbe386b4869a412119e51a2287a/Untitled.png -------------------------------------------------------------------------------- /深度学习/SYSTEMDESIGN.md: -------------------------------------------------------------------------------- 1 | # SYSTEM DESIGN 2 | 3 | # 初级 4 | 5 | Q1:**描述一些常用的重新平衡数据集的方法** 6 | 7 | - **重新平衡设计模式:**处理不平衡的数据集,即数据集中,其中一个标签构成了数据集的大部分,留下的其他标签的例子要少得多 8 | - **缩减采样**:减少模型训练期间使用的多数类中的示例数量。通常与集成学习结合使用以获得更好的结果。 9 | - **上采样**:我们通过复制少数类示例和生成额外的合成示例来过度代表我们的少数群体。 10 | - **加权类**:通过对类进行加权,告诉我们的模型在训练期间更加重视少数标签类,权重系数作为超参数调节 11 | 12 | 13 | Q2:**知道哪些数据表示方法?** 14 | 15 | 对于数字输入: 16 | 17 | 1. 在 `[-1, 1]` 范围内缩放输入:这有助于更快的收敛,因此,模型的训练速度更快/成本更低。有四种方法可以实现此目的: 18 | - 使用最小最大缩放时,缺点是最小值和最大值直接由训练集确定。 19 | - 剪切(与最小-最大缩放结合使用):与最小最大缩放不同,此处的最小值和最大值是合理的估计值。此技术适用于均匀分布的数据。 20 | - Z 分数归一化:通过(x-μ)/σ将数据转化为无单位的Z-Score分值 21 | - 对于偏斜的数据,我们需要在缩放之前对数据进行转换。通常使用的一些转换技术包括日志转换、桶化输入等。 22 | 2. 当输入是数字数组时,我们也可以用以下方法表示它: 23 | - 其统计数据(如平均值、中位数等) 24 | - 这是经验分布 25 | - 如果数组以某种方式排序,则数组中的固定项数 26 | 3. 将数字输入视为分类并映射到one-hot列。这在以下情况下很有用: 27 | - 当数字输入只是一个索引时,例如,一周中的几天。 28 | - 当输入和标签之间的关系不连续时, 29 | 30 | 对于分类输入: 31 | 32 | 1. 当输入线性独立时,可以使用one-hot或虚拟编码。 33 | 2. 计算数组中每个项的出现次数。 34 | 3. 使用相对频率而不是计数以避免大量数字。 35 | 4. 如果数组已排序,则由固定数量的项表示输入数组。 36 | 37 | Q3:**描述一个机器学习系统搭建的工作流程** 38 | 39 | - 可以按照下图中概述的步骤完成一个机器学习系统的搭建 40 | - 抽象和隔离各个步骤的好处是可以在步骤之间插入验证,以监控质量和状态。因此,如果存在数据漂移或模型质量下降,将更容易识别并更快地进行补救 41 | 42 | ![Untitled](SYSTEM%20DESIGN%2035589fbe386b4869a412119e51a2287a/Untitled.png) 43 | 44 | Q4:**说说你知道的模型超参数调整方法** 45 | 46 | - **随机搜索**:超参数创建了一个可能值的网格。每次迭代都会尝试从该网格中随机组合超参数,记录性能,最后返回提供最佳性能的超参数组合。 47 | - **网格搜索:**将搜索空间定义为超参数值的网格,并评估网格中每个位置的算法性能(遍历),最后返回提供最佳性能的超参数组合。 48 | - **贝叶斯优化**:假设超参数与最后我们需要优化的损失函数存在一个函数关系;通过SMBO等算法最小化函数,从而得到最优的参数组合 49 | 50 | Q5:**机器学习中使用的embedding,有什么好处?** 51 | 52 | - Embedding 是一个将离散变量转为连续向量表示的一个方式;Embedding 可以减少离散变量的空间维数,同时还可以有意义的表示该变量。 53 | 54 | ![Untitled](SYSTEM%20DESIGN%2035589fbe386b4869a412119e51a2287a/Untitled%201.png) 55 | 56 | Q6:**迁移学习的思想适合用在什么场景下?** 57 | 58 | - 迁移学习的使用场景如下:假设有两个任务系统A和B,任务A拥有海量的数据资源且已经训练好,但任务B才是我们的目标任务,这种场景便是典型的迁移学习的应用场景。 新的任务系统和旧的任务系统必须在数据、任务和模型等方面存在一定的相似性。 59 | 60 | Q7:**将训练数据切分为训练集、验证集、测试集时,如果不做随机化,可能带来什么问题?** 61 | 62 | - **如果不随机拆分,训练和测试拆分可能最终会出现偏差**。例如,如果您有 100 个样本,分为两个类别,前 80 个样本来自类别 1,其余样本来自类别 0,则 80/20 拆分会将所有类别 0 留在训练集中,所有类别 1 留在测试集中。造成类别的严重不均衡 63 | 64 | Q8:**迁移学习中,finetuning和特征提取(feature extraction)有什么区别?** 65 | 66 | - 在微调中,我们从预训练模型开始,并为我们的新任务更新模型的所有参数,本质上是重新训练整个模型;在特征提取中,我们从一个预训练模型开始,只更新我们从中得出预测的最终层权重。 67 | 68 | Q9:**在训练模型时,早停策略可能会有什么问题?** 69 | 70 | - 提前停止的一个问题是模型可能没有利用到所有可用的训练数据,当数据集偏小时,这种现象会更为明显 71 | 72 | Q10:**如何对一个即将上线的模型进行离线和在线测试?** 73 | 74 | - **离线评估:**衡量模型在保留样本上的表现。在数据集收集过程中,数据被分为训练、测试和验证子集。还可以进行 K 折交叉验证,以找出不同数据子集下的性能。选择对所选 KPI 表现良好的模型进行实施和部署。 75 | - **在线评价:**将训练好的模型部署到真实场景(离线评估后)的第一步是进行 A/B 测试。经过训练的模型不会很快地面对大量真实世界的数据。相反,该模型被部署在一小部分场景中。例如,假设设计的模型是为了匹配司机和乘客。在 A/B 测试中,该模型将只部署在较小的地理区域而不是全部场景。然后将该模型的测试版与现有模型在更长的时间内进行比较,如果它导致与业务相关的 KPI 性能的提高(例如 DAU/MAU,更好的用户保留率,并最终提高优步收入),然后将在更大范围内实施。 76 | 77 | Q11:**一个模型发生梯度消失时,有什么解决方案?** 78 | 79 | 1.  **预训练加微调** 80 | 2. **使用不同的激活函数,将sigmoid、tanh替换为relu** 81 | 3. **使用batchnorm** 82 | 4. **使用残差结构** 83 | 5. 检查是否使用了RNN,**使用LSTM网络** 84 | 85 | # 中级 86 | 87 | Q12:**解释AUC准则** 88 | 89 | Q13:**如何处理数据不均衡的机器学习问题?** 90 | 91 | Q14:**深度学习模型训练的加速方案** 92 | 93 | Q15:****多机多卡训练时,误差梯度如何在不同设备之间通信**** 94 | 95 | Q16:****BN如何在不同设备之间同步**** 96 | 97 | Q17:****DataParallel 和 DistributedDataParallel的区别**** 98 | 99 | Q18:**描述多卡训练流程(DataParallel)** 100 | 101 | Q19:**描述多机多卡的训练流程(DistributedDataParallel)** 102 | -------------------------------------------------------------------------------- /深度学习/Transformer.md: -------------------------------------------------------------------------------- 1 | # Transformer 2 | 3 | # 初级: 4 | 5 | Q1:***Transformer为何使用多头注意力机制?*** 6 | 7 | - 多头保证了transformer可以注意到不同子空间的信息,捕捉到更加丰富的特征信息。可以类比CNN中同时使用多个通道的作用,直观上讲,多头的注意力有助于网络捕捉到更丰富的特征/信息。 8 | 9 | Q2:***Transformer的self attention为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘?*** 10 | 11 | - 使用不同的权重矩阵生成QKV可以保证word embedding在不同空间进行投影,增强了表达能力,提高了泛化能力 12 | 13 | Q3:**Self-attention计算时为什么在进行softmax之前需要除以dk的平方根** 14 | 15 | - Self-attention计算时为什么在进行softmax之前需要除以dk的平方根(对梯度进行scale,缓解梯度消失的问题,dk的平方根为根据经验选择的参数) 16 | 17 | Q4:***transformer的并行化体现在哪里?*** 18 | 19 | - 在encoder和decoder的训练阶段可以并行训练(通过teacher-forcing和sequence mask),但在transformer推理时无法并行,需要单步自回归推理,类似于RNN) 20 | 21 | Q5:***transformer在音视频领域落地时需要注意的问题*** 22 | 23 | - 由于attention计算需要全局信息,会造成系统的高延时以及巨大的存储开销,需要设计chunk-wise attention,做流式解码 24 | 25 | Q6:***transformer中的mask机制*** 26 | 27 | - transformer中包含padding mask与sequence mask,前者的目的是让padding(不够长补0)的部分不参与attention操作,后者的目的是保证decoder生成当前词语的概率分布时,只看到过去的信息,不看到未来的信息(保证训练与测试时的一致性) 28 | 29 | Q7:***Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘?*** 30 | 31 | - 使用Q/K/V不相同可以保证在不同空间进行投影,增强了表达能力,提高了泛化能力。 32 | - 同时,由softmax函数的性质决定,实质做的是一个soft版本的arg max操作,得到的向量接近一个one-hot向量(接近程度根据这组数的数量级有所不同)。如果令Q=K,那么得到的模型大概率会得到一个类似单位矩阵的attention矩阵,这样self-attention就退化成一个point-wise线性映射。这样至少是违反了设计的初衷。 33 | 34 | Q8:***Transformer计算attention的时候为何选择点乘而不是加法?两者计算复杂度和效果上有什么区别?*** 35 | 36 | - K和Q的点乘是为了得到一个attention score 矩阵,用来对V进行提纯。K和Q使用了不同的W_k, W_Q来计算,可以理解为是在不同空间上的投影。正因为 有了这种不同空间的投影,增加了表达能力,这样计算得到的attention score矩阵的泛化能力更高。 37 | - 为了计算更快。矩阵加法在加法这一块的计算量确实简单,但是作为一个整体计算attention的时候相当于一个隐层,整体计算量和点积相似。在效果上来说,从实验分析,两者的效果和dk相关,dk越大,加法的效果越显著。 38 | 39 | # 中级: 40 | 41 | Q9:***为什么在进行多头注意力的时候需要对每个head进行降维?*** 42 | 43 | Q10:***简单介绍一下Transformer的位置编码?有什么意义和优缺点?*** 44 | 45 | Q11:***为什么transformer使用LayerNorm而不是BatchNorm?LayerNorm 在Transformer的位置是哪里?*** 46 | 47 | Q12:***简答讲一下BatchNorm技术,以及它的优缺点*** 48 | 49 | Q14:***Transformer中,Encoder端和Decoder端是如何进行交互的?*** 50 | 51 | Q15:**Transformer中,*Decoder阶段的多头自注意力和encoder的多头自注意力有什么区别?*** 52 | 53 | Q16:***Bert的mask为何不学习transformer在attention处进行屏蔽score(sequence mask)的技巧?*** 54 | 55 | Q17:***简单讲述一下wordpiece model 和BPE(byte pair encoding)方法*** 56 | 57 | Q18:***解释self- attention,它与其他attention的异同?*** 58 | 59 | Q19:****Transformer 相比于 RNN/LSTM,有什么优势?为什么?**** 60 | 61 | # 高级: 62 | 63 | Q20:***除了绝对位置编码技术之外,还有哪些位置编码技术?*** 64 | 65 | Q21:*****在 BERT 中,token 分 哪3 种情况 mask,分别的作用是什么?***** 66 | 67 | Q22:*****elmo、GPT、bert三者之间有什么区别?***** 68 | 69 | Q23:***简述BERT模型的优缺点*** 70 | 71 | Q24:***简述Label Smoothing及其作用*** 72 | 73 | Q25:****BERT训练时使用的学习率 warm-up 策略是怎样的?为什么要这么做?**** 74 | -------------------------------------------------------------------------------- /深度学习/Transformer相关算法面试题 b43386ee1a15456d803fa851d8666ecf.md: -------------------------------------------------------------------------------- 1 | # Transformer相关算法面试题 2 | 3 | Q1:***Transformer为何使用多头注意力机制?*** 4 | 5 | - 多头保证了transformer可以注意到不同子空间的信息,捕捉到更加丰富的特征信息。可以类比CNN中同时使用多个通道的作用,直观上讲,多头的注意力有助于网络捕捉到更丰富的特征/信息。 6 | 7 | Q2:***Transformer的self attention为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘?*** 8 | 9 | - 使用不同的权重矩阵生成QKV可以保证word embedding在不同空间进行投影,增强了表达能力,提高了泛化能力 10 | 11 | Q3:**Self-attention计算时为什么在进行softmax之前需要除以dk的平方根** 12 | 13 | - Self-attention计算时为什么在进行softmax之前需要除以dk的平方根(对梯度进行scale,缓解梯度消失的问题,dk的平方根为根据经验选择的参数) 14 | 15 | Q4:***transformer的并行化体现在哪里?*** 16 | 17 | - 在encoder和decoder的训练阶段可以并行训练(通过teacher-forcing和sequence mask),但在transformer推理时无法并行,需要单步自回归推理,类似于RNN) 18 | 19 | Q5:***transformer在音视频领域落地时需要注意的问题*** 20 | 21 | - 由于attention计算需要全局信息,会造成系统的高延时以及巨大的存储开销,需要设计chunk-wise attention,做流式解码 22 | 23 | Q6:***transformer中的mask机制*** 24 | 25 | - transformer中包含padding mask与sequence mask,前者的目的是让padding(不够长补0)的部分不参与attention操作,后者的目的是保证decoder生成当前词语的概率分布时,只看到过去的信息,不看到未来的信息(保证训练与测试时的一致性) 26 | 27 | Q7:***Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘?*** 28 | 29 | - 使用Q/K/V不相同可以保证在不同空间进行投影,增强了表达能力,提高了泛化能力。 30 | - 同时,由softmax函数的性质决定,实质做的是一个soft版本的arg max操作,得到的向量接近一个one-hot向量(接近程度根据这组数的数量级有所不同)。如果令Q=K,那么得到的模型大概率会得到一个类似单位矩阵的attention矩阵,这样self-attention就退化成一个point-wise线性映射。这样至少是违反了设计的初衷。 31 | 32 | Q8:***Transformer计算attention的时候为何选择点乘而不是加法?两者计算复杂度和效果上有什么区别?*** 33 | 34 | - K和Q的点乘是为了得到一个attention score 矩阵,用来对V进行提纯。K和Q使用了不同的W_k, W_Q来计算,可以理解为是在不同空间上的投影。正因为 有了这种不同空间的投影,增加了表达能力,这样计算得到的attention score矩阵的泛化能力更高。 35 | - 为了计算更快。矩阵加法在加法这一块的计算量确实简单,但是作为一个整体计算attention的时候相当于一个隐层,整体计算量和点积相似。在效果上来说,从实验分析,两者的效果和dk相关,dk越大,加法的效果越显著。 36 | 37 | Q9:***为什么在进行多头注意力的时候需要对每个head进行降维?*** 38 | 39 | - 将原有的高维空间转化为多个低维空间并再最后进行拼接,形成同样维度的输出,借此丰富特性信息 40 | 41 | Q10:***简单介绍一下Transformer的位置编码?有什么意义和优缺点?*** 42 | 43 | - 因为self-attention是位置无关的,无论句子的顺序是什么样的,通过self-attention计算的token的hidden embedding都是一样的,这显然不符合人类的思维。因此要有一个办法能够在模型中表达出一个token的位置信息,transformer使用了固定的positional encoding来表示token在句子中的绝对位置信息。 44 | 45 | Q11:***为什么transformer使用LayerNorm而不是BatchNorm?LayerNorm 在Transformer的位置是哪里?*** 46 | 47 | - Layernorm在特征维度上做归一化,Batchnorm在样本维度做归一化。使用layernorm的原因是transformer的处理文本序列通常是变长序列,batch内数据分布有很大差异,对样本维度做归一化意义不大,相比较之下,对每个序列自身特征做归一化的layernorm更稳定 48 | - Layernorm在多头注意力层和激活函数层之间 49 | 50 | 引用:[https://zhuanlan.zhihu.com/p/363466672](https://zhuanlan.zhihu.com/p/363466672) 51 | 52 | Q12:***简答讲一下BatchNorm技术,以及它的优缺点*** 53 | 54 | - BN批归一化是对每一批的数据在进入激活函数前进行归一化,可以提高收敛速度,防止过拟合,防止梯度消失,增加网络对数据的敏感度 55 | 56 | Q14:***Transformer中,Encoder端和Decoder端是如何进行交互的?*** 57 | 58 | - 通过encoder-decoder端的attention,Encoder的输出作为K,V,Q来自decoder 59 | 60 | Q15:**Transformer中,*Decoder阶段的多头自注意力和encoder的多头自注意力有什么区别?*** 61 | 62 | - Decoder有两层mha,encoder有一层mha,Decoder的第二层mha是为了转化输入与输出句长,Decoder的q、k和v的倒数第二个维度可以不一样,但是encoder的qkv维度一样。 63 | - Decoder的attention加入了sequence mask,让模型无法看到将来的信息,保证整体系统的因果性 64 | 65 | Q16:***Bert的mask为何不学习transformer在attention处进行屏蔽score(sequence mask)的技巧?*** 66 | 67 | - BERT和transformer的目标不一致,bert是语言的预训练模型,需要充分考虑上下文的关系,而transformer需要保证其因果性,主要考虑句子中第i个元素与前i-1个元素的关系。 68 | 69 | Q17:***简单讲述一下wordpiece model 和BPE(byte pair encoding)方法*** 70 | 71 | - 在NLP领域传统的分词方法是使用空格分词得到固定的词汇,带来的问题是遇到罕见的词汇无法处理即OOV(Out of Vocabulary)问题;同时传统的分词方法也不利于模型学习词缀之间的关系或词的不同时态之间的关系。比如:walked, walking,walker之间的关系无法泛化到talked,talking,talker,word piece和BPE都属于子词方法,解决上述问题 72 | - Byte Pair Encoding字节对编码,一种数据压缩方法,将词拆分为子词,具体为将字符串里最常见的一对连续数据字节被替换为该数据中未出现的字节,把词的本身的意思和时态分开 73 | - WordPiece算法可以看作是BPE的变种。不同点在于,WordPiece基于概率生成新的subword而不是下一最高频字节对 74 | 75 | 引用:[https://medium.com/towards-data-science/byte-pair-encoding-subword-based-tokenization-algorithm-77828a70bee0](https://medium.com/towards-data-science/byte-pair-encoding-subword-based-tokenization-algorithm-77828a70bee0) 76 | 77 | Q18:***解释self- attention,它与其他attention的异同?*** 78 | 79 | - self-attention 可以看成一般 attention 的一种特殊情况。在 self-attention 中,序列中的每个单词(token)和该序列中其余单词(token)进行 attention 计算,具体到计算上即QKV矩阵均源于同源输入。self-attention 的特点在于**「无视词(token)之间的距离直接计算依赖关系,从而能够学习到序列的内部结构」** 80 | 81 | Q19:****Transformer 相比于 RNN/LSTM,有什么优势?为什么?**** 82 | 83 | - RNN 系列的模型,并行计算能力很差;RNN当前时刻的计算依赖于上一个时刻的隐层计算结果,导致RNN的训练无法并行;而Transformer在训练阶段,通过sequence mask掩蔽和teacher-forcing,可以做到并行训练 84 | - 通过一些主流的实验证明,Transformer 的特征抽取能力比 RNN 系列的模型要好 85 | 86 | Q20:***除了绝对位置编码技术之外,还有哪些位置编码技术?*** 87 | 88 | - **相对位置编码**(RPE)技术,具体又分三种:1.在计算attention score和weighted value时各加入一个可训练的表示相对位置的参数。2.在生成多头注意力时,把对key来说将绝对位置转换为相对query的位置3.复数域函数,已知一个词在某个位置的词向量表示,可以计算出它在任何位置的词向量表示。前两个方法是词向量+位置编码,属于亡羊补牢,复数域是生成词向量的时候即生成对应的位置信息。 89 | - ****学习位置编码,****学习位置编码跟生成词向量的方法相似,对应每一个位置学得一个独立的向量 90 | 91 | Q21:*****在 BERT 中,token 分 哪3 种情况 mask,分别的作用是什么?***** 92 | 93 | - 在 BERT 的 Masked LM 训练任务中, 会用 [MASK] token 去替换语料中 15% 的词,然后在最后一层预测。但是下游任务中不会出现 [MASK] token,导致预训练和 fine-tune 出现了不一致,为了减弱不一致性给模型带来的影响,在这被替换的 15% 语料中:80% 的 tokens 会被替换为 [MASK] token,10% 的 tokens 会称替换为随机的 token,10% 的 tokens 会保持不变但需要被预测 94 | - 第一种替换,是 Masked LM 中的主要部分,可以在不泄露 label 的情况下融合真双向语义信息; 95 | - 第二种随机替换,因为需要在最后一层随机替换的这个 token 位去预测它真实的词,而模型并不知道这个 token 位是被随机替换的,就迫使模型尽量在每一个词上都学习到一个 全局语境下的表征,因而也能够让 BERT 获得更好的语境相关的词向量(这正是解决一词多义的最重要特性); 96 | - 第三种的保持不变,也就是真的有 10% 的情况下是 泄密的(占所有词的比例为15% * 10% = 1.5%),这样能够给模型一定的 bias ,相当于是额外的奖励,将模型对于词的表征能够拉向词的 真实表征 97 | 98 | 引用:https://www.jianshu.com/p/55b4de3de410 99 | 100 | Q22:*****elmo、GPT、bert三者之间有什么区别?***** 101 | 102 | - 特征提取器:elmo采用LSTM进行提取,GPT和bert则采用Transformer进行提取。很多任务表明Transformer特征提取能力强于LSTM,elmo采用1层静态向量+2层LSTM,多层提取能力有限,而GPT和bert中的Transformer可采用多层,并行计算能力强。 103 | - 单/双向语言模型:GPT采用单向语言模型,elmo和bert采用双向语言模型。但是elmo实际上是两个单向语言模型(方向相反)的拼接,这种融合特征的能力比bert一体化融合特征方式弱。 104 | - GPT和bert都采用Transformer,Transformer是encoder-decoder结构,GPT的单向语言模型采用decoder部分,decoder的部分见到的都是不完整的句子;bert的双向语言模型则采用encoder部分,采用了完整句子 105 | 106 | Q23:***简述BERT模型的优缺点*** 107 | 108 | - 优点:并行,解决长时依赖,双向特征表示,特征提取能力强,有效捕获上下文的全局信息,缓解梯度消失的问题等,BERT擅长解决的NLU任务。 109 | - 缺点:生成任务表现不佳:预训练过程和生成过程的不一致,导致在生成任务上效果不佳; 110 | 采取独立性假设:没有考虑预测[MASK]之间的相关性,是对语言模型联合概率的有偏估计(不是密度估计);由于mask引入的输入噪声,造成预训练-精调两阶段之间的差异;无法处理文档级别的NLP任务,只适合于句子和段落级别的任务; 111 | 112 | Q24:***简述Label Smoothing及其作用*** 113 | 114 | - 由于训练集中含有少量错误数据,label smoothing是将正样本的标签修为0.9,负样本的标签修改为0.1(标签平滑的程度可以根据情况修改),这是一种**soft**的学习,也就是告诉模型,**不要这么自信** 115 | - ***Label Smoothing***可以提高神经网络的鲁棒性和泛化能力 116 | 117 | Q25:****BERT训练时使用的学习率 warm-up 策略是怎样的?为什么要这么做?**** 118 | 119 | - warm-up相当于对学习率自适应的一个过程。因为模型一开始参数迭代的方向比较重要,所以在开始训练的时候,避免部分噪声样本把参数更新方向带偏,所以开始训练的时候会设置一个warm-up步数,当前步的学习率和当前步数成正比,即学习率为(current_step/warm_up_step)*learning_rate。 -------------------------------------------------------------------------------- /深度学习/Unsupervised learning 15a608ae430a4b29bbb4d7ee0dff1e7e/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Unsupervised learning 15a608ae430a4b29bbb4d7ee0dff1e7e/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/Unsupervised learning 15a608ae430a4b29bbb4d7ee0dff1e7e/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/Unsupervised learning 15a608ae430a4b29bbb4d7ee0dff1e7e/Untitled.png -------------------------------------------------------------------------------- /深度学习/Unsupervisedlearning.md: -------------------------------------------------------------------------------- 1 | # Unsupervised learning 2 | 3 | # 初级: 4 | 5 | Q1:**无监督学习可以帮助解决哪些问题?** 6 | 7 | - 数据稀缺任务:对于监督学习,需要大量的标签数据才能使模型表现良好。无监督学习可以自动标记未标记的示例。这将通过聚类所有数据点然后将标记的标签应用于未标记的标签来工作。 8 | - 过度拟合:机器学习算法有时会通过从数据中的噪声中提取过多信息来过度拟合训练数据。发生这种情况时,算法正在记忆训练数据,而不是学习如何概括训练数据的知识。可以引入无监督学习作为正则化器。正则化是一个有助于降低机器学习算法复杂性的过程,有助于它捕获数据中的信号,而无需对噪声进行过多调整。 9 | - 异常值:数据的质量非常重要。如果机器学习算法对异常值(极少数情况)进行训练,那么它们的泛化误差将低于忽略它们的情况。无监督学习可以使用降维来执行异常值检测,并专门为异常值创建解决方案,并单独为正常数据创建解决方案。 10 | - 特征工程:特征工程是数据科学家执行的一项重要任务,但特征工程是非常劳动密集型的,需要人类创造性地设计特征。来自无监督学习的表示学习可用于自动学习正确类型的特征以帮助完成手头的任务。 11 | 12 | Q2:**怎样应用无监督学习解决维度灾难问题** 13 | 14 | - 使用无监督学习的降维方法(如PCA、SVD),可以在原始特征集中发现最显着的特征。然后将这个特征集的维度降低到一个可接受的范围,同时在这个过程中丢失很少的信息。这将有助于算法找到学习数据集的最佳模型。 15 | 16 | Q3:**PCA如何应用于降维?** 17 | 18 | - PCA主成分分析的想法是,我们可以选择“最重要”的数据分布方向,决定数据中最重要的几个特征的维度;主成分的方向是,使投影数据的方差最大化的方向,这种方式可以尽可能多地保留数据中的信息 19 | 20 | Q4:**无监督学习和自监督学习的区别** 21 | 22 | - 无监督学习:无监督学习不依赖任何标签值,通过对数据内在特征的挖掘,找到样本间的关系,比如聚类相关的任务。 23 | - 自监督学习:和无监督学习不同,自监督学习主要是利用辅助任务 (pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征。 24 | 25 | Q5:**如何用神经网络实现无监督学习?** 26 | 27 | - 神经网络用无监督学习以更好地表示输入数据;比如自动编码器autoencoder; 28 | - 神经网络可以学习从文档到embedding的映射,使得embedding能够表达文档的信息;这可以使用自动编码器来实现,aotoencoder训练的目标是重建原始向量,并将重建误差作为成本函数,将bottleneck特征作为提取的数据表示。 29 | 30 | ![Untitled](Unsupervised%20learning%2015a608ae430a4b29bbb4d7ee0dff1e7e/Untitled.png) 31 | 32 | Q6:**解释去噪自动编码机(DAE)的算法** 33 | 34 | - 在Denoising Autoencoder中,数据被随机地加入噪声。然后,训练该模型以预测原始的、未损坏的数据点作为其输出。与AE相比,DAE学习数据的重建过程,比普通AE更健壮,能学到更多不同的特征模式 35 | 36 | ![Untitled](Unsupervised%20learning%2015a608ae430a4b29bbb4d7ee0dff1e7e/Untitled%201.png) 37 | 38 | Q7:**为什么K-means算法会比GMM算法有更高的模型偏差?** 39 | 40 | - K-means 比 GMM 有更高的偏差,因为它其实是 GMM 的一个特例。K-means 假设聚类面是球形的(K-means假设每个维度的权重同等重要),而GMM的聚类面是椭球形的;并且聚类问题是一个硬聚类问题(假设每个数据点只能属于一个标签)。因此,从理论上讲,K-means 的性能应该与 GMM 相同(在特定的条件下)或更差 41 | 42 | 引用:[https://ai.stackexchange.com/questions](https://sakigami-yang.me/2017/10/23/kmeans-is-a-gmm/) 43 | 44 | [https://sakigami-yang.me/2017/10/23/kmeans-is-a-gmm/](https://sakigami-yang.me/2017/10/23/kmeans-is-a-gmm/) 45 | 46 | Q8**:解释CAE;CAE在什么场景下使用?** 47 | 48 | - CAE,是卷积自动编码器;在这种情况下,编码器是一个常规的 CNN 网络,它通过增加深度来减少输入的空间维度。而解码器必须进行反向操作,保证输出维度与输入维度一致,因此解码器一般采用反卷积层; 49 | - CAE一般在图像任务中使用;图像任务中,稠密连接的AE消耗计算量过大,并且不足以学习图像特征 50 | 51 | Q9:**聚类和降维算法有什么区别和联系?** 52 | 53 | - 聚类针对的是数据点,而降维针对的是数据的特征; 54 | - 聚类和降维都可以作为分类等问题的预处理步骤;都是无监督学习; 55 | 56 | Q10:**PCA如何用于异常检测?** 57 | 58 | - 将数据映射到低维特征空间,然后在特征空间不同维度上查看每个数据点跟其它数据的偏差 59 | - 另外一种是将数据映射到低维特征空间,然后由低维特征空间重新映射回原空间,尝试用低维特征重构原始数据,看重构误差的大小 60 | 61 | # 中级: 62 | 63 | Q11:**解释LDA算法** 64 | 65 | Q12:**LDA主题模型如何求解参数** 66 | 67 | Q13:**PCA和LDA的关系和不同?** 68 | -------------------------------------------------------------------------------- /深度学习/a8bfc3ca-d176-4c06-ab39-4fdb6dab0b44_Export-9a11e86c-7762-4177-893a-3761699bf90b/CV interview Q&A 3d839484cf574c1899fd9f404a3b698d.md: -------------------------------------------------------------------------------- 1 | # CV interview Q&A 2 | 3 | Q1:***CV中,语义分割和实例分割有什么区别?*** 4 | 5 | - **语义分割**是一种检测每个像素所属的对象类别的技术。模型必须知道所有对象类别(标签)。 6 | - **实例分割**类似于语义分割,但更深入一些。它为每个像素标识它所属的对象实例。主要区别在于与语义分割相比,区分具有相同标签的两个对象,如下图: 7 | 8 | ![https://i.stack.imgur.com/MEB9F.png](https://i.stack.imgur.com/MEB9F.png) 9 | 10 | - 在应用**语义分割**的第二张图片中,类别(椅子)是输出之一,所有椅子的颜色都相同。 11 | - 在第三张图片中,**实例分割**更进一步,除了在第一步中识别类别(椅子)之外,还将实例(椅子)彼此分开。 12 | 13 | Q2:***如何评估目标检测模型的好坏?*** 14 | 15 | - 可以使用**Intersection over Union (IoU)**评估指标,IoU用于衡量对象检测器在特定数据集上的准确性。任何提供**预测边界框**作为输出的算法都可以使用**IoU**进行评估。R-CNN、Faster R-CNN、YOLO是此类模型的例子 16 | - 例如,在下图中,预测边界框用红色绘制,而真实边界框用绿色绘制。模型性能是这些边界框之间的IOU。 17 | 18 | ![Untitled](CV%20interview%20Q&A%203d839484cf574c1899fd9f404a3b698d/Untitled.png) 19 | 20 | Q3:***讲述标准的计算机视觉处理系统的主要处理步骤*** 21 | 22 | - 标准的CV处理流程为: 23 | 24 | 1.输入图像:计算机接收来自成像设备(如相机)的视觉输入。这通常被捕获为形成视频的图像或图像序列。 25 | 2.预处理:每个图像都经过一些预处理步骤,其目的是标准化每个图像。常见的预处理步骤包括调整图像大小、模糊处理、旋转、更改其形状或将图像从一种颜色转换为另一种颜色。只有将每张图片标准化,你才能对它们进行比较,并以同样的方式进一步分析它们。 26 | 3.特征提取。特征可以帮助我们定义某些对象,它们通常是关于对象形状或颜色的信息。例如,一些区分摩托车车轮、前大灯、挡泥板等形状的特征。这个过程的输出是一个特征向量。 27 | 4.最后,这些特征被输入到一个ML 模型中,在这个例子中是一个分类模型。 28 | 29 | 30 | ![Untitled](CV%20interview%20Q&A%203d839484cf574c1899fd9f404a3b698d/Untitled%201.png) 31 | 32 | Q4:***目标检测领域,如何判断一个特征是好特征?*** 33 | 34 | - 一个好的特征将帮助我们以各种可能出现的方式识别一个对象。这些特征包括边缘、斑点和区域。一个好的特征有如下性质: 35 | 36 | **可重复检测**:当给定同一场景的两张图像时,检测器在两张图像中发现的大多数特征都是相同的。这些特征对观察条件和噪声的变化具有鲁棒性,换句话说,该特征在不同的尺度、光照条件和视角下是一致的。 37 | 38 | **独特性**:特征中心周围的邻域变化足以允许该特征与其他特征进行可靠的比较。 39 | 40 | **Localizable**:该特征具有唯一的位置信息。观看条件的变化不会影响其位置。 41 | 42 | 43 | Q5:**CNN在图像处理上表现好的原因:** 44 | 45 | - CNN具有**局部相关性**,图像数据是存在局部相关性的;具体来说,图像是由一个个像素点组成,每个像素点与其周围的像素点是有关联的,如果把像素点打乱,图片会完全变掉; 46 | - CNN具有**空间不变性**,CNN浅层网络提取低层次的特征,比如边缘,曲线等,随着网络深度加深,低层次的特征经过组合组成高层次的特征,并且能够保持特征的**空间不变性** 47 | 48 | 引用:[https://www.zhihu.com/question/41233373/answer/91113816](https://www.zhihu.com/question/41233373/answer/91113816) 49 | 50 | Q6:**BatchNorm层的具体计算及作用** 51 | 52 | - BatchNorm层的计算公式: 53 | 54 | $$ 55 | y=\gamma\cdot \frac{x-\mu }{\sqrt{\sigma ^2+\varepsilon }}+\beta 56 | $$ 57 | 58 | - BatchNorm的作用是使得每层的输入/输出分布更加稳定,避免参数更新和网络层次变深大幅度影响数据分布。从而使模型训练更稳定 59 | - 参数 $\beta$,$\gamma$的作用:保留网络各层在训练过程中的学习成果、保证激活单元的非线性表达能力、使批归一化模块具有复原初始输出分布能力。 60 | 61 | Q7:**目标检测里如何有效解决常见的前景少背景多的问题** 62 | 63 | - 采用Focal Loss或OHEM进行负样本挖掘,加大Hard Example损失权重 64 | - 训练时只利用Ground Truth周边的Prior Boxes进行训练,忽略其他背景区域,只考虑困难背景区域 65 | 66 | Q8:**ROIPool和ROIAlign的区别,以及ROIAlign的简单实现** 67 | 68 | - ROIPool存在两次量化误差,首先是将候选框边界量化为整数点坐标值,其次是将量化后的边界区域平均分割成 k x k 个单元,对每一个单元的边界进行量化。ROIAlign通过双线性插值避免了量化操作,保存了原始ROI的空间分布,有效避免了误差的产生;对于检测图片中大目标物体时,两种方案的差别不大,而如果是图片中有较多小目标物体需要检测,则优先选择ROIAlign,更精准一些 69 | 70 | 引用:[https://github.com/donnyyou/cv-interview](https://github.com/donnyyou/cv-interview) 71 | 72 | Q9:***Batch Norm在训练和推理的时候有什么区别?*** 73 | 74 | - 在训练时,我们可以计算出batch的均值和方差,迭代训练过程中,均值和方差一直在发生变化。但是在推理时,均值和方差是固定的,对于均值来说直接计算所有batch u值的平均值,对于标准偏差采用每个batch σB的无偏估计。 75 | 76 | Q10:***为什么Relu激活函数逐渐取代了sigmoid函数?它的优势在哪里?*** 77 | 78 | - ReLU函数的形式非常简洁,`ReLU = max(0, x)`,是由两段线性函数(大于0部分是线性的,小于0部分也是线性的,但是组合起来后却是非线性的)组成的非线性函数,函数形式看似简单,但ReLU的组合却可以逼近任何函数。 79 | - ReLU解决了sigmoid函数导致的**梯度消失**问题的,对比这两个函数的图形可以看出:ReLU有单侧抑制,即Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。另外这也更符合生物神经元的特征。 80 | - ReLU的运算速度快 81 | 82 | Q11:***ReLU函数在0处不可导,实际应用时如何解决这个问题?*** 83 | 84 | - 实际应用时,人为提供一个伪梯度,例如定义Relu在0处的导数为0,其实tensorflow在实现ReLU的时候也是定义ReLU在0处的导数为0的 85 | 86 | 引用:[https://blog.csdn.net/ningyanggege/article/details/82493023](https://blog.csdn.net/ningyanggege/article/details/82493023) 87 | 88 | Q12:***图像处理中加入Pooling层的目的;以及Pooling层是如何反向传播的?*** 89 | 90 | - Pooling层的作用:**增加非线性;保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力;invariance(不变性),这种不变性包括translation,rotation,scale,具体来讲pooling层允许图像进行微小的变化** 91 | - average pooling在前向传播中,就是把一个patch中的值取平均传递给下一层的一个像素。因此,**在反向传播中,就是把某个像素的值平均分成 n 份分配给上一层** 92 | - max pooling在前向传播中,把一个patch中最大的值传递给下一层,其他值会被舍弃掉。因此,**在反向传播中,就是将当前梯度直接传递给前一层的某个像素,而让同一个patch中的其他像素值为0**。 93 | 94 | Q13:***列举几种常见的深度学习优化器,以及各自的优缺点*** 95 | 96 | - SGD,只考虑一阶梯度,可能会让参数达到局部最优 97 | - Momentum,在SGD的基础上改进,在每一步中,除了常规渐变之外,它还添加了上一步的移动;添加动量更新的操作使得Momentum算法有机会逃离局部最小值,同时训练更快。更新公式为: 98 | 99 | $$ 100 | \begin{equation} 101 | \begin{split}&delta = -lr * gradient + previous\_delta * decay\_rate 102 | \\&theta += delta 103 | \end{split} 104 | \end{equation} 105 | $$ 106 | 107 | - Adagrad,通过记录每次迭代过程中的前进方向和距离,对**不同的参数使用不同的自适应学习率的**。具有损失较大偏导的参数相应地有一个快速下降的学习率,而具有小偏导的参数在学习率上有相对较小的下降。 108 | - RMSProp算法;AdaGrad算法存在训练慢的问题,因为梯度平方和只会持续增长,使得网络更新缓慢;RMSProp通过在Adagrad算法中添加衰减因子,解决Adagrad更新慢的问题; 109 | - Adam算法,是Momentum和RMSPROP算法的结合,从Momentum中获得速度,并从 RMSProp 中获得适应不同方向梯度的能力。两者的结合使它变得强大。 110 | 111 | 引用:[https://medium.com/towards-data-science/a-visual-explanation-of-gradient-descent-methods-momentum-adagrad-rmsprop-adam-f898b102325c](https://medium.com/towards-data-science/a-visual-explanation-of-gradient-descent-methods-momentum-adagrad-rmsprop-adam-f898b102325c) 112 | 113 | Q14:***卷积层的FLOPs和参数量*** 114 | 115 | - ****FLOPs:floating point operations,浮点计算量,可以用来衡量算法/模型的复杂度**** 116 | - 考虑bias情况下,卷积层的FLOPs:$(2C_{in}*k^2)*C_{out}HW$,其中$C_{in}$,$C_{out}$为输入通道输出通道,k为卷积核大小,H,W为输入图像的长宽 117 | - 卷积层的参数量:$(k^2*C_{int}+1)C_{out}$ 118 | 119 | Q15:***使用F1-Score评价模型性能好坏有哪些好处?*** 120 | 121 | - F1 score 综合考虑了精确率和召回率,其结果更偏向于 Precision 和 Recall 中较小的那个,即 Precision 和 Recall 中较小的那个对 F1 score 的结果取决定性作用;**很多应用场景中会选择使用 F1 score 调和平均值而不是算术平均值,因为我们希望这个结果可以更好地反映模型的性能好坏,而不是直接平均模糊化了 Precision 和 Recall 各自对模型的影响** 122 | 123 | Q16:***ROI Pooling 和 ROI Align 的区别是什么*** 124 | 125 | - 在区域建议网络 RPN 得到候选框 ROI 之后,需要提取该 ROI 中的固定数目的特征(例如Faster R-CNN中的 7*7 )输入到后面的分类网络以及边界回归网络的全连接层中。Faster R-CNN中使用的方法是 ROI Pooling,而对于像素位置精细度要求更高的 Mask R-CNN 对 ROI Pooling 进行改进,变成 ROI Align。 126 | - **ROI Pooling和ROIAlign最大的区别是:前者使用了两次量化操作,而后者并没有采用量化操作,使用了双线性插值算法** 127 | 128 | Q17:***特征融合时,concat和add操作的区别是什么?*** 129 | 130 | - add 方式有以下特点:做的是对应通道对应位置的值的相加,通道数不变;描述图像的特征个数不变,但是每个特征下的信息却增加了。 131 | - concat方式做的是通道的合并,通道数变多了;描述图像的特征个数变多,但是每个特征下的信息却不变。 132 | 133 | Q18:***阐述深度可分离卷积*** 134 | 135 | - 深度可分离卷积将常规的卷积分成了两步执行,可以大大减小模型的**计算量**和**参数量** 136 | - 深度可分离卷积的过程分为两部分:**深度卷积**(depthwise convolution) 和 **逐点卷积** 137 | (pointwise convolution); 138 | - 深度卷积意在保持输入 feature map 的通道数,对 feature map 中的每个通道使用一个规格为$K$的卷积核进行卷积,输入 feature map 有多少个通道就有多少个这样的卷积核,深度卷积结束后得到的输出的通道数与输入的相等,不同通道的卷积结果不相加 139 | - 逐点卷积:在上一步的基础上,运用 1x1 卷积进行逐点卷积,这一步进行通道的变换。 140 | 141 | Q19:***计算深度可分离卷积的FLOPs*** 142 | 143 | - 深度可分离卷积分成两部分,一部分是分通道卷积,另一部分是1*1卷积;第一部分计算量:$(2k^2 )HWC_{int}$,第二部分计算量:$2C_{int}HWC_{out}$ 144 | 145 | Q20:***简述LBP算法原理*** 146 | 147 | - LBP是一种局部特征描述算子,最原始的LBP算子使用大小为3×3的窗口,将窗口中心邻域的8个像素分别与窗口中心像素其进行比较,邻域像素值大于中心像素值的位置标记为1,否则标记为0,从而得到一个8位的二进制值,将该值作为该窗口中心像素的LBP值(通常将8位的二进制值转换成十进制表示,即有256种可能的LBP值)。 148 | - LBP算子具有旋转不变性,纹理特征维度低,计算速度快 149 | 150 | Q21:***简述HOG算法原理*** 151 | 152 | - HOG(方向梯度直方图),通过计算和统计图像局部区域的梯度方向直方图来构建特征; 153 | - HOG算法先将图像划分为若干个cell,然后计算各个cell中每个像素点的梯度和边缘方向,然后分别统计每个cell的方向梯度直方图,构成了每个cell的特征描述子;为了对光照和阴影有更好的不变性,需要对直方图进行对比度归一化,具体可以通过将局部直方图在图像更大的范围内(称为block)进行对比度归一化。组合每个block中归一化后的所有cell的descriptor,就构成了该block的descriptor。最后将所有block的descriptor组合起来就是整幅图像的HOG特征描述子。 154 | 155 | Q22:***边缘检测算子有哪些以及它们之间的对比*** 156 | 157 | - 有许多方法用于边缘检测,它们的绝大部分可以划分为两类:基于查找一类和基于零穿越的一类。以及第三种,canny算子。 158 | - 基于查找的方法通过寻找图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向,如Roberts算子、**Prewitt 算子、Sobel 算子;** 159 | - 基于零穿越的方法通过寻找图像二阶导数零穿越来寻找边界,通常是Laplacian过零点或者非线性差分表示的过零点 160 | 161 | Q23:***常见的图像插值方式*** 162 | 163 | - 最近邻插值,在待求像素的四邻域中,将距离待求像素最近的邻像素的灰度值赋给待求像素 164 | - 双线性插值:利用待求像素四个相邻像素的灰度在两个方向上做线性插值,也就是做两次线性变换 165 | - 三次内插法:利用三次多项式求逼近理论上的最佳插值函数,待求像素 (x,y) 166 |  的灰度值由其周围 16 个灰度值加权内插得到 167 | 168 | 169 | 170 | Q24:***FAST算法的原理*** 171 | 172 | - FAST算法是一种角点检测算法,主要考虑像素点邻域的圆形窗口上的16个像素。如下图所示,作者认为,以像素 p 为中心的周围圆环上的16个像素中,如果有连续 n 个像素点的灰度值都比 p 点的灰度值大或都小,则认为 p 是一个角点。 173 | 174 | ![Untitled](CV%20interview%20Q&A%203d839484cf574c1899fd9f404a3b698d/Untitled%202.png) 175 | 176 | - FAST角点检测速度快,但受噪声影响大,没有尺度不变性和旋转不变性 177 | 178 | Q25:**简述BRIEF算法原理** 179 | 180 | - BRIEF算法的主要思想是,在特征点邻域的 s×s 窗口内随机选取 n 个点对,通过比较这些点对来生成一个二进制串作为该特征点的特征描述子; 181 | - 具体的算法步骤是: 182 | - 先对整幅图像提取特征点 183 | - 为了减少噪声影响,对图像进行高斯滤波(因为BRIEF随机选取点对,对噪声比较敏感) 184 | - 对于某个特征点,在其 s×s 的邻域内随机选取一个点对,比较两个点的大小:$T(x,y)=\begin{cases} 1, \quad if\ p(x) 组成的异构网络。由于知识图谱天然的高维性和异构性,首先使用知识图谱特征学习对其进行处理,从而得到实体和关系的低维稠密向量表示。这些低维的向量表示可以较为自然地与推荐系统进行结合和交互。 61 | - 基于结构的推荐模型,更加直接地使用知识图谱的结构特征。具体来说,对于知识图谱中的每一个实体,我们都进行宽度优先搜索来获取其在知识图谱中的多条关联实体从中得到推荐结果。 62 | 63 | Q10:**普通的逻辑回归能否直接用于大规模的广告点击率预估?** 64 | 65 | - 不能。第一,数据量太大。传统的逻辑回归参数训练过程都依靠牛顿法(Newton's Method)或者 L-BFGS 等算法。这些算法并不太容易在大规模数据上得以处理。第二,不太容易得到比较稀疏(Sparse)的答案。也就是说,虽然数据中特征的总数很多,但是对于单个数据点来说,有效特征是有限而且稀疏的。 66 | 67 | Q11:**FTRL在准备训练数据(特征工程)和训练模型时有哪些trick?** 68 | 69 | - 特征工程 70 | - 特征预处理:ID化、离散化、归一化等; 71 | - 特征选择:方差、变异系数、相关系数、Information Gain、Information Gain-Ratio、IV值等; 72 | - 特征交叉和组合特征:根据特征具有的业务属性特征交叉,利用FM算法、GBDT算法做高维组合特征等。 73 | - Subsampling Training Data 74 | - 正样本全采样,负样本使用一个比例r采样,并在模型训练的时候,对负样本的更新梯度乘以权重1/r; 75 | - 负采样的方式:随机负采样、Negative sampling、邻近负采样、skip above负采样等。 76 | - 在线丢弃训练数据中很少出现的特征(probabilistic feature inclusion) 77 | - Poisson Inclusion:对某一维度特征所来的训练样本,以p的概率接受并更新模型; 78 | - Bloom Filter Inclusion:用bloom filter从概率上做某一特征出现k次才更新。 79 | 80 | Q12:**已知基于数据驱动的机器学习和优化技术在单场景内的A/B测试上,点击率、转化率、成交额、单价都取得了不错的效果。 但是,目前各个场景之间是完全独立优化的,这样会带来哪些比较严重的问题 ?** 81 | 82 | - 不同场景的商品排序仅考虑自身,会导致用户的购物体验是不连贯或者雷同的 。例如:从冰箱的详情页进入店铺,却展示手机;各个场景都展现趋同,都包含太多的U2I(点击或成交过的商品); 83 | - 多场景之间是博弈(竞争)关系, 期望每个场景的提升带来整体提升这一点是无法保证的 。很有可能一个场景的提升会导致其他场景的下降,更可怕的是某个场景带来的提升甚至小于其他场景更大的下降。这并非是不可能的,这种情况下,单场景的A/B测试就显得没那么有意义,单场景的优化也会存在明显的问题。 84 | 85 | 引用:[https://www.sohu.com/](https://www.sohu.com/a/445953351_100205241) 86 | 87 | Q13:**描述推荐系统中的基于邻域的算法** 88 | 89 | - **基于邻域的算法分为两大类,一类是基于用户的协同过滤算法,另一类是基于物品的协同过滤算法;**基本思想是使用用户-用户相似度或物品-物品相似度从评分矩阵中进行推荐。邻域的概念意味着我们需要确定相似的用户或相似的物品才能进行预测 90 | 91 | 引用:[https://link.springer.com](https://link.springer.com/chapter/10.1007/978-3-319-29659-3_2) 92 | 93 | Q14:**推荐系统使用基于邻域的方法有哪些优势?** 94 | 95 | - 简单、高效以及能够产生准确和个性化的推荐 96 | 97 | Q15:**如何在基于用户和基于物品的邻域推荐系统之间进行选择?** 98 | 99 | - UserCF给用户推荐那些和他有共同兴趣爱好的用户喜欢的物品。ItemCF给用户推荐那些和他之前喜欢的物品类似的物品。.所以,UserCF的推荐结果着重于反映和用户兴趣相似的小群体的热点,既社会化。而ItemCF的推荐结果着重于维系用户的历史兴趣,即个性化。 100 | - **在新闻推荐中使用UserCF,因为用户的兴趣不是特别细化,绝大多数用户都喜欢看热门的新闻,并且物品更新快于用户更新;在图书、电子商务和电影网站中使用ItemCF,因为用户的兴趣是比较固定和持久的,即对物品热门程度并不是那么敏感** 101 | 102 | Q16:*****基于内容的推荐系统*的基本结构是什么?** 103 | 104 | - 三个主要组成部分是: 105 | - 一个内容分析器,提供物品分类。 106 | - Profile Learner,创建代表每个用户偏好的配置文件。 107 | - 一个过滤组件,它接受所有输入并为每个用户生成推荐列表。 108 | 109 | ![Untitled](%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%209d7b73fad7a6487ebbd3f9e242d79ac4/Untitled%202.png) 110 | 111 | 引用:[https://www.geeksforgeeks.org/ml-content-based-recommender-system/](https://www.geeksforgeeks.org/ml-content-based-recommender-system/) 112 | 113 | Q17:**如何为文本输入创建推荐系统?** 114 | 115 | - 一个基于文本的推荐系统通常按以下步骤设计: 116 | - 首先,****数据预处理,删除停用词、标点符号、空白,并将所有单词转换为小写**** 117 | - 其次,****合并列属性到新列Bag_of_words中来创建词汇表征**** 118 | - ****为Bag_of_words创建向量表示,并创建相似性矩阵**** 119 | - 最后一步是创建一个函数,该函数将电影标题作为输入,并返回10部最相似的电影。该函数将输入的电影标题与相似矩阵的对应索引进行匹配,并按降序提取相似值行。提取前11个值并删除第一个索引(即输入影片本身),可以找到前10部最相似的影片。 120 | 121 | Q18:**在为推荐系统收集数据时,您如何维护用户隐私?** 122 | 123 | - 推荐系统的隐私保护问题被研究已久。早期研究主要通过密码学方法或模糊化方法实现对隐私信息的保护,近年随着联邦学习的提出,通过数据分布式存储和分布式计算实现信息保护的联邦学习成为隐私保护推荐系统的主流方法 124 | - 密码学方法:密码学方法基于数学理论研究数据加密算法,其中最经典、使用最广泛的即为**同态加密;即通过满足密文同态运算性质的加密算法实现数据的“可算不可见”** 125 | - 模糊化处理:对用户的信息(如配置文件和浏览记录)施加扰动,以防止识别单个用户,同时尽可能保持推荐的准确性 126 | - 联邦学习:基于分布在多个设备上的数据集,建立分布式的机器学习模型,同时防止数据泄漏。由于联邦学习不要求对训练数据的集中存储,所以它在隐私保护方面优势显著 127 | 128 | Q19:**如何使用朴素贝叶斯模型设计协同过滤的推荐系统?** 129 | 130 | - 基于朴素贝叶斯的协同过滤推荐系统(Naive Bayes Collaborative Filtering),是将推荐系统中的评分**预测问题转化成一个分类问题。需要做以下两点考虑:** 131 | - 用户对项(例如商品、电影)的评分必须是一些具有代表性的数字(即定序数据如1~5分)或者评论(如喜欢、不喜欢、一般) 132 | - 用户(或项)之间是近似条件独立的 133 | 134 | Q20:****推荐系统应该如何在不断变化的环境中工作?**** 135 | 136 | - 使用经典推荐系统算法的增量、在线或动态版本,如time-SVD++时间感知模型 137 | - 另一种选择是强化学习。强化学习框架还可以对随时间变化进行建模 138 | 139 | 引用:[https://datascience.stackexchange.com/](https://datascience.stackexchange.com/) 140 | 141 | Q21:****计算广告和推荐系统之间有什么区别?**** 142 | 143 | - 推荐旨在通过根据您的个人品味提供最佳项目来优化您的体验;而计算广告涉及第三方,旨在根据您的浏览历史优化广告商、发布商和第三方的利润 144 | 145 | 引用:[https://medium.com/crossing-minds/advertising-vs-recommendation-db608f2fb5eb](https://medium.com/crossing-minds/advertising-vs-recommendation-db608f2fb5eb) 146 | 147 | Q22:**多臂老虎机(Bandit)方法对计算广告的重要性是什么?** 148 | 149 | - 推荐系统有两个顽疾,一个是冷启动,一个探索利用问题,Exploit-Explore问题。针对这两个问题,Bandit算法可以有效解决。 150 | 151 | 引用:[https://www.kukuxiaai.com/blog/2019-07/推荐系统-多臂赌博机/](https://www.kukuxiaai.com/blog/2019-07/%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F-%E5%A4%9A%E8%87%82%E8%B5%8C%E5%8D%9A%E6%9C%BA/) 152 | 153 | Q23:**基于内容的推荐算法与基于协同过滤的推荐算法有什么区别?** 154 | 155 | - 在基于内容的推荐方法中,没有假定潜在模型。这些算法直接处理用户-物品交互:例如,用户由他们与物品的交互来表示,并且使用对这些表示的最近邻搜索来产生建议。由于没有假设潜在模型,这些方法在理论上具有低偏差但具有高方差。 156 | - 在基于模型的推荐方法中,假设了一些潜在的交互模型。该模型经过训练,可以从其自身的用户和物品表示中重建用户-物品交互值。然后可以基于这个模型来做新的建议。模型提取的目潜在表示具有人类难以解释的数学意义。由于假设了一个交互模型,因此与假设没有潜在模型的方法相比,该方法在理论上具有更高的偏差但具有更低的方差。 157 | 158 | Q24:**SVD可以用于推荐系统吗?** 159 | 160 | - 可以;在协同过滤的推荐系统中,用户的评分数据是稀疏矩阵,可以用SVD将数据映射到低维空间,然后计算低维空间中的item之间的相似度,对用户未评分的item进行评分预测,最后将预测评分高的item推荐给用户。 161 | 162 | Q25:**SVD如何用于协同过滤的推荐系统?** 163 | 164 | - 在推荐系统的上下文中,SVD 被用作协同过滤技术。它使用矩阵结构,其中每一行代表一个用户,每一列代表一个项目。该矩阵的元素是用户对项目的评分 165 | 166 | $$ 167 | A=USV^{T} 168 | $$ 169 | 170 | - 它从高级(用户项目评分)矩阵的因式分解中找到矩阵的因子;SVD通过提取其潜在因子来降低效用矩阵A的维数。其中*A*是*mx n*效用矩阵,*U*是*mx r*正交左奇异矩阵,表示用户与潜在因素之间的关系,*S*是一个*rx r*对角矩阵,它描述了每个潜在因子的强度,*V*是一个*rx n*对角右奇异矩阵,表示项目和潜在因素之间的相似性。它将每个用户和每个项目映射到一个r维潜在空间。此映射有助于清楚地表示用户和项目之间的关系。 171 | 172 | 引用:[https://analyticsindiamag.com/](https://analyticsindiamag.com/) -------------------------------------------------------------------------------- /深度学习/推荐系统 9d7b73fad7a6487ebbd3f9e242d79ac4/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/推荐系统 9d7b73fad7a6487ebbd3f9e242d79ac4/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/推荐系统 9d7b73fad7a6487ebbd3f9e242d79ac4/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/推荐系统 9d7b73fad7a6487ebbd3f9e242d79ac4/Untitled 2.png -------------------------------------------------------------------------------- /深度学习/推荐系统 9d7b73fad7a6487ebbd3f9e242d79ac4/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/推荐系统 9d7b73fad7a6487ebbd3f9e242d79ac4/Untitled.png -------------------------------------------------------------------------------- /深度学习/推荐系统 f5bf3d1b2152454d930277c38d333722/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/推荐系统 f5bf3d1b2152454d930277c38d333722/Untitled 1.png -------------------------------------------------------------------------------- /深度学习/推荐系统 f5bf3d1b2152454d930277c38d333722/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/深度学习/推荐系统 f5bf3d1b2152454d930277c38d333722/Untitled.png -------------------------------------------------------------------------------- /深度学习/推荐系统.md: -------------------------------------------------------------------------------- 1 | # 推荐系统 2 | 3 | # 初级: 4 | 5 | Q1:**描述一个推荐系统?** 6 | 7 | - 推荐系统是信息过滤系统的一个子类,它试图预测用户对项目的评级或偏好。 8 | - 推荐系统通常使用协同过滤和基于内容的过滤中的一种或两种,以及其他系统,例如基于知识的系统。 9 | 10 | ![Untitled](%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%20f5bf3d1b2152454d930277c38d333722/Untitled.png) 11 | 12 | Q2:****基于知识的推荐系统与基于协作和基于内容的推荐系统有何不同?**** 13 | 14 | - 基于内容和协作系统的推荐主要基于历史数据。 15 | - 基于知识的系统的推荐是基于用户对他们想要什么的直接说明。基于知识的系统的一个重要区别特征是对特定领域的高度定制。这种定制是通过使用以约束或相似性度量的形式对相关领域知识进行编码的知识库来实现的。 16 | 17 | Q3:**协作推荐系统和基于内容的推荐系统有什么区别?** 18 | 19 | - 【协同过滤】使用的是系统记录的用户行为,它用消费过物品的用户来表征物品,计算相似。相比基于内容的一般效果较好,因为本质是基于共现,能发掘物品某种层次上的相似关系,这种关系很难从内容维度刻画;而【基于内容推荐】则侧重于通过对象的内容信息,建模属性,来进行匹配建模进而寻找相似的用户或者商品。 20 | 21 | Q4:****推荐系统中有哪些特定场景的挑战?**** 22 | 23 | - 在时间数据、基于位置的数据和社交数据等不同领域中,推荐的上下文起着至关重要的作用。开发上下文推荐系统的概念是为了解决这些领域中出现的附加信息。 24 | - 一些特定领域的应用程序是基于上下文的推荐系统、时间敏感的推荐系统、基于位置的推荐系统和社交推荐系统。 25 | 26 | Q5:**什么是基于模型的协作方法?** 27 | 28 | - 基于模型的协作方法仅依赖于用户-项目交互信息,并假设一个潜在模型来解释这些交互。 29 | - 例如,矩阵分解算法包括将巨大而稀疏的用户-项目交互矩阵分解为两个较小且密集的矩阵的乘积:用户-因子矩阵(包含用户表示)乘以因子-项目矩阵 30 | 31 | ![Untitled](%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%20f5bf3d1b2152454d930277c38d333722/Untitled%201.png) 32 | 33 | Q6:**讲述基于内容的推荐系统的基本组成部分** 34 | 35 | - 预处理和特征提取:基于内容的系统被广泛用于各种领域,例如网页、产品描述、新闻、音乐特征等。在大多数情况下,从这些不同的源中提取特征,将它们转换为基于关键字的向量空间表示。这是任何基于内容的推荐系统的第一步,它是高度特定于领域的。 36 | - 基于内容的用户配置文件学习:基于内容的模型特定于给定用户。因此,构建了一个特定于用户的模型,以根据用户购买或评价项目的历史来预测用户对项目的兴趣。为实现此目标,需要利用用户反馈,这可能以先前指定的评级(显式反馈)或用户活动(隐式反馈)的形式表现出来。此类反馈与项目的属性结合使用以构建训练数据。在此训练数据上构建学习模型。生成的模型称为用户配置文件,因为它在概念上将用户兴趣与项目属性相关联。 37 | - 过滤和推荐:在这一步中,从前面的步骤中学习到的模型用于为特定用户推荐项目。这一步需要非常高效,因为预测需要实时执行。 38 | 39 | # 中级: 40 | 41 | Q7:**如何理解图卷积算法?** 42 | 43 | Q8:**简述DeepFM模型?** 44 | 45 | Q9:**怎么将知识图谱引入推荐系统?** 46 | 47 | Q10:**普通的逻辑回归能否直接用于大规模的广告点击率预估?** 48 | 49 | Q11:**FTRL在准备训练数据(特征工程)和训练模型时有哪些trick?** 50 | 51 | Q12:**已知基于数据驱动的机器学习和优化技术在单场景内的A/B测试上,点击率、转化率、成交额、单价都取得了不错的效果。 但是,目前各个场景之间是完全独立优化的,这样会带来哪些比较严重的问题 ?** 52 | 53 | Q13:**描述推荐系统中的基于邻域的算法** 54 | 55 | Q14:**推荐系统使用基于邻域的方法有哪些优势?** 56 | 57 | Q15:**如何在基于用户和基于物品的邻域推荐系统之间进行选择?** 58 | 59 | Q16:*****基于内容的推荐系统*的基本结构是什么?** 60 | 61 | Q17:**如何为文本输入创建推荐系统?** 62 | 63 | Q18:**在为推荐系统收集数据时,您如何维护用户隐私?** 64 | 65 | Q19:**如何使用朴素贝叶斯模型设计协同过滤的推荐系统?** 66 | 67 | Q20:****推荐系统应该如何在不断变化的环境中工作?**** 68 | 69 | # 高级: 70 | 71 | Q21:****计算广告和推荐系统之间有什么区别?**** 72 | 73 | Q22:**多臂老虎机(Bandit)方法对计算广告的重要性是什么?** 74 | 75 | Q23:**基于内容的推荐算法与基于协同过滤的推荐算法有什么区别?** 76 | 77 | Q24:**SVD可以用于推荐系统吗?** 78 | 79 | Q25:**SVD如何用于协同过滤的推荐系统?** 80 | -------------------------------------------------------------------------------- /编程八股/Python 69ff3c2f1e2c4d0497a543ee8e93192e/Untitled 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/编程八股/Python 69ff3c2f1e2c4d0497a543ee8e93192e/Untitled 1.png -------------------------------------------------------------------------------- /编程八股/Python 69ff3c2f1e2c4d0497a543ee8e93192e/Untitled 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/编程八股/Python 69ff3c2f1e2c4d0497a543ee8e93192e/Untitled 2.png -------------------------------------------------------------------------------- /编程八股/Python 69ff3c2f1e2c4d0497a543ee8e93192e/Untitled 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/编程八股/Python 69ff3c2f1e2c4d0497a543ee8e93192e/Untitled 3.png -------------------------------------------------------------------------------- /编程八股/Python 69ff3c2f1e2c4d0497a543ee8e93192e/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zixian2021/AI-interview-cards/10557f3ee74492cca0259704af9cdf559386ba04/编程八股/Python 69ff3c2f1e2c4d0497a543ee8e93192e/Untitled.png --------------------------------------------------------------------------------