Contents
  1. 1. 面试概况
  2. 2. 面试内容

面试概况

面试形式:QQ语音

面试时间:2016/3/11 20:30-21:40

面试岗位:新浪-产品技术部-自然语言处理工程师

面试时间较长,问题较多较杂,so,应该遗漏了一些。

面试内容

(1)个人简介

(2)项目

Q:怎么用N元模型做事件抽取的?

A:N元模型用来将细粒度的词合并为语块或短语,然后根据规则抽取事件。

Q:怎么用隐马模型做事件抽取的?

A:把事件抽取问题转化为标注问题,给分词过后的序列打标签。

Q:改进隐马模型有哪些改进的方面?

A:隐马模型有两个序列:一个状态序列,一个观测序列。

改进包括三个方面:

《1》第一个方面就是,HMM有一个假设是齐次马尔科夫性假设,t时刻的状态只与t-1时刻的状态有关,这会导致很多条件概率的缺失,为了降低条件概率的损失,对其进行扩展,令t时刻的状态与t-1和t-2时刻的状态有关,也就是将转移概率aij扩展为aijk,将观测值生成概率bi(k)扩展为bij(k)。原来的话是2-gram,现在将其扩展为3-gram;

《2》第二个改进就是采用多个观测序列,原始HMM是一个状态序列和一个观测序列,用观测序列去推测状态序列,使用多个观测序列的方法就是用多个观测序列去预测状态序列,这样可以考虑多维特征;

《3》第三个改进就是利用统计与规则相结合的思想,对先用HMM对训练数据进行预测,然后使用预测之后结果中有正确的,有错误的,对那些错误的实例,使用K-means方法进行聚类分析,得到一系列的错误纠正规则,然后用这些规则对HMM的预测结果进行修正。

Q:HMM是自己写代码实现的吗?

A:是,因为对HMM进行了改进,所以要自己实现。

Q:有编码实现前向-后向算法吗?

A:在改进的HMM中没有使用前向-后向算法拟合参数,而是采用的极大似然估计MLE,因为我使用的语料是标注过的,也就是有监督的,前向-后向算法是采用EM算法思想来进行无监督参数拟合,而且我在原始HMM中对比过两种算法,在有监督的情况下,MLE的效果优于前向-后向算法。

Q:假设现在有10个点,要你分成3类,讲一讲K-means算法流程?

A:。。。balabala。。。

Q:什么时候结束?

A:我知道的有两种方法:

《1》设置迭代次数;

《2》相邻的两次迭代结果的簇中心偏移程度——误差平方和小于某个阈值;

(3)面向对象语言

Q:你熟悉Java或C++吗?

A:本科时候主要使用C/C++,研究生期间主要用Python,研一的时候有用过Java。

Q:你听说过拷贝构造函数吗?【C++,面向对象程序设计】

A:听说过

Q:解释一下你对拷贝构造函数的理解?

A:比如有一个类Car,然后new 了一个对象是BMW,现在又需要一辆BMW,我们就可以重新new一个对象,然后用这个BMW作为参数用来初始化这个新的Car,这样我们就得到2个BMW。

(4)SVM

Q:讲讲你对SVM的理解?【SVM的理解】

A:2分类;最大间隔;

Q:这个最大间隔是什么?

A:点到分割超平面的最大间隔。

Q:谁到谁的最大间隔?

A:到分隔超平面最近的点到分割超平面的最大间隔。

举个例子,有4个样例点,是正方形的4个顶点,左边两个正例,右边两个负例,在中间划一条线把它们分开,这样的线有无数条,但是最大间隔的一条线就是正中间的那条,把正方形均分为两半的线,这条线到顶点的间隔就是最大间隔。

Q:SVM的目标函数是什么样子的?

A:w*x+b = 0(这个不是面试官想要的答案)

Q:这是线性可分模型,非线性的呢?

A:函数间隔》几何间隔》原始问题》对偶问题》拉格朗日函数》拉格朗日因子向量》最后的形式是:sum sum aiajyiyjxixj+sum ai(推导了半天,这个是拟合参数时候的公式,不是最后的目标函数,正确的应该是sum aiyiK(x,xi)+b)

Q:如果有成千上万个样例,该怎么求解SVM目标函数?

A:SMO

Q:讲一讲SMO的原理?【SMO原理】

A:把大问题分解为小问题,如果求解成千上万个a难以求解的话,那么每次优化2个a,这样一步一步的完成整体优化。

Q:不用SMO方法,直接求解,应该如何解拉格朗日目标函数?

A:这个,不会。

(5)机器学习【过拟合,欠拟合】

Q:你知道过拟合和欠拟合吧?

A:知道。

Q:讲一下你对过拟合和欠拟合的理解?

A:过拟合就是对训练数据拟合的很好,对测试数据拟合的不好;欠拟合就是对训练数据的拟合程度不是很好,对测试数据的拟合程度稍微好些;

Q:为什么会导致过拟合?

A:数据量太少,特征太多(导致模型过于复杂,却又没有很好的泛化能力)

Q:有什么方法可以避免过拟合?

A:获取更多的数据,使用较少的特征

Q:逻辑回归的目标函数是什么?

A:y = a*x + b,很久以前看过,一直没有用,所以记不清了

Q:逻辑回归是如何训练的?【逻辑回归与正则化】

A:不知道

Q:逻辑回归里的正则项是什么样子的?

A:记不得了

Q:逻辑回归是怎么样计算误差的?

A:真实值和预测值的误差平方和

Q:决策树中是如何选择选择特征的?

A:信息增益(ID3)信息增益比(C4.5)基尼指数(CART)

Q:信息增益和信息增益比的区别?

A:网上的资料显示,信息增益更倾向于选择属性值较多的特征,而信息增益比可以在一定程度上避免;

我自己的理解是,通过信息增益的值的大小很难评估一个特征的好坏,而信息增益比可以理解为熵减少的程度。

Q:BPNN的BP过程是做什么的?【BP神经网络】

A:是用来调整某个参数,记不清了。

Q:神经网络和SVM的联系和区别?【BP神经网络与SVM的关系】

A:SVM的函数是凸二次规划问题,这就相当于对问题做了一个存在最优解的假设,但是实际情况是谁也不知道是否有最优解;

神经网络就是有很多局部最优解,并没有全局最优解,更接近事实。

Q:你知道机器学习中哪些最优化方法?例如梯度下降等。【最优化】

A:以前知道梯度下降,现在记不清了。

(6)大数据

Q:有亿万个分好的词,找出出现次数最多的top k个词。【大数据】

A:一台机器?还是很多台?

Q:有足够的集群,你要怎么做?

A:用分布式方法,每个机器处理一部分,统计词频,然后汇总到一台机器上,得到最终的统计数据;
Q:怎么找到top k?

A:排序,然后找到前k

Q:用什么排序?

A:堆排序,这样只需要用很少的空间就可以完成排序+查询了。

(7)数据结构

Q:二叉树排序树的查找时间复杂度?【二叉排序树】

A:O(log2N)

Q:最差情况的时间复杂度?

A:O(N)(一直没听明白面试官的意思,“最坏”,“最快”听不清。。。)

Q:怎么保持二叉树平衡?

A:构建平衡二叉树(具体怎么操作记不清了)

Q:你知道哪些平衡二叉树?【平衡二叉树】

A:平衡二叉树,红黑树(其他还有几个,记不清了)

(8)其他

Q:手上有其他offer吗?

A:没

Contents
  1. 1. 面试概况
  2. 2. 面试内容