1、时间序列表示方法
sequence embedding
[b,seq_len,feature_len]
- b:句子数量
- seq_len:单词数量
- feature_len 单词特征
[b,28,28]
从sequence角度理解,把每一个图片当作28个时间序列的输入,每个输入有28个特征。共有b个图片。
每个单词对应的三个波形,每个波形在每个时刻对应一个word vector,每个时刻代表当前输入的word。
how to represent a word
one-hot encoding
问题
- sparse
- high-dim
word embedding 需要满足:
- semantic similarity, 近义词
- trainable
- word2vec vs glove
比较好的word embedding 可以将近义词分在差不多相同的位置,且每个维度都有一定的意义:描述单词
embedding layer
net=layers.Embedding(10,4) #10表示单词总数,4表示dim的长度,[1,4]
net(x)
需要做训练使word embedding 表现得更好
2、循环神经网络:RNN
sentiment analysis
提取语意信息。
但如果句子很长,有很多词,参数量太大,且没有语意相关性,对语序也没有做处理。只代表当前单词的语义,未考虑整个句子的特征和信息。
解决参数量太大:weight sharing
用同样的线性hidden layer去处理每个时刻的t输入
解决没有全局语意分析:consistent memory
往neural network中加入一个memory
把上一个时刻的output储存在memory中输入给下一个时刻的hidden layer。使得对于当前单词词义分析时,考虑了上一个单词的信息。可以使用最后一个时刻的output作为分类指标,因为该output包含了整个句子的文本信息。
folded model
- x t x_t xt:当前时刻输入
- w x h w_{xh} wxh:当前时刻layer的weight
- h t h_t ht:上一个时刻单词的语句信息
初始状态一般给0
用一个二分类分类这个句子的语意:pos/neg
参数weight只有两个
gradient
梯度下降的过程过参与计算会对 w R w_R wR产生高次项方的计算。
3、RNN Layer
- kernel: w x h w_{xh}