赞
踩
单隐层神经网络
具有隐层的神经网络具有普遍性:给定足够的隐单元,它可以逼近任意函数。这是一个经常引用的——甚至更频繁地被误解和应用——定理。
确实如此,本质上是因为隐藏层可以用作查找表。
为了简单起见,让我们考虑一个感知器网络。感知器是一个非常简单的神经元,当它超过某个阈值试就会发出信号,如果没有达到这个阈值就不会发出信号。感知器网络获得二进制(0和1)输入并给出二进制输出。
请注意,可能的输入数量有限。对于每一个可能的输入,我们可以在隐层中构造一个神经元来激发输入,并且只在那个特定的输入上。然后,我们可以使用该神经元和输出神经元之间的连接来控制特定情况下的输出。
因此,一个隐层神经网络确实是通用的。但这并没有什么特别令人印象深刻或令人兴奋的地方。说您的模型可以做与查找表相同的事情并不是非常有力的论据。这只是意味着你的模型并不是不可能完成任务的。
通用性意味着一个网络可以适应你给它的任何训练数据。这并不意味着它将以合理的方式插值到新的数据点。
不是的,通用性并不能解释为什么神经网络如此有效。真正的原因似乎是一些更微妙的…。为了理解它,我们首先需要了解一些具体的结果。
词嵌入
我想从一个特别有趣的深度学习研究开始:单词嵌入。在我个人看来,尽管它们最初是由Bengio等人在十多年前提出的,但目前仍是深度学习中最令人兴奋的研究领域之一。除此之外,我认为它们获得直觉关于为什么深度学习如此有效是最好的地方之一。
一个字嵌入 W:words→ℝn W : w o r d s → R n W: \mathrm{words} \to \mathbb{R}^n 是一种将某些语言中的单词映射到高维向量(可能是200-500维)的参数化函数。例如,我们可能会发现:
W(‘‘cat")=(0.2, -0.4, 0.7, …) W ( ‘ ‘ cat " ) = ( 0.2 , - 0.4 , 0.7 , . . . ) W(``\text{cat}\!") = (0.2,~ \text{-}0.4,~ 0.7,~ …)
W(‘‘mat")=(0.0, 0.6, -0.1, …) W ( ‘ ‘ mat " ) = ( 0.0 , 0.6 , - 0.1 , . . . ) W(``\text{mat}\!") = (0.0,~ 0.6,~ \text{-}0.1,~ …)
(通常,函数是一个查找表,由一个矩阵 θ θ \theta参数化,每一个单词都有一行: Wθ(wn)=θn W θ ( w n ) = θ n W_\theta(w_n) = \theta_n)
W W W 被初始化为每个单词都有随机向量。它学习拥有意义的向量来执行某些任务。
例如,我们可以训练一个网络的一个任务是预测一个5-gram(五个单词的序列)是否是“有效的”。我们可以很容易地从维基百科得到很多5-grams(例如:”cat sat on the mat”),然后用一个随机单词(例如:“cat sat song the mat”)换掉其中的一半,因为这几乎肯定会使我们的5-gram变得毫无意义。
我们训练的模型将运行每一个在5-gram的单词通过WWW去得到一个表示它的向量,并将这些向量输入另外一个名为 R R R的“模块”,该模型试图预测5-gram是“有效的”还是“中断的”。那么,我们想:
R(W(‘‘cat"), W(‘‘sat"), W(‘‘on"), W(‘‘the"), W(‘‘mat"))=1R(W(‘‘cat"), W(‘‘sat"), W(‘‘on"), W(‘‘the"), W(‘‘mat"))=1R(W(``\text{cat}\!“),~ W(``\text{sat}\!”),~ W(``\text{on}\!“),~ W(``\text{the}\!”),~ W(``\text{mat}\!")) = 1
R(W(‘‘cat"), W(‘‘sat"), W(‘‘song"), W(‘‘the"), W(‘‘mat"))=0 R ( W ( ‘ ‘ cat " ) , W ( ‘ ‘ sat " ) , W ( ‘ ‘ song " ) , W ( ‘ ‘ the " ) , W ( ‘ ‘ mat " ) ) = 0 R(W(``\text{cat}\!“),~ W(``\text{sat}\!”),~ W(``\text{song}\!“),~ W(``\text{the}\!”),~ W(``\text{mat}\!")) = 0
为了准确地预测这些值,网络需要学习 W W W和RRR良好的参数。
现在,这个任务不是很有趣。也许这对发现文本或者其他东西中的语法错误很有帮助。但最有趣的是 W W W
(事实上,对我们来说,整个任务的重点是学习WWW。我们本可以做几个其他的任务——另一个常见的任务是预测句子的下一个单词。但我们并不在乎。在本节的其余部分中,我们将讨论许多单词嵌入结果,而不会区分不同的方法。)
我们可以做的一件事是用t-SNE可视化它们,这是一种用于可视化高维数据的复杂技术,可以让我们对单词嵌入空间有个直观的感觉。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。