现在的位置: 首页 > 综合 > 正文

20131013百度北京深度学习算法研发工程师笔试题

2017年12月19日 ⁄ 综合 ⁄ 共 1352字 ⁄ 字号 评论关闭

闲话少叙,直接上干货。

百度笔试试卷的一贯结构,三道简答题10‘*3=30’,三道算法与程序设计题15‘*3=45’,两道程序设计题二选一25‘。

一、简答题

1、目前深度神经网络有哪些成功的应用,简述其适用原因。

2、不同进程之间进行通信的方式有哪些?(至少列出三种)

管道(pipe)、命名管道(named pipe)、信号(signal)、信号量(semaphore)、套接字(socket)、消息队列(message queue)、共享内存和内存映射(mapped memeory)。

3、有N个样本,每个样本都是D维的,使用KNN分类算法,采用欧式距离,(1)其时间复杂度为多少?(2)当N很大时,可以使用什么方法进行优化?(3)K的值对预测的方差和偏差的影响是什么?

现在看来N应该是训练集的样本数,时间复杂度是指的分类一个样本需要的时间。

(1)KNN分类的的思想是,计算待分类样本与训练集中所有样本的距离,找出距离最小的k个,计算那个标签出现的次数最多,将出现最多的标签作为样本的标签。计算距离的复杂度是O(M*D),排序最快得是O(M*log(M)),找出现最多的标签的复杂度是K。因此总的时间复杂度是O(N*D+N*log(N)+K))。

(2)KNN比较费时的步骤在于要计算与训练集中每一个样本的距离,为了减少计算量,可以每次从训练集中随机地选取一部分样本进行,作为分类的依据。假设每次取T个点,则时间复杂度变为O((T*D+T*log(T)+K))。当N很大时,选取的T可以远远小于N。

(3)记样本的真实标签为Y,分类结果记为X,X是随机变量,可以取训练集中所有出现的类标签。

如果K=N,则任意Y,X|Y=训练集中包含样本数最多的类的标签。

如果K=1,则分类结果是离待分类样本最近的训练集中的样本的类的标签。

现在,仍然没有梳理出这里的方差和偏差指的是什么?

二、算法与程序设计题

1、给定数组A={a0,a1,a2,...,an}(n可变),请输出所有的组合。

思路是,首先将从小到大排序,记包含k个元素组合的集合为G(k)。

如果知道G(k-1),则采用以下方式生成G(k):{s in G(k)} U{t,t in A且t 大于s中的最大值}。

2、数组A中相邻两个数的差的绝对值为1,如{1,2,3,4,3,2,3,4,5,4,5,6,7},给定某一个数字t,求其在数组中的位置。

思路是,用一指针p遍历数组,首先计算当前位置与t的绝对值s,然后移动到p+s处,比较p+s指的元素与t是否相等,若相等,输出当前下标,若不相等,重复计算绝对值、移动,比较步骤。

3、布丰投针问题。平面上有一组距离为d的平行线,向其上任意地投一根长为l(l<d)的针,求该针与平行线相交的概率。

答案为2*l/(pi*d).

三、系统设计题

1、神经网络模型,要求计算1、2、3层的两个偏导数。

2、KNN聚类算法,

(1)请写出目标优化函数。

sum_{i=1到K} sum_{x in C_i} dist(x,c_i)

其中C_i表示属于第i簇的点的集合,c_i表示C_i的质心。

(2)常用的终止条件有哪些?

质心不再发生变化,或者只有1%的点属于的簇发生了变化。

(3)结合KNN,描述EM算法的基本原理和步骤。

(4)使用MPI 或MapReduce,如何进行并行。

抱歉!评论已关闭.