Recurrent Neural Network

  1. Simple RNN (Elman Network)
    The state of the Simple RNN cell is the output of the activation function, the output of the RNN cell is the same as the state

  2. LSTM
    The state of the RNN cell is different from the output of the cell. The LSTM cell has a seperate output gate.

  3. Batch Size

A batch contains the whole sequence in consideration, with all time steps included.
Batch size = 5, means 5 sentences, each with a number of #time_step features.

  1. Keras
    RNN class, model.fit()输入tensor的shape为(batch_size, timestep, feature_num)
    RNN(x, input_shape=(timestep, feature_num))
    timestep为bp gradient descent的步数(即RNN网络unroll为普通NN的长度)

Feature Embedding of Categorial Values

Word Embedding

  1. The embedding of a word is the hidden layer ouput (a vector) got when feeding the one-hot vecotr (input) of the word.
  2. The target value in the training data carries sequential information (word sequence in a sentence)
  3. The hidden layer weight matrix is the word vector lookup table
  4. Word embedding is a by-product of language modelling

Embedding Layer

  • Embedding layer is just a linear layer that transforms one-hot input into embedding matrix (look-up table)

Categorial Embedding

  1. The embedding of categorial data is obtained in model training, just as that of word embedding.
  2. The target value carries prediction information (predicted value), which is opposed to the sequential information in word embedding

Pre-trained Embedding

  • Pre-trained embedding can be used in new model training to improve performance (both accuracy and speed)

Ordinal Values

  1. Ordinal Values that carries information but in discrete (by definition) values should be normalized to 0-1 (or -1 - 1) scale as the input for DNN

神经网络基础

权值拟合的理论基础

当训练样例线性可分时,对于普通的感知器分类器,感知器法则可以找到一个合适的权向量,使得假设空间里有一个对应的完美决策面。

当训练样例不是线性可分时,基于梯度下降推导出的delta法则可以用来更新权值,以拟合最佳决策面,delta法则, (delta)wi = nita(t-o)xi. 这个公式其实也是Liner Regression和Logistic Regression的权值更新公式(在Liner Regression里叫LMS或Widrow-Hoff更新法则).

Delta法则在形式上包含了(t-o)这一个误差项,由此导出了节点误差项的概念,并沿用到多层神经网络的节点误差描述。

注意节点误差项和网络整体输出的误差项是两个不同的概念,并有不同的计算公式。

注意Delta法则是用来学习线性单元(而不是非线性单元)权值更新的方法。

神经网络的结构

经典的前馈神经网络是一个有向无环图, 并且还是一个篱笆图(Lattice Graph), 这种结构的特点是节点分层, 且同一层的节点相互不连接. 在这个网络中, 每一层节点的输出都是后一层节点的输入.

神经网络的节点由几种主要单元构成, 他们是感知器(perceptron), 线性单元(Liner unit)和非线性单元(Sigmoid Unit, Tanh Unit等). 最常见的神经网络节点由一个线性单元和一个非线性单元组成(线性加权求和然后Sigmoid计算输出)

梯度下降权值更新公式

权值增量 = 训练速率误差项权值所对应的输入;其中,误差项*权值 是该权值所对应的梯度分量。 误差函数的真实梯度包含了所有权值梯度作为分量。

Threhold Unit: Threhold unit is added to each layer of the network, including the input layer.
Threhold units added to the output layer is meaningless and will not affect network efficitiveness.

非线性隐藏层上Neural Network节点的个数和这个隐藏层接受输入信号的个数并没有关联

神经网络编程相关

  1. 输入向量输出向量的Numpy表示:x = np.array([0, 1, 2])
  2. 权值矩阵的Numpy表示:w = np.random.uniform(0, 1, (hidden_dim, input_dim)), 表示为一个M*N矩阵,其中M为隐层宽度(隐层节点数),N为隐层接收的输入向量长度。
  3.  隐层激活函数的输入:[hidden_dim, input_dim] * [input_dim, 1] , 表示为隐层的权值矩阵左乘输入向量

神经网络和深度学习

前言

距离我第一次学习并实践神经网络已经接近2年了,这2年里我在机器学习和自然语言处理这个领域有明显的进步,现在是时候系统性的总结和提高我的深度学习技能,并将之置于我今后个人实现AI系统的首选工具了。

普通的前向传播网络有两种训练方法:随即梯度下降和批量梯度下降。批量梯度下降通过累计训练样本的误差,反向传播回网络隐层节点来计算真实参数梯度,但缺点是容易受训练样本分布误差的影响而导致网络模型过拟合。随即梯度下降会利用每个训练样本依次计算参数梯度(根据这个样本的模型输出误差)并更新参数值,经验实验表明随即梯度下降能有效的缓解模型过拟合。

 

神经网络的有效性

依靠模型的表征能力,神经网络可以发挥训练数据的最大潜能,但是如果可采集的数据有限,那么神经网络的有效性随之受限。神经网络不能解决某一实践问题的原因一般有两个,第一是由于数据规模的限制导致训练集的构成这一样本分布不能有效逼近总体分布,第二是各种原因导致的模型过拟合。模型过拟合的问题一般与数据规模成反比,即大规模训练数据可以有效缓解过拟合问题。

模型有效性与数据规模的悖论

理论上讲,在真实环境上完美应用的模型需要有反映真实环境所有变量分布的训练集(即所有的可能真实数据),  但如果能够获取这些数据则失去了数学建模的必要性。(模型构建的目的是估计真实的变量分布,根据已知数据预测未知数据) 所以模型训练的最终目的是在训练集构建与模型有效性之间找到一个合理的平衡点,以合理的成本解决实际问题。

循环神经网络(RNN)

在传统的前向神经网络中,所有训练样本按照一定的顺序被依次作为网络输入送入输入层,这时每个训练样本由一个特征向量表示(Vector),这个特征向量的长度和网络的输入层的节点个数相对应。由于这一网络特性的约束,前向神经网络只能处理固定维数的特征输入。

在循环神经网络中(RNN), 每个训练样本同样由一个特征向量表示(Vector), 与前面不同的是,循环神经网络的输入特征向量是对训练样本离散时间维度的建模,每个维度代表在当前离散时间点上样本的特征值。为了拟合这种表征离散时间维度的特征向量,循环神经网络把隐层输出接入(同一或不同)隐层的输入,在隐层自身(或与其他隐层)之间形成闭环用以将参数更新与不同时间节点特征值之间的共现关系联系起来(在传统前向网络中特征向量中特征值之间的向后关系同样可以表征这种联系,只是由于网络自身的结构特性所以不适合此类任务)

在循环神经网络中,单个训练样本特征向量的所有维度(时间点)特征值被依次送入网络输入层,网络计算所有时间点的输出并累计误差值。