Intuição por trás da máquina restrita de Boltzmann (RBM)

15

Passei pelo curso de Redes Neurais de Geoff Hinton no Coursera e também pela introdução de máquinas boltzmann restritas , mas ainda não entendi a intuição por trás dos RBMs.

Por que precisamos calcular energia nesta máquina? E qual é o uso da probabilidade nesta máquina? Eu também vi esse vídeo . No vídeo, ele acabou de escrever as equações de probabilidade e energia antes dos passos da computação e não parecia usá-lo em lugar algum.

Além disso, não tenho certeza para que serve a função de probabilidade?

Born2Code
fonte
Tentei arrumar a pergunta, mas acho que precisa de mais trabalho. Você precisa explicar o que você não entende, e mais especificamente onde você está preso, caso contrário, a questão é muito ampla.
Neil Slater
A única coisa que entrou na cabeça é que existem três etapas, primeiro a fase positiva, depois a fase negativa que é seguida pela reconstrução dos pesos. Mas e as energias e a função de probabilidade? para que serve aqui? e quantas vezes temos que fazer esse processo (fase positiva -> fase negativa> reconstrução de pesos)?
precisa saber é o seguinte

Respostas:

5

Os RBMs são um animal interessante. Para responder à sua pergunta e desperdiçar minha memória com elas, derivarei RBMs e falarei sobre a derivação. Você mencionou que está confuso quanto à probabilidade; portanto, minha derivação será da perspectiva de tentar maximizar a probabilidade. Então vamos começar.

Mecanismos de argolas contêm dois diferentes conjuntos de neurônios, visíveis e ocultas, eu vou denotar-los e , respectivamente. Dada uma configuração específica de e , mapeamos o espaço de probabilidade.vhvh

p(v,h)=e-E(v,h)Z

Há mais algumas coisas a definir. A função substituta que usamos para mapear de uma configuração específica para o espaço de probabilidade é chamada de função energética . A constante é um fator de normalização para garantir que realmente mapeamos para o espaço de probabilidade. Agora vamos ao que realmente estamos procurando; a probabilidade de um conjunto de neurônios visíveis, em outras palavras, a probabilidade de nossos dados. Z Z = Σ v V Σ h H E - E ( v , h ) P ( v ) = Σ h H p ( v , h ) = Σ h H E - E ( v , h )E(v,h)Z

Z=vVhHe-E(v,h)
p(v)=hHp(v,h)=hHe-E(v,h)vVhHe-E(v,h)

Embora existam muitos termos nessa equação, simplesmente se resume a escrever as equações de probabilidade corretas. Esperemos que, até agora, isso tem ajudado a perceber por que precisamos função de energia para calcular a probabilidade, ou o que é feito mais geralmente a probabilidade unnormalized . A probabilidade não normalizada é usada porque a função de partição é muito cara de calcular.Zp(v)ZZ

Agora vamos à fase de aprendizado real dos RBMs. Para maximizar a probabilidade, para cada ponto de dados, temos que dar um passo gradiente para fazer . Para obter as expressões de gradiente, são necessárias algumas acrobacias matemáticas. A primeira coisa que fazemos é pegar o log de . A partir de agora, operaremos no espaço de probabilidade do log para viabilizar a matemática.p ( v )p(v)=1 1p(v)

p ( v )

registro(p(v))=registro[hHe-E(v,h)]-registro[vVhHe-E(v,h)]
Vamos tomar o gradiente com relação aos parâmetros emp(v)

registro(p(v))θ=-1 1hHe-E(v,h)hHe-E(v,h)E(v,h)θ+1 1vVhHe-E(v,h)vVhHe-E(v,h)E(v,h)θ

Agora eu fiz isso no papel e escrevi a equação da semifinal para não desperdiçar muito espaço neste site. Eu recomendo que você derivar essas equações você mesmo. Agora vou escrever algumas equações que ajudarão a continuar nossa derivação. Observe que: , e que p ( v ) = h H p ( v , h ) p ( h | v ) = p ( v , h )Zp(v,h)=e-E(v,h)p(v)=hHp(v,h)p(h|v)=p(v,h)p(h)

euog(p(v))θ=-1 1p(v)hHp(v,h)E(v,h)θ+vVhHp(v,h)E(v,h)θeuog(p(v))θ=-hHp(h|v)E(v,h)θ+vVhHp(v,h)E(v,h)θ

