深度学习的损失函数和反向传播涉及到很多数学知识,其原理解释在此。
1 似然估计
1.1 基本概念
似然估计贯穿于整个参数估计的过程,包含损失函数的定义、梯度的计算以及参数的更新。
- 定义:损失函数通常是似然函数,反映了模型预测的概率分布与真实数据分布之间的差异,定义这个损失函数是基于似然估计的原则。
- 梯度计算:在训练过程中,需要计算损失函数关于模型参数的梯度,这个梯度指示了参数空间中损失函数增加最快的方向。为了最小化损失函数,需要沿着梯度的反方向更新参数。计算梯度的过程也是基于似然估计的原则。
- 参数更新:在计算得到梯度后,使用优化算法(如梯度下降、Adam等)更新模型参数。这一步是似然估计的核心,通过更新参数来最小化损失函数。参数的更新是基于似然估计的目标。
1.2 最大似然估计
最大似然估计(Maximum Likelihood Estimation, MLE) 是统计学中的一种方法,用于估计概率模型中的参数。在给定数据 D = { x i , y i } i = 1 N D=\{x_i,y_i\}^N_{i=1} D={xi,yi}i=1N时,找到模型参数 θ \theta θ,使得数据出现的概率(似然)最大。
- 似然函数:似然函数是给定参数下观测数据的概率, L ( θ ) = ∏ i = 1 N P ( y i ∣ x i ; θ ) L(\theta)=\prod_{i=1}^NP(y_i|x_i;\theta) L(θ)=∏i=1NP(yi∣xi;θ)。对于离散随机变量,似然函数是概率质量函数(PMF)的乘积;对于连续随机变量,似然函数是概率密度函数(PDF)的乘积。
- 对数似然函数:为了简化计算,通常取似然函数的自然对数,得到对数似然函数, log L ( θ ) = ∑ i = 1 N log P ( y i ∣ x i ; θ ) \log L(\theta)=\sum_{i=1}^N \log P(y_i|x_i;\theta) logL(θ)=∑i=1NlogP(yi∣xi;θ)。
最大似然估计:最大似然估计是使似然函数或对数似然函数达到最大值的参数值。最大化对数似然等价于最小化负对数似然(Negative Log-Likelihood,NLL), J ( θ ) = − 1 N ∑ i = 1 N log P ( y i ∣ x i ; θ ) J(\theta)=-\frac{1}{N}\sum_{i=1}^N \log P(y_i|x_i;\theta) J(θ)=−N1∑i=1NlogP(yi∣xi;θ),这通常是深度学习中的交叉熵损失。
1.3 对数似然(Log-Likelihood)
基本原理------对数的加法运算法则: log a ( M N ) = log a ( M ) + log a ( N ) \log_a(MN)=\log_a(M)+\log_a(N) loga(MN)=loga(M)+loga(N)
直接对概率 P ( y ∣ x ; θ ) P(y|x;\theta) P(y∣x;θ)求导时,链式法则会导致复杂的计算(尤其是多层神经网络),对数梯度形式更易于计算。(建议再学习一下softmax概率交叉熵损失的梯度推导)
乘积形式的概率在计算时容易导致数值下溢,取对数可以将乘积转为求和,避免数值问题,同时对数函数的单调性保证最大化对数似然等价于最大化原始似然。
数值下溢(Underflow) 是计算机科学中一个常见的数值问题,指的是在计算过程中,某些数值变得非常小,以至于超出了计算机浮点数表示范围的下限,从而导致这些数值被近似为零的现象。
另外,对数转换后的梯度方差更小,有助于稳定训练。
【更新中,欢迎交流】
参考来源:
@ AIGC
策略梯度定理公式的详细推导