<p><strong>更新:</strong></p>
<p>原始的<a href="https://en.wikipedia.org/wiki/Mean_squared_error" rel="nofollow noreferrer">MSE</a>实现如下所示:</p>
<pre><code>def mean_squared_error(y_true, y_pred):
if not K.is_tensor(y_pred):
y_pred = K.constant(y_pred)
y_true = K.cast(y_true, y_pred.dtype)
return K.mean(K.square(y_pred - y_true), axis=-1)
</code></pre>
<p>我认为正确的最大化损失函数:</p>
^{pr2}$
<p>这样我们总是得到一个正的损耗值,就像MSE函数的情况一样,但是有相反的效果。在</p>
<p><strong>更新2:</strong>
最初我写道,由于优化方法的基本概念(您可以阅读一篇有趣的讨论<a href="https://discuss.pytorch.org/t/what-happens-when-loss-are-negative/47883/3" rel="nofollow noreferrer">here</a>),简单地否定损失的直觉第一思想将<strong>而不是</strong>给出我们预期的结果(您可以阅读一篇有趣的讨论<a href="https://discuss.pytorch.org/t/what-happens-when-loss-are-negative/47883/3" rel="nofollow noreferrer">here</a>)。
在我仔细检查了两种方法在特定学习任务中的结果后(注意:我没有做全面测试),两种方法都给出了损失最大化,尽管<code>-loss</code>方法收敛得更快。我不确定它是否总是给出最佳解决方案或任何解决方案,因为所描述的可能问题是<a href="https://discuss.pytorch.org/t/what-happens-when-loss-are-negative/47883/3" rel="nofollow noreferrer">here</a>。
如果有人有其他经验,请告诉我。在</p>
<p>因此,如果有人想尝试一下<code>-loss</code>也:</p>
^{3}$
<p><br/></p>
<h2><strong>其他详细信息:</strong></h2>
<p><strong>作者写道:</strong></p>
<blockquote>
<p>I have a generative adversarial networks, where the discriminator gets
minimized with the MSE and the generator should get maximized. Because
both are opponents who pursue the opposite goal.</p>
</blockquote>
<p><strong>来自Ibragil提供的链接:</strong></p>
<blockquote>
<p>Meanwhile, the generator is creating new, synthetic images that it
passes to the discriminator. It does so in the hopes that they, too,
will be deemed authentic, even though they are fake. The goal of the
generator is to generate passable hand-written digits: to lie without
being caught. The goal of the discriminator is to identify images
coming from the generator as fake.</p>
</blockquote>
<p><br/>
<strong>所以这是一个不适定问题:</strong></p>
<p>在<strong>GAN</strong>中,我们的最终目标是训练我们的两个对手,即<strong>鉴别器</strong>和<strong>发生器</strong>尽可能地相互竞争。这意味着,两种基学习算法的任务不同,但获得最优解的损失函数是相同的,即<code>binary_crossentropy</code>,因此模型的任务是使损失最小化。在</p>
<p>A<strong>鉴别器</strong>模型的编译方法:</p>
<pre><code>self.discriminator.compile(loss='binary_crossentropy', optimizer=optimizer)
</code></pre>
<p>A<strong>生成器</strong>模型的编译方法:</p>
<pre><code>self.generator.compile(loss='binary_crossentropy', optimizer=optimizer)
</code></pre>
<p>这就像两个跑步者的目标一样,尽可能缩短到达终点的时间,即使他们是这项任务的竞争对手。在</p>
<p><strong>所以“相反的目标”并不意味着相反的任务,即最小化损失(即在跑步者示例中最小化时间)。</strong></p>
<p>我希望有帮助。在</p>