我想用人和计算机之间的对话数据预测计算机操作。我有1000个训练对话框。每个对话框都有不同的转数。
在我的参考论文(https://arxiv.org/abs/1702.03274)中解释了如下的培训。它使用基本的LSTM。
在培训中,每个对话形成一个小批量,并进行更新 在完全展开时(即,通过时间的非截断反向传播)。
然后,我有两个问题。
我不是母语英语,也不是机器学习专家。任何帮助将不胜感激。谢谢。
我添加了更多细节。用户输入被转换为特征,系统动作被转换为一位向量。所以这个任务是多分类问题的任务。在论文中,这个任务是用一个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
答案 0 :(得分:1)
让我解释你的引述。首先让我们对数据做出假设。我假设一个4转的对话将意味着人A说了些什么,然后B回应,然后是A,然后是B.然后你可以将数据格式化如下:
注意这个对话框有重复,我们应该这样做,所以“响应”,即第二句,与前一个相关联。这种格式化数据的方法对于编码器/解码器LSTM非常有用。第一个序列进入编码器,第二个进入解码器。这里,每对都是数据样本。所以这个对话框有3个样本。
在培训中,每个对话形成一个小批量,
上一个对话框可以是一批3个样本。我们可以为所有对话框执行此操作。所以每个对话框都是批处理。通过小批量培训,批次通过网络,正向传递,然后立即执行反向传播(更新参数)。所以是的,1000个迷你批次。
并在完全展示时进行了更新(即,通过时间进行非截断的反向传播)。
正如我上面所解释的,在批量转发之后立即进行更新。这意味着对于一个时代(即,通过所有数据一次),有1000个更新。
使用RNN时,如果序列太长,我们可以将它们分解。我们可以将样本[A说序列1.B说序列2.]分成3个样本:[A说顺序],[1。 B说话,[序列2.]。我们将第一个样品送入网络,反向传播,然后将第二个样品送入网络,反向传播,然后第三个。但是,我们需要保存样本1的最后隐藏状态以给出样本2的开头,并将最后一个状态保存为2以赋予3.这称为截断反向传播(TBPTT)。如果你在反向传播之前“完全展开”,那么你就不会做TBPTT。因此,对于每个批次,您只更新一次网络,而不是我的示例中的3次。
希望有所帮助。