算法工程师面试八股(搜广推方向)_算法岗八股,2024年最新大数据开发开发必会技术

 ∈ 
 
 
 正样本 
 
 
 
 
 r 
 
 
 a 
 
 
 n 
 
 
 k 
 
 
 ( 
 
 
 i 
 
 
 ) 
 
 
 − 
 
 
 
 
 M 
 
 
 ( 
 
 
 M 
 
 
 + 
 
 
 1 
 
 
 ) 
 
 
 
 2 
 
 
 
 
 
 M 
 
 
 ∗ 
 
 
 N 
 
 
 
 
 
 AUC=\frac{\sum\_{i\in 正样本}rank(i)-\frac{M(M+1)}{2}}{M\*N} 
 
 
 AUC=M∗N∑i∈正样本​rank(i)−2M(M+1)​​。 
 
 
 
 
 r 
 
 
 a 
 
 
 n 
 
 
 k 
 
 
 ( 
 
 
 i 
 
 
 ) 
 
 
 
 rank(i) 
 
 
 rank(i)表示按照预估概率升序排序后正样本 
 
 
 
 
 i 
 
 
 
 i 
 
 
 i的排序编号。对预估概率得分相同,将其排序编号取平均作为新的排序编号。

深度学习

激活函数

激活函数的主要作用是引入非线性变换,没有激活函数,神经网络层数再多,也只是简单的线性变换,无法处理复杂任务。

  1. 阶跃函数:用于二分类,但导数始终为0,不能用于反向传播,理论意义大于实际意义。
  2. sigmoid函数:

f

(

x

)

=

1

1

e

x

f(x)=\frac{1}{1+e^{-x}}

f(x)=1+e−x1​,用于二分类,X靠近0的时候,一点小小的值变化也能引起Y很大变化,说明函数区域将数值推向极值,很适合二分类。X远离0时,X值变化对Y起作用很小,函数的导数变化也很小,在反向传播中几乎起不到更新梯度的作用;且sigmoid函数只能得到正值,在很多情况下不适用。
3. tanh函数:

f

(

x

)

=

e

x

e

x

e

x

e

x

f(x)=\frac{e{x}-e{-x}}{e{x}+e{-x}}

f(x)=ex+e−xex−e−x​,对sigmoid函数的改进,函数值在(-1, 1)之间,改善了sigmoid函数只能得到正值的缺点,其他特点与sigmoid函数一模一样。
4. ReLU函数:近年使用广泛,优点是当输入值是负值时,输出值为0,意味着一段时间内只有部分神经元被激活,神经网络的这种稀疏性使其变得高效且易于计算。但X小于0时函数梯度为0,意味着反向传播时权重得不到更新,那么正向传播过程中输出值为0的神经元永远得不到激活,变成了死神经元。
5. Leaky ReLU函数:解决了死神经元的问题。
6. Softmax函数:可以看作是用作多分类的激活函数,将神经网络的输出值变成概率。
7. 线性激活函数:效果等同于未激活,在Keras中不激活时就是用f(x)=x这一激活函数。二分类时用sigmoid函数和tanh函数,但存在梯度消失问题时应避免使用这两种函数。ReLU函数适用于绝大多数情况,如果存在梯度不更新的问题时可以用Leaky ReLU函数替代。

Softmax函数及求导

Softmax函数通常用于多分类问题中,它将一个包含任意实数的 K 维向量(K 是类别数量)映射为一个概率分布,每个类别的预测概率值都在 0 到 1 之间,所有类别的概率总和为 1。Softmax函数的作用是将原始得分转换为概率值,使得模型的输出更符合实际的概率分布。函数公式:

S

i

=

e

a

i

k

=

1

K

e

a

k

S_i=\frac{e^{a_i}}{\sum ^K_{k=1} e^{a_k}}

Si​=∑k=1K​eak​eai​​
其中,

a

a

a 是输入向量,上述公式表示第

i

i

i 个类别的输出概率。函数求导分类讨论:

i

=

j

i=j

i=j时:

S

i

a

j

=

e

a

i

e

a

j

e

a

i

2

=

S

i

S

i

S

j

\frac{\partial S_i}{\partial a_j}=\frac{e{a_i}\sum-e{a_j}e^{a_i}}{\sum ^2}=S_i-S_iS_j

∂aj​∂Si​​=∑2eai​∑−eaj​eai​​=Si​−Si​Sj​

i

j

i\not =j

i=j时:

S

i

a

j

=

0

e

a

j

e

a

i

2

=

S

i

S

j

\frac{\partial S_i}{\partial a_j}=\frac{0-e{a_j}e{a_i}}{\sum ^2}=-S_iS_j

∂aj​∂Si​​=∑20−eaj​eai​​=−Si​Sj​

Softmax函数及其导数

优化器

  • 梯度下降法(Gradient Descent):最基本最常用的优化算法。通过计算损失函数关于参数的梯度,以负梯度方向更新参数,使损失函数最小化。梯度下降法有多个变种,如批量梯度下降、随机梯度下降和小批量梯度下降。

    • g

    t

    =

    f

    (

    θ

    t

    1

    )

    ,

    θ

    t

    =

    η

    g

    t

    g_t=▽f(θ_{t−1}), △θ_t=−η∗g_t

    gt​=▽f(θt−1​),△θt​=−η∗gt​

    • 批梯度下降:每次使用所有数据用于更新梯度,使得梯度总是朝着最小的方向更新,但数据量很大的时候更新速度太慢,容易陷入局部最优。
    • 随机梯度下降:每次使用一条数据来更新梯度,在梯度更新过程中梯度可能上升也可能下降,但总的来说梯度还是朝着最低的方向前进;最后梯度会在极小值附近徘徊。随机梯度下降的梯度更新速度快于批梯度下降,且由于每次梯度的更新方向不确定,陷入局部最优的时候有可能能跳出该局部极小值。
    • mini-batch梯度下降:介于批梯度下降和随机梯度下降之间,每次用若干条数据更新梯度。mini-batch梯度下降可以使用矩阵的方式来计算梯度,因此速度快于随机梯度下降,且同样具有跳出局部最优的特点。
  • 动量优化器(Momentum):引入动量项加速收敛过程。在参数更新时考虑之前的更新方向,在梯度方向上积累速度。如果本次梯度衰减方向与上一次相同,则可以加速梯度下降;如果不一致,则抑制梯度的改变。有助于在平坦区域中加快学习速度并减少震荡。

    • m

    t

    =

    μ

    m

    t

    1

    (

    1

    μ

    )

    g

    t

    m_t=μ∗m_{t−1}+(1−μ)g_t

    mt​=μ∗mt−1​+(1−μ)gt​

    θ

    t

    =

    η

    m

    t

    △θ_t=−η∗m_t

    △θt​=−η∗mt​

  • 自适应动量估计(Adaptive Moment Estimation,Adam):基于一阶矩估计和二阶矩估计的自适应优化器。结合了动量和学习率衰减机制,并具有自适应学习率调整。在很多情况下能快速收敛。

  • 自适应学习率优化器(Adagrad、RMSProp):Adagrad和RMSProp是常用的自适应学习率优化

  • 27
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值