Máquina de Boltzmann restrita
No aprendizado de máquina , a máquina limitada de Boltzmann é um tipo de rede neural artificial para aprendizado não supervisionado . É comumente usado para ter uma estimativa da distribuição probabilística de um conjunto de dados . Foi originalmente inventado com o nome de Harmonium em 1986 por Paul Smolenski.
Descrição
Em sua forma mais simples, uma máquina de Boltzmann é composta de uma camada de neurônios que recebem informações, bem como de uma camada oculta de neurônios. Se assumirmos que os neurônios da mesma camada são independentes uns dos outros, chamamos essa configuração de máquina de Boltzmann restrita (RBM).
Definimos uma energia de ativação para uma Máquina Boltzmann Restrita da seguinte forma:
E=-(∑eu,jCeujxeuhj+∑eubeuxeu+∑jvsjhj){\ displaystyle E = - \ left (\ sum _ {i, j} w_ {ij} \, x_ {i} \, h_ {j} + \ sum _ {i} b_ {i} \, x_ {i} + \ sum _ {j} c_ {j} h_ {j} \ right)}
Com:
-
Ceuj{\ displaystyle w_ {ij}}
é o peso entre o neurônio e o neurônio ;j{\ displaystyle j}
eu{\ displaystyle i}![eu](https://wikimedia.org/api/rest_v1/media/math/render/svg/add78d8608ad86e54951b8c8bd6c8d8416533d20)
-
xeu{\ displaystyle x_ {i}}
é o estado ,, do neurônio visível ;xeu∈{0,1}{\ displaystyle x_ {i} \ in \ {0.1 \}}
eu{\ displaystyle i}![eu](https://wikimedia.org/api/rest_v1/media/math/render/svg/add78d8608ad86e54951b8c8bd6c8d8416533d20)
-
hj{\ textstyle h_ {j}}
é o estado do neurônio oculto ;j{\ textstyle j}![{\ textstyle j}](https://wikimedia.org/api/rest_v1/media/math/render/svg/98c853a238654c3e0a13c0e7617ec5cb5352601a)
-
beu{\ displaystyle b_ {i}}
e são, respectivamente, as tendências dos neurônios e .vsj{\ displaystyle c_ {j}}
xeu{\ displaystyle x_ {i}}
hj{\ displaystyle h_ {j}}![h_ {j}](https://wikimedia.org/api/rest_v1/media/math/render/svg/614689f15f73ad5b4a5d7fa837a72614202b0d89)
A probabilidade conjunta de ter uma configuração é então dada por(xeu,hj){\ displaystyle (x_ {i}, h_ {j})}![{\ displaystyle (x_ {i}, h_ {j})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2d0a25ea6e4476cefe6601edb737ac039e96ea6a)
P(xeu,hj)=exp(-E(xeu,hj))/Z{\ displaystyle P (x_ {i}, h_ {j}) = \ exp (-E (x_ {i}, h_ {j})) / Z}
Com:
-
E{\ displaystyle E}
a função de energia definida acima;
-
Z{\ displaystyle Z}
uma função de normalização, que faz com que a soma de todas as probabilidades seja 1.
Aprendendo
A máquina de Boltzmann treina usando aprendizado não supervisionado. Tentamos minimizar a probabilidade de log . A derivada do log da verossimilhança fornece a seguinte expressão:
∂[-registro(p(x(t)))]∂θ=Eh[∂E(x(t),h)∂θ|x(t)]-Ex,y[∂E(x,h)∂θ]{\ displaystyle {\ frac {\ partial \ left [- \ log (p (x ^ {(t)})) \ right]} {\ parcial \ theta}} = \ mathbb {E} _ {h} \ left [{\ frac {\ partial E (x ^ {(t)}, h)} {\ partial \ theta}} | x ^ {(t)} \ right] - \ mathbb {E} _ {x, y} \ left [{\ frac {\ partial E (x, h)} {\ partial \ theta}} \ right]}
Com:
-
θ{\ displaystyle \ theta}
variáveis do sistema (pesos ou enviesamento);
-
Ex,y{\ displaystyle \ mathbb {E} _ {x, y}}
a expectativa matemática sobre as variáveis aleatórias e ;x{\ displaystyle x}
y{\ displaystyle y}![y](https://wikimedia.org/api/rest_v1/media/math/render/svg/b8a6208ec717213d4317e666f1ae872e00620a0d)
-
x(t){\ displaystyle x ^ {(t)}}
um valor do conjunto de dados ;
-
E(x,h){\ displaystyle E (x, h)}
a energia definida acima.
Notamos a presença de dois termos nesta expressão, denominados fase positiva e fase negativa. A fase positiva é facilmente calculada para o bias e para a matriz de peso.
Em seguida, obtemos:
Eh[∂E(x(t),h)∂Ceuj|x(t)]=-h(x(t))∗x(t)T{\ displaystyle \ mathbb {E} _ {h} \ left [{\ frac {\ partial E (x ^ {(t)}, h)} {\ partial W_ {ij}}} | x ^ {(t) } \ right] = - h (x ^ {(t)}) * {x ^ {(t)}} ^ {\ mathsf {T}}}
Com h (x) o estado da camada oculta conhecendo x dado pela fórmula
h(x)=seugm(C∗x+b){\ displaystyle h (x) = sigm (W * x + b)}
A parte mais complicada é calcular o que é chamado de fase negativa . Não podemos calculá-lo diretamente porque não conhecemos a função de normalização do sistema. Para poder realizar uma descida gradiente , é calculada a chamada reconstrução da entrada . Com efeito, as propriedades de simetria do sistema permitem calcular a entrada estimada pelo modelo, basta aplicar a fórmula:
x(t){\ displaystyle x ^ {(t)}}![{\ displaystyle x ^ {(t)}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/44d7d165662ca063303fd5cf798aa5840ea8a945)
xrevs=CT∗h(x)+vs{\ displaystyle x_ {rec} = W ^ {\ mathsf {T}} * h (x) + c}
com o viés da camada oculta de neurônios .
vs{\ displaystyle c}
H{\ displaystyle H}![H](https://wikimedia.org/api/rest_v1/media/math/render/svg/75a9edddcca2f782014371f75dca39d7e13a9c1b)
Da mesma forma, o estado da camada oculta pode ser recalculado repetindo o processo. Finalmente, podemos resumir o algoritmo de descida gradiente da seguinte forma (falamos do algoritmo de divergência contrastante, comumente abreviado como CD-k)
x <= x(t)
h <= W*x + b
phasePositive <= -h*Transpose(x)
Pour i allant de 1 à k:
x = Transpose(W) * h(x) + c
h = W*x + b
phaseNegative <= -h*transpose(x)
gradient <= phasePositive-phaseNegative
W <= W + alpha*gradient
c <= c + alpha*(x(t)-x)
b <= b + alpha*(h(x(t)) - h)
Extensão
A máquina de Boltzmann restrita é, na verdade, um caso especial da máquina de Boltzmann, em que os neurônios da mesma camada são independentes uns dos outros. Os cálculos são muito facilitados por esta aproximação, mas os resultados obtidos são menos bons.
Artigos relacionados
Notas e referências
-
(em) Paul Smolensky , David E. Rumelhart ( dir. ) E James L. McClelland ( eds. ), Parallel Distributed Processing : Explorations in the Microtructure of Cognition, Volume 1: Foundations , MIT Press ,1986, 194–281 p. ( ISBN 0-262-68053-X , leia online ) , "Capítulo 6: Processamento de Informação em Sistemas Dinâmicos: Fundamentos da Teoria da Harmonia"
-
Ruslan Salakhutdinov e Geoffrey Hinton, "Deep Boltzmann Machines" , em AISTATS 2009 ,
2009( leia online ).
-
http://image.diku.dk/igel/paper/AItRBM-proof.pdf
-
http://www.cs.toronto.edu/~tijmen/pcd/pcd.pdf
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">