神经网络如何用于生成而不是分类?

人工智能 神经网络 深度学习 自然语言处理 循环神经网络
2021-10-20 05:03:22

根据我使用神经网络的经验,我只使用它们来获取输入向量并返回二进制输出。

但是,在视频https://youtu.be/ajGgd9Ld-Wc?t=214中,著名的人工智能专家李开复展示了一个深度网络,该网络采集了特朗普演讲的数千个样本并生成中文输出。

简而言之,如何使用深度网络/神经网络来生成输出而不是给出答案是或否此外,这些网络是如何训练的?这里的任何人都可以为我提供一个能够做到这一点的简单设计吗?

2个回答

将神经网络视为通用函数逼近器(在一组约束下具有无限宽度,这实际上是可证明的)。现在,在您提供的上下文中讨论生成时,您基本上想从一些分布中汲取p(y|c)在哪里y是你的输出和c是您的上下文或输入。

定理:对于任何分布Ω, 如果我们取zN(0,I), 存在一个函数f在哪里f(z)Ω.

鉴于上述定理(出于本文的目的,我不需要证明它,但它与通用逼近定理证明非常相似)并且如果我们将神经网络作为伪通用函数逼近器,如果我们有一个有效的可以学习参数的目标或训练程序f, 采样就像采样一样简单N(0,I)然后申请f.

所以真正的诀窍是找到一个好的训练程序,这就是你看到 GAN、VAE 和其他模型/方案发挥作用的地方。

当没有像文本中那样的自相关时,我上面所说的一切都非常有效,但是当有自相关时,上述方法会导致组合大的输出空间,这在词汇量通常跨越一对夫妇之间的情况下是不现实的千和几十万。因此,为了处理这个问题,他们通过利用自相关将联合概率建模为其贝叶斯分解来对联合进行建模。

p(w)=p(w0)i=1N1p(wi|w<i)

既然有一个框架可以有效地模拟这种类型的输出,我们又回到了我们正在寻找聪明的训练方案的位置。在这种情况下,您通常会看到带有教师强制的 RNN 或其他顺序模型训练(@nbro 在他的回答中也描述了这一点),或者使用类似于 GAN 的组合,使用强化学习来处理采样中缺乏可区分性或使用 Gumbel 之类的近似值-Softmax 或中间损失采样(我实际开发的方法)

我希望这回答了你的问题。

如果输出可以,那么你有一个离散和二进制输出,所以这个问题被称为二进制分类,也就是说,它是将输入分类(或分类)为两个类别(或类)之一的任务)。您还可以拥有一个神经网络,其输出可以采用两个以上可能的离散值,可用于解决多类分类问题例如,输出一个句子的神经网络,它由n话,在哪里n>1. 一般来说,输出不一定需要从一组离散值(或类)中取值,但它也可以取值(例如浮点数)。在这种情况下,问题称为回归例如,在给定图片的情况下预测一个人的身高(一个数值)的任务。

有不同类型的神经网络。最简单的神经网络要么是感知器(如果你认为它是神经网络),要么是多层前馈神经网络,即只有前向连接的神经网络,可能有多层。还有卷积神经网络 (CNN) 和循环神经网络 (RNN),它们是更复杂的神经网络,更适合分别处理图像或序列。还有生成神经网络(例如变分自动编码器),它们经过训练以学习分布,然后您可以从中采样

在您的具体示例中,可以使用循环神经网络或生成模型(或两者的组合)生成句子。更准确地说,可以训练一个循环生成模型来学习英语或汉语的规则。然后你从这个分布中抽样来生成句子。原则上,也可以使用更简单的神经网络(例如多层感知器)生成句子,但在实践中,这可能效率更低。