开贴记录实习面试,为了以后找工作备用
电话一面:
在线编程, 求两个有序数组交集, 我写了一个比暴力法强一点的版本,从头遍历A和B,A大B往后移动,B大A往后移动.时间复杂度O(M+N)
他: 如果其中一个数组很长怎么办?
当时太紧张没答出来.应该是用二分查找
他: variance和bias是什么, 如果这两个东西高了分别代表什么?
我: variance是方差, bias是误差. variance高了代表过拟合, bias高了代表欠拟合.
他:优化方法了解哪些?
我:SGD,牛顿法,最小二乘法
他:说一下momentum?
我:不太了解,但是我的理解可能是梯度,梯度就是更新的方向,学习率就是步长.
他: 过拟合有什么方法解决?
我: 正则化, dropout,early stopping
他: 正则化介绍一下
我: 有L1和L2正则化,比较常用的L2正则化
他:有什么区别?为什么好用?
我: L1正则化是一范数,L2是二范数.在损失后面加正则项一起优化,相当于给参数加了一层限制,也就是所谓的权重衰减,这样可以避免过大和过小的数据对模型影响太大.
他:还可以,能不能说一下隐马尔可夫和条件随机场?
我:HMM是生成模型, 它是对X,Y的联合分布对P(X,Y)建模, 预测时利用P(X, Y)和输入的P(X)反推P(Y | X). CRF是判别模型,直接对P(Y|X)建模
他:你说的是模型上的区别, 能不能从理论上讲一下?
我: HMM是根据马尔科夫假设, 当前状态只和前一个状态有关, 他只考虑前面的.而CRF是在全局范围内的状态转移.
他:GRU和LSTM都知道吧,说一说GRU吧
我:GRU没怎么用过, 能不能说一说LSTM?
他:不行
我:(不知道对不对)GRU和LSTM不同点是他没有LSTM的cell状态, 它的输入通过sigmoid和tanh,巴拉巴拉,全是乱说的
他:聊一下项目吧, 看你做的一个评测, 选的模型是没什么好说的, 你说一下模型以外的东西,出了什么问题,怎么解决的?
我:(一个实体识别的评测)数据标注不一致, 暴力选择多的标注代替. 分词歧义, 先分实体外的句子, 再分实体.尝试字符级的模型,后来失败了.输出后做一个一致性分析,如果和训练集中的标注不一致,人工改正
他:看来主要还是取决于数据,还有一些trick, 你能不能说一下如果数据噪声很大, 数据量又很少,你怎么做?
我:如果标注数据不够,学实体可能效果不会很好,可以尝试学实体的语境(其实我是乱说的),然后用外部数据训练一个语言模型,把语言模型加上去共同训练.
他:也算是个方法, 还有别的方法吗?
我: 因为我们的数据是分好类的(5个科室的医疗数据), 所以可以在训练的采用两个LSTM,一个共有,一个私有. 共有的一起做实体识别和科室分类,私有的专门做实体识别,最后两个LSTM的输出结合在一起做识别. 损失加在一起训练
他: 你说的就是一个multi task learning的一个过程呗
我:是的
他:看你的简历上还有一些知识表示的项目, 你对知识表示的模型有哪些了解?分别说一下TransE, TransH, TransR.
我:TransE是捡尸体和关系嵌入到低维向量空间, TransH认为TranE过于简单,不能处理一对多,多对多的关系,他的解决方法是把关系映射到一个空间,再做翻译操作.TransR是将实体和关系投影到不同的空间.
他:为什么TransE模型有这种缺点?
我:因为TransE模型是那种三角形模型,训练目标是h + r = t, 这样的话如果一个头实体有多种尾实体就永远不能拟合.比如曹操有儿子曹植和曹丕, 这两个三元组的训练目标是一样的,所以不好拟合.如果把曹植和曹丕投影到另一个空间,是可以用一个向量来表示的,这样再做翻译操作就没有问题了.
他:ACL投稿的那篇文章是怎么做的?
我:和TransE系列不一样,我们这个方法是把实体和关系结合做卷积,然后输出是另一个实体, 其中在实体中加入实体的描述,在加描述的部分用内部attention去给句子中的词的重要性打分,然后送入CNN,输入后给每个描述加入外部attention选取各个描述的重要性.
他:大概就这么多,有什么问我的么?