RBM для совместной фильтрации

Мой алгоритм RBM для совместной фильтрации не сойдется... Идея того, что я думаю о RBM для совместной фильтрации, заключается в следующем.

  1. начальный w , b , c и случайный в [0,1]

  2. Для данных зажима пользователя -> видимые (softmax)

    Скрытый = сигмоид (b+W*V)

    Запустить Gibbs на Hidden -> Hidden_gibbs

    Положительный = Скрытый * Видимый

    Скрытый -> реконструировать -> реконструировать_видимый

    Запустите Gibbs на реконструкторе_visible -> реконструируйте_visible_gibbs

    отрицательный = Hidden_gibbs*reconstruct_visible_gibbs

    Конец для

  3. Обновлять

    w = w + (положительное-отрицательное)/Number_User

    b = b + (видимый - реконструировать_видимый_гиббс)/Число_Пользователя

    c = c + (Hidden - Hidden_gibbs)/Number_User

Я видел много статей или лекций и понятия не имею, где что-то не так.


person Dan Chen    schedule 12.05.2015    source источник


Ответы (1)


Это не простая проблема! Ваше описание процедуры обучения выглядит хорошо. Но есть много места для ошибок от описания до фактического кода. Также для CF не подойдет "ванильный" RBM.

  • Как вы реализовали видимые блоки «softmax»?

  • Вы обучали свой RBM с «однопользовательским» набором данных, как рекомендовано в исходной работе [1]?

Есть еще 2 детали об обновлении веса и процедуре прогнозирования, которые немного отличаются от ванильного RBM.

[1] Салахутдинов http://www.machinelearning.org/proceedings/icml2007/papers/407.pdf

person Felipe Cruz    schedule 20.11.2015
comment
Я видел документ, и я чувствую себя сбитым с толку в части обновления. Обновляется ли RBM пакетом пользователей? или одиночный пользователь? - person Dan Chen; 24.11.2015
comment
В идеале лучше обучать одного пользователя за раз. Но в некоторых работах сообщалось о результатах обучения в виде мини-пакетов, например: .ac.be/handle/2268/74400 - person Felipe Cruz; 27.11.2015
comment
Привет, Дэн, тебе повезло? Я тренировал RBM для CF, используя обновления для каждого пользователя, но если вы обновляете небольшими партиями, это также работает. Просто помните, что ваша скорость обучения в идеале должна быть пропорциональна размеру вашей партии. - person Felipe Cruz; 22.12.2015
comment
Привет Дэн! моя рабочая реализация этой модели: github.com/felipecruz/CFRBM Надеюсь, она вам поможет. - person Felipe Cruz; 03.07.2016