【机器学习】机器学习的基本分类-监督学习-逻辑回归-对数似然损失函数(Log-Likelihood Loss Function)

server/2024/11/30 17:48:19/

对数似然损失函数(Log-Likelihood Loss Function)

对数似然损失函数是学习>机器学习和统计学中广泛使用的一种损失函数,特别是在分类问题(例如逻辑回归、神经网络)中应用最为广泛。它基于最大似然估计原理,通过最小化负对数似然(negative log-likelihood, NLL)来优化模型参数。


1. 对数似然损失的定义

对于一个分类问题,我们的目标是预测输入 x 属于类别 y∈{0,1} 的概率。假设模型输出的概率为 P(y=1|x) = \hat{y}​,则:

对数似然函数

似然函数衡量模型参数在观察到数据下的概率。假设数据集为 \{(x_i, y_i)\}_{i=1}^N​,样本 i 的预测概率为 \hat{y}_i,其似然函数为:

L(\theta) = \prod_{i=1}^N P(y_i | x_i; \theta)

对数似然函数

对数化简乘积:

\ell(\theta) = \log L(\theta) = \sum_{i=1}^N \log P(y_i | x_i; \theta)


 

2. 损失函数形式

为了简化计算,优化通常使用对数似然损失函数(即最大化对数似然的对立面):

\mathcal{L}(\theta) = -\ell(\theta) = -\sum_{i=1}^N \log P(y_i | x_i; \theta)

分类问题

对二分类问题,假设 P(y=1|x) = \hat{y}​,P(y=0|x) = 1 - \hat{y}​,则:

P(y|x) = \hat{y}^y (1 - \hat{y})^{1-y}

对数化并取负得到:

\mathcal{L}(\theta) = -\sum_{i=1}^N \left[ y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i) \right]

这就是交叉熵损失函数的形式,广泛用于二分类问题。


3. 推导直观理解

1. 对数似然的意义

对数似然量化了模型预测的质量:

  • y_i = 1:我们希望预测概率 \hat{y}_i​ 越大越好。
  • y_i = 0:我们希望预测概率 1 - \hat{y}_i​ 越大越好。

通过最大化对数似然(或最小化负对数似然),模型会调整参数使其预测概率最接近真实概率。

2. 为什么对数?

  • 简化计算:对数化后,将乘积变为求和,优化更加高效。
  • 凸性:对数函数的特性使得损失函数在很多情况下是凸的,便于求解全局最优解。

4. 分类问题

对于多分类问题(如 softmax 分类器),假设类别标签为 y∈{1,2,…,K}y,模型预测类别 j 的概率为 \hat{y}_j = P(y=j|x)

似然函数

P(y|x) = \prod_{j=1}^K \hat{y}_j^{\mathbb{1}(y=j)}

其中 {1}(y=j)是指示函数,表示样本 y 是否属于类别 j。

对数化

\ell(\theta) = \log P(y|x) = \sum_{j=1}^K \mathbb{1}(y=j) \log \hat{y}_j

对数似然损失

对于整个数据集:

\mathcal{L}(\theta) = -\frac{1}{N} \sum_{i=1}^N \log \hat{y}_{i,y_i}

其中,\hat{y}_{i,y_i}​​ 是样本 i 对真实类别 y_i 的预测概率。


5. 代码实现

以下是二分类和多分类对数似然损失的 Python 实现:

1. 二分类损失

import numpy as npdef binary_log_likelihood_loss(y_true, y_pred):"""计算二元对数似然损失函数。参数:y_true: 真实标签数组,包含0和1,表示负类和正类。y_pred: 预测标签数组,包含0到1之间的浮点数,表示属于正类的概率。返回:返回二元对数似然损失函数的负均值。"""# 避免数值问题y_pred = np.clip(y_pred, 1e-10, 1 - 1e-10)# 计算并返回二元对数似然损失return -np.mean(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))# 示例
y_true = np.array([1, 0, 1, 1, 0])
y_pred = np.array([0.9, 0.1, 0.8, 0.7, 0.3])
# 计算损失并输出
loss = binary_log_likelihood_loss(y_true, y_pred)
print("Binary Log-Likelihood Loss:", loss)

输出结果

Binary Log-Likelihood Loss: 0.22944289410146546

2. 多分类损失

