导读
在之前的一些年里,深度学习已经占领了模式识别领域,之后又横扫了计算机数视觉,之后自然语言处理也慢慢的朝着这个方向开始了它的发展。
但是虽然有这样的结果,我们还是想知道为什么深度学习效果是如此的好呢?
这里讲一些目前我们经常应用的前人在自然语言处理上研究的成果,来说说深层神经网络!在下面,会明确告诉大家深度神经网络如何工作的这么好,为什么会有如此美好的前景!
单隐层神经网络
一个只有一层隐层的神经网络是很普通的:
给定足够多的隐层单元,该单层神经网络就可以拟合几乎所有的函数。
上面这个解释是几乎人人都知道的理论,但也会经常被误解的理论。神经网络也可以被看做是一个查表(lookup table,表这里可以理解为公式总表)的过程。
举一个最简单的例子:感知机(感觉这个要被说烂了O.O),如果输入超过该阈值输出1,否则输出0。
但是要注意的是,输入的值是有限的可能的输入,对于每一个可能的输入,我们可以构造一个隐层的神经元,然后使用隐层神经元和输出神经元的控制连接来控制输出。
所以,单层神经网络很普遍。但是这里关于神经网络的介绍没有什么给人留下对于这个有特别的印象或让人感到激动的情况。其实,神经网络有更加微妙的,很难用言语表达的东西。不仅仅是简单的查表操作。下面进行实例介绍。
Word Embedding
有一个特别有趣的深度学习研究:Word Embedding(词嵌入)。在我看来,Word Embedding是一个特别有趣和有意义的研究,虽然它被Bengio,et al提出来已经是10多年前了。虽然时光已逝,但是Word Embedding向我们展示了为什么深度学习如此的有效!
比如一个Word Embedding:
表示将一些语言的词映射到n维度上,维度的可能范围100-500,但不限于此。比如:
(注:词转向量的函数为:,W是为每一个词赋值一个随机向量,W会为了一些特定任务而学习参数)
举例:判断一个5-grams(长度为5的序列)的词序列是否为有效的。比如我们选择的是:
cat sat on the mat (很明显为有效的)
随机替换换一个词,一般都为无效的,例如:
cat sat sang the mat (很明显为无效的,句子读不通)
模型会对该数据进行训练W,得到一个向量表示,之后将结果送给R来进行预测是否有效。如下:
模型流程图为:
为了预测准确,模型需要对W和R学到好的参数。
但是现在这个任务似乎没那么有兴趣了。因为你或许对这个实例好枯燥,不就是可以检测语法错误或者别的什么。但是有趣的不是它的应用,而是它的W!
事实上,这个任务的重点就是学习W。我们也可以做一些别的任务,比如常见的对一个句子序列预测下一个词。但是这些我们不care。下面会对Word Embedding的结果。
一个Word Embedding空间可视化结果:
上述的可视化效果给了我们很直接的感觉:相似的词靠的很近!
另一种方式查看相近词的Embedding是给定一个词,得到和它距离很近的词,比如:
这样很能看出,意思相近的词的词向量也是很相似的。即使替换,一般也没有什么问题:
“a few people sing well” → “a couple people sing well”
确实没什么问题吧。
再比如:
“the wall is blue” →“the wall is red”
“the wall is blue” →“the ceilingis red”
这就很清楚W的用途了。还比如:
这个或许更加的surprising吧。向这种关系,也有人总结了:
这里你看到了W的很直观的学习结果了吧。Word Embedding只是一个深度学习的实例而已。向这样的实例很多很多。
参考
https://colah.github.io/posts/2014-07-NLP-RNNs-Representations/
想了解Word Embedding如何具体学习的,可以看看之前写的word2vec,链接为:
更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!