Recursive neural network

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

A recursive neural network is a kind of deep neural network created by applying the same set of weights recursively over a structured input, to produce a structured prediction over variable-size input structures, or a scalar prediction on it, by traversing a given structure in topological order. These networks were first introduced to learn distributed representations of structure (such as logical terms),[1] but have been successful in multiple applications, for instance in learning sequence and tree structures in natural language processing (mainly continuous representations of phrases and sentences based on word embeddings).

Architectures

[edit | edit source]

Basic

[edit | edit source]
File:Simple recursive neural network.svg
A simple recursive neural network architecture

In the simplest architecture, nodes are combined into parents using a weight matrix (which is shared across the whole network) and a non-linearity such as the tanh hyperbolic function. If c1 and c2 are n-dimensional vector representations of nodes, their parent will also be an n-dimensional vector, defined as:

p1,2=tanh(W[c1;c2])

where W is a learned n×2n weight matrix.

This architecture, with a few improvements, has been used for successfully parsing natural scenes, syntactic parsing of natural language sentences,[2] and recursive autoencoding and generative modeling of 3D shape structures in the form of cuboid abstractions.[3]

Recursive cascade correlation (RecCC)

[edit | edit source]

RecCC is a constructive neural network approach to deal with tree domains[4] with pioneering applications to chemistry[5] and extension to directed acyclic graphs.[6]

Unsupervised RNN

[edit | edit source]

A framework for unsupervised RNN has been introduced in 2004.[7][8]

Tensor

[edit | edit source]

Recursive neural tensor networks use a single tensor-based composition function for all nodes in the tree.[9]

Training

[edit | edit source]

Stochastic gradient descent

[edit | edit source]

Typically, stochastic gradient descent (SGD) is used to train the network. The gradient is computed using backpropagation through structure (BPTS), a variant of backpropagation through time used for recurrent neural networks.

Properties

[edit | edit source]

The universal approximation capability of RNNs over trees has been proved in literature.[10][11]

[edit | edit source]

Recurrent neural networks

[edit | edit source]

Recurrent neural networks are recursive artificial neural networks with a certain structure: that of a linear chain. Whereas recursive neural networks operate on any hierarchical structure, combining child representations into parent representations, recurrent neural networks operate on the linear progression of time, combining the previous time step and a hidden representation into the representation for the current time step.

Tree Echo State Networks

[edit | edit source]

An efficient approach to implement recursive neural networks is given by the Tree Echo State Network[12] within the reservoir computing paradigm.

Extension to graphs

[edit | edit source]

Extensions to graphs include graph neural network (GNN),[13] Neural Network for Graphs (NN4G),[14] and more recently convolutional neural networks for graphs.

References

[edit | edit source]
  1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).