算法工程师2020校招面试

本文记录了算法工程师在2020年实习和秋招期间的面试经历,涵盖平安科技、问镜科技、vivo、汽车之家等多个公司。面试内容涉及梯度检验、SVM、KKT条件、词向量表示、过拟合解决方案、 BeamSearch算法、L1与L2正则等机器学习和NLP相关知识点。同时,面试中还包含了BPE、命名实体识别、CRF、Transformer结构等深度学习主题,以及算法题和实际项目经验的讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------------------------------第一部分:实习2020.06------------------------

1. 平安科技(实习)

1.1 如何检验求得得梯度是正确得

求导得数学定义为:
d d θ J = lim ⁡ ϵ → 0 J ( θ + ϵ ) − J ( θ − ϵ ) 2 ϵ \frac{d}{d \theta} J=\lim _{\epsilon \rightarrow 0} \frac{J(\theta+\epsilon)-J(\theta-\epsilon)}{2 \epsilon} dθdJ=ϵ0lim2ϵJ(θ+ϵ)J(θϵ)

由此我们可得梯度校验的数值校验公式:
d d θ J ≈ J ( θ + ϵ ) − J ( θ − ϵ ) 2 ϵ \frac{d}{d \theta} J \approx \frac{J(\theta+\epsilon)-J(\theta-\epsilon)}{2 \epsilon} dθdJ2ϵJ(θ+ϵ)J(θϵ)

在实际应用中,我们常将 ϵ 设为一个很小的常量,比如 1e−4 数量级,我们不会将它设得太小,比如 1e−20,因为那将导致数值舍入误差。

程序验证:

# 定义sigmoid函数
def sigmoid(x):
	return 1/(1+np.exp(-x))

# sigmoid函数导数
def sigmoid_prime(x):
	return sigmoid(x)*(1-sigmoid(x))

# 验证求梯度是否正确
def check_sigmoid(x, eposi):
	return (sigmoid(x+eposi)-sigmoid(x-eposi))/(2*eposi)

x = np.array([1,2,3])
eposi = 1e-4
print(sigmoid_prime(x))
print(check_sigmoid(x, eposi))

输出

[0.19661193 0.10499359 0.04517666]
[0.19661193 0.10499359 0.04517666]

reference
机器学习算法的调试 —— 梯度检验(Gradient Checking)

1.2 随机梯度下降步长取值范围

以线性回归为例进行说明:
L ( θ ) = ( θ T X T − Y T ) ( X θ − Y ) L(\theta) = (\theta^TX^T-Y^T)(X\theta-Y) L(θ)=(θTXTYT)(Y)

对参数求导得:
d L ( θ ) d θ = X T ( X θ − Y ) \frac{dL(\theta)}{d\theta}=X^T(X\theta-Y) dθdL(θ)=XT(Y)

梯度下降算法为:
θ n + 1 = θ n − α X T ( X θ n − Y ) \theta_{n+1}=\theta_n-\alpha X^T(X\theta_n-Y) θn+1=θnαXT(XθnY)

将该公式变换得:
θ n + 1 = F ( θ n ) = ( I − α X T X ) θ n + α X T Y \theta_{n+1} = F(\theta_n)=(I-\alpha X^TX)\theta_n+\alpha X^TY θn+1=F(θn)=(IαXTX)θn+αXTY

θ \theta θ 收敛时,它是一个稳定点,即 θ = F ( θ ) \theta = F(\theta) θ=F(θ),解出 θ = ( X T X ) − 1 X T Y \theta = (X^TX)^{-1}X^TY θ=(XTX)1XTY,与最小二乘法给出的结果一致。

按照非线性理论中的稳定性条件要求: ∣ F ′ ( θ ) ∣ < 1 |F^{'}(\theta)|<1 F(θ)<1,即 ∣ I − α X T X ∣ < 1 |I-\alpha X^TX|<1 IαXTX<1,因此 0 < α < 2 ( ∣ X T X ∣ ) − 1 0<\alpha<2(|X^TX|)^{-1} 0<α<2(XTX)1;所以,当步长超出这个范围, θ \theta θ是不稳定的,很容易导致发散。

总结下就是,在求梯度下降得时候令 θ n + 1 = F ( θ n , α ) \theta_{n+1}=F(\theta_n, \alpha) θn+1=F(θn<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值