E lá vamos nós, derivamos a estimativa de probabilidade máxima para RBMs, se você quiser, pode escrever os dois últimos termos por meio da expectativa de seus respectivos termos (probabilidade condicional e conjunta).

Notas sobre a função energética e estocticidade dos neurônios.

Como você pode ver acima em minha derivação, deixei a definição da função de energia bastante vaga. E a razão para fazer isso é que muitas versões diferentes do RBM implementam várias funções de energia. O que Hinton descreve na palestra vinculada acima e mostrada por Laurens-Meeus é:

E(v,h)=-umaTv-bTh-vTWh.

Pode ser mais fácil argumentar sobre os termos do gradiente acima por meio do formulário de expectativa.

registro(p(v))θ=-Ep(h|v)E(v,h)θ+Ep(v,h)E(v,h)θ

A expectativa do primeiro termo é realmente muito fácil de calcular, e esse foi o gênio por trás dos RBMs. Ao restringir a conexão, a expectativa condicional simplesmente se torna uma propagação direta do RBM com as unidades visíveis presas. Esta é a chamada fase de vigília nas máquinas Boltzmann. Agora, calcular o segundo termo é muito mais difícil e, geralmente, são utilizados métodos de Monte Carlo. Escrevendo o gradiente através da média das corridas de Monte Carlo:

registro(p(v))θ-E(v,h)θp(h|v)+E(v,h)θp(v,h)

O cálculo do primeiro termo não é difícil, como afirmado acima, portanto, Monte-Carlo é feito no segundo. Os métodos de Monte Carlo usam amostragem aleatória sucessiva da distribuição, para calcular a expectativa (soma ou integral). Agora, essa amostragem aleatória nos RBMs clássicos é definida como definir uma unidade como 0 ou 1 com base em sua probabilidade estocástica, ou seja, obter um número uniforme aleatório, se for menor que a probabilidade dos neurônios configurá-lo para 1, se é maior que defina como 0.

Armen Aghajanyan
fonte
Como também tornamos a camada oculta binária? Bcoz após a operação da função de ativação, estaríamos obtendo valores no intervalo entre 0 e 1.
Born2Code 8/16/16
Isso geralmente é feito limitando a ativação. Qualquer coisa acima de 0,5, se tornaria 1, qualquer coisa abaixo seria zero.
Armen Aghajanyan
Mas neste link , na seção 3.1: Hinton declarou "a unidade oculta é ativada se essa probabilidade for maior que um número aleatório uniformemente distribuído entre 0 e 1". O que isso realmente significa? E também neste link , eles dizem "Então a j-ésima unidade está ativada se, ao escolher um número aleatório uniformemente distribuído entre 0 e 1, descobrimos que seu valor é menor que sig [j]. Caso contrário, está desativado". Eu não entendi isso.
Born2Code 08/12/16
????? Como dizer se essa unidade específica está ligada ou desligada?
precisa saber é o seguinte
Eu adicionei uma edição. Sugiro a leitura de métodos de Monte Carlo, porque a estocástica deste algoritmo é derivada daí.
Armen Aghajanyan
5

Além das respostas existentes, eu gostaria de falar sobre essa função energética e a intuição por trás disso um pouco. Desculpe se isso é um pouco longo e físico.

A função energia descreve o chamado modelo de Ising , que é um modelo de ferromagnetismo em termos de mecânica estatística / mecânica quântica. Na mecânica estatística, usamos o chamado operador hamiltoniano para descrever a energia de um sistema mecânico quântico. E um sistema sempre tenta estar no estado com a menor energia.

Agora, o modelo de Ising descreve basicamente a interação entre elétrons com um spin de +1 ou -1, na presença de um campo magnético externo . A interacção entre dois electrões e é descrita por um coeficiente . Essa Hamiltoniana (ou função de energia) é onde indica o hamiltoniano. Um procedimento padrão para passar de uma função de energia para a probabilidade de que um sistema esteja em um determinado estado (por exemplo, aqui: uma configuração de rotações, por exemplo,σkhEujJEuj

H^=Eu,jJEujσEuσj-μjhjσj
H^σ1 1=+1 1,σ2=-1 1,...) é usar a distribuição Boltzmann, que diz que, a uma temperatura , a probabilidade do sistema de estar em um estado com energia é dada por Neste ponto, você deve reconhecer que essas duas equações são exatamente as mesmas que nos vídeos de Hinton e a resposta de Armen Aghajanyan . Isso nos leva à pergunta:TpEuEuEEu
pEu=exp(-EEu/kT)Euexp(-EEu/kt)

