Глава 9. Глубокое обучение для последовательностей и текста
343
Команда
yarn
train-rnn
вызывает сценарий
train-rnn.js
и выполняет вычис
ления в серверной среде на основе Node.js
1
. Мы вернемся к этому режиму операций
чуть позже, при обсуждении RNN. В результате выполнения этой команды на экран
будет выведено нечто вроде:
Commonsense baseline mean absolute error: 0.290331
Таким образом, при подходе на основе здравого смысла, без применения ма
шинного обучения, получаем среднюю абсолютную погрешность предсказания
около 0,29 (в нормализованном виде), что практически идентично (возможно, даже
чуть лучше) наилучшим показателям погрешности проверки модели MLP в главе 8
(см. рис. 8.4). Другими словами, MLP, с и без регуляризации, не способен превзойти
показатели эталонного подхода на основе здравого смысла!
Подобные наблюдения не редкость в машинном обучении: не такто просто
машинному обучению превзойти подход на основе здравого смысла. Иногда для
этого приходится долго и тщательно проектировать модель машинного обучения
или подбирать гиперпараметры. Упомянутое наблюдение также подчеркивает
важность создания не основанного на машинном обучении эталона для сравнения
в ходе работы с задачами машинного обучения. Безусловно, не хотелось бы тратить
усилия на создание алгоритма машинного обучения, не способного даже превзойти
намного более простой и менее затратный в вычислительном отношении эталонный
алгоритм! Сможем ли мы превзойти эталонный алгоритм в задаче предсказания
температуры? Да, сможем, и в этом нам помогут RNN. Давайте взглянем, как RNN
захватывают и анализируют порядок последовательных данных.
9.1.2. Моделирование последовательного упорядочения
с помощью RNN
Блок A на рис. 9.2 демонстрирует внутреннюю структуру слоя RNN на короткой
последовательности из четырех элементов. Существует несколько вариантов слоев
RNN, из которых на схеме показан простейший, который называется simpleRNN
и доступен в TensorFlow.js в виде фабричной функции
tf.layers.simpleRNN()
. Далее
в этой главе мы обсудим и более сложные варианты RNN, но пока что сосредото
чимся на simpleRNN.
Эта схема демонстрирует пошаговую обработку временных срезов входных при
знаков (
x
1
,
x
2
,
x
3
…). На каждом шаге функция
f
(), представленная прямоугольником
в центре схемы, обрабатывает
x
i
и выдает выходной сигнал
y
i
, из которого в соче
тании со следующим входным срезом
x
i
+ 1
получается входной сигнал — функция
1
Код, реализующий подход на основе здравого смысла, без машинного обучения, вы
найдете в функции getBaselineMeanAbsoluteError() в файле jenaweather/models.js.
Для обхода всех батчей проверочного поднабора данных, вычисления потерь MAE для
каждого из них и накопления всех значений потерь для получения итоговых потерь в нем
используется метод forEachAsync() объекта Dataset.
344
Do'stlaringiz bilan baham: |