用于小批量的反向传播

时间:2017-03-25 14:45:25

标签: machine-learning deep-learning lstm backpropagation

我想用人和计算机之间的对话数据预测计算机操作。我有1000个训练对话框。每个对话框都有不同的转数。

在我的参考论文(https://arxiv.org/abs/1702.03274)中解释了如下的培训。它使用基本的LSTM。

  

在培训中,每个对话形成一个小批量,并进行更新   在完全展开时(即,通过时间的非截断反向传播)。

然后,我有两个问题。

  1. 每个对话框是否形成一个小批量意味着1000个小批量?
  2. 更新是否在完全展示时完成意味着更新是在所有对话框数据之后完成的?或者每次对话后都进行了更新?
  3. 我不是母语英语,也不是机器学习专家。任何帮助将不胜感激。谢谢。

    更新

    我添加了更多细节。用户输入被转换为特征,系统动作被转换为一位向量。所以这个任务是多分类问题的任务。在论文中,这个任务是用一个LSTM模型解决的。每个对话框具有不同的圈数。

    dialog 1
    t1: hello       ([1,0,1,0,]) -> hi   ([0,0,1,0])
    t2: how are you ([0,1,1,0,]) -> fine ([0,1,0,0])
    dialog 2
    t1: hey       ([1,0,1,0,]) -> hi   ([0,0,1,0])
    ...
    dialog 1000
    ...
    

    所以这个问题是通过y

    预测x
    dialog_list = [ {(x1,y1), (x2,y2)}, {(x1,y1)}, ..  ] # length is 1000
    

1 个答案:

答案 0 :(得分:1)

让我解释你的引述。首先让我们对数据做出假设。我假设一个4转的对话将意味着人A说了些什么,然后B回应,然后是A,然后是B.然后你可以将数据格式化如下:

  • A说顺序1. B说顺序2.
  • B说顺序2. A说顺序3。
  • A说顺序3. B说顺序4.

注意这个对话框有重复,我们应该这样做,所以“响应”,即第二句,与前一个相关联。这种格式化数据的方法对于编码器/解码器LSTM非常有用。第一个序列进入编码器,第二个进入解码器。这里,每对都是数据样本。所以这个对话框有3个样本。

  

在培训中,每个对话形成一个小批量,

上一个对话框可以是一批3个样本。我们可以为所有对话框执行此操作。所以每个对话框都是批处理。通过小批量培训,批次通过网络,正向传递,然后立即执行反向传播(更新参数)。所以是的,1000个迷你批次。

  

并在完全展示时进行了更新(即,通过时间进行非截断的反向传播)。

正如我上面所解释的,在批量转发之后立即进行更新。这意味着对于一个时代(即,通过所有数据一次),有1000个更新。

使用RNN时,如果序列太长,我们可以将它们分解。我们可以将样本[A说序列1.B说序列2.]分成3个样本:[A说顺序],[1。 B说话,[序列2.]。我们将第一个样品送入网络,反向传播,然后将第二个样品送入网络,反向传播,然后第三个。但是,我们需要保存样本1的最后隐藏状态以给出样本2的开头,并将最后一个状态保存为2以赋予3.这称为截断反向传播(TBPTT)。如果你在反向传播之前“完全展开”,那么你就不会做TBPTT。因此,对于每个批次,您只更新一次网络,而不是我的示例中的3次。

希望有所帮助。