训练期间听神经网络梯度规范

训练神经网络通常是通过测量许多不同的指标来完成的,如精度、损失、梯度等。大部分时间是在TensorBoard上聚合这些指标和绘制可视化图。

但是,我们可以用来监控神经网络的训练,例如声音。声音是目前在培训神经网络训练中探索的观点之一。亚洲金博宝人类听证会非常好,即使当这些扰动在时间或微亚洲金博宝妙的情况下,即使这些扰动都很短,也可以很好地区分诸如节奏和俯仰的特征的扰动。

对于这个实验,我做出了一个非常简单的例子,示出了使用各层的梯亚洲金博宝度范数和用于使用不同的学习率,优化器,优化器,优化器,优化器,优化器的卷积神经网络训练训练的步骤制造了一个非常简单的例子。等

你需要安装Pyaudio.PyTorch运行代码(在这篇文章的结尾)。

使用LR 0.01使用SGD培训声音

该段代表了第一个时代的前200步和使用10的前200步和10的前200步之间的梯度培训会话。间距越高,层的范数越高,表示不同的批次。指示不同的批次。注意渐变期间的渐变增加。

使用LR 0.1使用SGD培训声音

与上述相同,但学习率较高。

使用LR 1.0使用SGD培训声音

与上述相同,但具有高学习率使网络发散,当规范爆炸然后发散时,注意高度的高度。

使用LR 1.0和BS 256使用SGD培训声音

相同的设置,但具有1.0的高学习率和256的批量大小。注意梯度如何爆炸,然后有否导致最终声音的NAN。

使用lr 0.01使用adam培训声音

这是在和SGD相同的环境下使用亚当。

源代码

对于那些感兴趣的人,这里是我用来制作声音剪辑的整个源代码:

导入pyaudio导入numpy作为np import wave导入火炬导入torch.nn作为nn import torch.nn.functionas作为f import torch.optim作为来自浪漫导入数据集的Optim,转换类网(nn.module):def __init __(self):super(net,self).__ init __()self.conv1 = nn.conv2d(1,20,5,1)self.conv2 = nn.conv2d(20,50,5,1)self.fc1 = nn.linear(4 * 4 * 50,500)self.fc2 = nn.lilear(500,10)self.ordered_layers = [self.conv1,self.conv2,self.fc1,self.fc2] def forward(self,x):x= f.relu(self.conv1(x))x = f.max_pool2d(x,2,2)x = f.relu(self.conv2(x))x = f.max_pool2d(x,2,2)x= x.view(-1,4 * 4 * 50)x = f.relu(self.fc1(x))x = self.fc2(x)返回f.log_softmax(x,dim = 1)def open_stream(fs):p = pyaudio.PyAudio() stream = p.open(format=pyaudio.paFloat32, channels=1, rate=fs, output=True) return p, stream def generate_tone(fs, freq, duration): npsin = np.sin(2 * np.pi * np.arange(fs*duration) * freq / fs) samples = npsin.astype(np.float32) return 0.1 * samples def train(model, device, train_loader, optimizer, epoch): model.train() fs = 44100 duration = 0.01 f = 200.0 p, stream = open_stream(fs) frames = [] for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() norms = [] for layer in model.ordered_layers: norm_grad = layer.weight.grad.norm() norms.append(norm_grad) tone = f + ((norm_grad.numpy()) * 100.0) tone = tone.astype(np.float32) samples = generate_tone(fs, tone, duration) frames.append(samples) silence = np.zeros(samples.shape[0] * 2, dtype=np.float32) frames.append(silence) optimizer.step() # Just 200 steps per epoach if batch_idx == 200: break wf = wave.open("sgd_lr_1_0_bs256.wav", 'wb') wf.setnchannels(1) wf.setsampwidth(p.get_sample_size(pyaudio.paFloat32)) wf.setframerate(fs) wf.writeframes(b''.join(frames)) wf.close() stream.stop_stream() stream.close() p.terminate() def run_main(): device = torch.device("cpu") train_loader = torch.utils.data.DataLoader( datasets.MNIST('../data', train=True, download=True, transform=transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ])), batch_size=256, shuffle=True) model = Net().to(device) optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5) for epoch in range(1, 2): train(model, device, train_loader, optimizer, epoch) if __name__ == "__main__": run_main()
将本文引用为:Christian S. Perone,“在培训期间听神经网络梯度规范”亚洲金博宝未发现的地域04/08/2019,//www.cpetem.com/2019/08/listening-to-the-neural-network-gradient-norms-during-training/

