Для обучения нейронных сетей требуется больше данных. Например, стандартный датасет для распознавания рукописных цифр MNIST - это 60000 обучающих примеров и 10000 тестовых.
Дмитрий: ну, видимо, последний элемент больше подходит для INPUT_CONTEXT.
В production эти два значения, очевидно, должны определяться динамически и не быть глобальными переменными.
AIhunter: Java - это язык для разработки больших enterprise-решений, которые планируется разрабатывать и поддерживать годами. Плюс программирование под Android. Там требуется больше усилий, чтобы написать рабочее приложение, но при этом сложнее сделать серьезную ошибку. Python позволяет быстрее написать прототип и легче его изменять. К тому же одни из самых популярных библиотек для глубокого обучения - Theano и Tensorflow - написаны на Python.
В общем, если вопрос "Что изучать, если я хочу работать программистом следующие 20 лет" - то Java вполне неплохой ответ. Если вопрос "Что изучать, если я хочу работать data scientist'ом следующие 20 лет" - то сейчас ответ скорее Python.
Андрей: на мой взгляд, отличие скорее не в дискретности\непрерывности значений, а в зависимостях между элементами выходного вектора. Для классификации элементы являются взаимоисключающими, для регрессии - не зависят между собой. Если у нас 100 классов-векторов, то можем предсказывать один из этих 100 классов и получить классификацию, а можем искать конкретный вектор и получить регрессию. Которая, скорее всего, в этом случае будет работать сильно хуже классификации.
n7olkachev: Вот в этой статье https://arxiv.org/abs/1509.01626 сравнивается несколько штук методов классификации текста на нескольких датасетах различного размера (от 120К примеров до 3.6М).
Дмитрий Демидов: слова "обратное распространение" по сути объясняют нам, как выглядит та функция (и её частные производные), которую мы хотим оптимизировать. В обычной регрессии оптимизируем расстояние от функции до исходных точек. В обратном распространении находим производные несколько другим путем. В сетях Хопфилда, например, третий вариант. А как минимизировать эту функцию, зная производные, - это уже другая задача. Самый простой - это градиентный спуск.
Я так понимаю, что при таком перекосе размер mini-batch'а при градиентном спуске придется выбирать очень большим, чтобы в него попал хотя бы один самый редкий класс?