
目录
在机器学习领域,极大似然估计(MLE)和交叉熵损失函数是两个核心概念,它们在模型训练和参数优化中扮演着至关重要的角色。本文将探讨这两个概念的定义、它们之间的关系,以及它们在实际应用中的重要性,并提供相应的代码示例。
极大似然估计(MLE)
极大似然估计是一种统计学方法,用于估计统计模型的参数。其基本思想是选择参数值,使得观测到的数据出现的概率(似然)最大化。在机器学习中,这意味着我们希望找到模型参数,使得模型在训练数据上的表现最佳,即最大化训练数据的似然概率。
代码示例:极大似然估计
以下是使用Python和NumPy库进行极大似然估计的一个简单示例。假设我们有一个简单的线性模型,我们想要估计模型参数。
import numpy as np
# 假设数据
X = np.array([[1], [2], [3], [4]])
y = np.array([2, 3, 5, 7])
# 线性模型参数
def linear_model(X, w, b):
return X.dot(w) + b
# 似然函数
def likelihood(X, y, w, b):
predictions = linear_model(X, w, b)
return np.prod(np.exp(-(predictions - y)**2 / 2) / np.sqrt(2 * np.pi))
# 极大似然估计
def mle(X, y):
# 初始参数
w = np.random.rand(X.shape[1])
b = np.random.rand()
# 梯度下降
learning_rate = 0.01
for _ in range(1000):
predictions = linear_model(X, w, b)
gradient_w = -2 * X.T.dot(predictions - y) / len(y)
gradient_b = -2 * np.sum(predictions - y) / len(y)
w -= learning_rate * gradient_w
b -= learning_rate * gradient_b
return w, b
# 估计参数
w, b = mle(X, y)
print(f"Estimated parameters: w = {w}, b = {b}")
在这个例子中,我们首先定义了一个线性模型,然后定义了一个似然函数来计算给定参数下数据的似然。接着,我们使用梯度下降算法来优化参数,以最大化似然函数。这个过程就是极大似然估计的实现。为了更好地理解这个过程,我们可以添加一些代码来可视化参数的优化过程。
import matplotlib.pyplot as plt
# 记录每次迭代的参数和损失
params_history = []
loss_history = []
# 极大似然估计,记录历史
def mle_with_history(X, y):
# 初始参数
w = np.random.rand(X.shape[1])
b = np.random.rand()
# 梯度下降
learning_rate = 0.01
for _ in range(1000):
predictions = linear_model(X, w, b)
loss = -np.sum(np.log(np.exp(-(predictions - y)**2 / 2) / np.sqrt(2 * np.pi)))
gradient_w = -2 * X.T.dot(predictions - y) / len(y)
gradient_b = -2 * np.sum(predictions - y) / len(y)
w -= learning_rate * gradient_w
b -= learning_rate * gradient_b
params_history.append([w, b])
loss_history.append(loss)
return w, b
# 估计参数并记录历史
w, b


1366

被折叠的 条评论
为什么被折叠?