O que o RBM tem a ver com esse modelo quântico-mecânico de ferromagnetismo?

Precisamos usar uma quantidade física final: a entropia. Como sabemos pela termodinâmica, um sistema se estabelecerá no estado com a energia mínima, que também corresponde ao estado com a entropia máxima.

Como introduzido por Shanon em 1946, na teoria da informação, a entropia também pode ser vista como uma medida do conteúdo da informação em , dada pela seguinte soma sobre todos os estados possíveis de : Agora, o modo mais eficiente para codificar o conteúdo de informação em , é a utilização de uma maneira que maximiza a entropia .X X H ( X ) = - Σ i P ( x i ) log P ( x i ) X HHXX

H(X)=-EuP(xEu)registroP(xEu)
XH

Finalmente , é aqui que voltamos aos RBMs: Basicamente, queremos que esse RBM codifique o máximo de informações possível. Portanto, como temos que maximizar a entropia (teórica da informação) em nosso sistema RBM. Conforme proposto por Hopfield em 1982, podemos maximizar a entropia teórica da informação exatamente como a entropia física: modelando o RBM como o modelo de Ising acima e usar os mesmos métodos para minimizar a energia. E é por isso que precisamos dessa função estranha de energia em uma RBM!

A boa derivação matemática na resposta de Armen Aghajanyan mostra tudo o que precisamos fazer, para minimizar a energia, maximizando assim a entropia e armazenando / salvando o máximo de informações possível em nosso RBM.

PS: Por favor, queridos físicos, perdoem quaisquer imprecisões na derivação deste engenheiro. Sinta-se livre para comentar ou corrigir imprecisões (ou mesmo erros).

hbaderts
fonte
Eu vi esse vídeo , assista ao vídeo a partir desse ponto. como você obtém esse número amostrado? se apenas rodamos rand () no matlab e o obtemos? e então seria diferente para cada h (i). Oh não! Não acho que a máquina aprenda corretamente.
precisa saber é o seguinte
@ Born2Code, essa é outra questão. Você pode publicá-lo como uma nova pergunta neste site? Tente adicionar as equações de que você está falando à nova pergunta e explique quais partes você não entende.
hbaderts
link
Born2Code
0

A resposta do @Armen me deu muitas idéias. Uma pergunta não foi respondida no entanto.

O objetivo é maximizar a probabilidade (ou probabilidade) do . Isso está correlacionado com a minimização da função energética relacionada a e :v hvvh

E(v,h)=-umaTv-bTh-vTWh

Nossos variáveis são , e , que têm que ser treinados. Tenho certeza de que esse treinamento será o objetivo final da RBM.b WumabW

Laurens Meeus
fonte
Como também tornamos a camada oculta binária? Bcoz após a operação da função de ativação, estaríamos obtendo valores no intervalo entre 0 e 1.
Born2Code 8/16/16
@ Born2Code: A função de ativação fornece a probabilidade de um neurônio ter valor 1. Portanto, para "torná-lo binário", você obtém amostras das probabilidades calculadas para ou - em outras palavras, você literalmente faz algo como - isso deve ser feito para cada neurônio e sempre que você quiser uma amostra. vhvh_bin = (rand() < h_val) ? 1 : 0
Neil Slater
@ NeilSlater: mas por que um número aleatório? Além disso, se o aleatório deve ser gerado para cada iteração ou o mesmo número deve ser usado para todas as iterações? mais uma dúvida séria, quantas iterações precisam ser feitas? Eu tenho um conjunto de treinamento V, que tem apenas um vetor, ou seja, v1. Com a v1, quantas vezes devo ter para iterar?
precisa saber é o seguinte
@ NeilSlater: Mais uma dúvida é: se o mesmo número aleatório deve ser comparado com todos os valores da camada oculta? Eu sei que isto é tal uma pergunta idiota, mas ainda
Born2Code
11
É um número aleatório, porque é assim que você resolve probabilidades para valores binários. É um número diferente para cada neurônio dentro hou v- você está amostrando um vetor de valores binários para hou v, a fim de gerar um exemplo que a rede "acredita" existe - ou seja, um exemplo que tem uma alta chance estatística de ser representativo da conjunto de treinamento. Durante o treinamento, você determina o quão bem ele corresponde a um exemplo de treinamento existente e ajusta os pesos de acordo.
Neil Slater