Я пользуюсь этой библиотекой для реализации агента изучения.
Я генерировал учебные случаи, но я не знаю наверняка, каковы проверка и наборы тестов.
Учитель говорит:
70% должны быть дорожными чемоданами, 10% будут тестовыми сценариями и остальными, 20% должны быть случаями проверки.
править
У меня есть этот код для обучения, но я понятия не имею, когда остановить обучение.
def train(self, train, validation, N=0.3, M=0.1):
# N: learning rate
# M: momentum factor
accuracy = list()
while(True):
error = 0.0
for p in train:
input, target = p
self.update(input)
error = error + self.backPropagate(target, N, M)
print "validation"
total = 0
for p in validation:
input, target = p
output = self.update(input)
total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output
accuracy.append(total)
print min(accuracy)
print sum(accuracy[-5:])/5
#if i % 100 == 0:
print 'error %-14f' % error
if ? < ?:
break
править
Я могу получить среднюю погрешность 0,2 с данными проверки, после возможно, 20 учебных повторений, которые должны составить 80%?
средняя погрешность = сумма абсолютной разности между целью проверки и выводом, учитывая ввод данных проверки / размер данных проверки.
1
avg error 0.520395
validation
0.246937882684
2
avg error 0.272367
validation
0.228832420879
3
avg error 0.249578
validation
0.216253590304
...
22
avg error 0.227753
validation
0.200239244714
23
avg error 0.227905
validation
0.199875013416
Во время обучения используются обучающий и проверочный наборы.
for each epoch
for each training data instance
propagate error through the network
adjust the weights
calculate the accuracy over training data
for each validation data instance
calculate the accuracy over the validation data
if the threshold validation accuracy is met
exit training
else
continue training
По окончании обучения выполняется тестирование и проверяется достаточная точность.
Обучающий набор: этот набор данных используется для настройки весов нейронной сети.
Проверочный набор: этот набор данных используется для минимизации избыточной подгонки. Вы не настраиваете веса сети с помощью этого набора данных, вы просто проверяете, что любое увеличение точности по сравнению с обучающим набором данных действительно дает увеличение точности по сравнению с набором данных, который не был показан сети ранее, или, по крайней мере, сеть не обучалась на нем (т.е. валидационный набор данных). Если точность на обучающем наборе данных увеличивается, а точность на проверочном наборе данных остается прежней или уменьшается, значит, вы перестраиваете нейронную сеть и вам следует прекратить обучение.
Набор данных для тестирования: этот набор данных используется только для тестирования окончательного решения, чтобы подтвердить реальную предсказательную способность сети.