岗位:高级机器学习算法工程师
笔试时间:2022-9-28
1 简答题
1、神经网络中防止过拟合的方法
(1)降低模型复杂度
(2)正则化 ,正则化正是通过在损失函数上添加额外的参数稀疏性惩罚项(正则项),来限制网络的稀疏性,以此约束网络的实际容量,从而防止模型出现过拟合。L1正则化是将权值的绝对值之和加入损失函数,使得权值中0值比重增大,因此得到的权值较为稀疏。L2正则化是将权重的平方之和加入损失函数,使得权值分布更加平均,所以权值较为平滑。
(3)Dropout舍弃,在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃,使得每次训练的网络结构多样。
2、为什么使用relu激活函数
(1)可以使网络训练更快。
相比于sigmoid、tanh,导数更加好求,反向传播就是不断的更新参数的过程,因为其导数不复杂形式简单。
(2)增加网络的非线性。
本身为非线性函数,加入到神经网络中可以是网格拟合非线性映射。
(3)防止梯度消失。
当数值过大或者过小,sigmoid,tanh的导数接近于0,relu为非饱和激活函数不存在这种现象。
(4)使网格具有稀疏性。
由于小于0部分为0,大于0部分才有值,所以可以减少过拟合。
3、x1,x2∈{0,1},y∈{1,2,3,4,5,6,7,8,9,10},已知p(Y=y) = $\frac{y}{10}$,$P(x_1=1|Y=y) = \frac{y}{10}$,$¶(x_2=1|Y=y)=\frac{y}{540}$,求$ P(y∣x_1=0,x_2=1) ?$
2 编程题
来自题目:Testing Round #16 (Unrated) C. Skier
1、题意: 给一个字符串,N,S,W,E,分别代表上下左右。当走过一个没有走过的边时,花费5秒,如果走过这个边,则花费1秒。(注意:判断的是两点之间的距离,不是单纯的点).给你他的行动轨迹,求消耗的时间。
例子1
NNN
15
例子2
NS
6
例子3
WWEN
16
例子4
WWEE
12
例子5
NWNWS
25
https://blog.csdn.net/moasad/article/details/105991386
(2)解析
将每条路径的两个端点坐标存储起来,使用元组来存储两个坐标,注意一条线段的两个坐标是有两个方向。
direction = {
'N':(0,1),
'S':(0,-1),
'E':(-1,0),
'W':(1,0)
}
x,y= 0,0
ans = 0
path = 'WWEN' # 输出16
# path ='NWNWS' # 输出25
# x1,y1线段的当前坐标,x,y表示线段的另一个坐标。
visit = set([(0,0,0,0)])
for p in path:
dx,dy = direction[p]
x1,y1 = x+dx,y+dy
if (x1,y1,x,y) in visit or (x,y,x1,y1) in visit:
ans +=1
else:
ans+=5
# 存储线段,线段的两个坐标,两个方向都要存储
visit.add((x1,y1,x,y))
visit.add((x,y,x1,y1))
x,y =x1,y1
print(ans)
2、路径长度为l,有 a i a_i ai个路径点,两辆车分别从路径的两端开始,以1个单位的速度相向而行,每当一辆车经过路径点,它的速度提高一个单位每秒,求两辆车会多少秒后相遇?