可视化网络集合与引导和随机先验

几个月前,我写了一篇关于用于深度强化学习的随机先验函数,我展示了如何在Pytorch中实现培训过程以及如何从它们中提取模型不确定性。

使用与前面相同的代码,下面的这些动画展示了在不同设置下训练40个模型和2层MLP以及20个隐藏单位。这些可视化很好地理解了在使用或不使用引导法或随机先验时收敛性的差异。

天真的合奏

这是一个没有自举数据或添加随机先验的训练课程,它只是一个幼稚的集合:

与随机先前的合奏

这是集合,但随着随机的先前(具有相同架构的MLP,随机重量和固定):

$$ q _ {\ theta_k}(x)= f _ {\ theta_k}(x)+ p_k(x)$$

最终模型\(q _ {\ theta_k}(x)\)将是与未经培训的函数\(f _ {\ theta_k}(x)\)\(p_k(x)\)

与随机的先前和引导集合合奏

这是一个具有随机先前功能和数据引导的集合:

与固定的先前和自动启动合奏

这是一个具有固定的先前(SIN)和引导的集合:

将本文引用:Christian S. Perone,“使用自动启动和随机提升器可视化网络集合”亚洲金博宝未发现的地域,20/07/2019,//www.cpetem.com/2019/07/visualizing-network-ensembles-with-bootstrap-dand-randomized-priors/

Numpy dispatcher:当Numpy成为生态系统的协议时

介绍

没有很多人与Python科学生态系统一起使用的人都知道NEP 18.(NumPy的高级数组函数的分派机制)。鉴于本协议的重要性,我决定将此简短的介绍写入新的调度员,当然会带来一个许多好处对于Python科学生态系统。

如果您使用PyTorch、TensorFlow、Dask等,您肯定会注意到它们的API契约与Numpy的相似性。Numpy的API是科学计算中最基础、最广泛使用的API之一,这并非偶然。Numpy是如此的普遍,以至于它不再仅仅是一个API,它更多地变成了一个协议或API规范。

阅读更多

Benford关于GPT-2语言模型的法律

几个月前我写过本福德定律是如何从语言模型中产生的,今天我决定用同样的方法来评估一下GPT-2会表现出一些句子,事实证明,它似乎也捕获了这些权力法。您可以找到一些具有下面的示例的绘图,绘图显示了指定特定句子的数字概率,例如“人口规模为"$$P(\{1,2, \ldots, 9\} \vert \text{“人口规模为”})$$用于GPT-2中型模型(3.45亿):

将本文引用:Christian S. Perone,“Genford法律上的GPT-2语言模型”亚洲金博宝未发现的地域,14/06/2019,//www.cpetem.com/2019/06/benford-law-on-gpt--language-model/

在PyTorch中随机分配先验函数

训练有素的MLP,有2层和先前的正弦。

我正在尝试“描述”中描述的方法用于深度强化学习的随机先验函数在那里,他们设计了一种非常简单实用的方法来处理不确定性,使用bootstrap和随机先验,并决定共享PyTorch亚洲金博宝代码。

我真的喜欢引导方法,在我看来,他们通常是实现和提供与贝叶斯方法的深度连接的最简单的最良好的后近似的方法,而无需处理变分推理。亚洲金博宝它们实际上展示了在线性案例中,该方法提供了贝叶斯后部。

该方法的主要思想是通过bootstrap提供一个非参数数据扰动和随机先验,这些先验只不过是随机初始化的网络。

$$ q _ {\ theta_k}(x)= f _ {\ theta_k}(x)+ p_k(x)$$

最终模型\(q _ {\ theta_k}(x)\)将是与未经培训的函数\(f _ {\ theta_k}(x)\)\(p_k(x)\)。

让我们看看代码。第一个类是一个简单的MLP,有2个隐藏层和Glorot初始化:

类MLP(nn.module):def __init __(self):super().__ init __()self.l1 = nn.lethear(1,20)self.l2 = nn.lilear(20,20)self.l3 = nn。Linear(20, 1) nn.init.xavier_uniform_(self.l1.weight) nn.init.xavier_uniform_(self.l2.weight) nn.init.xavier_uniform_(self.l3.weight) def forward(self, inputs): x = self.l1(inputs) x = nn.functional.selu(x) x = self.l2(x) x = nn.functional.selu(x) x = self.l3(x) return x