from sklearn.metrics import log_loss# 示例数据
# 实际的类别标签
y_true = [0, 2, 1, 2]
# 预测的类别概率,每个子列表代表一个样本预测为各个类别的概率
y_pred = [[0.9, 0.05, 0.05],[0.1, 0.1, 0.8],[0.2, 0.7, 0.1],[0.05, 0.1, 0.85]
]# 使用 sklearn 计算对数似然损失
# 该函数计算的是模型预测的类别概率与实际类别标签之间的对数似然损失
# 对于多分类问题,该损失函数可以衡量模型预测概率与真实标签之间的差异程度
loss = log_loss(y_true, y_pred)
print("Multi-class Log-Likelihood Loss:", loss)

输出结果

Multi-class Log-Likelihood Loss: 0.2119244851021358

6. 对数似然损失的应用

  1. 逻辑回归
  2. 神经网络
  3. 最大熵模型
    • 最大化熵等价于最小化负对数似然。

7. 优点与缺点

优点

  • 对概率建模有理论支撑,直观解释预测置信度。
  • 能有效捕捉预测概率的质量。

缺点

  • 对异常值敏感:错误分类的高置信预测会导致损失剧增。
  • 数值问题:log⁡(0) 会引发计算错误,需引入数值稳定策略。

对数似然损失函数连接了统计学中的最大似然估计与学习>机器学习中的损失优化,是现代监督学习模型的理论基石之一!


http://www.ppmy.cn/server/146206.html

相关文章

智能云在线编辑网站(完结篇)

开始及初步计划 1.前端tiptip编辑器框架vue3 2.后端Pythonflaskmysql 3.大模型调用:飞桨系列(ppasr) 前言:以此篇谨记从软件杯到天津生成式ai答辩过程及结束。 『如蚍蜉见青天,双肩难挑日月』,感叹世事多…

【Linux】指令合集

Linux指令合集 一、基本操作指令 ls:罗列出当前路径下所有的文件名。 常见选项: ls -a:显示所有文件,包括隐藏文件(以“.”开头的文件)。例如,在查看包含配置文件(通常为隐藏文件&a…

leetcode - LRU缓存

什么是 LRU LRU (最近最少使用算法), 最早是在操作系统中接触到的, 它是一种内存数据淘汰策略, 常用于缓存系统的淘汰策略. LRU算法基于局部性原理, 即最近被访问的数据在未来被访问的概率更高, 因此应该保留最近被访问的数据. 最近最少使用的解释 LRU (最近最少使用算法), 中…

代码随想录第十一天|栈与队列part02--150.逆波兰表达式求值、239.滑动窗口最大值、347.前k个高频元素、栈与队列总结篇

150.逆波兰表达式求值(150.逆波兰表达式求值) 题目分析: 计算逆波兰表达式(后缀表达式:左右中)的值,算符仅包含四则运算,操作数为一个整数或另一个表达式,整数除法向零…

多头注意力机制:从原理到应用的全面解析

目录 什么是多头注意力机制? 原理解析 1. 注意力机制的核心公式 2. 多头注意力的扩展 为什么使用多头注意力? 实际应用 1. Transformer中的应用 2. NLP任务 3. 计算机视觉任务 PyTorch 实现示例 总结 近年来,“多头注意力机制&…

【bug】AttributeError: module ‘openai‘ has no attribute ‘error’

【bug】AttributeError: module ‘openai’ has no attribute error’ 环境 openai 1.12.0详情 在处理 openai 请求异常的时候弹出该错误。 import openai# 错误 except openai.error.RateLimitError as e:xxx原因是新版 openai 库改变了API请求异常处理类的导入路径。 解…

计算机网络常见面试题总结(上)

计算机网络基础 网络分层模型 OSI 七层模型是什么?每一层的作用是什么? OSI 七层模型 是国际标准化组织提出的一个网络分层模型,其大体结构以及每一层提供的功能如下图所示: 每一层都专注做一件事情,并且每一层都需…

如何借助AI生成PPT,让创作轻松又高效

PPT是现代职场中不可或缺的表达工具,但同时也可能是令人抓狂的时间杀手。几页幻灯片的制作,常常需要花费数小时调整字体、配色与排版。AI的飞速发展为我们带来了革新——AI生成PPT的技术不仅让制作流程大大简化,还重新定义了效率与创意的关系…