Estou tentando entender como as máquinas Boltzmann funcionam, mas não sei bem como os pesos são aprendidos e não consegui encontrar uma descrição clara. O seguinte está correto? (Além disso, seria bom apontar para qualquer boa explicação da máquina de Boltzmann.)
Temos um conjunto de unidades visíveis (por exemplo, correspondendo a pixels preto / branco em uma imagem) e um conjunto de unidades ocultas. Os pesos são inicializados de alguma forma (por exemplo, uniformemente de [-0,5, 0,5]) e, em seguida, alternamos entre as duas fases a seguir até que alguma regra de parada seja atingida:
Fase fixada - Nesta fase, todos os valores das unidades visíveis são fixos; portanto, somente atualizamos os estados das unidades ocultas (de acordo com a regra de ativação estocástica de Boltzmann). Nós atualizamos até que a rede alcance o equilíbrio. Assim que atingir o equilíbrio, continuamos a actualização mais vezes (para alguns predefinidos N ), mantendo-se a par da média de x i x j (onde x i , x j são os estados de nodos i e j ). Após essas N atualizações de equilíbrio, atualizamos w i j = w i j +, ondeCé uma taxa de aprendizado. (Ou, em vez de fazer uma atualização em lote no final, atualizamos após a etapa de equilíbrio?)
Fase livre - Nesta fase, os estados de todas as unidades são atualizados. Quando alcançamos o equilíbrio, continuamos atualizando N 'mais vezes, mas em vez de adicionar correlações no final, subtraímos: .
Então, minhas principais perguntas são:
Sempre que estamos na fase restrita, redefinimos as unidades visíveis para um dos padrões que queremos aprender (com alguma frequência que represente a importância desse padrão) ou deixamos as unidades visíveis no estado em que estavam no final da fase livre?
Fazemos uma atualização em lote dos pesos no final de cada fase ou atualizamos os pesos em cada etapa de equilíbrio da fase? (Ou uma delas está boa?)
fonte