深度学习和 NLP
过拟合欠拟合,偏差方差,正则化, 交叉验证
怎么判断过拟合, 过拟合如何处理
定义:过拟合(overfitting)是指在模型训练中由于训练数据包含抽样误差,对抽样误差也进行了很好的拟合。
表现:模型在训练集上效果好,在测试集上效果差(相差 20% 以上),模型泛化能力弱。
原因:(1)观察值与真实值存在偏差。(2)训练数据不足,数据太少,导致无法描述问题的真实分布。(3)训练模型过度,导致模型非常复杂。
处理方法:(1)数据层面上,增加数据或者数据增广 (2)模型层面,主要是降低模型的复杂度:减少数据特征,L1,L2,Droupout,BN,集成学习,早期停止策略 ,使用简单的模型怎么判断欠拟合, 欠拟合如何处理
定义:欠拟合(underfitting)是指模型无法得到较低的训练误差。
表现:训练的模型在训练集上面的表现很差,在验证集上面的表现也很差。
原因:模型发生欠拟合的最本质原因是训练的模型太简单,最通用的特征模型都没有学习到
处理方法:(1)添加新的特征 (2)减少正则化参数 (3)使用更深或者更宽的模型 (4)使用集成方法
偏差和方差的定义,为什么要在两者之间进行权衡
偏差(Bias)表示模型输出与真实值之间的误差,刻画模型的准确度,方差(Variance)表示模型在训练集和验证集之间的误差,刻画模型的稳定性。
在一个实际系统中,Bias 与 Variance 往往是不能兼得的。如果要降低模型的 Bias,就一定程度上会提高模型的 Variance,反之亦然。造成这种现象的根本原因是,我们总是希望试图用有限训练样本去估计无限的真实数据。当我们更加相信这些数据的真实性,而忽视对模型的先验知识,就会尽量保证模型在训练样本上的准确度,这样可以减少模型的 Bias。但是,这样学习到的模型,很可能会失去一定的泛化能力,从而造成过拟合,降低模型在真实数据上的表现,增加模型的不确定性。相反,如果更加相信我们对于模型的先验知识,在学习模型的过程中对模型增加更多的限制,就可以降低模型的 variance,提高模型的稳定性,但也会使模型的 Bias 增大。因此通常需要在两者之间权衡。L1 和 L2 正则化的区别,为什么 L1 可以获得稀疏解,L2 解接近于 0?
L1 正则化就是在 loss function 后边所加正则项为 L1 范数,加上 L1 范数容易得到稀疏解(0 比较多)。L2 正则化就是 loss function 后边所加正则项为 L2 范数的平方,加上 L2 正则相比于 L1 正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于 0(但不是等于 0,所以相对平滑)的维度比较多,降低模型的复杂度。word2vec 如何实现,实现方法有什么区别
- 基于业务的问答系统如何设计
- 如何训练基于知识图谱的问答系统
- 在训练 KBQA 时会用到例如 freebase 这样的开源知识图谱,他们过大的体积在训练中要如何进行优化
- 基于匹配的问答系统的关键技术是什么(文本相似度匹配)
- 文本相似度匹配有哪些实现方法(转特征求距离,或者使用自然语言推理的模型)
- 开放式的对话系统如何训练
- transformer 和 RNN 的区别
- 推荐系统了解吗,有那两部分(召回和排序)
- 怎么抓取热门
- 召回有哪些(微博召回怎么做),排序算法了解吗
- 小样本数据集怎么做
- 样本不均衡怎么搞(重点考核损失函数优化)
- AUC 的具体含义
- 介绍推荐系统的召回和排序系统,召回系统的输出是什么
- RF 和 GBDT 介绍、RF 的属性采样时有放回还是不放回
- 手写 LSTM 的公式(手画 LSTM 图)
- lightgbm 对缺失值的处理方法
- kmeans 的 K 值确定方法
- FM(factorization machine)模型的公式写一下,模型解决了什么问题
- DIN(deep interest network)主要使用了什么机制,解释一下,画一下 DIN 的框图
- DIN 的 activation unit 的作用
- 一个模型的 bais 和 variance 的具体定义是什么,bais 和 variance 哪个比较重要,为什么是 trade-off
任何机器学习算法的预测误差可以分解为三部分,即:偏差 + 方差 + 不可约的误差(对于给定的模型,我们不能进一步减少的误差)。 - 泛化误差解释(bais^2+variance+noise)
- dropout 的工作机制,dropout 在训练过程如何使用
- 聚类算法了解程度、kmeans 介绍、K 值选择、kmeans++ 算法)
- 推荐系统还有融合框架,假如通过两种不同的召回和 ranking 系统得到结果,如何在两种备选结果中最终给用户推荐出最适合的十个广告
- XGBOOST ,LGB,GBDT 的区别
- 一阶优化器,二阶优化器
- Attention 怎么做,self-attention 怎么做
- Transformer 细节,Bert 细节(多头和缩放)
- 标签平滑怎么做的
- 交叉熵,相对熵
- Bagging, boosting , 偏差,方差关系
二者都是集成学习算法,都是将多个弱学习器组合成强学习器的方法。
Bagging:从原始数据集中每一轮有放回地抽取训练集,训练得到 k 个弱学习器,将这 k 个弱学习器以投票的方式得到最终的分类结果。
Boosting:每一轮根据上一轮的分类结果动态调整每个样本在分类器中的权重,训练得到 k 个弱分类器,他们都有各自的权重,通过加权组合的方式得到最终的分类结果。 - CRF 理论与代码实现细节,CRF 与 HMM 关系,区别
- 维特比,beam-search 时间复杂度,区别
- XGBOOST ,LGB 生长策略,分类策略
- 少样本情况怎么缓解
实际场景做 softmax 很容易出现下溢问题,怎么解决
可以用每个维度减去一个固定值正则项为什么能减缓过拟合
- 过拟合解决方法,正则项为什么能减缓过拟合,权重衰减等价于哪个正则项
- 随机森林的随机体现在哪里
- tm 和 rnn 的区别
- LR 和 svm 的区别是什么
- lstm 的优点,记忆单元是怎么工作的,他为什么可以克服梯度消失
- bp 的原理
- bn 的原理
- 解释一下 AUC 的计算方法和它代表的意义。问了一个相关的问题,当时没有答的很好,就是一个数据如果分成两份,分别在两份数据上计算出 AUC 为 AUC_1 和 AUC_2,问整体数据的 AUC 是多少?面试的时候一直以为这个是能算出来的,所以一直在推导公式。最后的答案其实是无法得到,因为从局部的有序无法直接退出全局的有序,这个题目其实还是考查对于 AUC 这个指标的理解深度。
- word2vec 的两种优化方法,说下分层 softmax 是怎么做的。word2vec 的优点和缺点,是如何解决 oov 的问题的,实际上 word2vec 如何使用
- lucene 搜索
- 关键字搜索如何实现
- 单元测试。
- 深度优先和广度优先的本质区别。
- 从搜谷歌到返回页面,发生了什么。
- batchsize 大或小有什么问题,LR 怎么设置
计算机网络
- TCP 和 UDP 的区别
1、TCP 面向连接(如打电话要先拨号建立连接);UDP 是无连接的,即发送数据之前不需要建立连接
2、TCP 提供可靠的服务。也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付
3、TCP 面向字节流,实际上是 TCP 把数据看成一连串无结构的字节流;UDP 是面向报文的 UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 IP 电话,实时视频会议等
4、每一条 TCP 连接只能是点到点的;UDP 支持一对一,一对多,多对一和多对多的交互通信
5、TCP 首部开销 20 字节;UDP 的首部开销小,只有 8 个字节
6、TCP 的逻辑通信信道是全双工的可靠信道,UDP 则是不可靠信道 - 线程和进程的区别,如何实现多线程;
- L1 范数能否去除冗余特征
- 没坐标怎么做 kmeans
- 决策树的特征和神经网络特征有什么差异
- 句子向量有哪些生成方式
- 词袋模型有哪些不足的地方
稀疏,无序,纬度爆炸,每个词都是正交的,相当于每个词都没有关系。 - albert 相对于 bert 的改进
- 稀疏词向量 用 skip-gram 还是 cbow 训练好
- word2vec 两种训练方式哪种更好?对生僻词谁更好?
- 在工程中什么样的结果会表明是 over fitting/under fitting
- 对于 CNN 卷积层、和池化层的物理意义是什么,对于池化的 max 方法和 mean 方法 分别适合针对什么情况下应用?
当 feature map 中的信息都具有一定贡献的时候使用 AvgPooling,比如网络走到比较深的地方,这个时候特征图的 H W 都比较小,包含的语义信息较多,这个时候再使用 MaxPooling 就不太合适了。反之为了减少无用信息的影响时用 maxpool,比如网络浅层常常见到 maxpool,因为开始几层对图像而言包含较多的无关信息。二者的具体使用场景只有在具体任务上观察,实际效果炼丹后才知道。 - L2 正则化的 penalize term 和先验有关系嘛?如有是什么样的关系
- 树模型怎么剪枝?如何处理缺失值?
- 讲讲 Glove 的原理,它和 Word2vec 有什么区别?Fasttext 说一下
- 画一下 ELMo 的模型图,讲一下 ELMo 的原理,为什么它能解决词歧义的问题?
- 画 Bert 的模型图,讲原理,预训练的过程。Bert 输入是由哪些组成的?Bert 相比于 ELMo 有什么优点?它是怎么用作下游任务的?
- Attention 机制的原理,常用的 Attention 计算相似度方式有哪些,写一下公式。
- 有分布式训练神经网络的经验吗?多卡跑模型的命令是什么
- 简述一种中文分词算法。
- 讲一下 Hessian 矩阵? Hessian 矩阵是对称矩阵吗?
- SVM 的优化函数讲一下?
- 聚类算法了解吗?DBSCAN 讲一下
机器学习
- Xgboost 的原理介绍以及如何并行化实现
- 生成模型和判别模型(SVM、LR 属于哪种)
Python
- Python 的装饰器,迭代器和生成器
装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展
装饰器的本质:就是一个闭包函数
迭代器就是用于迭代操作的的对象,遵从迭代协议(内部实现了 iter() 和 next() 方法,可以像列表(可迭代对象,只有 iter() 方法)一样迭代获取其中的值,与列表不同的是,构建迭代器的时候,不像列表一样一次性把数据加到内存,而是以一种延迟计算的方式返回元素,即调用 next 方法时候返回此值。
生成器本质上也是一个迭代器,自己实现了可迭代协议,与迭代器器不同的是生成器的实现方式不同,可以通过生成器表达式和生成器函数两种方式实现,代码更简洁。生成器和迭代器都是惰性可迭代对象,只能遍历一次,数据取完抛出 Stopiteration 异常1
2
3
4
5#生成器函数(带yield语句)
def gen():
yield 3
#生成器表达式(类似列表推导式)
gen=(x for x in range(1,5)) - Python 中的 Lambda 函数
- Python 回调
- python 中函数 self 的区别,读取一个 txt 文件中 2.5 是什么数据类型,2.5+2.5 等于多少
- 深拷贝和浅拷贝的区别
- 线程进程的区别,python 内部实现的多线程有什么问题
- Python2 和 Python3 map 的差别
Python3 map 函数返回一个迭代器,Python2 中返回一个列表。 - Python 可变数据类型和不可变数据类型分别有哪些?
可变数据类型:列表 list 和字典 dict。
不可变数据类型:整型 int、浮点型 float、字符串型 string 和元组 tuple。 - Python 是如何进行内存管理的
Python 采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址
Linux 基础
- AWK
- nohup
代码
- 最长回文子串
- 给你 10 亿数据,不重复,求前 k 大。(n 为 10 亿,k 为 2 亿)
- 给你 1000 个数组,求最长的等差数列
- TopK(快排和小顶堆分别实现,分析时间和空间复杂度)
- 分析插入和快排的时间和空间复杂度,稳定,不稳定?稳定排序和不稳定排序算法的定义?手写快排
- LR 的随机梯度实现
- 数组的最大和,数组的最大乘积
- 数组排成最大的数字
- 数据中出现空值处理的方法
- 给定一个矩阵,在矩阵中选取一行,求取某一行某个数附近的 5 个数的值,需要用哪种数据结构(KD 树)
- 二叉树的最短路径
- 给定 10G 的文件,只有 2G 的内存,如何将文件放到内存中
- 编辑距离
- 完全二叉树的节点个数
- 二叉树的前序遍历的递归和非递归、时间复杂度
- 15 分钟 写一个 k-means,没写完时间不够
- 打家劫舍 II
- 反转链表
- 用神经网络搭建一个 LR
- 如果有很大的文件,怎么统计文件里面出现的各个单词的数量
- 用两个栈实现一个队列
- o (n) 实现三色排序
- 有一个城市名称列表,如何判断语句中是否出现了列表中的城市 (KMP)
- 手写 tfidf
- 二叉树层次遍历
- 大数加法 大数相乘
- 二叉树之子型遍历,每行打印
- 数组,可以分别从最左边最右边取个数字,求取得 k 个数的最大值,O(1)空间呢,k 的取值范围的条件
- k 个的列表反转
- 对称二叉树
- 连续数组,给定 k,求连续数组最小区间。动态规划要优化时间,贪心法需要证明。
- 圆上三点组成锐角三角形概率
- cnn 的卷积计算,参数计算。
- 倒水问题
- 最长公共子序列
- 最大上升子序列
- 旋转数组找 K 值
- 蓄水池抽样算法(Reservoir Sampling)
- 跳台阶 + 有一次后退机会
- 排序二叉树 插入新数字
- 归并排序中的归并
- 给定一个 int 数组,求数组中能组成三角形的个数。
- 数组中索引 K 前面是有序的,K 之后也是有序的,调整使得整个数组有序,要求空间复杂度 O (1)
- 有 1,2,5,10,20,50 的纸币,求凑到 100 元一共有多少种方法
- 合并两个有序链表,合并 K 个有序链表
- 顺时针打印矩阵
智力题
- 2 个蜡烛 1 个小时,如何记录 15 分钟
- 只有 01 生成器,如何生成 0-3 等概率,如何生成 0-k 等概率(模拟二进制)
- ABCD 乘以 9 等于 DCBA,那么 ABCD 各等于几?
反转链表