机器学习面试知识点

版权声明:版权归原作者所有。未经允许,严禁转载。 https://blog.csdn.net/luccao/article/details/82319064

深度学习

1. 前向推导

z ( l + 1 ) = W ( l ) x ( l ) + b ( l )
a ( l + 1 ) = f ( z ( l + 1 ) )

这是一个CNN中前向推导的通用公式

2. 梯度消失与梯度爆炸

  梯度消失:这本质上是由于激活函数的选择导致的, 最简单的sigmoid函数为例,在函数的两端梯度求导结果非常小(饱和区),导致后向传播过程中由于多次用到激活函数的导数值使得整体的乘积梯度结果变得越来越小,也就出现了梯度消失的现象。
  梯度爆炸:同理,出现在激活函数处在激活区,而且权重W过大的情况下。但是梯度爆炸不如梯度消失出现的机会多。梯度爆炸一般出现在深层网络和权值初始化值太大的情况下
以下链接有详细的解释:
https://blog.csdn.net/qq_25737169/article/details/78847691

3. 激活函数

  1. sigmoid函数:
    y = 1 1 + e x
  2. reLU函数:y = max(x, 0), 可以有效防止梯度消失与梯度爆炸,因为斜率k = 1, 所以梯度也就是1,所以不会出现梯度消失与梯度爆炸

4. 残差网络

举个两层的例子 a ( l ) , a ( l + 1 ) , a ( l + 2 )

正常网络连接:

z ( l + 1 ) = W ( l + 1 ) a ( l ) + b ( l + 1 )
a ( l + 1 ) = f ( z ( l + 1 ) )
z ( l + 2 ) = W ( l + 2 ) a ( l + 1 ) + b ( l + 2 )
a ( l + 2 ) = f ( z ( l + 2 ) )

残差网络模块:

z ( l + 1 ) = W ( l + 1 ) a ( l ) + b ( l + 1 )
a ( l + 1 ) = f ( z ( l + 1 ) )
z ( l + 2 ) = W ( l + 2 ) a ( l + 1 ) + b ( l + 2 )
a ( l + 2 ) = f ( z ( l + 2 ) + a ( l ) )

残差网络就是由很多这种残差块组成的

5. RNN的模型结构

  1. 普通的RNN序列模型
    a < t > = g ( W a a a ( t 1 ) + W a x a ( t ) + b a )
    y < t > = g ( W y a a ( t ) + b y )

  2. LSTM
    c ( t ) = t a n h ( W c [ Γ r a ( t 1 ) , x ( t ) ] + b c )
    Γ u = σ ( W u [ a ( t 1 ) , x ( t ) ] + b u )
    Γ f = σ ( W f [ a ( t 1 ) , x ( t ) ] + b f )
    Γ o = σ ( W o [ a ( t 1 ) , x ( t ) ] + b o )
    c ( t o ) = Γ u c ( t ) + Γ f c ( t 1 )
    a ( t ) = Γ o t a n h ( c ( t o ) )

  3. GRU
    c ( t ) = t a n h ( W c [ Γ r c ( t 1 ) , x ( t ) ] + b c )
    Γ u = σ ( W u [ c ( t 1 ) , x ( t ) ] + b u )
    Γ r = σ ( W r [ c ( t 1 ) , x ( t ) ] + b r )
    c ( t o ) = Γ u c ( t ) + ( 1 Γ u ) c ( t 1 )

  4. BRNN

  5. 深层RNN

机器学习

1. 交叉熵作损失函数的优势

交叉熵就是用来判定实际的输出与期望的输出的接近程度。交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。
https://blog.csdn.net/m_buddy/article/details/80224409

平方损失函数与交叉熵损失函数都可以用作为机器学习模型的目标函数,但是在何种场景下使用何种损失函数才是较为合理的选择呢?一般来讲,如果学习模型致力于解决的问题是回归问题的连续变量,那么使用平方损失函数较为合适;若是对于分类问题的离散One-Hot向量,那么交叉熵损失函数较为合适。

交叉熵的公式: i = 0 n p ( x i ) l o g ( q ( x i ) )

p ( x i ) 为期望标签值, q ( x i ) 为实际输出值。

2. SVM的推导

支持向量机的问题由来:

1) 有一堆训练数据:
( x i , y i ) , i = 1 , 2 , 3... l y i ( 1 , 1 )

2) 假设存在超平面H:
W x i + b = 0
该平面可以把正负样本准确无误的分割开来

3) 同时存在两个平行于超平面H的平面H1和H2
H1: W x i + b = 1
H2: W x i + b = 1
则两个平面的距离d = 2 | | w | |

4) 最优化问题就变为:
max 2 | | w | |
y i ( W x i + b ) 1 约束条件

5) 最优化问题转换为
min 1 2 | | w | | 2
y i ( W x i + b ) 1 约束条件

6) 转换成拉格朗日方程
L ( w , b , a i ) = 1 2 | | W | | 2 i = 1 l a i ( y i ( W i x i + b ) 1 )
= 1 2 | | W | | 2 i = 1 l a i y i W i x i i = 1 l a i y i b + i = 1 l a i

其中 a i 0

问题就变成 m i n w , b m a x a i 0 L ( w , b , a i )

7) 利用对偶原理,原问题可以变为:
m a x a i 0 m i n w , b L ( w , b , a i )

8) 极值问题求偏导得
L ( w , b , a i ) w = W i = 1 l a i y i x i
L ( w , b , a i ) b = i = 1 l a i y i

取极值得:
W = i = 1 l a i y i x i
i = 1 l a i y i = 0

9) 把(8)带回(6)可得:
1 2 | | W | | 2 i = 1 l a i y i W i x i i = 1 l a i y i b + i = 1 l a i
= i = 1 l a i 1 2 | | W | | 2
= i = 1 l a i 1 2 i = 1 l a i y i x i j = i l a j y j x j

10) 把9)代入7)得:
m a x a i 0 m i n w , b ( i = 1 l a i 1 2 i = 1 l a i y i x i j = i l a j y j x j )

根据数值计算求解得出答案
最后得到平面H1和H2, 训练就得到SVM的模型。

3. 贝叶斯定理

https://blog.csdn.net/saltriver/article/details/52876579
1)概率:事件发生的可能性。比如抛掷一枚硬币,正面向上的可能性为50%
2)条件概率:某条件下事件发生的可能性。比如一个人在身高为170cm的情况下,他选择打篮球的概率有多大, P ( B | A )
3) 联合概率:多个事件同时发生的可能性。比如抛硬币两次都朝上的概率 P ( A B ) = P ( A ) P ( B ) ,前提是事件是相互独立的互不影响,如果不独立则联合概率为 P ( A B ) = P ( A ) P ( B | A )
4)全概率:
全概率公式的意义在于,当直接计算 P ( A ) 较为困难,而 P ( B i ) , P ( A | B i ) ( i = 1 , 2 , . . . ) 的计算较为简单时,可以利用全概率公式计算 P ( A )
5)贝叶斯定理:
P ( A | B ) = P ( B | A ) P ( A ) P ( B )

P ( A ) :

P ( A | B ) :

P ( B | A ) P ( B ) : 缩放因子

https://blog.csdn.net/zengxiantao1994/article/details/72787849
6)最大似然估计
根据结果推算参数。在机器学习中逻辑回归一般用来做二分类问题,在我们确定大概模型,同时也有实际数据结果的情况下,去调整模型的参数,使在估计的参数的条件下,下次分类取得比较大概率的结果。

猜你喜欢

转载自blog.csdn.net/luccao/article/details/82319064