В чем причина "извлечения патчей 8x8" в Restricted Boltzman Machine?
Я получил эту документацию на примере RBM в pyLearn2 (Библиотека машинного обучения). Может ли кто-нибудь сказать мне, почему это проще?
# First we want to pull out small patches of the images, since it's easier
# to train an RBM on these
pipeline.items.append(
preprocessing.ExtractPatches(patch_shape=(8, 8), num_patches=150000)
)
Что бы это ни стоило, я не очень хорошо осведомлен о RBM, поэтому, пожалуйста, потерпите меня. Для полного кода, пожалуйста, перейдите по этой ссылке
1 ответ
Проще говоря, как и в любом алгоритме, ваша сложность возрастает с увеличением входных чисел. Разделение задачи на более мелкие подзадачи и последующее их объединение может оказаться быстрее (так называемые алгоритмы "разделяй и властвуй").
Теперь, с помощью алгоритмов машинного обучения такого типа, существует дополнительная потребность в абстракции функций. Вы не хотите вводить каждый пиксель одновременно (имея только локальную информацию) и не хотите представлять все изображение одним числом / символом (имеющим только глобальную информацию). Ряд подходов объединяет эти виды данных в иерархические представления (в основном это называется Deep Learning).
Если вы объедините эти две концепции, должно быть ясно (э), что обработка небольших патчей изображений сначала дает вам больший объем локальной информации, которую вы затем можете объединить, чтобы вывести на глобальную информацию на более позднем этапе. Так что "потому что это проще" - это не полное обоснование. Это также заставляет все работать лучше / более точно.
Я надеюсь, что это ответит на ваш вопрос, не будучи слишком расплывчатым (подробный ответ станет слишком длинным). Для более подробного ознакомления с УОК см., Например, главу 7 на этой странице.