一面
o
项目与自我介绍
哈希表的优缺点:
优点:
不论哈希表中数据有多少,增加,删除,改写数据的复杂度平均都是O(1),效率非常高,不仅速度快,编程实现也相对容易。
缺点:
它是基于数组的,数组创建后难于扩展,某些哈希表被基本填满时,性能下降得非常严重,所以程序员必须要清楚表中将要存储多少数据,或者准备好定期地把数据转移到更大的哈希表中,这是个费时的过程。
哈希表的原理:
通过把关键码值(Key value)映射到表中一个位置来访问记录,以加快查找的速度
·
L1、L2、dropout 之间有什么联系
都是为了防止过拟合,提高模型的泛化能力
但正则化并不改变问题的本质,L1、L2正则化是通过修改代价函数来实现的
而Dropout则是通过修改神经网络本身来实现的,它是在训练网络时用的一种技巧(trike)
·
o
Dropout与集成思想
dropout本质上体现了集成学习思想。
在集成学习中,我们采用了一些"较弱"的分类器,分别训练它们。由于每个分类器都经过单独训练,因此它学会了数据的不同"方面",并且它们的错误也不同。将它们组合起来有助于产生更强的分类器,不容易过度拟合。
一种集成算法是装袋(bagging),其中每个成员用输入数据的不同子集训练,因此仅学习了整个输入特征空间的子集。
dropout,可以看作是装袋的极端版本。在小批量的每个训练步骤中,dropout程序创建不同的网络(通过随机移除一些单元),其像往常一样使用反向传播进行训练。从概念上讲,整个过程类似于使用许多不同网络(每个步骤一个)的集合,每个网络用单个样本训练(即极端装袋)。
在测试时,使用整个网络(所有单位)但按比例缩小。在数学上,这近似于整体平均。
显然这是一种非常好应用于深度学习的集成思想。
LR 逻辑回归能不能加dropout
当然不能
深度学习能不能用L1 L2
可以,L2还是用得比L1多,因为一般的深度学习模型不太关注稀疏性。
·
二面
项目工作经验与自我介绍
深度学习模型压缩算法与优化加速
轻量网络设计
模型裁剪
模型蒸馏
矩阵分解
量化与低精度运算
计算图优化
卷积算法优化
硬件加速
解释性语言怎么做到交互式编程
解释型语言:
是在运行的时候将程序翻译成机器语言。不需要在运行前编译,在运行程序的时候才翻译,专门的解释器负责在每个语句执行的时候解释程序代码。这样解释型语言每执行一次就要翻译一次,效率比较低。
·
交互式编程:
直接输入脚本语句,回车就执行了,结果立即显示出来,而不用经过复杂的保存和编译阶段。这对于简单的尝试性的操作是很方便的,比如测试一个函数的用法。因为输入语句之后,就可以立即得到结果,你就知道问题出在哪里,立即就可以修正。
期望风险、经验风险的区别:
经验风险是局部的,基于训练集所有样本点损失函数最小化的;
期望风险是全局的,是基于所有样本点的损失函数最小化的。
经验风险函数是现实的,可求的;
期望风险函数是理想化的,不可求的。
期望风险、经验风险和结构风险是什么:
经验风险是对训练集中的所有样本点损失函数的平均最小化。经验风险越小说明模型f(X)对训练集的拟合程度越好;
期望风险是因为未知的样本数据(<X,Y>)的数量是不容易确定的,没有办法用所有样本损失函数的平均值的最小化这个方法,所以使用期望风险来衡量这个模型对所有的样本(包含未知的样本和已知的训练样本)预测能力。
只考虑经验风险的话,会出现过拟合的现象,过拟合的极端情况便是模型f(x)对训练集中所有的样本点都有最好的预测能力,但是对于非训练集中的样本数据,模型的预测能力非常不好。怎么办呢?这个时候就引出了结构风险。
·
结构风险是对经验风险和期望风险的折中。在经验风险函数后面加一个正则化项(惩罚项)便是结构风险了。
三面
项目与自我介绍
梯度下降过程中如果不按正确的方向进行怎么办?
编译原理学过没
分布式了解吗
编程题1:浮点数开根号
二分法(通过缩小根值范围的方法来逼近结果)
牛顿法,级数逼近
编程题2:浮点数的N次方
快速幂,查表
解法:BFS/ DFS + 标记是否检测过
加速法:分布式算法:划分为4块,从四个角分别计算,最后Merge
概率法
编程4:方阵的N次方
快速幂,特征值/矩阵快速幂
·
全部评论
(1) 回帖