逻辑回归中最大似然估计的理解从lny1−ywxbln\frac{y}{1-y}wxbln1−yywxb到最大化似然函数(其实就是最小化损失)的过程理解和简单推导.很多课件在这里跳得太快导致很多人不知道逻辑回归是怎么从最大似然估计推导到了经典的二元交叉熵损失函数的。其实中间缺了三个关键的逻辑台阶。为了方便书写我们把你的预测输出也就是那个 Sigmoid 的结果记为y^\hat{y}y^把真实的标签0或1记为yyy。y^11e−(wxb) \hat{y} \frac{1}{1e^{-(wxb)}}y^1e−(wxb)1下面我带你一步步理清楚。第一台阶把“预测值”翻译成“概率”首先你要明白y^\hat{y}y^代表什么。在逻辑回归中它代表样本是正类y1的概率。如果是正类 (y1y1y1) 的概率是y^\hat{y}y^那么是负类 (y0y0y0) 的概率就是1−y^1 - \hat{y}1−y^但是数学家不喜欢写“如果…那么…”他们喜欢用一个公式把这两种情况统一起来。这是一个非常巧妙的数学技巧伯努利分布的写法P(y∣x)y^y⋅(1−y^)1−y P(y|x) \hat{y}^y \cdot (1-\hat{y})^{1-y}P(y∣x)y^y⋅(1−y^)1−y为什么这个式子能统一请看当真实标签y1y1y1时式子变成y^1⋅(1−y^)0y^\hat{y}^1 \cdot (1-\hat{y})^0 \hat{y}y^1⋅(1−y^)0y^正是我们想要的当真实标签y0y0y0时式子变成y^0⋅(1−y^)11−y^\hat{y}^0 \cdot (1-\hat{y})^1 1-\hat{y}y^0⋅(1−y^)11−y^也正是我们想要的结论不管yyy是 0 还是 1上面这个公式都准确描述了模型预测正确的概率。第二台阶从“一个样本”到“全体样本” (极大似然)现在我们要训练模型了。所谓“训练”就是找一组最好的www和bbb。什么样的www和bbb才是最好的直觉告诉我们最好的模型应该让所有样本被预测正确的概率最大假设我们有NNN个样本。因为样本之间是独立的所以“所有样本同时被预测正确”的总概率就是它们各自概率的乘积。这个“总乘积”就叫似然函数 (Likelihood Function)记为L(w,b)L(w,b)L(w,b)L(w,b)∏i1NP(yi∣xi)∏i1N[y^iyi⋅(1−y^i)1−yi] L(w,b) \prod_{i1}^{N} P(y_i|x_i) \prod_{i1}^{N} [\hat{y}_i^{y_i} \cdot (1-\hat{y}_i)^{1-y_i}]L(w,b)i1∏NP(yi∣xi)i1∏N[y^iyi⋅(1−y^i)1−yi]极大似然法 (Maximum Likelihood Estimation, MLE)的思想就是我要去调节www和bbb使得上面这个L(w,b)L(w,b)L(w,b)的值最大。通俗说通过调整参数让手里这堆数据出现的可能性最大化。第三台阶从“最大化似然”到“最小化损失”现在我们需要解这个数学题求 MaxL(w,b)L(w,b)L(w,b)。但是直接算连乘∏\prod∏非常痛苦难算求导法则对乘法很复杂。数值溢出一堆 0.9, 0.8 乘起来最后结果会接近于 0计算机存不下。步骤 A取对数 (Log-Likelihood)为了解决连乘问题两边取自然对数ln\lnln。因为ln(a⋅b)lnalnb\ln(a \cdot b) \ln a \ln bln(a⋅b)lnalnb乘法变成了加法lnL(w,b)∑i1N[yiln(y^i)(1−yi)ln(1−y^i)] \ln L(w,b) \sum_{i1}^{N} [y_i \ln(\hat{y}_i) (1-y_i) \ln(1-\hat{y}_i)]lnL(w,b)i1∑N[yiln(y^i)(1−yi)ln(1−y^i)](注意这时候我们要最大化这个式子)步骤 B加负号 (Loss Function)在机器学习的优化算法如梯度下降中我们习惯做下山运动也就是求最小值而不是求最大值。最大化“快乐”似然等价于最小化“痛苦”损失。所以我们在式子前面加一个负号。通常还会除以NNN(样本数) 来取平均但这不影响求极值的位置。于是我们就得到了传说中的损失函数 (Loss Function)也叫交叉熵损失 (Cross Entropy Loss)J(w,b)−1N∑i1N[yiln(y^i)(1−yi)ln(1−y^i)] J(w,b) -\frac{1}{N} \sum_{i1}^{N} [y_i \ln(\hat{y}_i) (1-y_i) \ln(1-\hat{y}_i)]J(w,b)−N1i1∑N[yiln(y^i)(1−yi)ln(1−y^i)]其中y^i\hat{y}_iy^i里面藏着11e−(wxb)\frac{1}{1e^{-(wxb)}}1e−(wxb)1。总结整个推导链条定义模型ySigmoid(wxb)y \text{Sigmoid}(wxb)ySigmoid(wxb)↓\downarrow↓定义概率利用yy(1−y)1−yy^y(1-y)^{1-y}yy(1−y)1−y把正负样本概率写成一个式子。↓\downarrow↓极大似然 (MLE)认为最好的w,bw,bw,b应该让所有样本概率的乘积最大。↓\downarrow↓取对数为了好算把“乘积最大”变成“对数和最大”。↓\downarrow↓变损失函数为了配合梯度下降求最小加个负号把“对数和最大”变成**“负对数和最小”**。这就是为什么“似然”讲着讲着就变成了“最小化损失函数”的原因。它们就像硬币的两面一面是“让正确率最高”另一面是“让错误率损失最低”。