分享

深度学习入门-必备数学知识-概率论

 人老颠东 2023-09-26 发布于安徽

深度学习和概率论的关系:

      深度学习是一种机器学习方法,它模仿人脑神经网络的结构和功能,通过多层次的神经网络来学习和提取数据中的特征,从而实现对复杂模式和关系的建模和预测。深度学习在计算机视觉、自然语言处理、语音识别等领域取得了显著的成果。

      概率论是数学中研究随机现象的理论,它研究随机事件的概率和随机变量的分布规律。概率论提供了一种严格的数学框架,用于描述和推理随机事件和数据的不确定性。概率论在统计学、机器学习等领域中被广泛应用,用于建立模型、估计参数、进行推断和预测等。

      深度学习和概率论在机器学习中常常结合使用。深度学习通常使用大量的数据来训练模型,而概率论提供了一种统计推断的方法,用于从有限的数据中推断出模型的参数和不确定性。概率论可以用于深度学习中的模型评估、不确定性估计、贝叶斯推断等任务。同时,深度学习也可以用于概率论中的参数估计、密度估计、生成模型等任务。

      总之,深度学习和概率论在机器学习中相互补充和结合,共同推动了人工智能领域的发展。

概率论的定义:

      概率论是数学中研究随机现象的理论。它研究随机事件的概率和随机变量的分布规律。

      在概率论中,一个随机事件是指在一定条件下可能发生或不发生的结果。例如,掷一枚硬币的结果可能是正面或反面,这就是一个随机事件。概率论通过定义和计算概率来描述随机事件的可能性。

      概率的定义可以从多个角度进行解释,其中一种常见的定义是频率定义。频率定义认为,一个事件发生的概率是指在重复试验中,该事件发生的相对频率趋近于一个固定的值。例如,如果我们重复掷一枚公平的硬币很多次,正面朝上的频率应该接近于0.5,因此我们可以说正面朝上的概率为0.5。

      另一种常见的概率定义是古典概率定义。古典概率定义适用于一些理论上确定的随机试验,其中每个可能的结果具有相等的概率。例如,掷一枚公平的骰子,每个面出现的概率都是1/6。

      除了频率和古典定义,还有其他的概率定义,如主观概率和条件概率等。主观概率是指个人主观上对事件发生的可能性的估计。条件概率是指在已知一些相关信息的条件下,事件发生的概率。

      概率论还研究随机变量的概率分布。随机变量是一种可以随机取不同值的变量,其取值由概率分布来描述。概率分布可以是离散的或连续的,常见的概率分布包括二项分布、正态分布、泊松分布等。

     概率论不仅仅是一种理论框架,它还提供了一套严格的数学方法和工具,用于描述和推理随机事件和数据的不确定性。它在统计学、机器学习、风险管理、金融工程等领域中被广泛应用。

概率论在PyTorch中的示例

      下面是一个使用PyTorch和概率论的示例,演示如何使用概率模型进行线性回归问题的建模和推断:

import torchfrom torch import nnfrom torch.distributions import Normal
# 生成一些随机数据torch.manual_seed(42)x = torch.randn(100, 1)y = 2 * x + 1 + 0.5 * torch.randn(100, 1)
# 定义线性回归模型class LinearRegression(nn.Module): def __init__(self): super(LinearRegression, self).__init__() self.linear = nn.Linear(1, 1) def forward(self, x): return self.linear(x)
# 创建线性回归模型实例model = LinearRegression()
# 定义概率分布对象prior = Normal(0, 1)likelihood = Normal(0, 1)
# 定义损失函数def loss_fn(x, y): y_pred = model(x) prior_loss = -prior.log_prob(model.linear.weight).sum() # 先验损失 likelihood_loss = -likelihood.log_prob(y - y_pred).sum() # 似然损失 return prior_loss + likelihood_loss
# 定义优化器optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
# 模型训练for epoch in range(100): optimizer.zero_grad() loss = loss_fn(x, y) loss.backward() optimizer.step() if (epoch + 1) % 10 == 0: print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')
# 查看训练结果print('真实权重:2.0, 真实偏置:1.0')print(f'训练得到的权重:{model.linear.weight.item():.4f}, 训练得到的偏置:{model.linear.bias.item():.4f}')

     在这个示例中,我们首先生成了一些带有噪声的随机数据。然后,我们定义了一个简单的线性回归模型,并使用概率分布对象来建立模型的先验和似然。损失函数使用先验损失和似然损失的和。使用Adam优化器进行模型训练,最终得到训练得到的权重和偏置。

     这个示例演示了如何使用PyTorch和概率论的概念来建立概率模型,并通过优化来进行模型推断和参数估计。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多