然后,我们定义一个类,它将使用模型和之前产生最终的模型结果:

Class ModelWithPrior(NN.Module):def __init __(self,base_model:nn.module。prior_scale = prior_scale def forward(self, inputs): with torch.no_grad(): prior_out = self.prior_model(inputs) prior_out = prior_out.detach() model_out = self.base_model(inputs) return model_out + (self.prior_scale * prior_out)

基本上就是这样!如您所见,这是一个非常简单的方法,在第二部分中亚洲金博宝,我们只创建了一个定制forward()来避免计算/累积先前网络的梯度,以及它们将其与模型预测相加(缩放后)。

要培训它,您只需要为每个集合模型使用不同的引导,如下面的代码:

def train_model(x_train,y_train,base_model,prior_model):model = modelwithprior(base_model,prior_model,1.0)lock_fn = nn.mseloss()优化器= torch.optim.adam(model.parameters(),lr = 0.05)为时代范围(100):model.train()preds = model(x_train)丢失= lock_fn(preds,y_train)优化程序。zero_grad()lock.backward()优化器.step()返回模型

使用具有替换(Bootstrap)的采样器如下所示:

dataset = tensordataset(...)bootstrap_sampler = randomsampler(dataSet,true,len(dataSet))train_dataloader = dataloader(数据集,batch_size = len(dataSet),sampler = bootstrap_sampler)

在这种情况下,我使用了原始纸张中使用的相同的小型数据集:

在使用简单的MLP培训之后,不确定性的结果如下所示:

训练有素的模型,使用MLP之前,使用了50种型号的集合。

如果我们看看前瞻师,我们会看到未经培训的网络的变化:

我们还可以可视化各个模型预测,显示出由于不同的初始化以及引导噪声而导致的可变性:

绘制红色的每个单独的模型预测和真实数据。

现在,什么也很有意思,是我们可以在让我们说一个固定的正弦:

Class Sinprior(NN.Module):Def Forward(Self,Input):返回火炬。(3 *输入)

然后,当我们训练相同的MLP模型,但这次使用正弦先验,我们可以看到它是如何影响最终的预测和不确定性界:

如果我们展示每个单独的模型,我们可以看到先前贡献对每个单独的模型的影响:

绘制集合培训的每个单独模型,在先前用正弦训练。

我希望你喜欢,这是一种非常惊人的结果,这是一个至少通过线性的“Sanity检查”的简单方法。我将探索一些预先训练的网络,以便在看到对预测的不同效果之前,这是一个非常有趣的方式来添加一些简单的前瞻。亚洲金博宝

将本文引用:Christian S. Perone,“Pytorch中的随机事先函数,”亚洲金博宝未发现的地域24/03/2019,//www.cpetem.com/2019/03/randomized-prior-functions-in-pytorch/

大理介绍最大似然估计(MLE)和最大后验(MAP)

它是令人沮丧的学习原则,如最大似然估计(MLE),最大后验(MAP)和贝叶斯推理一般。在我看来,造成这种困难的主要原因是,许多教程假设已经有了知识,使用隐式或不一致的表示法,或者甚至解决了完全不同的概念,从而重载了这些原则。

那些上述问题使新人能够了解这些概念,而且我经常被许多辅导误导的人误解。亚洲金博宝出于这个原因,我决定向这些概念写出一个理智的介绍,并在试图解释每个制定的一步时,详细说明他们的关系和隐藏的互动。亚洲金博宝我希望为新的东西带来一些新的东西,以帮助人们了解这些原则。

最大似然估计

最大似然估计是一种方法或原理,用于估计参数或参数的模型给定的观察或观察。最大似然估计又缩写为MLE,又称极大似然法。从这个名字,你可能已经理解了这个原理是通过最大化可能性来工作的,因此,理解最大似然估计的关键是首先理解什么是可能性以及为什么有人想要最大化它来估计模型参数。

让我们从持续案例的似然函数的定义开始:

$$ \ mathcal {l}(\ theta | x)= p _ {\ theta}(x)$$

左词意味着“参数\(\ theta \)的可能性,给定数据\(x \)”。这是什么意思 ?这意味着在连续情况下,模型\(p _ {\ theta}(x)\)与参数化\(\ theta \)和data \(x \)的可能性是概率密度函数(PDF)具有该特定参数化的模型。

Although this is the most used likelihood representation, you should pay attention that the notation \(\mathcal{L}(\cdot | \cdot)\) in this case doesn’t mean the same as the conditional notation, so be careful with this overload, because it is always implicitly stated and it is also often a source of confusion. Another representation of the likelihood that is often used is \(\mathcal{L}(x; \theta)\), which is better in the sense that it makes it clear that it’s not a conditional, however, it makes it look like the likelihood is a function of the data and not of the parameters.

模型\(p _ {\ theta}(x)\)可以是任何分发,并制作混凝土,让我们说我们正在假设数据生成分发是一个单变量的高斯分布,我们定义下面:

$$
开始\{对齐}
p(x)&\ sim \ mathcal {n}(\ mu,\ sigma ^ 2)\\
p(x; \ mu,\ sigma ^ 2)&\ sim \ frac {1} {\ sqrt {2 \ pi \ sigma ^ 2} \ exp {\ bigg [ - \ frac {1} {2} \ bigg(\ frac {x-\ mu} {\ sigma} \ bigg)^ 2 \ bigg]}
\结束{align}
$$

如果您用不同的参数化绘制这种概率密度函数,您将获得类似于下面的图,其中红色分布是标准高斯\(p(x)\ sim \ mathcal {n}(0,1.0)\):

188bet app
正态分布概率密度函数(PDFs)的选择。平均值(an)和方差(an)都是可变的。图中给出了关键。资源:Wikimedia Commons。

如上所述在概率密度函数(PDF)曲线上,因此在y轴上显示了各种给定的实现的\(x \)的可能性。这里的另一个混淆来源是,人们通常将此作为概率,因为他们通常会看到这些法线的曲线,但可能性总是低于1,然而,概率密度函数不会给你概率但密度。PDF的约束是它必须集成到一个:

$$ int_{-\infty}^{+\infty} f(x)dx = 1$$

因此,对于许多不同分布的许多点,密度大于1的密度是完全正常的。以例如pdf为例β发行下面:

188bet开户注册平台
分布的概率密度函数。来源:维基共享。

如您所见,PDF在分布的许多参数化上以上的密度显示在许多参数化之上,同时仍将其集成到1和遵循概率的第二个公理之后:单位测量。

那么,回到我们最初的最大似然估计原则,我们想要的是最大化我们观测数据的可能性\(\mathcal{L}(\theta | x)\)。在实践中,这意味着我们要找到模型的参数\(\theta\),使模型生成数据的可能性最大化,我们要找到哪个参数此模型的参数是最合理的要生成此观察到的数据,或者将该样本最有可能的参数是什么?

对于我们的单变量高斯模型的情况,我们想要的是找到参数\(\ mu \)和\(\ sigma ^ 2 \),这对于方便的符号,我们倒入一个参数向量:

$$ \ theta = \ begin {bmatrix} \ mu \\ \ sigma ^ 2 \ neg {bmatrix} $$

因为这些统计量完全定义了我们的单变量高斯模型。那么,让我们来构建最大似然估计的问题:

$$
开始\{对齐}
\ hat {\ theta}&= \ mathrm {arg} \ max_ \ theta \ mathcal {l}(\ theta | x)\\
&= mathrm {arg} \ max_ \ theta p _ {\ theta}(x)
\结束{align}
$$

这就是说,我们希望通过最大化给定数据\(x\)的参数\(\theta\)的可能性来获得最大似然估计\(\hat{\theta}\),使\(p_{\theta}(x))接近底层的“真实”分布\(p_{\theta^*}(x)\)。你不应该把最大似然估计\(\hat{\theta}(x)\)和最大似然估计\(\hat{\theta}\)混淆,所以要注意在头脑中消除歧义。最大似然估计是数据的最大似然估计器(x)的实现。

但是,我们需要在该制剂中纳入多种观察,并通过增加多种观察结果,我们最终得到复杂的联合分布:

$$ \ hat {\ theta} = \ mathrm {arg} \ max_ \ theta p _ {\ theta}(x_1,x_2,\ ldots,x_n)$$

需要考虑所有观察之间的相互作用。这里是我们做出强烈的假设:我们说明了观察是独立的。独立随机变量意味着以下持有:

$$ p _ {\ theta}(x_1,x_2,\ ldots,x_n)= \ prod_ {i = 1} ^ {n} p _ {\ theta}(x_i)$$

这意味着由于\(x_1,x_2,\ ldots,x_n \)不包含关于彼此的信息,我们可以将联合概率写作其边缘的产品。

制作的另一个假设是这些随机变量是相同分布,这意味着它们来自同样的发电分配,这使我们能够用相同的分布参数化来模拟它。

鉴于这两个假设,也称为Iid.(独立和相同分布),我们可以制定我们的最大可能性估计问题,如:

$$ \ hat {\ theta} = \ mathrm {arg} \ max_ \ theta \ prod_ {i = 1} ^ {n} p _ {\ theta}(x_i)$$

注意,MLE并不要求您做这些假设,但是,如果您不做这些假设,将会出现许多问题,例如每个样本的分布不同,或者必须处理联合概率。

鉴于在许多情况下,我们乘法的这些密度可以非常小,在我们上面的产品中乘另一个人乘以一个非常小的值。亚洲金博宝这是对数函数使其到可能性的地方。日志函数是一个严格单调的越来越多的功能,可以保留所在的位置极值并有一个非常好的财产亚洲金博宝:

$$\log ab = \log a + \log b $$

其中产品的对数是对数的总和,这对我们来说非常方便,所以我们将对数施加到最大化所谓的东西的可能性亚洲金博宝日志可能:

$$
开始\{对齐}
\ hat {\ theta}&= \ mathrm {arg} \ max_ \ theta \ prod_ {i = 1} ^ {n} p _ {\ theta}(x_i)\\
& = \ mathrm {arg} \ max_ \θ\ sum_ {i = 1} ^ {n} \ log p_{\θ}(x_i) \ \
\结束{align}
$$

正如您所看到的,我们从一个产品到一个求和,这更方便。应用对数的另一个原因是我们经常采取衍生物并解决参数,因此比乘法更容易使用求和。

我们也可以方便地平均日志可能性(鉴于我们只是包括常量的乘法):

$$
开始\{对齐}
\ hat {\ theta}&= \ mathrm {arg} \ max_ \ theta \ sum_ {i = 1} ^ {n} \ log p _ {\ theta}(x_i)\\
& = \ mathrm {arg} \ max_ \θ\压裂{1}{n} \ sum_ {i = 1} ^ {n} \ log p_{\θ}(x_i) \ \
\结束{align}
$$

这也很方便,因为它将消除对观测数量的依赖。我们也知道,通过大数定律,以下为\(n\to\infty\):

$$
\ frac {1} {n} \ sum_ {i = 1} ^ {n} \ log \,p _ {\ theta}(x_i)\ inflicat \ mathbb {e} _ {x \ sim p _ {\ theta ^ *}(x)} \ left [\ log \,p _ {\ theta}(x)\右]
$$

正如您所看到的,我们近似于期望经验期望由我们的DataSet \(\ {x_i \} _ {i = 1} ^ {n})定义。这是一个重要的点,通常暗示地假设。

弱大数定律可以用切比雪夫界限来界定,如果你对浓度不等式感兴趣,我已经做了188asia.net这里我讨论了切比雪夫边界。

为了完成我们的配方,鉴于我们通常最小化目标,我们可以制定与日志似然负值的最小化相同的最大可能性估计:

$$
\ hat {\ theta} = \ mathrm {arg} \ min_ \ theta - \ mathbb {e} _ {x \ sim p _ {\ theta ^ *}(x)\左[\ log \,p _ {\ theta}(x)\右]
$$

这与否定将最大化问题转化为最小化问题是完全相同的。

从信息理论与Kullback-Leibler发散的最大似然估计的关系

众所周知,最大化可能性与最小化相同Kullback-Leibler分歧,也称为KL散度。这很有趣,因为它连亚洲金博宝接了一个度量信息理论最大可能性原则。

KL发散定义为:

$$
\ begin {公式}
D_ {KL} (p | | q = \ int p (x) \ log \压裂{p (x)}{问(x)} \ dx
\结束{等式}
$$

理解KL散度有很多直觉,我个人比较喜欢这个角度可能性比率但是,有很多材料可以轻松找到,它超出了这一介绍的范围。

KL发散基本上是对\(P(x)\)分布下的对数似然比的期望。我们在下面做的是通过使用期望的一些身份和属性来重新描述:

$$
开始\{对齐}
D_ {KL} [p_{\θ^ *}(x) \ \绿色\,p_ \θ(x)] & = \ mathbb {E} _ {x \ sim p_{\θ^ *}(x)} \离开[\ log \压裂{p_{\θ^ *}(x)} {p_ \θ(x)} \右]\ \
\ label {eq:logquotient}
& = \ mathbb {E} _ {x \ sim p_{\θ^ *}(x)} \离开[\ log \, p_{\θ^ *}(x) - \ log \, p_ \θ(x) \] \ \
\ label {eq:linearization}
&= \ mathbb {e} _ {x \ sim p _ {\ theta ^ *}(x)} \ undbrace {\ left [\ log \,p _ {\ theta ^ *}(x)\ rectle]} _ {\文本{p end} p _ {\ theta ^ *}(x)} - \ underbrace {\ mathbb {e} _ {x \ sim p _ {\ theta ^ *}(x)} left [\ log \,p_ {\ theta}(x)\ offer]}} _ {\ text {log-likeeliious的否定}}
\结束{align}
$$

在上面的制定中,我们首先使用的是,商品的对数等于分子和分母的日志(等式\(\ ref {eq:logquotient})的差异。之后我们使用期望的线性化(等式\(\ ref {eq:linearization} \)),它告诉我们\(\ mathbb {e} \ left [x + y \ light] = \ mathbb {e}\ left [x \ light] + \ mathbb {e} \ left [y \ reval] \)。最后,我们留下了两个术语,左列第一是右边的这个你可以认出来负的对数似然我们之前看到的。

If we want to minimize the KL divergence for the \(\theta\), we can ignore the first term, since it doesn’t depend of \(\theta\) in any way, and in the end we have exactly the same maximum likelihood formulation that we saw before:

$$
\ begin {eqnarray}
\要求{取消}
\θ^ * & = & \ mathrm {arg} \ min_ \θ\取消{\ mathbb {E} _ {x \ sim p_{\θ^ *}(x)} \离开[\ log \, p_{\θ^ *}(x) \]} - \ mathbb {E} _ {x \ sim p_{\θ^ *}(x)} \离开[\ log \, p_{\θ}(x) \] \ \
&=&\ mathrm {arg} \ min_ \ theta - \ mathbb {e} _ {x \ sim p _ {\ theta ^ *}(x)}左[\ log \,p _ {\ theta}(x)\对]
结束\ {eqnarray}
$$

条件对数可能

机器亚洲金博宝学习中的一个非常常见的情景是监督学习,我们有数据点\(X_N \)及其标签\(y_n \)构建我们的数据集\(d = \ {(x_1,y_1),(x_2,y_2),\ldots, (x_n, y_n) \} \), where we’re interested in estimating the conditional probability of \(\textbf{y}\) given \(\textbf{x}\), or more precisely \( P_{\theta}(Y | X) \).

要扩展条件情况的最大可能性原则,我们只需将其写为:

$$
\ hat {\ theta} = \ mathrm {arg} \ min_ \ theta - \ mathbb {e} _ {x \ sim p _ {\ theta ^ *}(y | x)} \ left [\ log \,p _ {\Theta}(y | x)\右]
$$

然后可以很容易地推广,得到线性回归公式:

$$
p_{\θ}(y | x) \ sim \ mathcal {N} (x ^ T \θ,\σ^ 2)\ \
\ log p _ {\ theta}(y | x)= -n \ log \ sigma - \ frac {n} {2} \ log {2 \ pi} - \ sum_ {i = 1} ^ {n} {\ frac{\ |x_i ^ t \ theta - y_i \ |} {2 \ sigma ^ 2}}
$$

在这种情况下,您可以看到我们最终得到了一个平方误差之和,其将具有相同的位置的平均误差(MSE)的最佳位置。因此,您可以看到最小化MSE相当于最大化高斯模型的可能性。

关于最大可能性的备注

最大似然估计具有非常有趣的属性,但它仅给我们亚洲金博宝点估计数,这意味着我们不能根据这些估计的分布进行推理。相比之下,贝叶斯推理可以给我们一个参数的完整分布,因此将允许我们关于后部分布的原因

我将写更多关于贝叶斯推断和抽样方法的内容,比如来自马尔可夫链蒙特卡洛(MCMC)族的方法,但我将把这个留给另一篇文章,现在我将继续展示最大似然估计量与最大后验(MAP)估计量的关系。

最大后验

虽然最大的后验,但也称为地图,也为我们提供了一种点估计,它是一种贝叶斯概念,它包括在参数上之前的概念。我们还将看到地图与正则化的MLE估算有着强烈的连接。

根据贝叶斯规则,我们可以由似然和先验的乘积得到后验,通过证据归一化:

$$
开始\{对齐}
p(\ theta \ vert x)&= \ frac {p _ {\ theta}(x)p(\ theta)} {p(x)} \\
{情商:proport} \标签
&\ propto p _ {\ theta}(x)p(\ theta)
\结束{align}
$$

In the equation \(\ref{eq:proport}\), since we’re worried about optimization, we cancel the normalizing evidence \(p(x)\) and stay with a proportional posterior, which is very convenient because the marginalization of \(p(x)\) involves integration and is intractable for many cases.

$$
开始\{对齐}
\ theta_ {map}&= mathop {\ rm arg \,max} \ limits _ {\ theta} p _ {\ theta}(x)p(\ theta)\\
&= mathop {\ rm arg \,max} \ limits _ {\ theta} \ prod_ {i = 1} ^ {n} p _ {\ theta}(x_i)p(\ theta)\\
&= \ mathop {\ rm arg \,max} \ limits _ {\ theta} \ sum_ {i = 1} ^ {n} \ undbrace {\ log p _ {\ theta}(x_i)} _ {\ text {log oilli} \ \ undbrace {p(\ theta)} _ {\ text {prior}}
\结束{align}
$$

在上面的这种制定中,我们刚刚遵循与前面更早的最大似然估计器所述的步骤,我们假设独立性和相同的分布设置,然后通过对数应用来从产品切换到求和。正如您在最终制定中看到的那样,这是等同的,因为最大似然估计乘以先前任期。

我们还可以通过使用统一的先前\(p(\ theta)\ sim \ textbf {u}(\ cdot,\ cdot)\)来轻松恢复确切的最大可能性估计器。这意味着每个可能的\(\ thet亚洲金博宝a \)的值将同样加权,这意味着它只是一个常量乘法:

$$
开始\{对齐}
地图\ theta_ {} & = \ mathop {\ rm arg \马克斯}\ limits_{\θ}\ sum_i \ log p_{\θ}(x_i) p(θ)\ \ \
&= mathop {\ rm arg \,max} \ limits _ {\ theta} \ sum_i \ log p _ {\ theta}(x_i)\,\ text {constant} \\
&= \ \ uchbrace {\ mathop {\ rm arg \,max} \ limits _ {\ theta} \ sum_i \ log p _ {\ theta}(x_i)} _ {\ text {等于最大似然估计(mle)}}}\
\结束{align}
$$

就是这样,具有统一先验的映射等价于MLE。高斯先验也可以很容易地恢复L2正则化的最大似然值。这是非常有趣的,因为它可以为我们经常使用的正则化术语提供深刻的见解和一个新的视角。

我希望你喜欢这篇文章!下一个将是关于贝叶斯推论的后验水,我们将展示我们如何推理后部分布,而不仅仅是在地图和MLE中看到的点估计。

- Christian S. Perone

将本文引用为:基督徒S. Perone,“介绍最大似然估计(MLE)和最大后验(地图),”亚洲金博宝未发现的地域02/01/2019,//www.cpetem.com/2019/01/mle/

188bet手机版客户端

上周我发布了第一个公开版本euclidesdb。EuclidesDB是一个与PyTorch紧密耦合的多模型机器学习特征数据库,它提供了一个后端用于包含和查询模型特征空间上的数据。

有关更多信息,请参见金宝博游戏网址github存储库或者文档

EuclidesDB的一些特性如下所示:

  • 用C ++写的性能;
  • 使用protobuf进行数据序列化;
  • 使用GRPC进行沟通;
  • LeveldB集成数据库序列化;
  • 许多实施的索引方法(烦恼,Faiss.等);
  • 通过libtorch紧缩Pytorch集成;
  • 轻松集成新的自定义微调模型;
  • 轻松的客户语言装订生成;
  • 免费和开放源码的许可;

这里是整体架构的图: